From 0c9f7ef30ab8addb1f6c446d8ac4fbacf9fd02c9 Mon Sep 17 00:00:00 2001 From: liyulin <501351981@qq.com> Date: Sun, 12 Mar 2023 15:58:45 +0800 Subject: [PATCH] add: eslint --- .eslintignore | 3 + .eslintrc.js | 24 + .../{index-b1870083.js => index-3b4c4444.js} | 82 ++-- ...{index-171e346f.css => index-78ff3081.css} | 2 +- examples/dist/index.html | 4 +- examples/src/App.vue | 12 +- examples/src/common/PreviewWrapper.vue | 14 +- examples/src/components/DocxDemo.vue | 19 +- examples/src/components/ExcelDemo.vue | 24 +- examples/src/components/PdfDemo.vue | 19 +- examples/src/hooks/useLoading.js | 21 + examples/src/hooks/usePreview.js | 16 +- examples/src/main.js | 4 +- package.json | 2 + packages/docx/index.js | 8 +- packages/docx/src/docx.js | 2 +- packages/docx/src/main.vue | 40 +- packages/docx/vite.config.js | 8 +- packages/excel/index.js | 8 +- packages/excel/src/color.js | 6 +- packages/excel/src/excel.js | 160 +++---- packages/excel/src/main.vue | 44 +- packages/excel/src/media.js | 126 +++--- packages/excel/vite.config.js | 8 +- packages/pdf/index.js | 8 +- packages/pdf/src/main.vue | 52 +-- packages/pdf/src/pdf.js | 2 +- packages/pdf/src/worker.js | 2 +- packages/pdf/vite.config.js | 9 +- pnpm-lock.yaml | 422 +++++++++++++++++- script/postinstall.js | 12 +- script/switch-cli.js | 12 +- script/utils.js | 30 +- 33 files changed, 857 insertions(+), 348 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js rename examples/dist/assets/{index-b1870083.js => index-3b4c4444.js} (60%) rename examples/dist/assets/{index-171e346f.css => index-78ff3081.css} (99%) create mode 100644 examples/src/hooks/useLoading.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..7b09e8b --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +node_modules/ +lib/ +dist/ diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..197a6f0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + 'env': { + 'node': true, + 'es2021': true + }, + 'extends': [ + 'eslint:recommended', + 'plugin:vue/vue3-essential' + ], + 'overrides': [ + ], + 'parserOptions': { + 'ecmaVersion': 'latest', + 'sourceType': 'module' + }, + 'plugins': [ + 'vue' + ], + 'rules': { + 'semi': ['error','always'], + 'no-multi-spaces': ['error', { ignoreEOLComments: false }], + 'quotes': ['error', 'single'] + } +}; diff --git a/examples/dist/assets/index-b1870083.js b/examples/dist/assets/index-3b4c4444.js similarity index 60% rename from examples/dist/assets/index-b1870083.js rename to examples/dist/assets/index-3b4c4444.js index 98ebf83..6f771cd 100644 --- a/examples/dist/assets/index-b1870083.js +++ b/examples/dist/assets/index-3b4c4444.js @@ -1,13 +1,13 @@ -var Sj=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var rve=Sj((Fa,Ja)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerpolicy&&(l.referrerPolicy=a.referrerpolicy),a.crossorigin==="use-credentials"?l.credentials="include":a.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(a){if(a.ep)return;a.ep=!0;const l=t(a);fetch(a.href,l)}})();function mW(n,e){const t=Object.create(null),i=n.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}function pW(n){if(gn(n)){const e={};for(let t=0;t{if(t){const i=t.split(kj);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function yW(n){let e="";if(el(n))e=n;else if(gn(n))for(let t=0;t{},jj=()=>!1,Uj=/^on[^a-z]/,G0=n=>Uj.test(n),ZW=n=>n.startsWith("onUpdate:"),Zl=Object.assign,vW=(n,e)=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)},Ej=Object.prototype.hasOwnProperty,ei=(n,e)=>Ej.call(n,e),gn=Array.isArray,Od=n=>X0(n)==="[object Map]",Kj=n=>X0(n)==="[object Set]",Sn=n=>typeof n=="function",el=n=>typeof n=="string",WW=n=>typeof n=="symbol",Li=n=>n!==null&&typeof n=="object",TL=n=>Li(n)&&Sn(n.then)&&Sn(n.catch),Hj=Object.prototype.toString,X0=n=>Hj.call(n),Pj=n=>X0(n).slice(8,-1),Qj=n=>X0(n)==="[object Object]",GW=n=>el(n)&&n!=="NaN"&&n[0]!=="-"&&""+parseInt(n,10)===n,Rb=mW(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),N0=n=>{const e=Object.create(null);return t=>e[t]||(e[t]=n(t))},Bj=/-(\w)/g,Wa=N0(n=>n.replace(Bj,(e,t)=>t?t.toUpperCase():"")),Aj=/\B([A-Z])/g,Fu=N0(n=>n.replace(Aj,"-$1").toLowerCase()),M0=N0(n=>n.charAt(0).toUpperCase()+n.slice(1)),xy=N0(n=>n?`on${M0(n)}`:""),rh=(n,e)=>!Object.is(n,e),Cy=(n,e)=>{for(let t=0;t{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value:t})},_j=n=>{const e=parseFloat(n);return isNaN(e)?n:e},$j=n=>{const e=el(n)?Number(n):NaN;return isNaN(e)?n:e};let aI;const qj=()=>aI||(aI=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let za;class eU{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=za,!e&&za&&(this.index=(za.scopes||(za.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=za;try{return za=this,e()}finally{za=t}}}on(){za=this}off(){za=this.parent}stop(e){if(this._active){let t,i;for(t=0,i=this.effects.length;t{const e=new Set(n);return e.w=0,e.n=0,e},CL=n=>(n.w&Xs)>0,SL=n=>(n.n&Xs)>0,iU=({deps:n})=>{if(n.length)for(let e=0;e{const{deps:e}=n;if(e.length){let t=0;for(let i=0;i{(b==="length"||b>=f)&&r.push(v)})}else switch(t!==void 0&&r.push(o.get(t)),e){case"add":gn(n)?GW(t)&&r.push(o.get("length")):(r.push(o.get(uc)),Od(n)&&r.push(o.get(u2)));break;case"delete":gn(n)||(r.push(o.get(uc)),Od(n)&&r.push(o.get(u2)));break;case"set":Od(n)&&r.push(o.get(uc));break}if(r.length===1)r[0]&&d2(r[0]);else{const f=[];for(const v of r)v&&f.push(...v);d2(XW(f))}}function d2(n,e){const t=gn(n)?n:[...n];for(const i of t)i.computed&&oI(i);for(const i of t)i.computed||oI(i)}function oI(n,e){(n!==yr||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}function aU(n,e){var t;return(t=Nm.get(n))===null||t===void 0?void 0:t.get(e)}const rU=mW("__proto__,__v_isRef,__isVue"),FL=new Set(Object.getOwnPropertyNames(Symbol).filter(n=>n!=="arguments"&&n!=="caller").map(n=>Symbol[n]).filter(WW)),oU=MW(),sU=MW(!1,!0),cU=MW(!0),sI=uU();function uU(){const n={};return["includes","indexOf","lastIndexOf"].forEach(e=>{n[e]=function(...t){const i=on(this);for(let l=0,o=this.length;l{n[e]=function(...t){Ju();const i=on(this)[e].apply(this,t);return Du(),i}}),n}function dU(n){const e=on(this);return Ga(e,"has",n),e.hasOwnProperty(n)}function MW(n=!1,e=!1){return function(i,a,l){if(a==="__v_isReactive")return!n;if(a==="__v_isReadonly")return n;if(a==="__v_isShallow")return e;if(a==="__v_raw"&&l===(n?e?wU:UL:e?jL:OL).get(i))return i;const o=gn(i);if(!n){if(o&&ei(sI,a))return Reflect.get(sI,a,l);if(a==="hasOwnProperty")return dU}const r=Reflect.get(i,a,l);return(WW(a)?FL.has(a):rU(a))||(n||Ga(i,"get",a),e)?r:$i(r)?o&&GW(a)?r:r.value:Li(r)?n?EL(r):zn(r):r}}const hU=JL(),fU=JL(!0);function JL(n=!1){return function(t,i,a,l){let o=t[i];if(Iu(o)&&$i(o)&&!$i(a))return!1;if(!n&&(!Mm(a)&&!Iu(a)&&(o=on(o),a=on(a)),!gn(t)&&$i(o)&&!$i(a)))return o.value=a,!0;const r=gn(t)&&GW(i)?Number(i)n,I0=n=>Reflect.getPrototypeOf(n);function Jf(n,e,t=!1,i=!1){n=n.__v_raw;const a=on(n),l=on(e);t||(e!==l&&Ga(a,"get",e),Ga(a,"get",l));const{has:o}=I0(a),r=i?IW:t?gW:oh;if(o.call(a,e))return r(n.get(e));if(o.call(a,l))return r(n.get(l));n!==a&&n.get(e)}function Df(n,e=!1){const t=this.__v_raw,i=on(t),a=on(n);return e||(n!==a&&Ga(i,"has",n),Ga(i,"has",a)),n===a?t.has(n):t.has(n)||t.has(a)}function Of(n,e=!1){return n=n.__v_raw,!e&&Ga(on(n),"iterate",uc),Reflect.get(n,"size",n)}function cI(n){n=on(n);const e=on(this);return I0(e).has.call(e,n)||(e.add(n),To(e,"add",n,n)),this}function uI(n,e){e=on(e);const t=on(this),{has:i,get:a}=I0(t);let l=i.call(t,n);l||(n=on(n),l=i.call(t,n));const o=a.call(t,n);return t.set(n,e),l?rh(e,o)&&To(t,"set",n,e):To(t,"add",n,e),this}function dI(n){const e=on(this),{has:t,get:i}=I0(e);let a=t.call(e,n);a||(n=on(n),a=t.call(e,n)),i&&i.call(e,n);const l=e.delete(n);return a&&To(e,"delete",n,void 0),l}function hI(){const n=on(this),e=n.size!==0,t=n.clear();return e&&To(n,"clear",void 0,void 0),t}function jf(n,e){return function(i,a){const l=this,o=l.__v_raw,r=on(o),f=e?IW:n?gW:oh;return!n&&Ga(r,"iterate",uc),o.forEach((v,b)=>i.call(a,f(v),f(b),l))}}function Uf(n,e,t){return function(...i){const a=this.__v_raw,l=on(a),o=Od(l),r=n==="entries"||n===Symbol.iterator&&o,f=n==="keys"&&o,v=a[n](...i),b=t?IW:e?gW:oh;return!e&&Ga(l,"iterate",f?u2:uc),{next(){const{value:Z,done:p}=v.next();return p?{value:Z,done:p}:{value:r?[b(Z[0]),b(Z[1])]:b(Z),done:p}},[Symbol.iterator](){return this}}}}function _o(n){return function(...e){return n==="delete"?!1:this}}function vU(){const n={get(l){return Jf(this,l)},get size(){return Of(this)},has:Df,add:cI,set:uI,delete:dI,clear:hI,forEach:jf(!1,!1)},e={get(l){return Jf(this,l,!1,!0)},get size(){return Of(this)},has:Df,add:cI,set:uI,delete:dI,clear:hI,forEach:jf(!1,!0)},t={get(l){return Jf(this,l,!0)},get size(){return Of(this,!0)},has(l){return Df.call(this,l,!0)},add:_o("add"),set:_o("set"),delete:_o("delete"),clear:_o("clear"),forEach:jf(!0,!1)},i={get(l){return Jf(this,l,!0,!0)},get size(){return Of(this,!0)},has(l){return Df.call(this,l,!0)},add:_o("add"),set:_o("set"),delete:_o("delete"),clear:_o("clear"),forEach:jf(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=Uf(l,!1,!1),t[l]=Uf(l,!0,!1),e[l]=Uf(l,!1,!0),i[l]=Uf(l,!0,!0)}),[n,t,e,i]}const[WU,GU,XU,NU]=vU();function YW(n,e){const t=e?n?NU:XU:n?GU:WU;return(i,a,l)=>a==="__v_isReactive"?!n:a==="__v_isReadonly"?n:a==="__v_raw"?i:Reflect.get(ei(t,a)&&a in i?t:i,a,l)}const MU={get:YW(!1,!1)},IU={get:YW(!1,!0)},YU={get:YW(!0,!1)},OL=new WeakMap,jL=new WeakMap,UL=new WeakMap,wU=new WeakMap;function gU(n){switch(n){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function VU(n){return n.__v_skip||!Object.isExtensible(n)?0:gU(Pj(n))}function zn(n){return Iu(n)?n:wW(n,!1,DL,MU,OL)}function LU(n){return wW(n,!1,ZU,IU,jL)}function EL(n){return wW(n,!0,yU,YU,UL)}function wW(n,e,t,i,a){if(!Li(n)||n.__v_raw&&!(e&&n.__v_isReactive))return n;const l=a.get(n);if(l)return l;const o=VU(n);if(o===0)return n;const r=new Proxy(n,o===2?i:t);return a.set(n,r),r}function fu(n){return Iu(n)?fu(n.__v_raw):!!(n&&n.__v_isReactive)}function Iu(n){return!!(n&&n.__v_isReadonly)}function Mm(n){return!!(n&&n.__v_isShallow)}function KL(n){return fu(n)||Iu(n)}function on(n){const e=n&&n.__v_raw;return e?on(e):n}function HL(n){return Xm(n,"__v_skip",!0),n}const oh=n=>Li(n)?zn(n):n,gW=n=>Li(n)?EL(n):n;function PL(n){ps&&yr&&(n=on(n),kL(n.dep||(n.dep=XW())))}function QL(n,e){n=on(n);const t=n.dep;t&&d2(t)}function $i(n){return!!(n&&n.__v_isRef===!0)}function Ne(n){return BL(n,!1)}function Gn(n){return BL(n,!0)}function BL(n,e){return $i(n)?n:new RU(n,e)}class RU{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:on(e),this._value=t?e:oh(e)}get value(){return PL(this),this._value}set value(e){const t=this.__v_isShallow||Mm(e)||Iu(e);e=t?e:on(e),rh(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:oh(e),QL(this))}}function mi(n){return $i(n)?n.value:n}const TU={get:(n,e,t)=>mi(Reflect.get(n,e,t)),set:(n,e,t,i)=>{const a=n[e];return $i(a)&&!$i(t)?(a.value=t,!0):Reflect.set(n,e,t,i)}};function AL(n){return fu(n)?n:new Proxy(n,TU)}function dc(n){const e=gn(n)?new Array(n.length):{};for(const t in n)e[t]=Ot(n,t);return e}class xU{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return aU(on(this._object),this._key)}}function Ot(n,e,t){const i=n[e];return $i(i)?i:new xU(n,e,t)}var _L;class CU{constructor(e,t,i,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[_L]=!1,this._dirty=!0,this.effect=new NW(e,()=>{this._dirty||(this._dirty=!0,QL(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const e=on(this);return PL(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}_L="__v_isReadonly";function SU(n,e,t=!1){let i,a;const l=Sn(n);return l?(i=n,a=Gr):(i=n.get,a=n.set),new CU(i,a,l||!a,t)}function ys(n,e,t,i){let a;try{a=i?n(...i):n()}catch(l){Y0(l,e,t)}return a}function nr(n,e,t,i){if(Sn(n)){const l=ys(n,e,t,i);return l&&TL(l)&&l.catch(o=>{Y0(o,e,t)}),l}const a=[];for(let l=0;l>>1;ch(zl[i])Er&&zl.splice(e,1)}function JU(n){gn(n)?bu.push(...n):(!Go||!Go.includes(n,n.allowRecurse?_s+1:_s))&&bu.push(n),qL()}function fI(n,e=sh?Er+1:0){for(;ech(t)-ch(i)),_s=0;_sn.id==null?1/0:n.id,DU=(n,e)=>{const t=ch(n)-ch(e);if(t===0){if(n.pre&&!e.pre)return-1;if(e.pre&&!n.pre)return 1}return t};function tR(n){h2=!1,sh=!0,zl.sort(DU);const e=Gr;try{for(Er=0;Erel(y)?y.trim():y)),Z&&(a=t.map(_j))}let r,f=i[r=xy(e)]||i[r=xy(Wa(e))];!f&&l&&(f=i[r=xy(Fu(e))]),f&&nr(f,n,6,a);const v=i[r+"Once"];if(v){if(!n.emitted)n.emitted={};else if(n.emitted[r])return;n.emitted[r]=!0,nr(v,n,6,a)}}function nR(n,e,t=!1){const i=e.emitsCache,a=i.get(n);if(a!==void 0)return a;const l=n.emits;let o={},r=!1;if(!Sn(n)){const f=v=>{const b=nR(v,e,!0);b&&(r=!0,Zl(o,b))};!t&&e.mixins.length&&e.mixins.forEach(f),n.extends&&f(n.extends),n.mixins&&n.mixins.forEach(f)}return!l&&!r?(Li(n)&&i.set(n,null),null):(gn(l)?l.forEach(f=>o[f]=null):Zl(o,l),Li(n)&&i.set(n,o),o)}function w0(n,e){return!n||!G0(e)?!1:(e=e.slice(2).replace(/Once$/,""),ei(n,e[0].toLowerCase()+e.slice(1))||ei(n,Fu(e))||ei(n,e))}let Yl=null,g0=null;function Im(n){const e=Yl;return Yl=n,g0=n&&n.type.__scopeId||null,e}function jU(n){g0=n}function UU(){g0=null}function pa(n,e=Yl,t){if(!e||n._n)return n;const i=(...a)=>{i._d&&MI(-1);const l=Im(e);let o;try{o=n(...a)}finally{Im(l),i._d&&MI(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function Sy(n){const{type:e,vnode:t,proxy:i,withProxy:a,props:l,propsOptions:[o],slots:r,attrs:f,emit:v,render:b,renderCache:Z,data:p,setupState:y,ctx:X,inheritAttrs:m}=n;let N,G;const d=Im(n);try{if(t.shapeFlag&4){const s=a||i;N=jr(b.call(s,s,Z,l,y,p,X)),G=f}else{const s=e;N=jr(s.length>1?s(l,{attrs:f,slots:r,emit:v}):s(l,null)),G=e.props?f:EU(f)}}catch(s){Kd.length=0,Y0(s,n,1),N=D(Da)}let u=N;if(G&&m!==!1){const s=Object.keys(G),{shapeFlag:h}=u;s.length&&h&7&&(o&&s.some(ZW)&&(G=KU(G,o)),u=Vl(u,G))}return t.dirs&&(u=Vl(u),u.dirs=u.dirs?u.dirs.concat(t.dirs):t.dirs),t.transition&&(u.transition=t.transition),N=u,Im(d),N}const EU=n=>{let e;for(const t in n)(t==="class"||t==="style"||G0(t))&&((e||(e={}))[t]=n[t]);return e},KU=(n,e)=>{const t={};for(const i in n)(!ZW(i)||!(i.slice(9)in e))&&(t[i]=n[i]);return t};function HU(n,e,t){const{props:i,children:a,component:l}=n,{props:o,children:r,patchFlag:f}=e,v=l.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&f>=0){if(f&1024)return!0;if(f&16)return i?bI(i,o,v):!!o;if(f&8){const b=e.dynamicProps;for(let Z=0;Zn.__isSuspense;function BU(n,e){e&&e.pendingBranch?gn(n)?e.effects.push(...n):e.effects.push(n):JU(n)}function hn(n,e){if(Ei){let t=Ei.provides;const i=Ei.parent&&Ei.parent.provides;i===t&&(t=Ei.provides=Object.create(i)),t[n]=e}}function un(n,e,t=!1){const i=Ei||Yl;if(i){const a=i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides;if(a&&n in a)return a[n];if(arguments.length>1)return t&&Sn(e)?e.call(i.proxy):e}}function qt(n,e){return RW(n,null,e)}const Ef={};function rt(n,e,t){return RW(n,e,t)}function RW(n,e,{immediate:t,deep:i,flush:a,onTrack:l,onTrigger:o}=Mi){const r=xL()===(Ei==null?void 0:Ei.scope)?Ei:null;let f,v=!1,b=!1;if($i(n)?(f=()=>n.value,v=Mm(n)):fu(n)?(f=()=>n,i=!0):gn(n)?(b=!0,v=n.some(u=>fu(u)||Mm(u)),f=()=>n.map(u=>{if($i(u))return u.value;if(fu(u))return rc(u);if(Sn(u))return ys(u,r,2)})):Sn(n)?e?f=()=>ys(n,r,2):f=()=>{if(!(r&&r.isUnmounted))return Z&&Z(),nr(n,r,3,[p])}:f=Gr,e&&i){const u=f;f=()=>rc(u())}let Z,p=u=>{Z=G.onStop=()=>{ys(u,r,4)}},y;if(fh)if(p=Gr,e?t&&nr(e,r,3,[f(),b?[]:void 0,p]):f(),a==="sync"){const u=O4();y=u.__watcherHandles||(u.__watcherHandles=[])}else return Gr;let X=b?new Array(n.length).fill(Ef):Ef;const m=()=>{if(G.active)if(e){const u=G.run();(i||v||(b?u.some((s,h)=>rh(s,X[h])):rh(u,X)))&&(Z&&Z(),nr(e,r,3,[u,X===Ef?void 0:b&&X[0]===Ef?[]:X,p]),X=u)}else G.run()};m.allowRecurse=!!e;let N;a==="sync"?N=m:a==="post"?N=()=>fa(m,r&&r.suspense):(m.pre=!0,r&&(m.id=r.uid),N=()=>LW(m));const G=new NW(f,N);e?t?m():X=G.run():a==="post"?fa(G.run.bind(G),r&&r.suspense):G.run();const d=()=>{G.stop(),r&&r.scope&&vW(r.scope.effects,G)};return y&&y.push(d),d}function AU(n,e,t){const i=this.proxy,a=el(n)?n.includes(".")?iR(i,n):()=>i[n]:n.bind(i,i);let l;Sn(e)?l=e:(l=e.handler,t=e);const o=Ei;Yu(this);const r=RW(a,l.bind(i),t);return o?Yu(o):hc(),r}function iR(n,e){const t=e.split(".");return()=>{let i=n;for(let a=0;a{rc(t,e)});else if(Qj(n))for(const t in n)rc(n[t],e);return n}function lR(){const n={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Kt(()=>{n.isMounted=!0}),fn(()=>{n.isUnmounting=!0}),n}const Aa=[Function,Array],_U={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Aa,onEnter:Aa,onAfterEnter:Aa,onEnterCancelled:Aa,onBeforeLeave:Aa,onLeave:Aa,onAfterLeave:Aa,onLeaveCancelled:Aa,onBeforeAppear:Aa,onAppear:Aa,onAfterAppear:Aa,onAppearCancelled:Aa},setup(n,{slots:e}){const t=Wl(),i=lR();let a;return()=>{const l=e.default&&TW(e.default(),!0);if(!l||!l.length)return;let o=l[0];if(l.length>1){for(const m of l)if(m.type!==Da){o=m;break}}const r=on(n),{mode:f}=r;if(i.isLeaving)return zy(o);const v=mI(o);if(!v)return zy(o);const b=uh(v,r,i,t);dh(v,b);const Z=t.subTree,p=Z&&mI(Z);let y=!1;const{getTransitionKey:X}=v.type;if(X){const m=X();a===void 0?a=m:m!==a&&(a=m,y=!0)}if(p&&p.type!==Da&&(!$s(v,p)||y)){const m=uh(p,r,i,t);if(dh(p,m),f==="out-in")return i.isLeaving=!0,m.afterLeave=()=>{i.isLeaving=!1,t.update.active!==!1&&t.update()},zy(o);f==="in-out"&&v.type!==Da&&(m.delayLeave=(N,G,d)=>{const u=rR(i,p);u[String(p.key)]=p,N._leaveCb=()=>{G(),N._leaveCb=void 0,delete b.delayedLeave},b.delayedLeave=d})}return o}}},aR=_U;function rR(n,e){const{leavingVNodes:t}=n;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function uh(n,e,t,i){const{appear:a,mode:l,persisted:o=!1,onBeforeEnter:r,onEnter:f,onAfterEnter:v,onEnterCancelled:b,onBeforeLeave:Z,onLeave:p,onAfterLeave:y,onLeaveCancelled:X,onBeforeAppear:m,onAppear:N,onAfterAppear:G,onAppearCancelled:d}=e,u=String(n.key),s=rR(t,n),h=(M,I)=>{M&&nr(M,i,9,I)},c=(M,I)=>{const w=I[1];h(M,I),gn(M)?M.every(C=>C.length<=1)&&w():M.length<=1&&w()},W={mode:l,persisted:o,beforeEnter(M){let I=r;if(!t.isMounted)if(a)I=m||r;else return;M._leaveCb&&M._leaveCb(!0);const w=s[u];w&&$s(n,w)&&w.el._leaveCb&&w.el._leaveCb(),h(I,[M])},enter(M){let I=f,w=v,C=b;if(!t.isMounted)if(a)I=N||f,w=G||v,C=d||b;else return;let x=!1;const R=M._enterCb=g=>{x||(x=!0,g?h(C,[M]):h(w,[M]),W.delayedLeave&&W.delayedLeave(),M._enterCb=void 0)};I?c(I,[M,R]):R()},leave(M,I){const w=String(n.key);if(M._enterCb&&M._enterCb(!0),t.isUnmounting)return I();h(Z,[M]);let C=!1;const x=M._leaveCb=R=>{C||(C=!0,I(),R?h(X,[M]):h(y,[M]),M._leaveCb=void 0,s[w]===n&&delete s[w])};s[w]=n,p?c(p,[M,x]):x()},clone(M){return uh(M,e,t,i)}};return W}function zy(n){if(V0(n))return n=Vl(n),n.children=null,n}function mI(n){return V0(n)?n.children?n.children[0]:void 0:n}function dh(n,e){n.shapeFlag&6&&n.component?dh(n.component.subTree,e):n.shapeFlag&128?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function TW(n,e=!1,t){let i=[],a=0;for(let l=0;l1)for(let l=0;l!!n.type.__asyncLoader,V0=n=>n.type.__isKeepAlive;function L0(n,e){sR(n,"a",e)}function oR(n,e){sR(n,"da",e)}function sR(n,e,t=Ei){const i=n.__wdc||(n.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return n()});if(R0(e,i,t),t){let a=t.parent;for(;a&&a.parent;)V0(a.parent.vnode)&&$U(i,e,t,a),a=a.parent}}function $U(n,e,t,i){const a=R0(e,n,i,!0);la(()=>{vW(i[e],a)},t)}function R0(n,e,t=Ei,i=!1){if(t){const a=t[n]||(t[n]=[]),l=e.__weh||(e.__weh=(...o)=>{if(t.isUnmounted)return;Ju(),Yu(t);const r=nr(e,t,n,o);return hc(),Du(),r});return i?a.unshift(l):a.push(l),l}}const Co=n=>(e,t=Ei)=>(!fh||n==="sp")&&R0(n,(...i)=>e(...i),t),T0=Co("bm"),Kt=Co("m"),xW=Co("bu"),Dl=Co("u"),fn=Co("bum"),la=Co("um"),qU=Co("sp"),e4=Co("rtg"),t4=Co("rtc");function n4(n,e=Ei){R0("ec",n,e)}function vl(n,e){const t=Yl;if(t===null)return n;const i=S0(t)||t.proxy,a=n.dirs||(n.dirs=[]);for(let l=0;le(o,r,void 0,l&&l[r]));else{const o=Object.keys(n);a=new Array(o.length);for(let r=0,f=o.length;ryl(e)?!(e.type===Da||e.type===ln&&!dR(e.children)):!0)?n:null}const f2=n=>n?XR(n)?S0(n)||n.proxy:f2(n.parent):null,Ud=Zl(Object.create(null),{$:n=>n,$el:n=>n.vnode.el,$data:n=>n.data,$props:n=>n.props,$attrs:n=>n.attrs,$slots:n=>n.slots,$refs:n=>n.refs,$parent:n=>f2(n.parent),$root:n=>f2(n.root),$emit:n=>n.emit,$options:n=>CW(n),$forceUpdate:n=>n.f||(n.f=()=>LW(n.update)),$nextTick:n=>n.n||(n.n=cn.bind(n.proxy)),$watch:n=>AU.bind(n)}),ky=(n,e)=>n!==Mi&&!n.__isScriptSetup&&ei(n,e),o4={get({_:n},e){const{ctx:t,setupState:i,data:a,props:l,accessCache:o,type:r,appContext:f}=n;let v;if(e[0]!=="$"){const y=o[e];if(y!==void 0)switch(y){case 1:return i[e];case 2:return a[e];case 4:return t[e];case 3:return l[e]}else{if(ky(i,e))return o[e]=1,i[e];if(a!==Mi&&ei(a,e))return o[e]=2,a[e];if((v=n.propsOptions[0])&&ei(v,e))return o[e]=3,l[e];if(t!==Mi&&ei(t,e))return o[e]=4,t[e];b2&&(o[e]=0)}}const b=Ud[e];let Z,p;if(b)return e==="$attrs"&&Ga(n,"get",e),b(n);if((Z=r.__cssModules)&&(Z=Z[e]))return Z;if(t!==Mi&&ei(t,e))return o[e]=4,t[e];if(p=f.config.globalProperties,ei(p,e))return p[e]},set({_:n},e,t){const{data:i,setupState:a,ctx:l}=n;return ky(a,e)?(a[e]=t,!0):i!==Mi&&ei(i,e)?(i[e]=t,!0):ei(n.props,e)||e[0]==="$"&&e.slice(1)in n?!1:(l[e]=t,!0)},has({_:{data:n,setupState:e,accessCache:t,ctx:i,appContext:a,propsOptions:l}},o){let r;return!!t[o]||n!==Mi&&ei(n,o)||ky(e,o)||(r=l[0])&&ei(r,o)||ei(i,o)||ei(Ud,o)||ei(a.config.globalProperties,o)},defineProperty(n,e,t){return t.get!=null?n._.accessCache[e]=0:ei(t,"value")&&this.set(n,e,t.value,null),Reflect.defineProperty(n,e,t)}};let b2=!0;function s4(n){const e=CW(n),t=n.proxy,i=n.ctx;b2=!1,e.beforeCreate&&yI(e.beforeCreate,n,"bc");const{data:a,computed:l,methods:o,watch:r,provide:f,inject:v,created:b,beforeMount:Z,mounted:p,beforeUpdate:y,updated:X,activated:m,deactivated:N,beforeDestroy:G,beforeUnmount:d,destroyed:u,unmounted:s,render:h,renderTracked:c,renderTriggered:W,errorCaptured:M,serverPrefetch:I,expose:w,inheritAttrs:C,components:x,directives:R,filters:g}=e;if(v&&c4(v,i,null,n.appContext.config.unwrapInjectedRef),o)for(const V in o){const Y=o[V];Sn(Y)&&(i[V]=Y.bind(t))}if(a){const V=a.call(t,t);Li(V)&&(n.data=zn(V))}if(b2=!0,l)for(const V in l){const Y=l[V],T=Sn(Y)?Y.bind(t,t):Sn(Y.get)?Y.get.bind(t,t):Gr,J=!Sn(Y)&&Sn(Y.set)?Y.set.bind(t):Gr,U=de({get:T,set:J});Object.defineProperty(i,V,{enumerable:!0,configurable:!0,get:()=>U.value,set:K=>U.value=K})}if(r)for(const V in r)hR(r[V],i,t,V);if(f){const V=Sn(f)?f.call(t):f;Reflect.ownKeys(V).forEach(Y=>{hn(Y,V[Y])})}b&&yI(b,n,"c");function L(V,Y){gn(Y)?Y.forEach(T=>V(T.bind(t))):Y&&V(Y.bind(t))}if(L(T0,Z),L(Kt,p),L(xW,y),L(Dl,X),L(L0,m),L(oR,N),L(n4,M),L(t4,c),L(e4,W),L(fn,d),L(la,s),L(qU,I),gn(w))if(w.length){const V=n.exposed||(n.exposed={});w.forEach(Y=>{Object.defineProperty(V,Y,{get:()=>t[Y],set:T=>t[Y]=T})})}else n.exposed||(n.exposed={});h&&n.render===Gr&&(n.render=h),C!=null&&(n.inheritAttrs=C),x&&(n.components=x),R&&(n.directives=R)}function c4(n,e,t=Gr,i=!1){gn(n)&&(n=m2(n));for(const a in n){const l=n[a];let o;Li(l)?"default"in l?o=un(l.from||a,l.default,!0):o=un(l.from||a):o=un(l),$i(o)&&i?Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):e[a]=o}}function yI(n,e,t){nr(gn(n)?n.map(i=>i.bind(e.proxy)):n.bind(e.proxy),e,t)}function hR(n,e,t,i){const a=i.includes(".")?iR(t,i):()=>t[i];if(el(n)){const l=e[n];Sn(l)&&rt(a,l)}else if(Sn(n))rt(a,n.bind(t));else if(Li(n))if(gn(n))n.forEach(l=>hR(l,e,t,i));else{const l=Sn(n.handler)?n.handler.bind(t):e[n.handler];Sn(l)&&rt(a,l,n)}}function CW(n){const e=n.type,{mixins:t,extends:i}=e,{mixins:a,optionsCache:l,config:{optionMergeStrategies:o}}=n.appContext,r=l.get(e);let f;return r?f=r:!a.length&&!t&&!i?f=e:(f={},a.length&&a.forEach(v=>Ym(f,v,o,!0)),Ym(f,e,o)),Li(e)&&l.set(e,f),f}function Ym(n,e,t,i=!1){const{mixins:a,extends:l}=e;l&&Ym(n,l,t,!0),a&&a.forEach(o=>Ym(n,o,t,!0));for(const o in e)if(!(i&&o==="expose")){const r=u4[o]||t&&t[o];n[o]=r?r(n[o],e[o]):e[o]}return n}const u4={data:ZI,props:Qs,emits:Qs,methods:Qs,computed:Qs,beforeCreate:ql,created:ql,beforeMount:ql,mounted:ql,beforeUpdate:ql,updated:ql,beforeDestroy:ql,beforeUnmount:ql,destroyed:ql,unmounted:ql,activated:ql,deactivated:ql,errorCaptured:ql,serverPrefetch:ql,components:Qs,directives:Qs,watch:h4,provide:ZI,inject:d4};function ZI(n,e){return e?n?function(){return Zl(Sn(n)?n.call(this,this):n,Sn(e)?e.call(this,this):e)}:e:n}function d4(n,e){return Qs(m2(n),m2(e))}function m2(n){if(gn(n)){const e={};for(let t=0;t0)&&!(o&16)){if(o&8){const b=n.vnode.dynamicProps;for(let Z=0;Z{f=!0;const[p,y]=bR(Z,e,!0);Zl(o,p),y&&r.push(...y)};!t&&e.mixins.length&&e.mixins.forEach(b),n.extends&&b(n.extends),n.mixins&&n.mixins.forEach(b)}if(!l&&!f)return Li(n)&&i.set(n,hu),hu;if(gn(l))for(let b=0;b-1,y[1]=m<0||X-1||ei(y,"default"))&&r.push(Z)}}}const v=[o,r];return Li(n)&&i.set(n,v),v}function vI(n){return n[0]!=="$"}function WI(n){const e=n&&n.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:n===null?"null":""}function GI(n,e){return WI(n)===WI(e)}function XI(n,e){return gn(e)?e.findIndex(t=>GI(t,n)):Sn(e)&&GI(e,n)?0:-1}const mR=n=>n[0]==="_"||n==="$stable",SW=n=>gn(n)?n.map(jr):[jr(n)],m4=(n,e,t)=>{if(e._n)return e;const i=pa((...a)=>SW(e(...a)),t);return i._c=!1,i},pR=(n,e,t)=>{const i=n._ctx;for(const a in n){if(mR(a))continue;const l=n[a];if(Sn(l))e[a]=m4(a,l,i);else if(l!=null){const o=SW(l);e[a]=()=>o}}},yR=(n,e)=>{const t=SW(e);n.slots.default=()=>t},p4=(n,e)=>{if(n.vnode.shapeFlag&32){const t=e._;t?(n.slots=on(e),Xm(e,"_",t)):pR(e,n.slots={})}else n.slots={},e&&yR(n,e);Xm(n.slots,C0,1)},y4=(n,e,t)=>{const{vnode:i,slots:a}=n;let l=!0,o=Mi;if(i.shapeFlag&32){const r=e._;r?t&&r===1?l=!1:(Zl(a,e),!t&&r===1&&delete a._):(l=!e.$stable,pR(e,a)),o=e}else e&&(yR(n,e),o={default:1});if(l)for(const r in a)!mR(r)&&!(r in o)&&delete a[r]};function ZR(){return{app:null,config:{isNativeTag:jj,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Z4=0;function v4(n,e){return function(i,a=null){Sn(i)||(i=Object.assign({},i)),a!=null&&!Li(a)&&(a=null);const l=ZR(),o=new Set;let r=!1;const f=l.app={_uid:Z4++,_component:i,_props:a,_container:null,_context:l,_instance:null,version:j4,get config(){return l.config},set config(v){},use(v,...b){return o.has(v)||(v&&Sn(v.install)?(o.add(v),v.install(f,...b)):Sn(v)&&(o.add(v),v(f,...b))),f},mixin(v){return l.mixins.includes(v)||l.mixins.push(v),f},component(v,b){return b?(l.components[v]=b,f):l.components[v]},directive(v,b){return b?(l.directives[v]=b,f):l.directives[v]},mount(v,b,Z){if(!r){const p=D(i,a);return p.appContext=l,b&&e?e(p,v):n(p,v,Z),r=!0,f._container=v,v.__vue_app__=f,S0(p.component)||p.component.proxy}},unmount(){r&&(n(null,f._container),delete f._container.__vue_app__)},provide(v,b){return l.provides[v]=b,f}};return f}}function y2(n,e,t,i,a=!1){if(gn(n)){n.forEach((p,y)=>y2(p,e&&(gn(e)?e[y]:e),t,i,a));return}if(jd(i)&&!a)return;const l=i.shapeFlag&4?S0(i.component)||i.component.proxy:i.el,o=a?null:l,{i:r,r:f}=n,v=e&&e.r,b=r.refs===Mi?r.refs={}:r.refs,Z=r.setupState;if(v!=null&&v!==f&&(el(v)?(b[v]=null,ei(Z,v)&&(Z[v]=null)):$i(v)&&(v.value=null)),Sn(f))ys(f,r,12,[o,b]);else{const p=el(f),y=$i(f);if(p||y){const X=()=>{if(n.f){const m=p?ei(Z,f)?Z[f]:b[f]:f.value;a?gn(m)&&vW(m,l):gn(m)?m.includes(l)||m.push(l):p?(b[f]=[l],ei(Z,f)&&(Z[f]=b[f])):(f.value=[l],n.k&&(b[n.k]=f.value))}else p?(b[f]=o,ei(Z,f)&&(Z[f]=o)):y&&(f.value=o,n.k&&(b[n.k]=o))};o?(X.id=-1,fa(X,t)):X()}}}const fa=BU;function W4(n){return G4(n)}function G4(n,e){const t=qj();t.__VUE__=!0;const{insert:i,remove:a,patchProp:l,createElement:o,createText:r,createComment:f,setText:v,setElementText:b,parentNode:Z,nextSibling:p,setScopeId:y=Gr,insertStaticContent:X}=n,m=(re,_,E,$=null,ae=null,le=null,ee=!1,te=null,be=!!_.dynamicChildren)=>{if(re===_)return;re&&!$s(re,_)&&($=Q(re),K(re,ae,le,!0),re=null),_.patchFlag===-2&&(be=!1,_.dynamicChildren=null);const{type:ne,ref:B,shapeFlag:q}=_;switch(ne){case Ms:N(re,_,E,$);break;case Da:G(re,_,E,$);break;case Fy:re==null&&d(_,E,$,ee);break;case ln:x(re,_,E,$,ae,le,ee,te,be);break;default:q&1?h(re,_,E,$,ae,le,ee,te,be):q&6?R(re,_,E,$,ae,le,ee,te,be):(q&64||q&128)&&ne.process(re,_,E,$,ae,le,ee,te,be,se)}B!=null&&ae&&y2(B,re&&re.ref,le,_||re,!_)},N=(re,_,E,$)=>{if(re==null)i(_.el=r(_.children),E,$);else{const ae=_.el=re.el;_.children!==re.children&&v(ae,_.children)}},G=(re,_,E,$)=>{re==null?i(_.el=f(_.children||""),E,$):_.el=re.el},d=(re,_,E,$)=>{[re.el,re.anchor]=X(re.children,_,E,$,re.el,re.anchor)},u=({el:re,anchor:_},E,$)=>{let ae;for(;re&&re!==_;)ae=p(re),i(re,E,$),re=ae;i(_,E,$)},s=({el:re,anchor:_})=>{let E;for(;re&&re!==_;)E=p(re),a(re),re=E;a(_)},h=(re,_,E,$,ae,le,ee,te,be)=>{ee=ee||_.type==="svg",re==null?c(_,E,$,ae,le,ee,te,be):I(re,_,ae,le,ee,te,be)},c=(re,_,E,$,ae,le,ee,te)=>{let be,ne;const{type:B,props:q,shapeFlag:ue,transition:ve,dirs:Ge}=re;if(be=re.el=o(re.type,le,q&&q.is,q),ue&8?b(be,re.children):ue&16&&M(re.children,be,null,$,ae,le&&B!=="foreignObject",ee,te),Ge&&Js(re,null,$,"created"),W(be,re,re.scopeId,ee,$),q){for(const xe in q)xe!=="value"&&!Rb(xe)&&l(be,xe,null,q[xe],le,re.children,$,ae,O);"value"in q&&l(be,"value",null,q.value),(ne=q.onVnodeBeforeMount)&&kr(ne,$,re)}Ge&&Js(re,null,$,"beforeMount");const Je=(!ae||ae&&!ae.pendingBranch)&&ve&&!ve.persisted;Je&&ve.beforeEnter(be),i(be,_,E),((ne=q&&q.onVnodeMounted)||Je||Ge)&&fa(()=>{ne&&kr(ne,$,re),Je&&ve.enter(be),Ge&&Js(re,null,$,"mounted")},ae)},W=(re,_,E,$,ae)=>{if(E&&y(re,E),$)for(let le=0;le<$.length;le++)y(re,$[le]);if(ae){let le=ae.subTree;if(_===le){const ee=ae.vnode;W(re,ee,ee.scopeId,ee.slotScopeIds,ae.parent)}}},M=(re,_,E,$,ae,le,ee,te,be=0)=>{for(let ne=be;ne{const te=_.el=re.el;let{patchFlag:be,dynamicChildren:ne,dirs:B}=_;be|=re.patchFlag&16;const q=re.props||Mi,ue=_.props||Mi;let ve;E&&Ds(E,!1),(ve=ue.onVnodeBeforeUpdate)&&kr(ve,E,_,re),B&&Js(_,re,E,"beforeUpdate"),E&&Ds(E,!0);const Ge=ae&&_.type!=="foreignObject";if(ne?w(re.dynamicChildren,ne,te,E,$,Ge,le):ee||Y(re,_,te,null,E,$,Ge,le,!1),be>0){if(be&16)C(te,_,q,ue,E,$,ae);else if(be&2&&q.class!==ue.class&&l(te,"class",null,ue.class,ae),be&4&&l(te,"style",q.style,ue.style,ae),be&8){const Je=_.dynamicProps;for(let xe=0;xe{ve&&kr(ve,E,_,re),B&&Js(_,re,E,"updated")},$)},w=(re,_,E,$,ae,le,ee)=>{for(let te=0;te<_.length;te++){const be=re[te],ne=_[te],B=be.el&&(be.type===ln||!$s(be,ne)||be.shapeFlag&70)?Z(be.el):E;m(be,ne,B,null,$,ae,le,ee,!0)}},C=(re,_,E,$,ae,le,ee)=>{if(E!==$){if(E!==Mi)for(const te in E)!Rb(te)&&!(te in $)&&l(re,te,E[te],null,ee,_.children,ae,le,O);for(const te in $){if(Rb(te))continue;const be=$[te],ne=E[te];be!==ne&&te!=="value"&&l(re,te,ne,be,ee,_.children,ae,le,O)}"value"in $&&l(re,"value",E.value,$.value)}},x=(re,_,E,$,ae,le,ee,te,be)=>{const ne=_.el=re?re.el:r(""),B=_.anchor=re?re.anchor:r("");let{patchFlag:q,dynamicChildren:ue,slotScopeIds:ve}=_;ve&&(te=te?te.concat(ve):ve),re==null?(i(ne,E,$),i(B,E,$),M(_.children,E,B,ae,le,ee,te,be)):q>0&&q&64&&ue&&re.dynamicChildren?(w(re.dynamicChildren,ue,E,ae,le,ee,te),(_.key!=null||ae&&_===ae.subTree)&&zW(re,_,!0)):Y(re,_,E,B,ae,le,ee,te,be)},R=(re,_,E,$,ae,le,ee,te,be)=>{_.slotScopeIds=te,re==null?_.shapeFlag&512?ae.ctx.activate(_,E,$,ee,be):g(_,E,$,ae,le,ee,be):S(re,_,be)},g=(re,_,E,$,ae,le,ee)=>{const te=re.component=T4(re,$,ae);if(V0(re)&&(te.ctx.renderer=se),x4(te),te.asyncDep){if(ae&&ae.registerDep(te,L),!re.el){const be=te.subTree=D(Da);G(null,be,_,E)}return}L(te,re,_,E,ae,le,ee)},S=(re,_,E)=>{const $=_.component=re.component;if(HU(re,_,E))if($.asyncDep&&!$.asyncResolved){V($,_,E);return}else $.next=_,FU($.update),$.update();else _.el=re.el,$.vnode=_},L=(re,_,E,$,ae,le,ee)=>{const te=()=>{if(re.isMounted){let{next:B,bu:q,u:ue,parent:ve,vnode:Ge}=re,Je=B,xe;Ds(re,!1),B?(B.el=Ge.el,V(re,B,ee)):B=Ge,q&&Cy(q),(xe=B.props&&B.props.onVnodeBeforeUpdate)&&kr(xe,ve,B,Ge),Ds(re,!0);const ke=Sy(re),Pe=re.subTree;re.subTree=ke,m(Pe,ke,Z(Pe.el),Q(Pe),re,ae,le),B.el=ke.el,Je===null&&PU(re,ke.el),ue&&fa(ue,ae),(xe=B.props&&B.props.onVnodeUpdated)&&fa(()=>kr(xe,ve,B,Ge),ae)}else{let B;const{el:q,props:ue}=_,{bm:ve,m:Ge,parent:Je}=re,xe=jd(_);if(Ds(re,!1),ve&&Cy(ve),!xe&&(B=ue&&ue.onVnodeBeforeMount)&&kr(B,Je,_),Ds(re,!0),q&&pe){const ke=()=>{re.subTree=Sy(re),pe(q,re.subTree,re,ae,null)};xe?_.type.__asyncLoader().then(()=>!re.isUnmounted&&ke()):ke()}else{const ke=re.subTree=Sy(re);m(null,ke,E,$,re,ae,le),_.el=ke.el}if(Ge&&fa(Ge,ae),!xe&&(B=ue&&ue.onVnodeMounted)){const ke=_;fa(()=>kr(B,Je,ke),ae)}(_.shapeFlag&256||Je&&jd(Je.vnode)&&Je.vnode.shapeFlag&256)&&re.a&&fa(re.a,ae),re.isMounted=!0,_=E=$=null}},be=re.effect=new NW(te,()=>LW(ne),re.scope),ne=re.update=()=>be.run();ne.id=re.uid,Ds(re,!0),ne()},V=(re,_,E)=>{_.component=re;const $=re.vnode.props;re.vnode=_,re.next=null,b4(re,_.props,$,E),y4(re,_.children,E),Ju(),fI(),Du()},Y=(re,_,E,$,ae,le,ee,te,be=!1)=>{const ne=re&&re.children,B=re?re.shapeFlag:0,q=_.children,{patchFlag:ue,shapeFlag:ve}=_;if(ue>0){if(ue&128){J(ne,q,E,$,ae,le,ee,te,be);return}else if(ue&256){T(ne,q,E,$,ae,le,ee,te,be);return}}ve&8?(B&16&&O(ne,ae,le),q!==ne&&b(E,q)):B&16?ve&16?J(ne,q,E,$,ae,le,ee,te,be):O(ne,ae,le,!0):(B&8&&b(E,""),ve&16&&M(q,E,$,ae,le,ee,te,be))},T=(re,_,E,$,ae,le,ee,te,be)=>{re=re||hu,_=_||hu;const ne=re.length,B=_.length,q=Math.min(ne,B);let ue;for(ue=0;ueB?O(re,ae,le,!0,!1,q):M(_,E,$,ae,le,ee,te,be,q)},J=(re,_,E,$,ae,le,ee,te,be)=>{let ne=0;const B=_.length;let q=re.length-1,ue=B-1;for(;ne<=q&&ne<=ue;){const ve=re[ne],Ge=_[ne]=be?rs(_[ne]):jr(_[ne]);if($s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;ne++}for(;ne<=q&&ne<=ue;){const ve=re[q],Ge=_[ue]=be?rs(_[ue]):jr(_[ue]);if($s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;q--,ue--}if(ne>q){if(ne<=ue){const ve=ue+1,Ge=veue)for(;ne<=q;)K(re[ne],ae,le,!0),ne++;else{const ve=ne,Ge=ne,Je=new Map;for(ne=Ge;ne<=ue;ne++){const De=_[ne]=be?rs(_[ne]):jr(_[ne]);De.key!=null&&Je.set(De.key,ne)}let xe,ke=0;const Pe=ue-Ge+1;let Be=!1,Te=0;const we=new Array(Pe);for(ne=0;ne=Pe){K(De,ae,le,!0);continue}let me;if(De.key!=null)me=Je.get(De.key);else for(xe=Ge;xe<=ue;xe++)if(we[xe-Ge]===0&&$s(De,_[xe])){me=xe;break}me===void 0?K(De,ae,le,!0):(we[me-Ge]=ne+1,me>=Te?Te=me:Be=!0,m(De,_[me],E,null,ae,le,ee,te,be),ke++)}const Se=Be?X4(we):hu;for(xe=Se.length-1,ne=Pe-1;ne>=0;ne--){const De=Ge+ne,me=_[De],Ve=De+1{const{el:le,type:ee,transition:te,children:be,shapeFlag:ne}=re;if(ne&6){U(re.component.subTree,_,E,$);return}if(ne&128){re.suspense.move(_,E,$);return}if(ne&64){ee.move(re,_,E,se);return}if(ee===ln){i(le,_,E);for(let q=0;qte.enter(le),ae);else{const{leave:q,delayLeave:ue,afterLeave:ve}=te,Ge=()=>i(le,_,E),Je=()=>{q(le,()=>{Ge(),ve&&ve()})};ue?ue(le,Ge,Je):Je()}else i(le,_,E)},K=(re,_,E,$=!1,ae=!1)=>{const{type:le,props:ee,ref:te,children:be,dynamicChildren:ne,shapeFlag:B,patchFlag:q,dirs:ue}=re;if(te!=null&&y2(te,null,E,re,!0),B&256){_.ctx.deactivate(re);return}const ve=B&1&&ue,Ge=!jd(re);let Je;if(Ge&&(Je=ee&&ee.onVnodeBeforeUnmount)&&kr(Je,_,re),B&6)F(re.component,E,$);else{if(B&128){re.suspense.unmount(E,$);return}ve&&Js(re,null,_,"beforeUnmount"),B&64?re.type.remove(re,_,E,ae,se,$):ne&&(le!==ln||q>0&&q&64)?O(ne,_,E,!1,!0):(le===ln&&q&384||!ae&&B&16)&&O(be,_,E),$&&H(re)}(Ge&&(Je=ee&&ee.onVnodeUnmounted)||ve)&&fa(()=>{Je&&kr(Je,_,re),ve&&Js(re,null,_,"unmounted")},E)},H=re=>{const{type:_,el:E,anchor:$,transition:ae}=re;if(_===ln){k(E,$);return}if(_===Fy){s(re);return}const le=()=>{a(E),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(re.shapeFlag&1&&ae&&!ae.persisted){const{leave:ee,delayLeave:te}=ae,be=()=>ee(E,le);te?te(re.el,le,be):be()}else le()},k=(re,_)=>{let E;for(;re!==_;)E=p(re),a(re),re=E;a(_)},F=(re,_,E)=>{const{bum:$,scope:ae,update:le,subTree:ee,um:te}=re;$&&Cy($),ae.stop(),le&&(le.active=!1,K(ee,re,_,E)),te&&fa(te,_),fa(()=>{re.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&re.asyncDep&&!re.asyncResolved&&re.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},O=(re,_,E,$=!1,ae=!1,le=0)=>{for(let ee=le;eere.shapeFlag&6?Q(re.component.subTree):re.shapeFlag&128?re.suspense.next():p(re.anchor||re.el),oe=(re,_,E)=>{re==null?_._vnode&&K(_._vnode,null,null,!0):m(_._vnode||null,re,_,null,null,null,E),fI(),eR(),_._vnode=re},se={p:m,um:K,m:U,r:H,mt:g,mc:M,pc:Y,pbc:w,n:Q,o:n};let he,pe;return e&&([he,pe]=e(se)),{render:oe,hydrate:he,createApp:v4(oe,he)}}function Ds({effect:n,update:e},t){n.allowRecurse=e.allowRecurse=t}function zW(n,e,t=!1){const i=n.children,a=e.children;if(gn(i)&&gn(a))for(let l=0;l>1,n[t[r]]0&&(e[i]=t[l-1]),t[l]=i)}}for(l=t.length,o=t[l-1];l-- >0;)t[l]=o,o=e[o];return t}const N4=n=>n.__isTeleport,Ed=n=>n&&(n.disabled||n.disabled===""),NI=n=>typeof SVGElement<"u"&&n instanceof SVGElement,Z2=(n,e)=>{const t=n&&n.to;return el(t)?e?e(t):null:t},M4={__isTeleport:!0,process(n,e,t,i,a,l,o,r,f,v){const{mc:b,pc:Z,pbc:p,o:{insert:y,querySelector:X,createText:m,createComment:N}}=v,G=Ed(e.props);let{shapeFlag:d,children:u,dynamicChildren:s}=e;if(n==null){const h=e.el=m(""),c=e.anchor=m("");y(h,t,i),y(c,t,i);const W=e.target=Z2(e.props,X),M=e.targetAnchor=m("");W&&(y(M,W),o=o||NI(W));const I=(w,C)=>{d&16&&b(u,w,C,a,l,o,r,f)};G?I(t,c):W&&I(W,M)}else{e.el=n.el;const h=e.anchor=n.anchor,c=e.target=n.target,W=e.targetAnchor=n.targetAnchor,M=Ed(n.props),I=M?t:c,w=M?h:W;if(o=o||NI(c),s?(p(n.dynamicChildren,s,I,a,l,o,r),zW(n,e,!0)):f||Z(n,e,I,w,a,l,o,r,!1),G)M||Kf(e,t,h,v,1);else if((e.props&&e.props.to)!==(n.props&&n.props.to)){const C=e.target=Z2(e.props,X);C&&Kf(e,C,null,v,0)}else M&&Kf(e,c,W,v,1)}vR(e)},remove(n,e,t,i,{um:a,o:{remove:l}},o){const{shapeFlag:r,children:f,anchor:v,targetAnchor:b,target:Z,props:p}=n;if(Z&&l(b),(o||!Ed(p))&&(l(v),r&16))for(let y=0;y0?vr||hu:null,Y4(),hh>0&&vr&&vr.push(n),n}function oc(n,e,t,i,a,l){return WR(Ou(n,e,t,i,a,l,!0))}function Lo(n,e,t,i,a){return WR(D(n,e,t,i,a,!0))}function yl(n){return n?n.__v_isVNode===!0:!1}function $s(n,e){return n.type===e.type&&n.key===e.key}const C0="__vInternal",GR=({key:n})=>n??null,Tb=({ref:n,ref_key:e,ref_for:t})=>n!=null?el(n)||$i(n)||Sn(n)?{i:Yl,r:n,k:e,f:!!t}:n:null;function Ou(n,e=null,t=null,i=0,a=null,l=n===ln?0:1,o=!1,r=!1){const f={__v_isVNode:!0,__v_skip:!0,type:n,props:e,key:e&&GR(e),ref:e&&Tb(e),scopeId:g0,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:i,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Yl};return r?(FW(f,t),l&128&&n.normalize(f)):t&&(f.shapeFlag|=el(t)?8:16),hh>0&&!o&&vr&&(f.patchFlag>0||l&6)&&f.patchFlag!==32&&vr.push(f),f}const D=w4;function w4(n,e=null,t=null,i=0,a=null,l=!1){if((!n||n===l4)&&(n=Da),yl(n)){const r=Vl(n,e,!0);return t&&FW(r,t),hh>0&&!l&&vr&&(r.shapeFlag&6?vr[vr.indexOf(n)]=r:vr.push(r)),r.patchFlag|=-2,r}if(k4(n)&&(n=n.__vccOpts),e){e=g4(e);let{class:r,style:f}=e;r&&!el(r)&&(e.class=yW(r)),Li(f)&&(KL(f)&&!gn(f)&&(f=Zl({},f)),e.style=pW(f))}const o=el(n)?1:QU(n)?128:N4(n)?64:Li(n)?4:Sn(n)?2:0;return Ou(n,e,t,i,a,o,l,!0)}function g4(n){return n?KL(n)||C0 in n?Zl({},n):n:null}function Vl(n,e,t=!1){const{props:i,ref:a,patchFlag:l,children:o}=n,r=e?V4(i||{},e):i;return{__v_isVNode:!0,__v_skip:!0,type:n.type,props:r,key:r&&GR(r),ref:e&&e.ref?t&&a?gn(a)?a.concat(Tb(e)):[a,Tb(e)]:Tb(e):a,scopeId:n.scopeId,slotScopeIds:n.slotScopeIds,children:o,target:n.target,targetAnchor:n.targetAnchor,staticCount:n.staticCount,shapeFlag:n.shapeFlag,patchFlag:e&&n.type!==ln?l===-1?16:l|16:l,dynamicProps:n.dynamicProps,dynamicChildren:n.dynamicChildren,appContext:n.appContext,dirs:n.dirs,transition:n.transition,component:n.component,suspense:n.suspense,ssContent:n.ssContent&&Vl(n.ssContent),ssFallback:n.ssFallback&&Vl(n.ssFallback),el:n.el,anchor:n.anchor,ctx:n.ctx,ce:n.ce}}function Fl(n=" ",e=0){return D(Ms,null,n,e)}function xb(n="",e=!1){return e?(kl(),Lo(Da,null,n)):D(Da,null,n)}function jr(n){return n==null||typeof n=="boolean"?D(Da):gn(n)?D(ln,null,n.slice()):typeof n=="object"?rs(n):D(Ms,null,String(n))}function rs(n){return n.el===null&&n.patchFlag!==-1||n.memo?n:Vl(n)}function FW(n,e){let t=0;const{shapeFlag:i}=n;if(e==null)e=null;else if(gn(e))t=16;else if(typeof e=="object")if(i&65){const a=e.default;a&&(a._c&&(a._d=!1),FW(n,a()),a._c&&(a._d=!0));return}else{t=32;const a=e._;!a&&!(C0 in e)?e._ctx=Yl:a===3&&Yl&&(Yl.slots._===1?e._=1:(e._=2,n.patchFlag|=1024))}else Sn(e)?(e={default:e,_ctx:Yl},t=32):(e=String(e),i&64?(t=16,e=[Fl(e)]):t=8);n.children=e,n.shapeFlag|=t}function V4(...n){const e={};for(let t=0;tEi||Yl,Yu=n=>{Ei=n,n.scope.on()},hc=()=>{Ei&&Ei.scope.off(),Ei=null};function XR(n){return n.vnode.shapeFlag&4}let fh=!1;function x4(n,e=!1){fh=e;const{props:t,children:i}=n.vnode,a=XR(n);f4(n,t,a,e),p4(n,i);const l=a?C4(n,e):void 0;return fh=!1,l}function C4(n,e){const t=n.type;n.accessCache=Object.create(null),n.proxy=HL(new Proxy(n.ctx,o4));const{setup:i}=t;if(i){const a=n.setupContext=i.length>1?MR(n):null;Yu(n),Ju();const l=ys(i,n,0,[n.props,a]);if(Du(),hc(),TL(l)){if(l.then(hc,hc),e)return l.then(o=>{II(n,o,e)}).catch(o=>{Y0(o,n,0)});n.asyncDep=l}else II(n,l,e)}else NR(n,e)}function II(n,e,t){Sn(e)?n.type.__ssrInlineRender?n.ssrRender=e:n.render=e:Li(e)&&(n.setupState=AL(e)),NR(n,t)}let YI;function NR(n,e,t){const i=n.type;if(!n.render){if(!e&&YI&&!i.render){const a=i.template||CW(n).template;if(a){const{isCustomElement:l,compilerOptions:o}=n.appContext.config,{delimiters:r,compilerOptions:f}=i,v=Zl(Zl({isCustomElement:l,delimiters:r},o),f);i.render=YI(a,v)}}n.render=i.render||Gr}Yu(n),Ju(),s4(n),Du(),hc()}function S4(n){return new Proxy(n.attrs,{get(e,t){return Ga(n,"get","$attrs"),e[t]}})}function MR(n){const e=i=>{n.exposed=i||{}};let t;return{get attrs(){return t||(t=S4(n))},slots:n.slots,emit:n.emit,expose:e}}function S0(n){if(n.exposed)return n.exposeProxy||(n.exposeProxy=new Proxy(AL(HL(n.exposed)),{get(e,t){if(t in e)return e[t];if(t in Ud)return Ud[t](n)},has(e,t){return t in e||t in Ud}}))}function z4(n,e=!0){return Sn(n)?n.displayName||n.name:n.name||e&&n.__name}function k4(n){return Sn(n)&&"__vccOpts"in n}const de=(n,e)=>SU(n,e,fh);function F4(){return J4().attrs}function J4(){const n=Wl();return n.setupContext||(n.setupContext=MR(n))}function v2(n,e,t){const i=arguments.length;return i===2?Li(e)&&!gn(e)?yl(e)?D(n,null,[e]):D(n,e):D(n,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&yl(t)&&(t=[t]),D(n,e,t))}const D4=Symbol(""),O4=()=>un(D4),j4="3.2.47",U4="http://www.w3.org/2000/svg",qs=typeof document<"u"?document:null,wI=qs&&qs.createElement("template"),E4={insert:(n,e,t)=>{e.insertBefore(n,t||null)},remove:n=>{const e=n.parentNode;e&&e.removeChild(n)},createElement:(n,e,t,i)=>{const a=e?qs.createElementNS(U4,n):qs.createElement(n,t?{is:t}:void 0);return n==="select"&&i&&i.multiple!=null&&a.setAttribute("multiple",i.multiple),a},createText:n=>qs.createTextNode(n),createComment:n=>qs.createComment(n),setText:(n,e)=>{n.nodeValue=e},setElementText:(n,e)=>{n.textContent=e},parentNode:n=>n.parentNode,nextSibling:n=>n.nextSibling,querySelector:n=>qs.querySelector(n),setScopeId(n,e){n.setAttribute(e,"")},insertStaticContent(n,e,t,i,a,l){const o=t?t.previousSibling:e.lastChild;if(a&&(a===l||a.nextSibling))for(;e.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{wI.innerHTML=i?`${n}`:n;const r=wI.content;if(i){const f=r.firstChild;for(;f.firstChild;)r.appendChild(f.firstChild);r.removeChild(f)}e.insertBefore(r,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}};function K4(n,e,t){const i=n._vtc;i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?n.removeAttribute("class"):t?n.setAttribute("class",e):n.className=e}function H4(n,e,t){const i=n.style,a=el(t);if(t&&!a){if(e&&!el(e))for(const l in e)t[l]==null&&W2(i,l,"");for(const l in t)W2(i,l,t[l])}else{const l=i.display;a?e!==t&&(i.cssText=t):e&&n.removeAttribute("style"),"_vod"in n&&(i.display=l)}}const gI=/\s*!important$/;function W2(n,e,t){if(gn(t))t.forEach(i=>W2(n,e,i));else if(t==null&&(t=""),e.startsWith("--"))n.setProperty(e,t);else{const i=P4(n,e);gI.test(t)?n.setProperty(Fu(i),t.replace(gI,""),"important"):n[i]=t}}const VI=["Webkit","Moz","ms"],Jy={};function P4(n,e){const t=Jy[e];if(t)return t;let i=Wa(e);if(i!=="filter"&&i in n)return Jy[e]=i;i=M0(i);for(let a=0;aDy||(eE.then(()=>Dy=0),Dy=Date.now());function nE(n,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;nr(iE(i,t.value),e,5,[i])};return t.value=n,t.attached=tE(),t}function iE(n,e){if(gn(e)){const t=n.stopImmediatePropagation;return n.stopImmediatePropagation=()=>{t.call(n),n._stopped=!0},e.map(i=>a=>!a._stopped&&i&&i(a))}else return e}const TI=/^on[a-z]/,lE=(n,e,t,i,a=!1,l,o,r,f)=>{e==="class"?K4(n,i,a):e==="style"?H4(n,t,i):G0(e)?ZW(e)||$4(n,e,t,i,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):aE(n,e,i,a))?B4(n,e,i,l,o,r,f):(e==="true-value"?n._trueValue=i:e==="false-value"&&(n._falseValue=i),Q4(n,e,i,a))};function aE(n,e,t,i){return i?!!(e==="innerHTML"||e==="textContent"||e in n&&TI.test(e)&&Sn(t)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&n.tagName==="INPUT"||e==="type"&&n.tagName==="TEXTAREA"||TI.test(e)&&el(t)?!1:e in n}const $o="transition",pd="animation",aa=(n,{slots:e})=>v2(aR,YR(n),e);aa.displayName="Transition";const IR={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},rE=aa.props=Zl({},aR.props,IR),Os=(n,e=[])=>{gn(n)?n.forEach(t=>t(...e)):n&&n(...e)},xI=n=>n?gn(n)?n.some(e=>e.length>1):n.length>1:!1;function YR(n){const e={};for(const x in n)x in IR||(e[x]=n[x]);if(n.css===!1)return e;const{name:t="v",type:i,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:r=`${t}-enter-to`,appearFromClass:f=l,appearActiveClass:v=o,appearToClass:b=r,leaveFromClass:Z=`${t}-leave-from`,leaveActiveClass:p=`${t}-leave-active`,leaveToClass:y=`${t}-leave-to`}=n,X=oE(a),m=X&&X[0],N=X&&X[1],{onBeforeEnter:G,onEnter:d,onEnterCancelled:u,onLeave:s,onLeaveCancelled:h,onBeforeAppear:c=G,onAppear:W=d,onAppearCancelled:M=u}=e,I=(x,R,g)=>{ns(x,R?b:r),ns(x,R?v:o),g&&g()},w=(x,R)=>{x._isLeaving=!1,ns(x,Z),ns(x,y),ns(x,p),R&&R()},C=x=>(R,g)=>{const S=x?W:d,L=()=>I(R,x,g);Os(S,[R,L]),CI(()=>{ns(R,x?f:l),vo(R,x?b:r),xI(S)||SI(R,i,m,L)})};return Zl(e,{onBeforeEnter(x){Os(G,[x]),vo(x,l),vo(x,o)},onBeforeAppear(x){Os(c,[x]),vo(x,f),vo(x,v)},onEnter:C(!1),onAppear:C(!0),onLeave(x,R){x._isLeaving=!0;const g=()=>w(x,R);vo(x,Z),gR(),vo(x,p),CI(()=>{x._isLeaving&&(ns(x,Z),vo(x,y),xI(s)||SI(x,i,N,g))}),Os(s,[x,g])},onEnterCancelled(x){I(x,!1),Os(u,[x])},onAppearCancelled(x){I(x,!0),Os(M,[x])},onLeaveCancelled(x){w(x),Os(h,[x])}})}function oE(n){if(n==null)return null;if(Li(n))return[Oy(n.enter),Oy(n.leave)];{const e=Oy(n);return[e,e]}}function Oy(n){return $j(n)}function vo(n,e){e.split(/\s+/).forEach(t=>t&&n.classList.add(t)),(n._vtc||(n._vtc=new Set)).add(e)}function ns(n,e){e.split(/\s+/).forEach(i=>i&&n.classList.remove(i));const{_vtc:t}=n;t&&(t.delete(e),t.size||(n._vtc=void 0))}function CI(n){requestAnimationFrame(()=>{requestAnimationFrame(n)})}let sE=0;function SI(n,e,t,i){const a=n._endId=++sE,l=()=>{a===n._endId&&i()};if(t)return setTimeout(l,t);const{type:o,timeout:r,propCount:f}=wR(n,e);if(!o)return i();const v=o+"end";let b=0;const Z=()=>{n.removeEventListener(v,p),l()},p=y=>{y.target===n&&++b>=f&&Z()};setTimeout(()=>{b(t[X]||"").split(", "),a=i(`${$o}Delay`),l=i(`${$o}Duration`),o=zI(a,l),r=i(`${pd}Delay`),f=i(`${pd}Duration`),v=zI(r,f);let b=null,Z=0,p=0;e===$o?o>0&&(b=$o,Z=o,p=l.length):e===pd?v>0&&(b=pd,Z=v,p=f.length):(Z=Math.max(o,v),b=Z>0?o>v?$o:pd:null,p=b?b===$o?l.length:f.length:0);const y=b===$o&&/\b(transform|all)(,|$)/.test(i(`${$o}Property`).toString());return{type:b,timeout:Z,propCount:p,hasTransform:y}}function zI(n,e){for(;n.lengthkI(t)+kI(n[i])))}function kI(n){return Number(n.slice(0,-1).replace(",","."))*1e3}function gR(){return document.body.offsetHeight}const VR=new WeakMap,LR=new WeakMap,RR={name:"TransitionGroup",props:Zl({},rE,{tag:String,moveClass:String}),setup(n,{slots:e}){const t=Wl(),i=lR();let a,l;return Dl(()=>{if(!a.length)return;const o=n.moveClass||`${n.name||"v"}-move`;if(!fE(a[0].el,t.vnode.el,o))return;a.forEach(uE),a.forEach(dE);const r=a.filter(hE);gR(),r.forEach(f=>{const v=f.el,b=v.style;vo(v,o),b.transform=b.webkitTransform=b.transitionDuration="";const Z=v._moveCb=p=>{p&&p.target!==v||(!p||/transform$/.test(p.propertyName))&&(v.removeEventListener("transitionend",Z),v._moveCb=null,ns(v,o))};v.addEventListener("transitionend",Z)})}),()=>{const o=on(n),r=YR(o);let f=o.tag||ln;a=l,l=e.default?TW(e.default()):[];for(let v=0;vdelete n.mode;RR.props;const JW=RR;function uE(n){const e=n.el;e._moveCb&&e._moveCb(),e._enterCb&&e._enterCb()}function dE(n){LR.set(n,n.el.getBoundingClientRect())}function hE(n){const e=VR.get(n),t=LR.get(n),i=e.left-t.left,a=e.top-t.top;if(i||a){const l=n.el.style;return l.transform=l.webkitTransform=`translate(${i}px,${a}px)`,l.transitionDuration="0s",n}}function fE(n,e,t){const i=n.cloneNode();n._vtc&&n._vtc.forEach(o=>{o.split(/\s+/).forEach(r=>r&&i.classList.remove(r))}),t.split(/\s+/).forEach(o=>o&&i.classList.add(o)),i.style.display="none";const a=e.nodeType===1?e:e.parentNode;a.appendChild(i);const{hasTransform:l}=wR(i);return a.removeChild(i),l}const bE=["ctrl","shift","alt","meta"],mE={stop:n=>n.stopPropagation(),prevent:n=>n.preventDefault(),self:n=>n.target!==n.currentTarget,ctrl:n=>!n.ctrlKey,shift:n=>!n.shiftKey,alt:n=>!n.altKey,meta:n=>!n.metaKey,left:n=>"button"in n&&n.button!==0,middle:n=>"button"in n&&n.button!==1,right:n=>"button"in n&&n.button!==2,exact:(n,e)=>bE.some(t=>n[`${t}Key`]&&!e.includes(t))},FI=(n,e)=>(t,...i)=>{for(let a=0;a{yd(n,!1)}):yd(n,e))},beforeUnmount(n,{value:e}){yd(n,e)}};function yd(n,e){n.style.display=e?n._vod:"none"}const pE=Zl({patchProp:lE},E4);let JI;function TR(){return JI||(JI=W4(pE))}const wm=(...n)=>{TR().render(...n)},xR=(...n)=>{const e=TR().createApp(...n),{mount:t}=e;return e.mount=i=>{const a=yE(i);if(!a)return;const l=e._component;!Sn(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";const o=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),o},e};function yE(n){return el(n)?document.querySelector(n):n}function Yt(n){return Yt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yt(n)}function ZE(n,e){if(Yt(n)!=="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var i=t.call(n,e||"default");if(Yt(i)!=="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function CR(n){var e=ZE(n,"string");return Yt(e)==="symbol"?e:String(e)}function ce(n,e,t){return e=CR(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function DI(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function P(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0;return typeof n=="function"?n(e):n??t}function _e(){for(var n=[],e=0;e0},n.prototype.connect_=function(){!G2||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),zE?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},n.prototype.disconnect_=function(){!G2||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},n.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=t===void 0?"":t,a=SE.some(function(l){return!!~i.indexOf(l)});a&&this.refresh()},n.getInstance=function(){return this.instance_||(this.instance_=new n),this.instance_},n.instance_=null,n}(),kR=function(n,e){for(var t=0,i=Object.keys(e);t"u"||!(Element instanceof Object))){if(!(e instanceof wu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new KE(e)),this.controller_.addObserver(this),this.controller_.refresh())}},n.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof wu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},n.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},n.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},n.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(i){return new HE(i.target,i.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},n.prototype.clearActive=function(){this.activeObservations_.splice(0)},n.prototype.hasActive=function(){return this.activeObservations_.length>0},n}(),JR=typeof WeakMap<"u"?new WeakMap:new zR,DR=function(){function n(e){if(!(this instanceof n))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=kE.getInstance(),i=new PE(e,t,this);JR.set(this,i)}return n}();["observe","unobserve","disconnect"].forEach(function(n){DR.prototype[n]=function(){var e;return(e=JR.get(this))[n].apply(e,arguments)}});var QE=function(){return typeof gm.ResizeObserver<"u"?gm.ResizeObserver:DR}();const OW=QE;function OR(n){if(Array.isArray(n))return n}function BE(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var i,a,l,o,r=[],f=!0,v=!1;try{if(l=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;f=!1}else for(;!(f=(i=l.call(t)).done)&&(r.push(i.value),r.length!==e);f=!0);}catch(b){v=!0,a=b}finally{try{if(!f&&t.return!=null&&(o=t.return(),Object(o)!==o))return}finally{if(v)throw a}}return r}}function X2(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);t0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,i={},a=/;(?![^(]*\))/g,l=/:(.+)/;return Yt(e)==="object"?e:(e.split(a).forEach(function(o){if(o){var r=o.split(l);if(r.length>1){var f=t?DW(r[0].trim()):r[0].trim();i[f]=r[1].trim()}}}),i)},Mo=function(e,t){return e[t]!==void 0},ti=function n(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=Array.isArray(e)?e:[e],a=[];return i.forEach(function(l){Array.isArray(l)?a.push.apply(a,yt(n(l,t))):l&&l.type===ln?a.push.apply(a,yt(n(l.children,t))):l&&yl(l)?t&&!xh(l)?a.push(l):t||a.push(l):N2(l)&&a.push(l)}),a},Th=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(yl(e))return e.type===ln?t==="default"?ti(e.children):[]:e.children&&e.children[t]?ti(e.children[t](i)):[];var a=e.$slots[t]&&e.$slots[t](i);return ti(a)},ds=function(e){for(var t,i=(e==null||(t=e.vnode)===null||t===void 0?void 0:t.el)||e&&(e.$el||e);i&&!i.tagName;)i=i.nextSibling;return i},QR=function(e){var t={};if(e.$&&e.$.vnode){var i=e.$.vnode.props||{};Object.keys(e.$props).forEach(function(r){var f=e.$props[r],v=wE(r);(f!==void 0||v in i)&&(t[r]=f)})}else if(yl(e)&&Yt(e.type)==="object"){var a=e.props||{},l={};Object.keys(a).forEach(function(r){l[DW(r)]=a[r]});var o=e.type.props||{};Object.keys(o).forEach(function(r){var f=VE(o,l,r,l[r]);(f!==void 0||r in l)&&(t[r]=f)})}return t},HW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,l=void 0;if(e.$){var o=e[t];if(o!==void 0)return typeof o=="function"&&a?o(i):o;l=e.$slots[t],l=a&&l?l(i):l}else if(yl(e)){var r=e.props&&e.props[t];if(r!==void 0&&e.props!==null)return typeof r=="function"&&a?r(i):r;e.type===ln?l=e.children:e.children&&e.children[t]&&(l=e.children[t],l=a&&l?l(i):l)}return Array.isArray(l)&&(l=ti(l),l=l.length===1?l[0]:l,l=l.length===0?void 0:l),l};function EI(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t={};return n.$?t=P(P({},t),n.$attrs):t=P(P({},t),n.props),EW(t)[e?"onEvents":"events"]}function ZK(n){var e=(yl(n)?n.props:n.$attrs)||{},t=e.class||{},i={};return typeof t=="string"?t.split(" ").forEach(function(a){i[a.trim()]=!0}):Array.isArray(t)?_e(t).split(" ").forEach(function(a){i[a.trim()]=!0}):i=P(P({},i),t),i}function BR(n,e){var t=(yl(n)?n.props:n.$attrs)||{},i=t.style||{};if(typeof i=="string")i=KW(i,e);else if(e&&i){var a={};return Object.keys(i).forEach(function(l){return a[DW(l)]=i[l]}),a}return i}function vK(n){return n==null||n===""||Array.isArray(n)&&n.length===0}function xh(n){return n&&(n.type===Da||n.type===ln&&n.children.length===0||n.type===Ms&&n.children.trim()==="")}function WK(n){return n&&n.type===Ms}function Ri(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[];return n.forEach(function(t){Array.isArray(t)?e.push.apply(e,yt(t)):(t==null?void 0:t.type)===ln?e.push.apply(e,yt(Ri(t.children))):e.push(t)}),e.filter(function(t){return!xh(t)})}function vd(n){if(n){var e=Ri(n);return e.length?e:void 0}else return n}function Si(n){return Array.isArray(n)&&n.length===1&&(n=n[0]),n&&n.__v_isVNode&&Yt(n.type)!=="symbol"}function ui(n,e){var t,i,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(t=e[a])!==null&&t!==void 0?t:(i=n[a])===null||i===void 0?void 0:i.call(n)}const rr=He({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,t){var i=t.slots,a=zn({width:0,height:0,offsetHeight:0,offsetWidth:0}),l=null,o=null,r=function(){o&&(o.disconnect(),o=null)},f=function(p){var y=e.onResize,X=p[0].target,m=X.getBoundingClientRect(),N=m.width,G=m.height,d=X.offsetWidth,u=X.offsetHeight,s=Math.floor(N),h=Math.floor(G);if(a.width!==s||a.height!==h||a.offsetWidth!==d||a.offsetHeight!==u){var c={width:s,height:h,offsetWidth:d,offsetHeight:u};Xn(a,c),y&&Promise.resolve().then(function(){y(P(P({},c),{},{offsetWidth:d,offsetHeight:u}),X)})}},v=Wl(),b=function(){var p=e.disabled;if(p){r();return}var y=ds(v),X=y!==l;X&&(r(),l=y),!o&&y&&(o=new OW(f),o.observe(y))};return Kt(function(){b()}),Dl(function(){b()}),la(function(){r()}),rt(function(){return e.disabled},function(){b()},{flush:"post"}),function(){var Z;return(Z=i.default)===null||Z===void 0?void 0:Z.call(i)[0]}}});var AR=function(e){return setTimeout(e,16)},_R=function(e){return clearTimeout(e)};typeof window<"u"&&"requestAnimationFrame"in window&&(AR=function(e){return window.requestAnimationFrame(e)},_R=function(e){return window.cancelAnimationFrame(e)});var KI=0,PW=new Map;function $R(n){PW.delete(n)}function At(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;KI+=1;var t=KI;function i(a){if(a===0)$R(t),n();else{var l=AR(function(){i(a-1)});PW.set(t,l)}}return i(e),t}At.cancel=function(n){var e=PW.get(n);return $R(e),_R(e)};function M2(n){var e,t=function(l){return function(){e=null,n.apply(void 0,yt(l))}},i=function(){if(e==null){for(var l=arguments.length,o=new Array(l),r=0;rn.top-t)return"".concat(t+e.top,"px")}function QI(n,e,t){if(t!==void 0&&e.bottom=0)&&(t[a]=n[a]);return t}function jt(n,e){if(n==null)return{};var t=XK(n,e),i,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}const tT={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"};var NK={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};const MK=NK;var IK={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};const nT=IK;var YK={lang:P({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},MK),timePickerLocale:P({},nT)};const bh=YK;var La="${label} is not a valid ${type}",wK={locale:"en",Pagination:tT,DatePicker:bh,TimePicker:nT,Calendar:bh,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:La,method:La,array:La,object:La,number:La,date:La,boolean:La,integer:La,float:La,regexp:La,email:La,url:La,hex:La},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};const Mr=wK,ju=He({compatConfig:{MODE:3},name:"LocaleReceiver",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup:function(e,t){var i=t.slots,a=un("localeData",{}),l=de(function(){var r=e.componentName,f=r===void 0?"global":r,v=e.defaultLocale,b=v||Mr[f||"global"],Z=a.antLocale,p=f&&Z?Z[f]:{};return P(P({},typeof b=="function"?b():b),p||{})}),o=de(function(){var r=a.antLocale,f=r&&r.locale;return r&&r.exist&&!f?Mr.locale:f});return function(){var r=e.children||i.default,f=a.antLocale;return r==null?void 0:r(l.value,o.value,f)}}});function Br(n,e,t){var i=un("localeData",{}),a=de(function(){var l=i.antLocale,o=mi(e)||Mr[n||"global"],r=n&&l?l[n]:{};return P(P(P({},typeof o=="function"?o():o),r||{}),mi(t)||{})});return[a]}var iT=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-default");return D("svg",{class:i,width:"184",height:"152",viewBox:"0 0 184 152"},[D("g",{fill:"none","fill-rule":"evenodd"},[D("g",{transform:"translate(24 31.67)"},[D("ellipse",{class:"".concat(i,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"},null),D("path",{class:"".concat(i,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"},null),D("path",{class:"".concat(i,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"},null),D("path",{class:"".concat(i,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"},null),D("path",{class:"".concat(i,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"},null)]),D("path",{class:"".concat(i,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"},null),D("g",{class:"".concat(i,"-g"),transform:"translate(149.65 15.383)"},[D("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"},null),D("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"},null)])])])};iT.PRESENTED_IMAGE_DEFAULT=!0;const gK=iT;var lT=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-simple");return D("svg",{class:i,width:"64",height:"41",viewBox:"0 0 64 41"},[D("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[D("ellipse",{class:"".concat(i,"-ellipse"),fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"},null),D("g",{class:"".concat(i,"-g"),"fill-rule":"nonzero",stroke:"#D9D9D9"},[D("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"},null),D("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA",class:"".concat(i,"-path")},null)])])])};lT.PRESENTED_IMAGE_SIMPLE=!0;const VK=lT;function _I(n,e){for(var t=0;t=0||(a[t]=n[t]);return a}function $I(n){return((e=n)!=null&&typeof e=="object"&&Array.isArray(e)===!1)==1&&Object.prototype.toString.call(n)==="[object Object]";var e}var sT=Object.prototype,cT=sT.toString,LK=sT.hasOwnProperty,uT=/^\s*function (\w+)/;function qI(n){var e,t=(e=n==null?void 0:n.type)!==null&&e!==void 0?e:n;if(t){var i=t.toString().match(uT);return i?i[1]:""}return""}var Wc=function(n){var e,t;return $I(n)!==!1&&typeof(e=n.constructor)=="function"&&$I(t=e.prototype)!==!1&&t.hasOwnProperty("isPrototypeOf")!==!1},RK=function(n){return n},na=RK,mh=function(n,e){return LK.call(n,e)},TK=Number.isInteger||function(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n},gu=Array.isArray||function(n){return cT.call(n)==="[object Array]"},Vu=function(n){return cT.call(n)==="[object Function]"},Lm=function(n){return Wc(n)&&mh(n,"_vueTypes_name")},dT=function(n){return Wc(n)&&(mh(n,"type")||["_vueTypes_name","validator","default","required"].some(function(e){return mh(n,e)}))};function QW(n,e){return Object.defineProperty(n.bind(e),"__original",{value:n})}function Ic(n,e,t){var i;t===void 0&&(t=!1);var a=!0,l="";i=Wc(n)?n:{type:n};var o=Lm(i)?i._vueTypes_name+" - ":"";if(dT(i)&&i.type!==null){if(i.type===void 0||i.type===!0||!i.required&&e===void 0)return a;gu(i.type)?(a=i.type.some(function(Z){return Ic(Z,e,!0)===!0}),l=i.type.map(function(Z){return qI(Z)}).join(" or ")):a=(l=qI(i))==="Array"?gu(e):l==="Object"?Wc(e):l==="String"||l==="Number"||l==="Boolean"||l==="Function"?function(Z){if(Z==null)return"";var p=Z.constructor.toString().match(uT);return p?p[1]:""}(e)===l:e instanceof i.type}if(!a){var r=o+'value "'+e+'" should be of type "'+l+'"';return t===!1?(na(r),!1):r}if(mh(i,"validator")&&Vu(i.validator)){var f=na,v=[];if(na=function(Z){v.push(Z)},a=i.validator(e),na=f,!a){var b=(v.length>1?"* ":"")+v.join(` -* `);return v.length=0,t===!1?(na(b),a):b}}return a}function Oa(n,e){var t=Object.defineProperties(e,{_vueTypes_name:{value:n,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(a){return a!==void 0||this.default?Vu(a)||Ic(this,a,!0)===!0?(this.default=gu(a)?function(){return[].concat(a)}:Wc(a)?function(){return Object.assign({},a)}:a,this):(na(this._vueTypes_name+' - invalid default value: "'+a+'"'),this):this}}}),i=t.validator;return Vu(i)&&(t.validator=QW(i,t)),t}function Qr(n,e){var t=Oa(n,e);return Object.defineProperty(t,"validate",{value:function(i){return Vu(this.validator)&&na(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: -`+JSON.stringify(this)),this.validator=QW(i,this),this}})}function e5(n,e,t){var i,a,l=(i=e,a={},Object.getOwnPropertyNames(i).forEach(function(Z){a[Z]=Object.getOwnPropertyDescriptor(i,Z)}),Object.defineProperties({},a));if(l._vueTypes_name=n,!Wc(t))return l;var o,r,f=t.validator,v=oT(t,["validator"]);if(Vu(f)){var b=l.validator;b&&(b=(r=(o=b).__original)!==null&&r!==void 0?r:o),l.validator=QW(b?function(Z){return b.call(this,Z)&&f.call(this,Z)}:f,l)}return Object.assign(l,v)}function F0(n){return n.replace(/^(?!\s*$)/gm," ")}var xK=function(){return Qr("any",{})},CK=function(){return Qr("function",{type:Function})},SK=function(){return Qr("boolean",{type:Boolean})},zK=function(){return Qr("string",{type:String})},kK=function(){return Qr("number",{type:Number})},FK=function(){return Qr("array",{type:Array})},JK=function(){return Qr("object",{type:Object})},DK=function(){return Oa("integer",{type:Number,validator:function(n){return TK(n)}})},OK=function(){return Oa("symbol",{validator:function(n){return typeof n=="symbol"}})};function jK(n,e){if(e===void 0&&(e="custom validation failed"),typeof n!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return Oa(n.name||"<>",{validator:function(t){var i=n(t);return i||na(this._vueTypes_name+" - "+e),i}})}function UK(n){if(!gu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var e='oneOf - value should be one of "'+n.join('", "')+'".',t=n.reduce(function(i,a){if(a!=null){var l=a.constructor;i.indexOf(l)===-1&&i.push(l)}return i},[]);return Oa("oneOf",{type:t.length>0?t:void 0,validator:function(i){var a=n.indexOf(i)!==-1;return a||na(e),a}})}function EK(n){if(!gu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var e=!1,t=[],i=0;i0&&t.some(function(f){return o.indexOf(f)===-1})){var r=t.filter(function(f){return o.indexOf(f)===-1});return na(r.length===1?'shape - required property "'+r[0]+'" is not defined.':'shape - required properties "'+r.join('", "')+'" are not defined.'),!1}return o.every(function(f){if(e.indexOf(f)===-1)return l._vueTypes_isLoose===!0||(na('shape - shape definition does not include a "'+f+'" property. Allowed keys: "'+e.join('", "')+'".'),!1);var v=Ic(n[f],a[f],!0);return typeof v=="string"&&na('shape - "'+f+`" property validation error: - `+F0(v)),v===!0})}});return Object.defineProperty(i,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(i,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),i}var Jr=function(){function n(){}return n.extend=function(e){var t=this;if(gu(e))return e.forEach(function(Z){return t.extend(Z)}),this;var i=e.name,a=e.validate,l=a!==void 0&&a,o=e.getter,r=o!==void 0&&o,f=oT(e,["name","validate","getter"]);if(mh(this,i))throw new TypeError('[VueTypes error]: Type "'+i+'" already defined');var v,b=f.type;return Lm(b)?(delete f.type,Object.defineProperty(this,i,r?{get:function(){return e5(i,b,f)}}:{value:function(){var Z,p=e5(i,b,f);return p.validator&&(p.validator=(Z=p.validator).bind.apply(Z,[p].concat([].slice.call(arguments)))),p}})):(v=r?{get:function(){var Z=Object.assign({},f);return l?Qr(i,Z):Oa(i,Z)},enumerable:!0}:{value:function(){var Z,p,y=Object.assign({},f);return Z=l?Qr(i,y):Oa(i,y),y.validator&&(Z.validator=(p=y.validator).bind.apply(p,[Z].concat([].slice.call(arguments)))),Z},enumerable:!0},Object.defineProperty(this,i,v))},aT(n,null,[{key:"any",get:function(){return xK()}},{key:"func",get:function(){return CK().def(this.defaults.func)}},{key:"bool",get:function(){return SK().def(this.defaults.bool)}},{key:"string",get:function(){return zK().def(this.defaults.string)}},{key:"number",get:function(){return kK().def(this.defaults.number)}},{key:"array",get:function(){return FK().def(this.defaults.array)}},{key:"object",get:function(){return JK().def(this.defaults.object)}},{key:"integer",get:function(){return DK().def(this.defaults.integer)}},{key:"symbol",get:function(){return OK()}}]),n}();function hT(n){var e;return n===void 0&&(n={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(t){function i(){return t.apply(this,arguments)||this}return rT(i,t),aT(i,null,[{key:"sensibleDefaults",get:function(){return Cb({},this.defaults)},set:function(a){this.defaults=a!==!1?Cb({},a!==!0?a:n):{}}}]),i}(Jr)).defaults=Cb({},n),e}Jr.defaults={},Jr.custom=jK,Jr.oneOf=UK,Jr.instanceOf=HK,Jr.oneOfType=EK,Jr.arrayOf=KK,Jr.objectOf=PK,Jr.shape=QK,Jr.utils={validate:function(n,e){return Ic(e,n,!0)===!0},toType:function(n,e,t){return t===void 0&&(t=!1),t?Qr(n,e):Oa(n,e)}};(function(n){function e(){return n.apply(this,arguments)||this}return rT(e,n),e})(hT());var fT=hT({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});fT.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function bT(n){return n.default=void 0,n}const We=fT;var BK=["image","description","imageStyle","class"],mT=D(gK,null,null),pT=D(VK,null,null),Uu=function(e,t){var i,a=t.slots,l=a===void 0?{}:a,o=t.attrs,r=Nt("empty",e),f=r.direction,v=r.prefixCls,b=v.value,Z=P(P({},e),o),p=Z.image,y=p===void 0?mT:p,X=Z.description,m=X===void 0?((i=l.description)===null||i===void 0?void 0:i.call(l))||void 0:X,N=Z.imageStyle,G=Z.class,d=G===void 0?"":G,u=jt(Z,BK);return D(ju,{componentName:"Empty",children:function(h){var c,W=typeof m<"u"?m:h.description,M=typeof W=="string"?W:"empty",I=null;return typeof y=="string"?I=D("img",{alt:M,src:y},null):I=y,D("div",P({class:_e(b,d,(c={},ce(c,"".concat(b,"-normal"),y===pT),ce(c,"".concat(b,"-rtl"),f.value==="rtl"),c))},u),[D("div",{class:"".concat(b,"-image"),style:N},[I]),W&&D("p",{class:"".concat(b,"-description")},[W]),l.default&&D("div",{class:"".concat(b,"-footer")},[Ri(l.default())])])}},null)};Uu.displayName="AEmpty";Uu.PRESENTED_IMAGE_DEFAULT=mT;Uu.PRESENTED_IMAGE_SIMPLE=pT;Uu.inheritAttrs=!1;Uu.props={prefixCls:String,image:We.any,description:We.any,imageStyle:{type:Object,default:void 0}};const cs=wi(Uu);var AK=function(e){var t=Nt("empty",e),i=t.prefixCls,a=function(o){switch(o){case"Table":case"List":return D(cs,{image:cs.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return D(cs,{image:cs.PRESENTED_IMAGE_SIMPLE,class:"".concat(i.value,"-small")},null);default:return D(cs,null,null)}};return a(e.componentName)};function yT(n){return D(AK,{componentName:n},null)}var t5={};function _K(n,e){}function $K(n,e){}function ZT(n,e,t){!e&&!t5[t]&&(n(!1,t),t5[t]=!0)}function vT(n,e){ZT(_K,n,e)}function qK(n,e){ZT($K,n,e)}const Ci=function(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";vT(n,"[antdv: ".concat(e,"] ").concat(t))};var I2="internalMark",Sb=He({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(e,t){var i=t.slots;Ci(e.ANT_MARK__===I2,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var a=zn({antLocale:P(P({},e.locale),{},{exist:!0}),ANT_MARK__:I2});return hn("localeData",a),rt(function(){return e.locale},function(){a.antLocale=P(P({},e.locale),{},{exist:!0})},{immediate:!0}),function(){var l;return(l=i.default)===null||l===void 0?void 0:l.call(i)}}});Sb.install=function(n){return n.component(Sb.name,Sb),n};const WT=wi(Sb);pi("bottomLeft","bottomRight","topLeft","topRight");var eH=function(e){return e!==void 0&&(e==="topLeft"||e==="topRight")?"slide-down":"slide-up"},Ys=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,enterFromClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterToClass:"".concat(e,"-enter ").concat(e,"-enter-active"),leaveFromClass:" ".concat(e,"-leave"),leaveActiveClass:"".concat(e,"-leave ").concat(e,"-leave-active"),leaveToClass:"".concat(e,"-leave ").concat(e,"-leave-active")}:{css:!1},t);return i},BW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,appearActiveClass:"".concat(e),appearToClass:"".concat(e,"-appear ").concat(e,"-appear-active"),enterFromClass:"".concat(e,"-appear ").concat(e,"-enter ").concat(e,"-appear-prepare ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e),enterToClass:"".concat(e,"-enter ").concat(e,"-appear ").concat(e,"-appear-active ").concat(e,"-enter-active"),leaveActiveClass:"".concat(e," ").concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-active")}:{css:!1},t);return i},Ir=function(e,t,i){return i!==void 0?i:"".concat(e,"-").concat(t)};const tH=He({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(e,t){var i=t.attrs,a=t.slots,l,o=de(function(){return e.duration===void 0?1.5:e.duration}),r=function(){o.value&&(l=setTimeout(function(){v()},o.value*1e3))},f=function(){l&&(clearTimeout(l),l=null)},v=function(p){p&&p.stopPropagation(),f();var y=e.onClose,X=e.noticeKey;y&&y(X)},b=function(){f(),r()};return Kt(function(){r()}),la(function(){f()}),rt([o,function(){return e.updateMark},function(){return e.visible}],function(Z,p){var y=ft(Z,3),X=y[0],m=y[1],N=y[2],G=ft(p,3),d=G[0],u=G[1],s=G[2];(X!==d||m!==u||N!==s&&s)&&b()},{flush:"post"}),function(){var Z,p,y=e.prefixCls,X=e.closable,m=e.closeIcon,N=m===void 0?(Z=a.closeIcon)===null||Z===void 0?void 0:Z.call(a):m,G=e.onClick,d=e.holder,u=i.class,s=i.style,h="".concat(y,"-notice"),c=Object.keys(i).reduce(function(M,I){return(I.substr(0,5)==="data-"||I.substr(0,5)==="aria-"||I==="role")&&(M[I]=i[I]),M},{}),W=D("div",P({class:_e(h,u,ce({},"".concat(h,"-closable"),X)),style:s,onMouseenter:f,onMouseleave:r,onClick:G},c),[D("div",{class:"".concat(h,"-content")},[(p=a.default)===null||p===void 0?void 0:p.call(a)]),X?D("a",{tabindex:0,onClick:v,class:"".concat(h,"-close")},[N||D("span",{class:"".concat(h,"-close-x")},null)]):null]);return d?D(kW,{to:d},{default:function(){return W}}):W}}});var nH=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],n5=0,iH=Date.now();function i5(){var n=n5;return n5+=1,"rcNotification_".concat(iH,"_").concat(n)}var Y2=He({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=new Map,r=Ne([]),f=de(function(){var Z=e.prefixCls,p=e.animation,y=p===void 0?"fade":p,X=e.transitionName;return!X&&y&&(X="".concat(Z,"-").concat(y)),BW(X)}),v=function(p,y){var X=p.key||i5(),m=P(P({},p),{},{key:X}),N=e.maxCount,G=r.value.map(function(u){return u.notice.key}).indexOf(X),d=r.value.concat();G!==-1?d.splice(G,1,{notice:m,holderCallback:y}):(N&&r.value.length>=N&&(m.key=d[0].notice.key,m.updateMark=i5(),m.userPassKey=X,d.shift()),d.push({notice:m,holderCallback:y})),r.value=d},b=function(p){r.value=r.value.filter(function(y){var X=y.notice,m=X.key,N=X.userPassKey,G=N||m;return G!==p})};return a({add:v,remove:b,notices:r}),function(){var Z,p,y=e.prefixCls,X=e.closeIcon,m=X===void 0?(Z=l.closeIcon)===null||Z===void 0?void 0:Z.call(l,{prefixCls:y}):X,N=r.value.map(function(d,u){var s=d.notice,h=d.holderCallback,c=u===r.value.length-1?s.updateMark:void 0,W=s.key,M=s.userPassKey,I=s.content,w=P(P(P({prefixCls:y,closeIcon:typeof m=="function"?m({prefixCls:y}):m},s),s.props),{},{key:W,noticeKey:M||W,updateMark:c,onClose:function(x){var R;b(x),(R=s.onClose)===null||R===void 0||R.call(s)},onClick:s.onClick});return h?D("div",{key:W,class:"".concat(y,"-hook-holder"),ref:function(x){typeof W>"u"||(x?(o.set(W,x),h(x,w)):o.delete(W))}},null):D(tH,w,{default:function(){return[typeof I=="function"?I({prefixCls:y}):I]}})}),G=(p={},ce(p,y,1),ce(p,i.class,!!i.class),p);return D("div",{class:G,style:i.style||{top:"65px",left:"50%"}},[D(JW,P({tag:"div"},f.value),{default:function(){return[N]}})])}}});Y2.newInstance=function(e,t){var i=e||{},a=i.name,l=a===void 0?"notification":a,o=i.getContainer,r=i.appContext,f=i.prefixCls,v=i.rootPrefixCls,b=i.transitionName,Z=i.hasTransitionName,p=jt(i,nH),y=document.createElement("div");if(o){var X=o();X.appendChild(y)}else document.body.appendChild(y);var m=He({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(d,u){var s=u.attrs,h=Ne();return Kt(function(){t({notice:function(W){var M;(M=h.value)===null||M===void 0||M.add(W)},removeNotice:function(W){var M;(M=h.value)===null||M===void 0||M.remove(W)},destroy:function(){wm(null,y),y.parentNode&&y.parentNode.removeChild(y)},component:h})}),function(){var c=ba,W=c.getPrefixCls(l,f),M=c.getRootPrefixCls(v,W),I=Z?b:"".concat(M,"-").concat(b);return D(bG,P(P({},c),{},{notUpdateGlobalConfig:!0,prefixCls:M}),{default:function(){return[D(Y2,P(P({ref:h},s),{},{prefixCls:W,transitionName:I}),null)]}})}}}),N=D(m,p);N.appContext=r||N.appContext,wm(N,y)};const GT=Y2;var lH={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const aH=lH;function gl(n,e){rH(n)&&(n="100%");var t=oH(n);return n=e===360?n:Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(String(n*e),10)/100),Math.abs(n-e)<1e-6?1:(e===360?n=(n<0?n%e+e:n%e)/parseFloat(String(e)):n=n%e/parseFloat(String(e)),n)}function Pf(n){return Math.min(1,Math.max(0,n))}function rH(n){return typeof n=="string"&&n.indexOf(".")!==-1&&parseFloat(n)===1}function oH(n){return typeof n=="string"&&n.indexOf("%")!==-1}function XT(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Qf(n){return n<=1?"".concat(Number(n)*100,"%"):n}function sc(n){return n.length===1?"0"+n:String(n)}function sH(n,e,t){return{r:gl(n,255)*255,g:gl(e,255)*255,b:gl(t,255)*255}}function l5(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l=0,o=0,r=(i+a)/2;if(i===a)o=0,l=0;else{var f=i-a;switch(o=r>.5?f/(2-i-a):f/(i+a),i){case n:l=(e-t)/f+(e1&&(t-=1),t<1/6?n+(e-n)*(6*t):t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function cH(n,e,t){var i,a,l;if(n=gl(n,360),e=gl(e,100),t=gl(t,100),e===0)a=t,l=t,i=t;else{var o=t<.5?t*(1+e):t+e-t*e,r=2*t-o;i=jy(r,o,n+1/3),a=jy(r,o,n),l=jy(r,o,n-1/3)}return{r:i*255,g:a*255,b:l*255}}function w2(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l=0,o=i,r=i-a,f=i===0?0:r/i;if(i===a)l=0;else{switch(i){case n:l=(e-t)/r+(e>16,g:(n&65280)>>8,b:n&255}}var V2={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function nu(n){var e={r:0,g:0,b:0},t=1,i=null,a=null,l=null,o=!1,r=!1;return typeof n=="string"&&(n=pH(n)),typeof n=="object"&&(bo(n.r)&&bo(n.g)&&bo(n.b)?(e=sH(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):bo(n.h)&&bo(n.s)&&bo(n.v)?(i=Qf(n.s),a=Qf(n.v),e=uH(n.h,i,a),o=!0,r="hsv"):bo(n.h)&&bo(n.s)&&bo(n.l)&&(i=Qf(n.s),l=Qf(n.l),e=cH(n.h,i,l),o=!0,r="hsl"),Object.prototype.hasOwnProperty.call(n,"a")&&(t=n.a)),t=XT(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}var bH="[-\\+]?\\d+%?",mH="[-\\+]?\\d*\\.\\d+%?",hs="(?:".concat(mH,")|(?:").concat(bH,")"),Uy="[\\s|\\(]+(".concat(hs,")[,|\\s]+(").concat(hs,")[,|\\s]+(").concat(hs,")\\s*\\)?"),Ey="[\\s|\\(]+(".concat(hs,")[,|\\s]+(").concat(hs,")[,|\\s]+(").concat(hs,")[,|\\s]+(").concat(hs,")\\s*\\)?"),br={CSS_UNIT:new RegExp(hs),rgb:new RegExp("rgb"+Uy),rgba:new RegExp("rgba"+Ey),hsl:new RegExp("hsl"+Uy),hsla:new RegExp("hsla"+Ey),hsv:new RegExp("hsv"+Uy),hsva:new RegExp("hsva"+Ey),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function pH(n){if(n=n.trim().toLowerCase(),n.length===0)return!1;var e=!1;if(V2[n])n=V2[n],e=!0;else if(n==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t=br.rgb.exec(n);return t?{r:t[1],g:t[2],b:t[3]}:(t=br.rgba.exec(n),t?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=br.hsl.exec(n),t?{h:t[1],s:t[2],l:t[3]}:(t=br.hsla.exec(n),t?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=br.hsv.exec(n),t?{h:t[1],s:t[2],v:t[3]}:(t=br.hsva.exec(n),t?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=br.hex8.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),a:a5(t[4]),format:e?"name":"hex8"}:(t=br.hex6.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),format:e?"name":"hex"}:(t=br.hex4.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),a:a5(t[4]+t[4]),format:e?"name":"hex8"}:(t=br.hex3.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),format:e?"name":"hex"}:!1)))))))))}function bo(n){return Boolean(br.CSS_UNIT.exec(String(n)))}var Ky=function(){function n(e,t){e===void 0&&(e=""),t===void 0&&(t={});var i;if(e instanceof n)return e;typeof e=="number"&&(e=fH(e)),this.originalInput=e;var a=nu(e);this.originalInput=e,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(i=t.format)!==null&&i!==void 0?i:a.format,this.gradientType=t.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return n.prototype.isDark=function(){return this.getBrightness()<128},n.prototype.isLight=function(){return!this.isDark()},n.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},n.prototype.getLuminance=function(){var e=this.toRgb(),t,i,a,l=e.r/255,o=e.g/255,r=e.b/255;return l<=.03928?t=l/12.92:t=Math.pow((l+.055)/1.055,2.4),o<=.03928?i=o/12.92:i=Math.pow((o+.055)/1.055,2.4),r<=.03928?a=r/12.92:a=Math.pow((r+.055)/1.055,2.4),.2126*t+.7152*i+.0722*a},n.prototype.getAlpha=function(){return this.a},n.prototype.setAlpha=function(e){return this.a=XT(e),this.roundA=Math.round(100*this.a)/100,this},n.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},n.prototype.toHsv=function(){var e=w2(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},n.prototype.toHsvString=function(){var e=w2(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.v*100);return this.a===1?"hsv(".concat(t,", ").concat(i,"%, ").concat(a,"%)"):"hsva(".concat(t,", ").concat(i,"%, ").concat(a,"%, ").concat(this.roundA,")")},n.prototype.toHsl=function(){var e=l5(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},n.prototype.toHslString=function(){var e=l5(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.l*100);return this.a===1?"hsl(".concat(t,", ").concat(i,"%, ").concat(a,"%)"):"hsla(".concat(t,", ").concat(i,"%, ").concat(a,"%, ").concat(this.roundA,")")},n.prototype.toHex=function(e){return e===void 0&&(e=!1),g2(this.r,this.g,this.b,e)},n.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},n.prototype.toHex8=function(e){return e===void 0&&(e=!1),dH(this.r,this.g,this.b,this.a,e)},n.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},n.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},n.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),i=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(t,", ").concat(i,")"):"rgba(".concat(e,", ").concat(t,", ").concat(i,", ").concat(this.roundA,")")},n.prototype.toPercentageRgb=function(){var e=function(t){return"".concat(Math.round(gl(t,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},n.prototype.toPercentageRgbString=function(){var e=function(t){return Math.round(gl(t,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},n.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+g2(this.r,this.g,this.b,!1),t=0,i=Object.entries(V2);t=0,l=!t&&a&&(e.startsWith("hex")||e==="name");return l?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},n.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},n.prototype.clone=function(){return new n(this.toString())},n.prototype.lighten=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l+=e/100,t.l=Pf(t.l),new n(t)},n.prototype.brighten=function(e){e===void 0&&(e=10);var t=this.toRgb();return t.r=Math.max(0,Math.min(255,t.r-Math.round(255*-(e/100)))),t.g=Math.max(0,Math.min(255,t.g-Math.round(255*-(e/100)))),t.b=Math.max(0,Math.min(255,t.b-Math.round(255*-(e/100)))),new n(t)},n.prototype.darken=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l-=e/100,t.l=Pf(t.l),new n(t)},n.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},n.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},n.prototype.desaturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s-=e/100,t.s=Pf(t.s),new n(t)},n.prototype.saturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s+=e/100,t.s=Pf(t.s),new n(t)},n.prototype.greyscale=function(){return this.desaturate(100)},n.prototype.spin=function(e){var t=this.toHsl(),i=(t.h+e)%360;return t.h=i<0?360+i:i,new n(t)},n.prototype.mix=function(e,t){t===void 0&&(t=50);var i=this.toRgb(),a=new n(e).toRgb(),l=t/100,o={r:(a.r-i.r)*l+i.r,g:(a.g-i.g)*l+i.g,b:(a.b-i.b)*l+i.b,a:(a.a-i.a)*l+i.a};return new n(o)},n.prototype.analogous=function(e,t){e===void 0&&(e=6),t===void 0&&(t=30);var i=this.toHsl(),a=360/t,l=[this];for(i.h=(i.h-(a*e>>1)+720)%360;--e;)i.h=(i.h+a)%360,l.push(new n(i));return l},n.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new n(e)},n.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var t=this.toHsv(),i=t.h,a=t.s,l=t.v,o=[],r=1/e;e--;)o.push(new n({h:i,s:a,v:l})),l=(l+r)%1;return o},n.prototype.splitcomplement=function(){var e=this.toHsl(),t=e.h;return[this,new n({h:(t+72)%360,s:e.s,l:e.l}),new n({h:(t+216)%360,s:e.s,l:e.l})]},n.prototype.onBackground=function(e){var t=this.toRgb(),i=new n(e).toRgb();return new n({r:i.r+(t.r-i.r)*t.a,g:i.g+(t.g-i.g)*t.a,b:i.b+(t.b-i.b)*t.a})},n.prototype.triad=function(){return this.polyad(3)},n.prototype.tetrad=function(){return this.polyad(4)},n.prototype.polyad=function(e){for(var t=this.toHsl(),i=t.h,a=[this],l=360/e,o=1;o=60&&Math.round(n.h)<=240?i=t?Math.round(n.h)-Bf*e:Math.round(n.h)+Bf*e:i=t?Math.round(n.h)+Bf*e:Math.round(n.h)-Bf*e,i<0?i+=360:i>=360&&(i-=360),i}function c5(n,e,t){if(n.h===0&&n.s===0)return n.s;var i;return t?i=n.s-r5*e:e===MT?i=n.s+r5:i=n.s+yH*e,i>1&&(i=1),t&&e===NT&&i>.1&&(i=.1),i<.06&&(i=.06),Number(i.toFixed(2))}function u5(n,e,t){var i;return t?i=n.v+ZH*e:i=n.v-vH*e,i>1&&(i=1),Number(i.toFixed(2))}function ph(n){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=[],i=nu(n),a=NT;a>0;a-=1){var l=o5(i),o=Af(nu({h:s5(l,a,!0),s:c5(l,a,!0),v:u5(l,a,!0)}));t.push(o)}t.push(Af(i));for(var r=1;r<=MT;r+=1){var f=o5(i),v=Af(nu({h:s5(f,r),s:c5(f,r),v:u5(f,r)}));t.push(v)}return e.theme==="dark"?WH.map(function(b){var Z=b.index,p=b.opacity,y=Af(GH(nu(e.backgroundColor||"#141414"),nu(t[Z]),p*100));return y}):t}var mu={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},Hy={},Py={};Object.keys(mu).forEach(function(n){Hy[n]=ph(mu[n]),Hy[n].primary=Hy[n][5],Py[n]=ph(mu[n],{theme:"dark",backgroundColor:"#141414"}),Py[n].primary=Py[n][5]});var d5=[],Wd=[],XH="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function NH(){var n=document.createElement("style");return n.setAttribute("type","text/css"),n}function MH(n,e){if(e=e||{},n===void 0)throw new Error(XH);var t=e.prepend===!0?"prepend":"append",i=e.container!==void 0?e.container:document.querySelector("head"),a=d5.indexOf(i);a===-1&&(a=d5.push(i)-1,Wd[a]={});var l;return Wd[a]!==void 0&&Wd[a][t]!==void 0?l=Wd[a][t]:(l=Wd[a][t]=NH(),t==="prepend"?i.insertBefore(l,i.childNodes[0]):i.appendChild(l)),n.charCodeAt(0)===65279&&(n=n.substr(1,n.length)),l.styleSheet?l.styleSheet.cssText+=n:l.textContent+=n,l}function h5(n){for(var e=1;e()=>(e||n((e={exports:{}}).exports,e),e.exports);var dve=Jj((Fa,Ja)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerpolicy&&(l.referrerPolicy=a.referrerpolicy),a.crossorigin==="use-credentials"?l.credentials="include":a.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(a){if(a.ep)return;a.ep=!0;const l=t(a);fetch(a.href,l)}})();function ZW(n,e){const t=Object.create(null),i=n.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}function vW(n){if(gn(n)){const e={};for(let t=0;t{if(t){const i=t.split(Oj);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function WW(n){let e="";if(el(n))e=n;else if(gn(n))for(let t=0;t{},Hj=()=>!1,Pj=/^on[^a-z]/,N0=n=>Pj.test(n),GW=n=>n.startsWith("onUpdate:"),vl=Object.assign,XW=(n,e)=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)},Qj=Object.prototype.hasOwnProperty,ei=(n,e)=>Qj.call(n,e),gn=Array.isArray,jd=n=>M0(n)==="[object Map]",Bj=n=>M0(n)==="[object Set]",Sn=n=>typeof n=="function",el=n=>typeof n=="string",NW=n=>typeof n=="symbol",Li=n=>n!==null&&typeof n=="object",CL=n=>Li(n)&&Sn(n.then)&&Sn(n.catch),Aj=Object.prototype.toString,M0=n=>Aj.call(n),_j=n=>M0(n).slice(8,-1),$j=n=>M0(n)==="[object Object]",MW=n=>el(n)&&n!=="NaN"&&n[0]!=="-"&&""+parseInt(n,10)===n,Tb=ZW(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),I0=n=>{const e=Object.create(null);return t=>e[t]||(e[t]=n(t))},qj=/-(\w)/g,Wa=I0(n=>n.replace(qj,(e,t)=>t?t.toUpperCase():"")),eU=/\B([A-Z])/g,Ju=I0(n=>n.replace(eU,"-$1").toLowerCase()),Y0=I0(n=>n.charAt(0).toUpperCase()+n.slice(1)),zy=I0(n=>n?`on${Y0(n)}`:""),oh=(n,e)=>!Object.is(n,e),ky=(n,e)=>{for(let t=0;t{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value:t})},tU=n=>{const e=parseFloat(n);return isNaN(e)?n:e},nU=n=>{const e=el(n)?Number(n):NaN;return isNaN(e)?n:e};let oI;const iU=()=>oI||(oI=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let za;class lU{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=za,!e&&za&&(this.index=(za.scopes||(za.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=za;try{return za=this,e()}finally{za=t}}}on(){za=this}off(){za=this.parent}stop(e){if(this._active){let t,i;for(t=0,i=this.effects.length;t{const e=new Set(n);return e.w=0,e.n=0,e},zL=n=>(n.w&Xs)>0,kL=n=>(n.n&Xs)>0,oU=({deps:n})=>{if(n.length)for(let e=0;e{const{deps:e}=n;if(e.length){let t=0;for(let i=0;i{(b==="length"||b>=f)&&r.push(v)})}else switch(t!==void 0&&r.push(o.get(t)),e){case"add":gn(n)?MW(t)&&r.push(o.get("length")):(r.push(o.get(uc)),jd(n)&&r.push(o.get(f2)));break;case"delete":gn(n)||(r.push(o.get(uc)),jd(n)&&r.push(o.get(f2)));break;case"set":jd(n)&&r.push(o.get(uc));break}if(r.length===1)r[0]&&b2(r[0]);else{const f=[];for(const v of r)v&&f.push(...v);b2(IW(f))}}function b2(n,e){const t=gn(n)?n:[...n];for(const i of t)i.computed&&cI(i);for(const i of t)i.computed||cI(i)}function cI(n,e){(n!==yr||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}function cU(n,e){var t;return(t=Mm.get(n))===null||t===void 0?void 0:t.get(e)}const uU=ZW("__proto__,__v_isRef,__isVue"),DL=new Set(Object.getOwnPropertyNames(Symbol).filter(n=>n!=="arguments"&&n!=="caller").map(n=>Symbol[n]).filter(NW)),dU=wW(),hU=wW(!1,!0),fU=wW(!0),uI=bU();function bU(){const n={};return["includes","indexOf","lastIndexOf"].forEach(e=>{n[e]=function(...t){const i=on(this);for(let l=0,o=this.length;l{n[e]=function(...t){Du();const i=on(this)[e].apply(this,t);return Ou(),i}}),n}function mU(n){const e=on(this);return Ga(e,"has",n),e.hasOwnProperty(n)}function wW(n=!1,e=!1){return function(i,a,l){if(a==="__v_isReactive")return!n;if(a==="__v_isReadonly")return n;if(a==="__v_isShallow")return e;if(a==="__v_raw"&&l===(n?e?RU:KL:e?EL:UL).get(i))return i;const o=gn(i);if(!n){if(o&&ei(uI,a))return Reflect.get(uI,a,l);if(a==="hasOwnProperty")return mU}const r=Reflect.get(i,a,l);return(NW(a)?DL.has(a):uU(a))||(n||Ga(i,"get",a),e)?r:$i(r)?o&&MW(a)?r:r.value:Li(r)?n?HL(r):zn(r):r}}const pU=OL(),yU=OL(!0);function OL(n=!1){return function(t,i,a,l){let o=t[i];if(Yu(o)&&$i(o)&&!$i(a))return!1;if(!n&&(!Im(a)&&!Yu(a)&&(o=on(o),a=on(a)),!gn(t)&&$i(o)&&!$i(a)))return o.value=a,!0;const r=gn(t)&&MW(i)?Number(i)n,w0=n=>Reflect.getPrototypeOf(n);function Df(n,e,t=!1,i=!1){n=n.__v_raw;const a=on(n),l=on(e);t||(e!==l&&Ga(a,"get",e),Ga(a,"get",l));const{has:o}=w0(a),r=i?gW:t?RW:sh;if(o.call(a,e))return r(n.get(e));if(o.call(a,l))return r(n.get(l));n!==a&&n.get(e)}function Of(n,e=!1){const t=this.__v_raw,i=on(t),a=on(n);return e||(n!==a&&Ga(i,"has",n),Ga(i,"has",a)),n===a?t.has(n):t.has(n)||t.has(a)}function jf(n,e=!1){return n=n.__v_raw,!e&&Ga(on(n),"iterate",uc),Reflect.get(n,"size",n)}function dI(n){n=on(n);const e=on(this);return w0(e).has.call(e,n)||(e.add(n),To(e,"add",n,n)),this}function hI(n,e){e=on(e);const t=on(this),{has:i,get:a}=w0(t);let l=i.call(t,n);l||(n=on(n),l=i.call(t,n));const o=a.call(t,n);return t.set(n,e),l?oh(e,o)&&To(t,"set",n,e):To(t,"add",n,e),this}function fI(n){const e=on(this),{has:t,get:i}=w0(e);let a=t.call(e,n);a||(n=on(n),a=t.call(e,n)),i&&i.call(e,n);const l=e.delete(n);return a&&To(e,"delete",n,void 0),l}function bI(){const n=on(this),e=n.size!==0,t=n.clear();return e&&To(n,"clear",void 0,void 0),t}function Uf(n,e){return function(i,a){const l=this,o=l.__v_raw,r=on(o),f=e?gW:n?RW:sh;return!n&&Ga(r,"iterate",uc),o.forEach((v,b)=>i.call(a,f(v),f(b),l))}}function Ef(n,e,t){return function(...i){const a=this.__v_raw,l=on(a),o=jd(l),r=n==="entries"||n===Symbol.iterator&&o,f=n==="keys"&&o,v=a[n](...i),b=t?gW:e?RW:sh;return!e&&Ga(l,"iterate",f?f2:uc),{next(){const{value:Z,done:p}=v.next();return p?{value:Z,done:p}:{value:r?[b(Z[0]),b(Z[1])]:b(Z),done:p}},[Symbol.iterator](){return this}}}}function _o(n){return function(...e){return n==="delete"?!1:this}}function NU(){const n={get(l){return Df(this,l)},get size(){return jf(this)},has:Of,add:dI,set:hI,delete:fI,clear:bI,forEach:Uf(!1,!1)},e={get(l){return Df(this,l,!1,!0)},get size(){return jf(this)},has:Of,add:dI,set:hI,delete:fI,clear:bI,forEach:Uf(!1,!0)},t={get(l){return Df(this,l,!0)},get size(){return jf(this,!0)},has(l){return Of.call(this,l,!0)},add:_o("add"),set:_o("set"),delete:_o("delete"),clear:_o("clear"),forEach:Uf(!0,!1)},i={get(l){return Df(this,l,!0,!0)},get size(){return jf(this,!0)},has(l){return Of.call(this,l,!0)},add:_o("add"),set:_o("set"),delete:_o("delete"),clear:_o("clear"),forEach:Uf(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=Ef(l,!1,!1),t[l]=Ef(l,!0,!1),e[l]=Ef(l,!1,!0),i[l]=Ef(l,!0,!0)}),[n,t,e,i]}const[MU,IU,YU,wU]=NU();function VW(n,e){const t=e?n?wU:YU:n?IU:MU;return(i,a,l)=>a==="__v_isReactive"?!n:a==="__v_isReadonly"?n:a==="__v_raw"?i:Reflect.get(ei(t,a)&&a in i?t:i,a,l)}const gU={get:VW(!1,!1)},VU={get:VW(!1,!0)},LU={get:VW(!0,!1)},UL=new WeakMap,EL=new WeakMap,KL=new WeakMap,RU=new WeakMap;function TU(n){switch(n){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xU(n){return n.__v_skip||!Object.isExtensible(n)?0:TU(_j(n))}function zn(n){return Yu(n)?n:LW(n,!1,jL,gU,UL)}function CU(n){return LW(n,!1,XU,VU,EL)}function HL(n){return LW(n,!0,GU,LU,KL)}function LW(n,e,t,i,a){if(!Li(n)||n.__v_raw&&!(e&&n.__v_isReactive))return n;const l=a.get(n);if(l)return l;const o=xU(n);if(o===0)return n;const r=new Proxy(n,o===2?i:t);return a.set(n,r),r}function bu(n){return Yu(n)?bu(n.__v_raw):!!(n&&n.__v_isReactive)}function Yu(n){return!!(n&&n.__v_isReadonly)}function Im(n){return!!(n&&n.__v_isShallow)}function PL(n){return bu(n)||Yu(n)}function on(n){const e=n&&n.__v_raw;return e?on(e):n}function QL(n){return Nm(n,"__v_skip",!0),n}const sh=n=>Li(n)?zn(n):n,RW=n=>Li(n)?HL(n):n;function BL(n){ps&&yr&&(n=on(n),JL(n.dep||(n.dep=IW())))}function AL(n,e){n=on(n);const t=n.dep;t&&b2(t)}function $i(n){return!!(n&&n.__v_isRef===!0)}function Ne(n){return _L(n,!1)}function Gn(n){return _L(n,!0)}function _L(n,e){return $i(n)?n:new SU(n,e)}class SU{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:on(e),this._value=t?e:sh(e)}get value(){return BL(this),this._value}set value(e){const t=this.__v_isShallow||Im(e)||Yu(e);e=t?e:on(e),oh(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:sh(e),AL(this))}}function mi(n){return $i(n)?n.value:n}const zU={get:(n,e,t)=>mi(Reflect.get(n,e,t)),set:(n,e,t,i)=>{const a=n[e];return $i(a)&&!$i(t)?(a.value=t,!0):Reflect.set(n,e,t,i)}};function $L(n){return bu(n)?n:new Proxy(n,zU)}function dc(n){const e=gn(n)?new Array(n.length):{};for(const t in n)e[t]=Ot(n,t);return e}class kU{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return cU(on(this._object),this._key)}}function Ot(n,e,t){const i=n[e];return $i(i)?i:new kU(n,e,t)}var qL;class FU{constructor(e,t,i,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[qL]=!1,this._dirty=!0,this.effect=new YW(e,()=>{this._dirty||(this._dirty=!0,AL(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const e=on(this);return BL(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}qL="__v_isReadonly";function JU(n,e,t=!1){let i,a;const l=Sn(n);return l?(i=n,a=Gr):(i=n.get,a=n.set),new FU(i,a,l||!a,t)}function ys(n,e,t,i){let a;try{a=i?n(...i):n()}catch(l){g0(l,e,t)}return a}function nr(n,e,t,i){if(Sn(n)){const l=ys(n,e,t,i);return l&&CL(l)&&l.catch(o=>{g0(o,e,t)}),l}const a=[];for(let l=0;l>>1;uh(zl[i])Er&&zl.splice(e,1)}function UU(n){gn(n)?mu.push(...n):(!Go||!Go.includes(n,n.allowRecurse?_s+1:_s))&&mu.push(n),tR()}function mI(n,e=ch?Er+1:0){for(;euh(t)-uh(i)),_s=0;_sn.id==null?1/0:n.id,EU=(n,e)=>{const t=uh(n)-uh(e);if(t===0){if(n.pre&&!e.pre)return-1;if(e.pre&&!n.pre)return 1}return t};function iR(n){m2=!1,ch=!0,zl.sort(EU);const e=Gr;try{for(Er=0;Erel(y)?y.trim():y)),Z&&(a=t.map(tU))}let r,f=i[r=zy(e)]||i[r=zy(Wa(e))];!f&&l&&(f=i[r=zy(Ju(e))]),f&&nr(f,n,6,a);const v=i[r+"Once"];if(v){if(!n.emitted)n.emitted={};else if(n.emitted[r])return;n.emitted[r]=!0,nr(v,n,6,a)}}function lR(n,e,t=!1){const i=e.emitsCache,a=i.get(n);if(a!==void 0)return a;const l=n.emits;let o={},r=!1;if(!Sn(n)){const f=v=>{const b=lR(v,e,!0);b&&(r=!0,vl(o,b))};!t&&e.mixins.length&&e.mixins.forEach(f),n.extends&&f(n.extends),n.mixins&&n.mixins.forEach(f)}return!l&&!r?(Li(n)&&i.set(n,null),null):(gn(l)?l.forEach(f=>o[f]=null):vl(o,l),Li(n)&&i.set(n,o),o)}function V0(n,e){return!n||!N0(e)?!1:(e=e.slice(2).replace(/Once$/,""),ei(n,e[0].toLowerCase()+e.slice(1))||ei(n,Ju(e))||ei(n,e))}let Yl=null,L0=null;function Ym(n){const e=Yl;return Yl=n,L0=n&&n.type.__scopeId||null,e}function HU(n){L0=n}function PU(){L0=null}function pa(n,e=Yl,t){if(!e||n._n)return n;const i=(...a)=>{i._d&&YI(-1);const l=Ym(e);let o;try{o=n(...a)}finally{Ym(l),i._d&&YI(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function Fy(n){const{type:e,vnode:t,proxy:i,withProxy:a,props:l,propsOptions:[o],slots:r,attrs:f,emit:v,render:b,renderCache:Z,data:p,setupState:y,ctx:X,inheritAttrs:m}=n;let N,G;const d=Ym(n);try{if(t.shapeFlag&4){const s=a||i;N=jr(b.call(s,s,Z,l,y,p,X)),G=f}else{const s=e;N=jr(s.length>1?s(l,{attrs:f,slots:r,emit:v}):s(l,null)),G=e.props?f:QU(f)}}catch(s){Hd.length=0,g0(s,n,1),N=D(Da)}let u=N;if(G&&m!==!1){const s=Object.keys(G),{shapeFlag:h}=u;s.length&&h&7&&(o&&s.some(GW)&&(G=BU(G,o)),u=Vl(u,G))}return t.dirs&&(u=Vl(u),u.dirs=u.dirs?u.dirs.concat(t.dirs):t.dirs),t.transition&&(u.transition=t.transition),N=u,Ym(d),N}const QU=n=>{let e;for(const t in n)(t==="class"||t==="style"||N0(t))&&((e||(e={}))[t]=n[t]);return e},BU=(n,e)=>{const t={};for(const i in n)(!GW(i)||!(i.slice(9)in e))&&(t[i]=n[i]);return t};function AU(n,e,t){const{props:i,children:a,component:l}=n,{props:o,children:r,patchFlag:f}=e,v=l.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&f>=0){if(f&1024)return!0;if(f&16)return i?pI(i,o,v):!!o;if(f&8){const b=e.dynamicProps;for(let Z=0;Zn.__isSuspense;function qU(n,e){e&&e.pendingBranch?gn(n)?e.effects.push(...n):e.effects.push(n):UU(n)}function hn(n,e){if(Ei){let t=Ei.provides;const i=Ei.parent&&Ei.parent.provides;i===t&&(t=Ei.provides=Object.create(i)),t[n]=e}}function un(n,e,t=!1){const i=Ei||Yl;if(i){const a=i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides;if(a&&n in a)return a[n];if(arguments.length>1)return t&&Sn(e)?e.call(i.proxy):e}}function qt(n,e){return CW(n,null,e)}const Kf={};function rt(n,e,t){return CW(n,e,t)}function CW(n,e,{immediate:t,deep:i,flush:a,onTrack:l,onTrigger:o}=Mi){const r=SL()===(Ei==null?void 0:Ei.scope)?Ei:null;let f,v=!1,b=!1;if($i(n)?(f=()=>n.value,v=Im(n)):bu(n)?(f=()=>n,i=!0):gn(n)?(b=!0,v=n.some(u=>bu(u)||Im(u)),f=()=>n.map(u=>{if($i(u))return u.value;if(bu(u))return rc(u);if(Sn(u))return ys(u,r,2)})):Sn(n)?e?f=()=>ys(n,r,2):f=()=>{if(!(r&&r.isUnmounted))return Z&&Z(),nr(n,r,3,[p])}:f=Gr,e&&i){const u=f;f=()=>rc(u())}let Z,p=u=>{Z=G.onStop=()=>{ys(u,r,4)}},y;if(bh)if(p=Gr,e?t&&nr(e,r,3,[f(),b?[]:void 0,p]):f(),a==="sync"){const u=E4();y=u.__watcherHandles||(u.__watcherHandles=[])}else return Gr;let X=b?new Array(n.length).fill(Kf):Kf;const m=()=>{if(G.active)if(e){const u=G.run();(i||v||(b?u.some((s,h)=>oh(s,X[h])):oh(u,X)))&&(Z&&Z(),nr(e,r,3,[u,X===Kf?void 0:b&&X[0]===Kf?[]:X,p]),X=u)}else G.run()};m.allowRecurse=!!e;let N;a==="sync"?N=m:a==="post"?N=()=>fa(m,r&&r.suspense):(m.pre=!0,r&&(m.id=r.uid),N=()=>xW(m));const G=new YW(f,N);e?t?m():X=G.run():a==="post"?fa(G.run.bind(G),r&&r.suspense):G.run();const d=()=>{G.stop(),r&&r.scope&&XW(r.scope.effects,G)};return y&&y.push(d),d}function e4(n,e,t){const i=this.proxy,a=el(n)?n.includes(".")?aR(i,n):()=>i[n]:n.bind(i,i);let l;Sn(e)?l=e:(l=e.handler,t=e);const o=Ei;wu(this);const r=CW(a,l.bind(i),t);return o?wu(o):hc(),r}function aR(n,e){const t=e.split(".");return()=>{let i=n;for(let a=0;a{rc(t,e)});else if($j(n))for(const t in n)rc(n[t],e);return n}function rR(){const n={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Kt(()=>{n.isMounted=!0}),fn(()=>{n.isUnmounting=!0}),n}const Aa=[Function,Array],t4={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Aa,onEnter:Aa,onAfterEnter:Aa,onEnterCancelled:Aa,onBeforeLeave:Aa,onLeave:Aa,onAfterLeave:Aa,onLeaveCancelled:Aa,onBeforeAppear:Aa,onAppear:Aa,onAfterAppear:Aa,onAppearCancelled:Aa},setup(n,{slots:e}){const t=Wl(),i=rR();let a;return()=>{const l=e.default&&SW(e.default(),!0);if(!l||!l.length)return;let o=l[0];if(l.length>1){for(const m of l)if(m.type!==Da){o=m;break}}const r=on(n),{mode:f}=r;if(i.isLeaving)return Jy(o);const v=yI(o);if(!v)return Jy(o);const b=dh(v,r,i,t);hh(v,b);const Z=t.subTree,p=Z&&yI(Z);let y=!1;const{getTransitionKey:X}=v.type;if(X){const m=X();a===void 0?a=m:m!==a&&(a=m,y=!0)}if(p&&p.type!==Da&&(!$s(v,p)||y)){const m=dh(p,r,i,t);if(hh(p,m),f==="out-in")return i.isLeaving=!0,m.afterLeave=()=>{i.isLeaving=!1,t.update.active!==!1&&t.update()},Jy(o);f==="in-out"&&v.type!==Da&&(m.delayLeave=(N,G,d)=>{const u=sR(i,p);u[String(p.key)]=p,N._leaveCb=()=>{G(),N._leaveCb=void 0,delete b.delayedLeave},b.delayedLeave=d})}return o}}},oR=t4;function sR(n,e){const{leavingVNodes:t}=n;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function dh(n,e,t,i){const{appear:a,mode:l,persisted:o=!1,onBeforeEnter:r,onEnter:f,onAfterEnter:v,onEnterCancelled:b,onBeforeLeave:Z,onLeave:p,onAfterLeave:y,onLeaveCancelled:X,onBeforeAppear:m,onAppear:N,onAfterAppear:G,onAppearCancelled:d}=e,u=String(n.key),s=sR(t,n),h=(M,I)=>{M&&nr(M,i,9,I)},c=(M,I)=>{const w=I[1];h(M,I),gn(M)?M.every(C=>C.length<=1)&&w():M.length<=1&&w()},W={mode:l,persisted:o,beforeEnter(M){let I=r;if(!t.isMounted)if(a)I=m||r;else return;M._leaveCb&&M._leaveCb(!0);const w=s[u];w&&$s(n,w)&&w.el._leaveCb&&w.el._leaveCb(),h(I,[M])},enter(M){let I=f,w=v,C=b;if(!t.isMounted)if(a)I=N||f,w=G||v,C=d||b;else return;let x=!1;const R=M._enterCb=g=>{x||(x=!0,g?h(C,[M]):h(w,[M]),W.delayedLeave&&W.delayedLeave(),M._enterCb=void 0)};I?c(I,[M,R]):R()},leave(M,I){const w=String(n.key);if(M._enterCb&&M._enterCb(!0),t.isUnmounting)return I();h(Z,[M]);let C=!1;const x=M._leaveCb=R=>{C||(C=!0,I(),R?h(X,[M]):h(y,[M]),M._leaveCb=void 0,s[w]===n&&delete s[w])};s[w]=n,p?c(p,[M,x]):x()},clone(M){return dh(M,e,t,i)}};return W}function Jy(n){if(R0(n))return n=Vl(n),n.children=null,n}function yI(n){return R0(n)?n.children?n.children[0]:void 0:n}function hh(n,e){n.shapeFlag&6&&n.component?hh(n.component.subTree,e):n.shapeFlag&128?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function SW(n,e=!1,t){let i=[],a=0;for(let l=0;l1)for(let l=0;l!!n.type.__asyncLoader,R0=n=>n.type.__isKeepAlive;function T0(n,e){uR(n,"a",e)}function cR(n,e){uR(n,"da",e)}function uR(n,e,t=Ei){const i=n.__wdc||(n.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return n()});if(x0(e,i,t),t){let a=t.parent;for(;a&&a.parent;)R0(a.parent.vnode)&&n4(i,e,t,a),a=a.parent}}function n4(n,e,t,i){const a=x0(e,n,i,!0);la(()=>{XW(i[e],a)},t)}function x0(n,e,t=Ei,i=!1){if(t){const a=t[n]||(t[n]=[]),l=e.__weh||(e.__weh=(...o)=>{if(t.isUnmounted)return;Du(),wu(t);const r=nr(e,t,n,o);return hc(),Ou(),r});return i?a.unshift(l):a.push(l),l}}const Co=n=>(e,t=Ei)=>(!bh||n==="sp")&&x0(n,(...i)=>e(...i),t),C0=Co("bm"),Kt=Co("m"),zW=Co("bu"),Dl=Co("u"),fn=Co("bum"),la=Co("um"),i4=Co("sp"),l4=Co("rtg"),a4=Co("rtc");function r4(n,e=Ei){x0("ec",n,e)}function cl(n,e){const t=Yl;if(t===null)return n;const i=k0(t)||t.proxy,a=n.dirs||(n.dirs=[]);for(let l=0;le(o,r,void 0,l&&l[r]));else{const o=Object.keys(n);a=new Array(o.length);for(let r=0,f=o.length;rZl(e)?!(e.type===Da||e.type===ln&&!bR(e.children)):!0)?n:null}const p2=n=>n?IR(n)?k0(n)||n.proxy:p2(n.parent):null,Ed=vl(Object.create(null),{$:n=>n,$el:n=>n.vnode.el,$data:n=>n.data,$props:n=>n.props,$attrs:n=>n.attrs,$slots:n=>n.slots,$refs:n=>n.refs,$parent:n=>p2(n.parent),$root:n=>p2(n.root),$emit:n=>n.emit,$options:n=>kW(n),$forceUpdate:n=>n.f||(n.f=()=>xW(n.update)),$nextTick:n=>n.n||(n.n=cn.bind(n.proxy)),$watch:n=>e4.bind(n)}),Dy=(n,e)=>n!==Mi&&!n.__isScriptSetup&&ei(n,e),u4={get({_:n},e){const{ctx:t,setupState:i,data:a,props:l,accessCache:o,type:r,appContext:f}=n;let v;if(e[0]!=="$"){const y=o[e];if(y!==void 0)switch(y){case 1:return i[e];case 2:return a[e];case 4:return t[e];case 3:return l[e]}else{if(Dy(i,e))return o[e]=1,i[e];if(a!==Mi&&ei(a,e))return o[e]=2,a[e];if((v=n.propsOptions[0])&&ei(v,e))return o[e]=3,l[e];if(t!==Mi&&ei(t,e))return o[e]=4,t[e];y2&&(o[e]=0)}}const b=Ed[e];let Z,p;if(b)return e==="$attrs"&&Ga(n,"get",e),b(n);if((Z=r.__cssModules)&&(Z=Z[e]))return Z;if(t!==Mi&&ei(t,e))return o[e]=4,t[e];if(p=f.config.globalProperties,ei(p,e))return p[e]},set({_:n},e,t){const{data:i,setupState:a,ctx:l}=n;return Dy(a,e)?(a[e]=t,!0):i!==Mi&&ei(i,e)?(i[e]=t,!0):ei(n.props,e)||e[0]==="$"&&e.slice(1)in n?!1:(l[e]=t,!0)},has({_:{data:n,setupState:e,accessCache:t,ctx:i,appContext:a,propsOptions:l}},o){let r;return!!t[o]||n!==Mi&&ei(n,o)||Dy(e,o)||(r=l[0])&&ei(r,o)||ei(i,o)||ei(Ed,o)||ei(a.config.globalProperties,o)},defineProperty(n,e,t){return t.get!=null?n._.accessCache[e]=0:ei(t,"value")&&this.set(n,e,t.value,null),Reflect.defineProperty(n,e,t)}};let y2=!0;function d4(n){const e=kW(n),t=n.proxy,i=n.ctx;y2=!1,e.beforeCreate&&vI(e.beforeCreate,n,"bc");const{data:a,computed:l,methods:o,watch:r,provide:f,inject:v,created:b,beforeMount:Z,mounted:p,beforeUpdate:y,updated:X,activated:m,deactivated:N,beforeDestroy:G,beforeUnmount:d,destroyed:u,unmounted:s,render:h,renderTracked:c,renderTriggered:W,errorCaptured:M,serverPrefetch:I,expose:w,inheritAttrs:C,components:x,directives:R,filters:g}=e;if(v&&h4(v,i,null,n.appContext.config.unwrapInjectedRef),o)for(const V in o){const Y=o[V];Sn(Y)&&(i[V]=Y.bind(t))}if(a){const V=a.call(t,t);Li(V)&&(n.data=zn(V))}if(y2=!0,l)for(const V in l){const Y=l[V],T=Sn(Y)?Y.bind(t,t):Sn(Y.get)?Y.get.bind(t,t):Gr,J=!Sn(Y)&&Sn(Y.set)?Y.set.bind(t):Gr,U=de({get:T,set:J});Object.defineProperty(i,V,{enumerable:!0,configurable:!0,get:()=>U.value,set:K=>U.value=K})}if(r)for(const V in r)mR(r[V],i,t,V);if(f){const V=Sn(f)?f.call(t):f;Reflect.ownKeys(V).forEach(Y=>{hn(Y,V[Y])})}b&&vI(b,n,"c");function L(V,Y){gn(Y)?Y.forEach(T=>V(T.bind(t))):Y&&V(Y.bind(t))}if(L(C0,Z),L(Kt,p),L(zW,y),L(Dl,X),L(T0,m),L(cR,N),L(r4,M),L(a4,c),L(l4,W),L(fn,d),L(la,s),L(i4,I),gn(w))if(w.length){const V=n.exposed||(n.exposed={});w.forEach(Y=>{Object.defineProperty(V,Y,{get:()=>t[Y],set:T=>t[Y]=T})})}else n.exposed||(n.exposed={});h&&n.render===Gr&&(n.render=h),C!=null&&(n.inheritAttrs=C),x&&(n.components=x),R&&(n.directives=R)}function h4(n,e,t=Gr,i=!1){gn(n)&&(n=Z2(n));for(const a in n){const l=n[a];let o;Li(l)?"default"in l?o=un(l.from||a,l.default,!0):o=un(l.from||a):o=un(l),$i(o)&&i?Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):e[a]=o}}function vI(n,e,t){nr(gn(n)?n.map(i=>i.bind(e.proxy)):n.bind(e.proxy),e,t)}function mR(n,e,t,i){const a=i.includes(".")?aR(t,i):()=>t[i];if(el(n)){const l=e[n];Sn(l)&&rt(a,l)}else if(Sn(n))rt(a,n.bind(t));else if(Li(n))if(gn(n))n.forEach(l=>mR(l,e,t,i));else{const l=Sn(n.handler)?n.handler.bind(t):e[n.handler];Sn(l)&&rt(a,l,n)}}function kW(n){const e=n.type,{mixins:t,extends:i}=e,{mixins:a,optionsCache:l,config:{optionMergeStrategies:o}}=n.appContext,r=l.get(e);let f;return r?f=r:!a.length&&!t&&!i?f=e:(f={},a.length&&a.forEach(v=>wm(f,v,o,!0)),wm(f,e,o)),Li(e)&&l.set(e,f),f}function wm(n,e,t,i=!1){const{mixins:a,extends:l}=e;l&&wm(n,l,t,!0),a&&a.forEach(o=>wm(n,o,t,!0));for(const o in e)if(!(i&&o==="expose")){const r=f4[o]||t&&t[o];n[o]=r?r(n[o],e[o]):e[o]}return n}const f4={data:WI,props:Qs,emits:Qs,methods:Qs,computed:Qs,beforeCreate:ql,created:ql,beforeMount:ql,mounted:ql,beforeUpdate:ql,updated:ql,beforeDestroy:ql,beforeUnmount:ql,destroyed:ql,unmounted:ql,activated:ql,deactivated:ql,errorCaptured:ql,serverPrefetch:ql,components:Qs,directives:Qs,watch:m4,provide:WI,inject:b4};function WI(n,e){return e?n?function(){return vl(Sn(n)?n.call(this,this):n,Sn(e)?e.call(this,this):e)}:e:n}function b4(n,e){return Qs(Z2(n),Z2(e))}function Z2(n){if(gn(n)){const e={};for(let t=0;t0)&&!(o&16)){if(o&8){const b=n.vnode.dynamicProps;for(let Z=0;Z{f=!0;const[p,y]=yR(Z,e,!0);vl(o,p),y&&r.push(...y)};!t&&e.mixins.length&&e.mixins.forEach(b),n.extends&&b(n.extends),n.mixins&&n.mixins.forEach(b)}if(!l&&!f)return Li(n)&&i.set(n,fu),fu;if(gn(l))for(let b=0;b-1,y[1]=m<0||X-1||ei(y,"default"))&&r.push(Z)}}}const v=[o,r];return Li(n)&&i.set(n,v),v}function GI(n){return n[0]!=="$"}function XI(n){const e=n&&n.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:n===null?"null":""}function NI(n,e){return XI(n)===XI(e)}function MI(n,e){return gn(e)?e.findIndex(t=>NI(t,n)):Sn(e)&&NI(e,n)?0:-1}const ZR=n=>n[0]==="_"||n==="$stable",FW=n=>gn(n)?n.map(jr):[jr(n)],Z4=(n,e,t)=>{if(e._n)return e;const i=pa((...a)=>FW(e(...a)),t);return i._c=!1,i},vR=(n,e,t)=>{const i=n._ctx;for(const a in n){if(ZR(a))continue;const l=n[a];if(Sn(l))e[a]=Z4(a,l,i);else if(l!=null){const o=FW(l);e[a]=()=>o}}},WR=(n,e)=>{const t=FW(e);n.slots.default=()=>t},v4=(n,e)=>{if(n.vnode.shapeFlag&32){const t=e._;t?(n.slots=on(e),Nm(e,"_",t)):vR(e,n.slots={})}else n.slots={},e&&WR(n,e);Nm(n.slots,z0,1)},W4=(n,e,t)=>{const{vnode:i,slots:a}=n;let l=!0,o=Mi;if(i.shapeFlag&32){const r=e._;r?t&&r===1?l=!1:(vl(a,e),!t&&r===1&&delete a._):(l=!e.$stable,vR(e,a)),o=e}else e&&(WR(n,e),o={default:1});if(l)for(const r in a)!ZR(r)&&!(r in o)&&delete a[r]};function GR(){return{app:null,config:{isNativeTag:Hj,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let G4=0;function X4(n,e){return function(i,a=null){Sn(i)||(i=Object.assign({},i)),a!=null&&!Li(a)&&(a=null);const l=GR(),o=new Set;let r=!1;const f=l.app={_uid:G4++,_component:i,_props:a,_container:null,_context:l,_instance:null,version:K4,get config(){return l.config},set config(v){},use(v,...b){return o.has(v)||(v&&Sn(v.install)?(o.add(v),v.install(f,...b)):Sn(v)&&(o.add(v),v(f,...b))),f},mixin(v){return l.mixins.includes(v)||l.mixins.push(v),f},component(v,b){return b?(l.components[v]=b,f):l.components[v]},directive(v,b){return b?(l.directives[v]=b,f):l.directives[v]},mount(v,b,Z){if(!r){const p=D(i,a);return p.appContext=l,b&&e?e(p,v):n(p,v,Z),r=!0,f._container=v,v.__vue_app__=f,k0(p.component)||p.component.proxy}},unmount(){r&&(n(null,f._container),delete f._container.__vue_app__)},provide(v,b){return l.provides[v]=b,f}};return f}}function W2(n,e,t,i,a=!1){if(gn(n)){n.forEach((p,y)=>W2(p,e&&(gn(e)?e[y]:e),t,i,a));return}if(Ud(i)&&!a)return;const l=i.shapeFlag&4?k0(i.component)||i.component.proxy:i.el,o=a?null:l,{i:r,r:f}=n,v=e&&e.r,b=r.refs===Mi?r.refs={}:r.refs,Z=r.setupState;if(v!=null&&v!==f&&(el(v)?(b[v]=null,ei(Z,v)&&(Z[v]=null)):$i(v)&&(v.value=null)),Sn(f))ys(f,r,12,[o,b]);else{const p=el(f),y=$i(f);if(p||y){const X=()=>{if(n.f){const m=p?ei(Z,f)?Z[f]:b[f]:f.value;a?gn(m)&&XW(m,l):gn(m)?m.includes(l)||m.push(l):p?(b[f]=[l],ei(Z,f)&&(Z[f]=b[f])):(f.value=[l],n.k&&(b[n.k]=f.value))}else p?(b[f]=o,ei(Z,f)&&(Z[f]=o)):y&&(f.value=o,n.k&&(b[n.k]=o))};o?(X.id=-1,fa(X,t)):X()}}}const fa=qU;function N4(n){return M4(n)}function M4(n,e){const t=iU();t.__VUE__=!0;const{insert:i,remove:a,patchProp:l,createElement:o,createText:r,createComment:f,setText:v,setElementText:b,parentNode:Z,nextSibling:p,setScopeId:y=Gr,insertStaticContent:X}=n,m=(re,_,E,$=null,ae=null,le=null,ee=!1,te=null,be=!!_.dynamicChildren)=>{if(re===_)return;re&&!$s(re,_)&&($=Q(re),K(re,ae,le,!0),re=null),_.patchFlag===-2&&(be=!1,_.dynamicChildren=null);const{type:ne,ref:B,shapeFlag:q}=_;switch(ne){case Ms:N(re,_,E,$);break;case Da:G(re,_,E,$);break;case Oy:re==null&&d(_,E,$,ee);break;case ln:x(re,_,E,$,ae,le,ee,te,be);break;default:q&1?h(re,_,E,$,ae,le,ee,te,be):q&6?R(re,_,E,$,ae,le,ee,te,be):(q&64||q&128)&&ne.process(re,_,E,$,ae,le,ee,te,be,se)}B!=null&&ae&&W2(B,re&&re.ref,le,_||re,!_)},N=(re,_,E,$)=>{if(re==null)i(_.el=r(_.children),E,$);else{const ae=_.el=re.el;_.children!==re.children&&v(ae,_.children)}},G=(re,_,E,$)=>{re==null?i(_.el=f(_.children||""),E,$):_.el=re.el},d=(re,_,E,$)=>{[re.el,re.anchor]=X(re.children,_,E,$,re.el,re.anchor)},u=({el:re,anchor:_},E,$)=>{let ae;for(;re&&re!==_;)ae=p(re),i(re,E,$),re=ae;i(_,E,$)},s=({el:re,anchor:_})=>{let E;for(;re&&re!==_;)E=p(re),a(re),re=E;a(_)},h=(re,_,E,$,ae,le,ee,te,be)=>{ee=ee||_.type==="svg",re==null?c(_,E,$,ae,le,ee,te,be):I(re,_,ae,le,ee,te,be)},c=(re,_,E,$,ae,le,ee,te)=>{let be,ne;const{type:B,props:q,shapeFlag:ue,transition:ve,dirs:Ge}=re;if(be=re.el=o(re.type,le,q&&q.is,q),ue&8?b(be,re.children):ue&16&&M(re.children,be,null,$,ae,le&&B!=="foreignObject",ee,te),Ge&&Js(re,null,$,"created"),W(be,re,re.scopeId,ee,$),q){for(const xe in q)xe!=="value"&&!Tb(xe)&&l(be,xe,null,q[xe],le,re.children,$,ae,O);"value"in q&&l(be,"value",null,q.value),(ne=q.onVnodeBeforeMount)&&kr(ne,$,re)}Ge&&Js(re,null,$,"beforeMount");const Je=(!ae||ae&&!ae.pendingBranch)&&ve&&!ve.persisted;Je&&ve.beforeEnter(be),i(be,_,E),((ne=q&&q.onVnodeMounted)||Je||Ge)&&fa(()=>{ne&&kr(ne,$,re),Je&&ve.enter(be),Ge&&Js(re,null,$,"mounted")},ae)},W=(re,_,E,$,ae)=>{if(E&&y(re,E),$)for(let le=0;le<$.length;le++)y(re,$[le]);if(ae){let le=ae.subTree;if(_===le){const ee=ae.vnode;W(re,ee,ee.scopeId,ee.slotScopeIds,ae.parent)}}},M=(re,_,E,$,ae,le,ee,te,be=0)=>{for(let ne=be;ne{const te=_.el=re.el;let{patchFlag:be,dynamicChildren:ne,dirs:B}=_;be|=re.patchFlag&16;const q=re.props||Mi,ue=_.props||Mi;let ve;E&&Ds(E,!1),(ve=ue.onVnodeBeforeUpdate)&&kr(ve,E,_,re),B&&Js(_,re,E,"beforeUpdate"),E&&Ds(E,!0);const Ge=ae&&_.type!=="foreignObject";if(ne?w(re.dynamicChildren,ne,te,E,$,Ge,le):ee||Y(re,_,te,null,E,$,Ge,le,!1),be>0){if(be&16)C(te,_,q,ue,E,$,ae);else if(be&2&&q.class!==ue.class&&l(te,"class",null,ue.class,ae),be&4&&l(te,"style",q.style,ue.style,ae),be&8){const Je=_.dynamicProps;for(let xe=0;xe{ve&&kr(ve,E,_,re),B&&Js(_,re,E,"updated")},$)},w=(re,_,E,$,ae,le,ee)=>{for(let te=0;te<_.length;te++){const be=re[te],ne=_[te],B=be.el&&(be.type===ln||!$s(be,ne)||be.shapeFlag&70)?Z(be.el):E;m(be,ne,B,null,$,ae,le,ee,!0)}},C=(re,_,E,$,ae,le,ee)=>{if(E!==$){if(E!==Mi)for(const te in E)!Tb(te)&&!(te in $)&&l(re,te,E[te],null,ee,_.children,ae,le,O);for(const te in $){if(Tb(te))continue;const be=$[te],ne=E[te];be!==ne&&te!=="value"&&l(re,te,ne,be,ee,_.children,ae,le,O)}"value"in $&&l(re,"value",E.value,$.value)}},x=(re,_,E,$,ae,le,ee,te,be)=>{const ne=_.el=re?re.el:r(""),B=_.anchor=re?re.anchor:r("");let{patchFlag:q,dynamicChildren:ue,slotScopeIds:ve}=_;ve&&(te=te?te.concat(ve):ve),re==null?(i(ne,E,$),i(B,E,$),M(_.children,E,B,ae,le,ee,te,be)):q>0&&q&64&&ue&&re.dynamicChildren?(w(re.dynamicChildren,ue,E,ae,le,ee,te),(_.key!=null||ae&&_===ae.subTree)&&JW(re,_,!0)):Y(re,_,E,B,ae,le,ee,te,be)},R=(re,_,E,$,ae,le,ee,te,be)=>{_.slotScopeIds=te,re==null?_.shapeFlag&512?ae.ctx.activate(_,E,$,ee,be):g(_,E,$,ae,le,ee,be):S(re,_,be)},g=(re,_,E,$,ae,le,ee)=>{const te=re.component=S4(re,$,ae);if(R0(re)&&(te.ctx.renderer=se),z4(te),te.asyncDep){if(ae&&ae.registerDep(te,L),!re.el){const be=te.subTree=D(Da);G(null,be,_,E)}return}L(te,re,_,E,ae,le,ee)},S=(re,_,E)=>{const $=_.component=re.component;if(AU(re,_,E))if($.asyncDep&&!$.asyncResolved){V($,_,E);return}else $.next=_,jU($.update),$.update();else _.el=re.el,$.vnode=_},L=(re,_,E,$,ae,le,ee)=>{const te=()=>{if(re.isMounted){let{next:B,bu:q,u:ue,parent:ve,vnode:Ge}=re,Je=B,xe;Ds(re,!1),B?(B.el=Ge.el,V(re,B,ee)):B=Ge,q&&ky(q),(xe=B.props&&B.props.onVnodeBeforeUpdate)&&kr(xe,ve,B,Ge),Ds(re,!0);const ke=Fy(re),Pe=re.subTree;re.subTree=ke,m(Pe,ke,Z(Pe.el),Q(Pe),re,ae,le),B.el=ke.el,Je===null&&_U(re,ke.el),ue&&fa(ue,ae),(xe=B.props&&B.props.onVnodeUpdated)&&fa(()=>kr(xe,ve,B,Ge),ae)}else{let B;const{el:q,props:ue}=_,{bm:ve,m:Ge,parent:Je}=re,xe=Ud(_);if(Ds(re,!1),ve&&ky(ve),!xe&&(B=ue&&ue.onVnodeBeforeMount)&&kr(B,Je,_),Ds(re,!0),q&&pe){const ke=()=>{re.subTree=Fy(re),pe(q,re.subTree,re,ae,null)};xe?_.type.__asyncLoader().then(()=>!re.isUnmounted&&ke()):ke()}else{const ke=re.subTree=Fy(re);m(null,ke,E,$,re,ae,le),_.el=ke.el}if(Ge&&fa(Ge,ae),!xe&&(B=ue&&ue.onVnodeMounted)){const ke=_;fa(()=>kr(B,Je,ke),ae)}(_.shapeFlag&256||Je&&Ud(Je.vnode)&&Je.vnode.shapeFlag&256)&&re.a&&fa(re.a,ae),re.isMounted=!0,_=E=$=null}},be=re.effect=new YW(te,()=>xW(ne),re.scope),ne=re.update=()=>be.run();ne.id=re.uid,Ds(re,!0),ne()},V=(re,_,E)=>{_.component=re;const $=re.vnode.props;re.vnode=_,re.next=null,y4(re,_.props,$,E),W4(re,_.children,E),Du(),mI(),Ou()},Y=(re,_,E,$,ae,le,ee,te,be=!1)=>{const ne=re&&re.children,B=re?re.shapeFlag:0,q=_.children,{patchFlag:ue,shapeFlag:ve}=_;if(ue>0){if(ue&128){J(ne,q,E,$,ae,le,ee,te,be);return}else if(ue&256){T(ne,q,E,$,ae,le,ee,te,be);return}}ve&8?(B&16&&O(ne,ae,le),q!==ne&&b(E,q)):B&16?ve&16?J(ne,q,E,$,ae,le,ee,te,be):O(ne,ae,le,!0):(B&8&&b(E,""),ve&16&&M(q,E,$,ae,le,ee,te,be))},T=(re,_,E,$,ae,le,ee,te,be)=>{re=re||fu,_=_||fu;const ne=re.length,B=_.length,q=Math.min(ne,B);let ue;for(ue=0;ueB?O(re,ae,le,!0,!1,q):M(_,E,$,ae,le,ee,te,be,q)},J=(re,_,E,$,ae,le,ee,te,be)=>{let ne=0;const B=_.length;let q=re.length-1,ue=B-1;for(;ne<=q&&ne<=ue;){const ve=re[ne],Ge=_[ne]=be?rs(_[ne]):jr(_[ne]);if($s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;ne++}for(;ne<=q&&ne<=ue;){const ve=re[q],Ge=_[ue]=be?rs(_[ue]):jr(_[ue]);if($s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;q--,ue--}if(ne>q){if(ne<=ue){const ve=ue+1,Ge=veue)for(;ne<=q;)K(re[ne],ae,le,!0),ne++;else{const ve=ne,Ge=ne,Je=new Map;for(ne=Ge;ne<=ue;ne++){const De=_[ne]=be?rs(_[ne]):jr(_[ne]);De.key!=null&&Je.set(De.key,ne)}let xe,ke=0;const Pe=ue-Ge+1;let Be=!1,Te=0;const we=new Array(Pe);for(ne=0;ne=Pe){K(De,ae,le,!0);continue}let me;if(De.key!=null)me=Je.get(De.key);else for(xe=Ge;xe<=ue;xe++)if(we[xe-Ge]===0&&$s(De,_[xe])){me=xe;break}me===void 0?K(De,ae,le,!0):(we[me-Ge]=ne+1,me>=Te?Te=me:Be=!0,m(De,_[me],E,null,ae,le,ee,te,be),ke++)}const Se=Be?I4(we):fu;for(xe=Se.length-1,ne=Pe-1;ne>=0;ne--){const De=Ge+ne,me=_[De],Ve=De+1{const{el:le,type:ee,transition:te,children:be,shapeFlag:ne}=re;if(ne&6){U(re.component.subTree,_,E,$);return}if(ne&128){re.suspense.move(_,E,$);return}if(ne&64){ee.move(re,_,E,se);return}if(ee===ln){i(le,_,E);for(let q=0;qte.enter(le),ae);else{const{leave:q,delayLeave:ue,afterLeave:ve}=te,Ge=()=>i(le,_,E),Je=()=>{q(le,()=>{Ge(),ve&&ve()})};ue?ue(le,Ge,Je):Je()}else i(le,_,E)},K=(re,_,E,$=!1,ae=!1)=>{const{type:le,props:ee,ref:te,children:be,dynamicChildren:ne,shapeFlag:B,patchFlag:q,dirs:ue}=re;if(te!=null&&W2(te,null,E,re,!0),B&256){_.ctx.deactivate(re);return}const ve=B&1&&ue,Ge=!Ud(re);let Je;if(Ge&&(Je=ee&&ee.onVnodeBeforeUnmount)&&kr(Je,_,re),B&6)F(re.component,E,$);else{if(B&128){re.suspense.unmount(E,$);return}ve&&Js(re,null,_,"beforeUnmount"),B&64?re.type.remove(re,_,E,ae,se,$):ne&&(le!==ln||q>0&&q&64)?O(ne,_,E,!1,!0):(le===ln&&q&384||!ae&&B&16)&&O(be,_,E),$&&H(re)}(Ge&&(Je=ee&&ee.onVnodeUnmounted)||ve)&&fa(()=>{Je&&kr(Je,_,re),ve&&Js(re,null,_,"unmounted")},E)},H=re=>{const{type:_,el:E,anchor:$,transition:ae}=re;if(_===ln){k(E,$);return}if(_===Oy){s(re);return}const le=()=>{a(E),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(re.shapeFlag&1&&ae&&!ae.persisted){const{leave:ee,delayLeave:te}=ae,be=()=>ee(E,le);te?te(re.el,le,be):be()}else le()},k=(re,_)=>{let E;for(;re!==_;)E=p(re),a(re),re=E;a(_)},F=(re,_,E)=>{const{bum:$,scope:ae,update:le,subTree:ee,um:te}=re;$&&ky($),ae.stop(),le&&(le.active=!1,K(ee,re,_,E)),te&&fa(te,_),fa(()=>{re.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&re.asyncDep&&!re.asyncResolved&&re.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},O=(re,_,E,$=!1,ae=!1,le=0)=>{for(let ee=le;eere.shapeFlag&6?Q(re.component.subTree):re.shapeFlag&128?re.suspense.next():p(re.anchor||re.el),oe=(re,_,E)=>{re==null?_._vnode&&K(_._vnode,null,null,!0):m(_._vnode||null,re,_,null,null,null,E),mI(),nR(),_._vnode=re},se={p:m,um:K,m:U,r:H,mt:g,mc:M,pc:Y,pbc:w,n:Q,o:n};let he,pe;return e&&([he,pe]=e(se)),{render:oe,hydrate:he,createApp:X4(oe,he)}}function Ds({effect:n,update:e},t){n.allowRecurse=e.allowRecurse=t}function JW(n,e,t=!1){const i=n.children,a=e.children;if(gn(i)&&gn(a))for(let l=0;l>1,n[t[r]]0&&(e[i]=t[l-1]),t[l]=i)}}for(l=t.length,o=t[l-1];l-- >0;)t[l]=o,o=e[o];return t}const Y4=n=>n.__isTeleport,Kd=n=>n&&(n.disabled||n.disabled===""),II=n=>typeof SVGElement<"u"&&n instanceof SVGElement,G2=(n,e)=>{const t=n&&n.to;return el(t)?e?e(t):null:t},w4={__isTeleport:!0,process(n,e,t,i,a,l,o,r,f,v){const{mc:b,pc:Z,pbc:p,o:{insert:y,querySelector:X,createText:m,createComment:N}}=v,G=Kd(e.props);let{shapeFlag:d,children:u,dynamicChildren:s}=e;if(n==null){const h=e.el=m(""),c=e.anchor=m("");y(h,t,i),y(c,t,i);const W=e.target=G2(e.props,X),M=e.targetAnchor=m("");W&&(y(M,W),o=o||II(W));const I=(w,C)=>{d&16&&b(u,w,C,a,l,o,r,f)};G?I(t,c):W&&I(W,M)}else{e.el=n.el;const h=e.anchor=n.anchor,c=e.target=n.target,W=e.targetAnchor=n.targetAnchor,M=Kd(n.props),I=M?t:c,w=M?h:W;if(o=o||II(c),s?(p(n.dynamicChildren,s,I,a,l,o,r),JW(n,e,!0)):f||Z(n,e,I,w,a,l,o,r,!1),G)M||Hf(e,t,h,v,1);else if((e.props&&e.props.to)!==(n.props&&n.props.to)){const C=e.target=G2(e.props,X);C&&Hf(e,C,null,v,0)}else M&&Hf(e,c,W,v,1)}XR(e)},remove(n,e,t,i,{um:a,o:{remove:l}},o){const{shapeFlag:r,children:f,anchor:v,targetAnchor:b,target:Z,props:p}=n;if(Z&&l(b),(o||!Kd(p))&&(l(v),r&16))for(let y=0;y0?vr||fu:null,V4(),fh>0&&vr&&vr.push(n),n}function oc(n,e,t,i,a,l){return NR(ju(n,e,t,i,a,l,!0))}function Lo(n,e,t,i,a){return NR(D(n,e,t,i,a,!0))}function Zl(n){return n?n.__v_isVNode===!0:!1}function $s(n,e){return n.type===e.type&&n.key===e.key}const z0="__vInternal",MR=({key:n})=>n??null,xb=({ref:n,ref_key:e,ref_for:t})=>n!=null?el(n)||$i(n)||Sn(n)?{i:Yl,r:n,k:e,f:!!t}:n:null;function ju(n,e=null,t=null,i=0,a=null,l=n===ln?0:1,o=!1,r=!1){const f={__v_isVNode:!0,__v_skip:!0,type:n,props:e,key:e&&MR(e),ref:e&&xb(e),scopeId:L0,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:i,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Yl};return r?(OW(f,t),l&128&&n.normalize(f)):t&&(f.shapeFlag|=el(t)?8:16),fh>0&&!o&&vr&&(f.patchFlag>0||l&6)&&f.patchFlag!==32&&vr.push(f),f}const D=L4;function L4(n,e=null,t=null,i=0,a=null,l=!1){if((!n||n===s4)&&(n=Da),Zl(n)){const r=Vl(n,e,!0);return t&&OW(r,t),fh>0&&!l&&vr&&(r.shapeFlag&6?vr[vr.indexOf(n)]=r:vr.push(r)),r.patchFlag|=-2,r}if(D4(n)&&(n=n.__vccOpts),e){e=R4(e);let{class:r,style:f}=e;r&&!el(r)&&(e.class=WW(r)),Li(f)&&(PL(f)&&!gn(f)&&(f=vl({},f)),e.style=vW(f))}const o=el(n)?1:$U(n)?128:Y4(n)?64:Li(n)?4:Sn(n)?2:0;return ju(n,e,t,i,a,o,l,!0)}function R4(n){return n?PL(n)||z0 in n?vl({},n):n:null}function Vl(n,e,t=!1){const{props:i,ref:a,patchFlag:l,children:o}=n,r=e?T4(i||{},e):i;return{__v_isVNode:!0,__v_skip:!0,type:n.type,props:r,key:r&&MR(r),ref:e&&e.ref?t&&a?gn(a)?a.concat(xb(e)):[a,xb(e)]:xb(e):a,scopeId:n.scopeId,slotScopeIds:n.slotScopeIds,children:o,target:n.target,targetAnchor:n.targetAnchor,staticCount:n.staticCount,shapeFlag:n.shapeFlag,patchFlag:e&&n.type!==ln?l===-1?16:l|16:l,dynamicProps:n.dynamicProps,dynamicChildren:n.dynamicChildren,appContext:n.appContext,dirs:n.dirs,transition:n.transition,component:n.component,suspense:n.suspense,ssContent:n.ssContent&&Vl(n.ssContent),ssFallback:n.ssFallback&&Vl(n.ssFallback),el:n.el,anchor:n.anchor,ctx:n.ctx,ce:n.ce}}function Fl(n=" ",e=0){return D(Ms,null,n,e)}function Cb(n="",e=!1){return e?(kl(),Lo(Da,null,n)):D(Da,null,n)}function jr(n){return n==null||typeof n=="boolean"?D(Da):gn(n)?D(ln,null,n.slice()):typeof n=="object"?rs(n):D(Ms,null,String(n))}function rs(n){return n.el===null&&n.patchFlag!==-1||n.memo?n:Vl(n)}function OW(n,e){let t=0;const{shapeFlag:i}=n;if(e==null)e=null;else if(gn(e))t=16;else if(typeof e=="object")if(i&65){const a=e.default;a&&(a._c&&(a._d=!1),OW(n,a()),a._c&&(a._d=!0));return}else{t=32;const a=e._;!a&&!(z0 in e)?e._ctx=Yl:a===3&&Yl&&(Yl.slots._===1?e._=1:(e._=2,n.patchFlag|=1024))}else Sn(e)?(e={default:e,_ctx:Yl},t=32):(e=String(e),i&64?(t=16,e=[Fl(e)]):t=8);n.children=e,n.shapeFlag|=t}function T4(...n){const e={};for(let t=0;tEi||Yl,wu=n=>{Ei=n,n.scope.on()},hc=()=>{Ei&&Ei.scope.off(),Ei=null};function IR(n){return n.vnode.shapeFlag&4}let bh=!1;function z4(n,e=!1){bh=e;const{props:t,children:i}=n.vnode,a=IR(n);p4(n,t,a,e),v4(n,i);const l=a?k4(n,e):void 0;return bh=!1,l}function k4(n,e){const t=n.type;n.accessCache=Object.create(null),n.proxy=QL(new Proxy(n.ctx,u4));const{setup:i}=t;if(i){const a=n.setupContext=i.length>1?wR(n):null;wu(n),Du();const l=ys(i,n,0,[n.props,a]);if(Ou(),hc(),CL(l)){if(l.then(hc,hc),e)return l.then(o=>{wI(n,o,e)}).catch(o=>{g0(o,n,0)});n.asyncDep=l}else wI(n,l,e)}else YR(n,e)}function wI(n,e,t){Sn(e)?n.type.__ssrInlineRender?n.ssrRender=e:n.render=e:Li(e)&&(n.setupState=$L(e)),YR(n,t)}let gI;function YR(n,e,t){const i=n.type;if(!n.render){if(!e&&gI&&!i.render){const a=i.template||kW(n).template;if(a){const{isCustomElement:l,compilerOptions:o}=n.appContext.config,{delimiters:r,compilerOptions:f}=i,v=vl(vl({isCustomElement:l,delimiters:r},o),f);i.render=gI(a,v)}}n.render=i.render||Gr}wu(n),Du(),d4(n),Ou(),hc()}function F4(n){return new Proxy(n.attrs,{get(e,t){return Ga(n,"get","$attrs"),e[t]}})}function wR(n){const e=i=>{n.exposed=i||{}};let t;return{get attrs(){return t||(t=F4(n))},slots:n.slots,emit:n.emit,expose:e}}function k0(n){if(n.exposed)return n.exposeProxy||(n.exposeProxy=new Proxy($L(QL(n.exposed)),{get(e,t){if(t in e)return e[t];if(t in Ed)return Ed[t](n)},has(e,t){return t in e||t in Ed}}))}function J4(n,e=!0){return Sn(n)?n.displayName||n.name:n.name||e&&n.__name}function D4(n){return Sn(n)&&"__vccOpts"in n}const de=(n,e)=>JU(n,e,bh);function O4(){return j4().attrs}function j4(){const n=Wl();return n.setupContext||(n.setupContext=wR(n))}function X2(n,e,t){const i=arguments.length;return i===2?Li(e)&&!gn(e)?Zl(e)?D(n,null,[e]):D(n,e):D(n,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&Zl(t)&&(t=[t]),D(n,e,t))}const U4=Symbol(""),E4=()=>un(U4),K4="3.2.47",H4="http://www.w3.org/2000/svg",qs=typeof document<"u"?document:null,VI=qs&&qs.createElement("template"),P4={insert:(n,e,t)=>{e.insertBefore(n,t||null)},remove:n=>{const e=n.parentNode;e&&e.removeChild(n)},createElement:(n,e,t,i)=>{const a=e?qs.createElementNS(H4,n):qs.createElement(n,t?{is:t}:void 0);return n==="select"&&i&&i.multiple!=null&&a.setAttribute("multiple",i.multiple),a},createText:n=>qs.createTextNode(n),createComment:n=>qs.createComment(n),setText:(n,e)=>{n.nodeValue=e},setElementText:(n,e)=>{n.textContent=e},parentNode:n=>n.parentNode,nextSibling:n=>n.nextSibling,querySelector:n=>qs.querySelector(n),setScopeId(n,e){n.setAttribute(e,"")},insertStaticContent(n,e,t,i,a,l){const o=t?t.previousSibling:e.lastChild;if(a&&(a===l||a.nextSibling))for(;e.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{VI.innerHTML=i?`${n}`:n;const r=VI.content;if(i){const f=r.firstChild;for(;f.firstChild;)r.appendChild(f.firstChild);r.removeChild(f)}e.insertBefore(r,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}};function Q4(n,e,t){const i=n._vtc;i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?n.removeAttribute("class"):t?n.setAttribute("class",e):n.className=e}function B4(n,e,t){const i=n.style,a=el(t);if(t&&!a){if(e&&!el(e))for(const l in e)t[l]==null&&N2(i,l,"");for(const l in t)N2(i,l,t[l])}else{const l=i.display;a?e!==t&&(i.cssText=t):e&&n.removeAttribute("style"),"_vod"in n&&(i.display=l)}}const LI=/\s*!important$/;function N2(n,e,t){if(gn(t))t.forEach(i=>N2(n,e,i));else if(t==null&&(t=""),e.startsWith("--"))n.setProperty(e,t);else{const i=A4(n,e);LI.test(t)?n.setProperty(Ju(i),t.replace(LI,""),"important"):n[i]=t}}const RI=["Webkit","Moz","ms"],jy={};function A4(n,e){const t=jy[e];if(t)return t;let i=Wa(e);if(i!=="filter"&&i in n)return jy[e]=i;i=Y0(i);for(let a=0;aUy||(iE.then(()=>Uy=0),Uy=Date.now());function aE(n,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;nr(rE(i,t.value),e,5,[i])};return t.value=n,t.attached=lE(),t}function rE(n,e){if(gn(e)){const t=n.stopImmediatePropagation;return n.stopImmediatePropagation=()=>{t.call(n),n._stopped=!0},e.map(i=>a=>!a._stopped&&i&&i(a))}else return e}const CI=/^on[a-z]/,oE=(n,e,t,i,a=!1,l,o,r,f)=>{e==="class"?Q4(n,i,a):e==="style"?B4(n,t,i):N0(e)?GW(e)||tE(n,e,t,i,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):sE(n,e,i,a))?$4(n,e,i,l,o,r,f):(e==="true-value"?n._trueValue=i:e==="false-value"&&(n._falseValue=i),_4(n,e,i,a))};function sE(n,e,t,i){return i?!!(e==="innerHTML"||e==="textContent"||e in n&&CI.test(e)&&Sn(t)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&n.tagName==="INPUT"||e==="type"&&n.tagName==="TEXTAREA"||CI.test(e)&&el(t)?!1:e in n}const $o="transition",yd="animation",aa=(n,{slots:e})=>X2(oR,VR(n),e);aa.displayName="Transition";const gR={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},cE=aa.props=vl({},oR.props,gR),Os=(n,e=[])=>{gn(n)?n.forEach(t=>t(...e)):n&&n(...e)},SI=n=>n?gn(n)?n.some(e=>e.length>1):n.length>1:!1;function VR(n){const e={};for(const x in n)x in gR||(e[x]=n[x]);if(n.css===!1)return e;const{name:t="v",type:i,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:r=`${t}-enter-to`,appearFromClass:f=l,appearActiveClass:v=o,appearToClass:b=r,leaveFromClass:Z=`${t}-leave-from`,leaveActiveClass:p=`${t}-leave-active`,leaveToClass:y=`${t}-leave-to`}=n,X=uE(a),m=X&&X[0],N=X&&X[1],{onBeforeEnter:G,onEnter:d,onEnterCancelled:u,onLeave:s,onLeaveCancelled:h,onBeforeAppear:c=G,onAppear:W=d,onAppearCancelled:M=u}=e,I=(x,R,g)=>{ns(x,R?b:r),ns(x,R?v:o),g&&g()},w=(x,R)=>{x._isLeaving=!1,ns(x,Z),ns(x,y),ns(x,p),R&&R()},C=x=>(R,g)=>{const S=x?W:d,L=()=>I(R,x,g);Os(S,[R,L]),zI(()=>{ns(R,x?f:l),vo(R,x?b:r),SI(S)||kI(R,i,m,L)})};return vl(e,{onBeforeEnter(x){Os(G,[x]),vo(x,l),vo(x,o)},onBeforeAppear(x){Os(c,[x]),vo(x,f),vo(x,v)},onEnter:C(!1),onAppear:C(!0),onLeave(x,R){x._isLeaving=!0;const g=()=>w(x,R);vo(x,Z),RR(),vo(x,p),zI(()=>{x._isLeaving&&(ns(x,Z),vo(x,y),SI(s)||kI(x,i,N,g))}),Os(s,[x,g])},onEnterCancelled(x){I(x,!1),Os(u,[x])},onAppearCancelled(x){I(x,!0),Os(M,[x])},onLeaveCancelled(x){w(x),Os(h,[x])}})}function uE(n){if(n==null)return null;if(Li(n))return[Ey(n.enter),Ey(n.leave)];{const e=Ey(n);return[e,e]}}function Ey(n){return nU(n)}function vo(n,e){e.split(/\s+/).forEach(t=>t&&n.classList.add(t)),(n._vtc||(n._vtc=new Set)).add(e)}function ns(n,e){e.split(/\s+/).forEach(i=>i&&n.classList.remove(i));const{_vtc:t}=n;t&&(t.delete(e),t.size||(n._vtc=void 0))}function zI(n){requestAnimationFrame(()=>{requestAnimationFrame(n)})}let dE=0;function kI(n,e,t,i){const a=n._endId=++dE,l=()=>{a===n._endId&&i()};if(t)return setTimeout(l,t);const{type:o,timeout:r,propCount:f}=LR(n,e);if(!o)return i();const v=o+"end";let b=0;const Z=()=>{n.removeEventListener(v,p),l()},p=y=>{y.target===n&&++b>=f&&Z()};setTimeout(()=>{b(t[X]||"").split(", "),a=i(`${$o}Delay`),l=i(`${$o}Duration`),o=FI(a,l),r=i(`${yd}Delay`),f=i(`${yd}Duration`),v=FI(r,f);let b=null,Z=0,p=0;e===$o?o>0&&(b=$o,Z=o,p=l.length):e===yd?v>0&&(b=yd,Z=v,p=f.length):(Z=Math.max(o,v),b=Z>0?o>v?$o:yd:null,p=b?b===$o?l.length:f.length:0);const y=b===$o&&/\b(transform|all)(,|$)/.test(i(`${$o}Property`).toString());return{type:b,timeout:Z,propCount:p,hasTransform:y}}function FI(n,e){for(;n.lengthJI(t)+JI(n[i])))}function JI(n){return Number(n.slice(0,-1).replace(",","."))*1e3}function RR(){return document.body.offsetHeight}const TR=new WeakMap,xR=new WeakMap,CR={name:"TransitionGroup",props:vl({},cE,{tag:String,moveClass:String}),setup(n,{slots:e}){const t=Wl(),i=rR();let a,l;return Dl(()=>{if(!a.length)return;const o=n.moveClass||`${n.name||"v"}-move`;if(!pE(a[0].el,t.vnode.el,o))return;a.forEach(fE),a.forEach(bE);const r=a.filter(mE);RR(),r.forEach(f=>{const v=f.el,b=v.style;vo(v,o),b.transform=b.webkitTransform=b.transitionDuration="";const Z=v._moveCb=p=>{p&&p.target!==v||(!p||/transform$/.test(p.propertyName))&&(v.removeEventListener("transitionend",Z),v._moveCb=null,ns(v,o))};v.addEventListener("transitionend",Z)})}),()=>{const o=on(n),r=VR(o);let f=o.tag||ln;a=l,l=e.default?SW(e.default()):[];for(let v=0;vdelete n.mode;CR.props;const jW=CR;function fE(n){const e=n.el;e._moveCb&&e._moveCb(),e._enterCb&&e._enterCb()}function bE(n){xR.set(n,n.el.getBoundingClientRect())}function mE(n){const e=TR.get(n),t=xR.get(n),i=e.left-t.left,a=e.top-t.top;if(i||a){const l=n.el.style;return l.transform=l.webkitTransform=`translate(${i}px,${a}px)`,l.transitionDuration="0s",n}}function pE(n,e,t){const i=n.cloneNode();n._vtc&&n._vtc.forEach(o=>{o.split(/\s+/).forEach(r=>r&&i.classList.remove(r))}),t.split(/\s+/).forEach(o=>o&&i.classList.add(o)),i.style.display="none";const a=e.nodeType===1?e:e.parentNode;a.appendChild(i);const{hasTransform:l}=LR(i);return a.removeChild(i),l}const yE=["ctrl","shift","alt","meta"],ZE={stop:n=>n.stopPropagation(),prevent:n=>n.preventDefault(),self:n=>n.target!==n.currentTarget,ctrl:n=>!n.ctrlKey,shift:n=>!n.shiftKey,alt:n=>!n.altKey,meta:n=>!n.metaKey,left:n=>"button"in n&&n.button!==0,middle:n=>"button"in n&&n.button!==1,right:n=>"button"in n&&n.button!==2,exact:(n,e)=>yE.some(t=>n[`${t}Key`]&&!e.includes(t))},DI=(n,e)=>(t,...i)=>{for(let a=0;a{Zd(n,!1)}):Zd(n,e))},beforeUnmount(n,{value:e}){Zd(n,e)}};function Zd(n,e){n.style.display=e?n._vod:"none"}const vE=vl({patchProp:oE},P4);let OI;function SR(){return OI||(OI=N4(vE))}const gm=(...n)=>{SR().render(...n)},zR=(...n)=>{const e=SR().createApp(...n),{mount:t}=e;return e.mount=i=>{const a=WE(i);if(!a)return;const l=e._component;!Sn(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";const o=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),o},e};function WE(n){return el(n)?document.querySelector(n):n}function Yt(n){return Yt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yt(n)}function GE(n,e){if(Yt(n)!=="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var i=t.call(n,e||"default");if(Yt(i)!=="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function kR(n){var e=GE(n,"string");return Yt(e)==="symbol"?e:String(e)}function ce(n,e,t){return e=kR(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function jI(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function P(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0;return typeof n=="function"?n(e):n??t}function _e(){for(var n=[],e=0;e0},n.prototype.connect_=function(){!M2||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),JE?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},n.prototype.disconnect_=function(){!M2||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},n.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=t===void 0?"":t,a=FE.some(function(l){return!!~i.indexOf(l)});a&&this.refresh()},n.getInstance=function(){return this.instance_||(this.instance_=new n),this.instance_},n.instance_=null,n}(),DR=function(n,e){for(var t=0,i=Object.keys(e);t"u"||!(Element instanceof Object))){if(!(e instanceof gu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new QE(e)),this.controller_.addObserver(this),this.controller_.refresh())}},n.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof gu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},n.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},n.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},n.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(i){return new BE(i.target,i.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},n.prototype.clearActive=function(){this.activeObservations_.splice(0)},n.prototype.hasActive=function(){return this.activeObservations_.length>0},n}(),jR=typeof WeakMap<"u"?new WeakMap:new JR,UR=function(){function n(e){if(!(this instanceof n))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=DE.getInstance(),i=new AE(e,t,this);jR.set(this,i)}return n}();["observe","unobserve","disconnect"].forEach(function(n){UR.prototype[n]=function(){var e;return(e=jR.get(this))[n].apply(e,arguments)}});var _E=function(){return typeof Vm.ResizeObserver<"u"?Vm.ResizeObserver:UR}();const EW=_E;function ER(n){if(Array.isArray(n))return n}function $E(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var i,a,l,o,r=[],f=!0,v=!1;try{if(l=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;f=!1}else for(;!(f=(i=l.call(t)).done)&&(r.push(i.value),r.length!==e);f=!0);}catch(b){v=!0,a=b}finally{try{if(!f&&t.return!=null&&(o=t.return(),Object(o)!==o))return}finally{if(v)throw a}}return r}}function I2(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);t0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,i={},a=/;(?![^(]*\))/g,l=/:(.+)/;return Yt(e)==="object"?e:(e.split(a).forEach(function(o){if(o){var r=o.split(l);if(r.length>1){var f=t?UW(r[0].trim()):r[0].trim();i[f]=r[1].trim()}}}),i)},Mo=function(e,t){return e[t]!==void 0},ti=function n(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=Array.isArray(e)?e:[e],a=[];return i.forEach(function(l){Array.isArray(l)?a.push.apply(a,yt(n(l,t))):l&&l.type===ln?a.push.apply(a,yt(n(l.children,t))):l&&Zl(l)?t&&!Ch(l)?a.push(l):t||a.push(l):Y2(l)&&a.push(l)}),a},xh=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Zl(e))return e.type===ln?t==="default"?ti(e.children):[]:e.children&&e.children[t]?ti(e.children[t](i)):[];var a=e.$slots[t]&&e.$slots[t](i);return ti(a)},ds=function(e){for(var t,i=(e==null||(t=e.vnode)===null||t===void 0?void 0:t.el)||e&&(e.$el||e);i&&!i.tagName;)i=i.nextSibling;return i},_R=function(e){var t={};if(e.$&&e.$.vnode){var i=e.$.vnode.props||{};Object.keys(e.$props).forEach(function(r){var f=e.$props[r],v=LE(r);(f!==void 0||v in i)&&(t[r]=f)})}else if(Zl(e)&&Yt(e.type)==="object"){var a=e.props||{},l={};Object.keys(a).forEach(function(r){l[UW(r)]=a[r]});var o=e.type.props||{};Object.keys(o).forEach(function(r){var f=TE(o,l,r,l[r]);(f!==void 0||r in l)&&(t[r]=f)})}return t},BW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,l=void 0;if(e.$){var o=e[t];if(o!==void 0)return typeof o=="function"&&a?o(i):o;l=e.$slots[t],l=a&&l?l(i):l}else if(Zl(e)){var r=e.props&&e.props[t];if(r!==void 0&&e.props!==null)return typeof r=="function"&&a?r(i):r;e.type===ln?l=e.children:e.children&&e.children[t]&&(l=e.children[t],l=a&&l?l(i):l)}return Array.isArray(l)&&(l=ti(l),l=l.length===1?l[0]:l,l=l.length===0?void 0:l),l};function HI(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t={};return n.$?t=P(P({},t),n.$attrs):t=P(P({},t),n.props),PW(t)[e?"onEvents":"events"]}function GK(n){var e=(Zl(n)?n.props:n.$attrs)||{},t=e.class||{},i={};return typeof t=="string"?t.split(" ").forEach(function(a){i[a.trim()]=!0}):Array.isArray(t)?_e(t).split(" ").forEach(function(a){i[a.trim()]=!0}):i=P(P({},i),t),i}function $R(n,e){var t=(Zl(n)?n.props:n.$attrs)||{},i=t.style||{};if(typeof i=="string")i=QW(i,e);else if(e&&i){var a={};return Object.keys(i).forEach(function(l){return a[UW(l)]=i[l]}),a}return i}function XK(n){return n==null||n===""||Array.isArray(n)&&n.length===0}function Ch(n){return n&&(n.type===Da||n.type===ln&&n.children.length===0||n.type===Ms&&n.children.trim()==="")}function NK(n){return n&&n.type===Ms}function Ri(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[];return n.forEach(function(t){Array.isArray(t)?e.push.apply(e,yt(t)):(t==null?void 0:t.type)===ln?e.push.apply(e,yt(Ri(t.children))):e.push(t)}),e.filter(function(t){return!Ch(t)})}function Wd(n){if(n){var e=Ri(n);return e.length?e:void 0}else return n}function Si(n){return Array.isArray(n)&&n.length===1&&(n=n[0]),n&&n.__v_isVNode&&Yt(n.type)!=="symbol"}function ui(n,e){var t,i,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(t=e[a])!==null&&t!==void 0?t:(i=n[a])===null||i===void 0?void 0:i.call(n)}const rr=He({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,t){var i=t.slots,a=zn({width:0,height:0,offsetHeight:0,offsetWidth:0}),l=null,o=null,r=function(){o&&(o.disconnect(),o=null)},f=function(p){var y=e.onResize,X=p[0].target,m=X.getBoundingClientRect(),N=m.width,G=m.height,d=X.offsetWidth,u=X.offsetHeight,s=Math.floor(N),h=Math.floor(G);if(a.width!==s||a.height!==h||a.offsetWidth!==d||a.offsetHeight!==u){var c={width:s,height:h,offsetWidth:d,offsetHeight:u};Xn(a,c),y&&Promise.resolve().then(function(){y(P(P({},c),{},{offsetWidth:d,offsetHeight:u}),X)})}},v=Wl(),b=function(){var p=e.disabled;if(p){r();return}var y=ds(v),X=y!==l;X&&(r(),l=y),!o&&y&&(o=new EW(f),o.observe(y))};return Kt(function(){b()}),Dl(function(){b()}),la(function(){r()}),rt(function(){return e.disabled},function(){b()},{flush:"post"}),function(){var Z;return(Z=i.default)===null||Z===void 0?void 0:Z.call(i)[0]}}});var qR=function(e){return setTimeout(e,16)},eT=function(e){return clearTimeout(e)};typeof window<"u"&&"requestAnimationFrame"in window&&(qR=function(e){return window.requestAnimationFrame(e)},eT=function(e){return window.cancelAnimationFrame(e)});var PI=0,AW=new Map;function tT(n){AW.delete(n)}function At(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;PI+=1;var t=PI;function i(a){if(a===0)tT(t),n();else{var l=qR(function(){i(a-1)});AW.set(t,l)}}return i(e),t}At.cancel=function(n){var e=AW.get(n);return tT(e),eT(e)};function w2(n){var e,t=function(l){return function(){e=null,n.apply(void 0,yt(l))}},i=function(){if(e==null){for(var l=arguments.length,o=new Array(l),r=0;rn.top-t)return"".concat(t+e.top,"px")}function AI(n,e,t){if(t!==void 0&&e.bottom=0)&&(t[a]=n[a]);return t}function jt(n,e){if(n==null)return{};var t=IK(n,e),i,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}const lT={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"};var YK={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};const wK=YK;var gK={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};const aT=gK;var VK={lang:P({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},wK),timePickerLocale:P({},aT)};const mh=VK;var La="${label} is not a valid ${type}",LK={locale:"en",Pagination:lT,DatePicker:mh,TimePicker:aT,Calendar:mh,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:La,method:La,array:La,object:La,number:La,date:La,boolean:La,integer:La,float:La,regexp:La,email:La,url:La,hex:La},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};const Mr=LK,Uu=He({compatConfig:{MODE:3},name:"LocaleReceiver",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup:function(e,t){var i=t.slots,a=un("localeData",{}),l=de(function(){var r=e.componentName,f=r===void 0?"global":r,v=e.defaultLocale,b=v||Mr[f||"global"],Z=a.antLocale,p=f&&Z?Z[f]:{};return P(P({},typeof b=="function"?b():b),p||{})}),o=de(function(){var r=a.antLocale,f=r&&r.locale;return r&&r.exist&&!f?Mr.locale:f});return function(){var r=e.children||i.default,f=a.antLocale;return r==null?void 0:r(l.value,o.value,f)}}});function Br(n,e,t){var i=un("localeData",{}),a=de(function(){var l=i.antLocale,o=mi(e)||Mr[n||"global"],r=n&&l?l[n]:{};return P(P(P({},typeof o=="function"?o():o),r||{}),mi(t)||{})});return[a]}var rT=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-default");return D("svg",{class:i,width:"184",height:"152",viewBox:"0 0 184 152"},[D("g",{fill:"none","fill-rule":"evenodd"},[D("g",{transform:"translate(24 31.67)"},[D("ellipse",{class:"".concat(i,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"},null),D("path",{class:"".concat(i,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"},null),D("path",{class:"".concat(i,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"},null),D("path",{class:"".concat(i,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"},null),D("path",{class:"".concat(i,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"},null)]),D("path",{class:"".concat(i,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"},null),D("g",{class:"".concat(i,"-g"),transform:"translate(149.65 15.383)"},[D("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"},null),D("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"},null)])])])};rT.PRESENTED_IMAGE_DEFAULT=!0;const RK=rT;var oT=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-simple");return D("svg",{class:i,width:"64",height:"41",viewBox:"0 0 64 41"},[D("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[D("ellipse",{class:"".concat(i,"-ellipse"),fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"},null),D("g",{class:"".concat(i,"-g"),"fill-rule":"nonzero",stroke:"#D9D9D9"},[D("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"},null),D("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA",class:"".concat(i,"-path")},null)])])])};oT.PRESENTED_IMAGE_SIMPLE=!0;const TK=oT;function qI(n,e){for(var t=0;t=0||(a[t]=n[t]);return a}function e5(n){return((e=n)!=null&&typeof e=="object"&&Array.isArray(e)===!1)==1&&Object.prototype.toString.call(n)==="[object Object]";var e}var dT=Object.prototype,hT=dT.toString,xK=dT.hasOwnProperty,fT=/^\s*function (\w+)/;function t5(n){var e,t=(e=n==null?void 0:n.type)!==null&&e!==void 0?e:n;if(t){var i=t.toString().match(fT);return i?i[1]:""}return""}var Wc=function(n){var e,t;return e5(n)!==!1&&typeof(e=n.constructor)=="function"&&e5(t=e.prototype)!==!1&&t.hasOwnProperty("isPrototypeOf")!==!1},CK=function(n){return n},na=CK,ph=function(n,e){return xK.call(n,e)},SK=Number.isInteger||function(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n},Vu=Array.isArray||function(n){return hT.call(n)==="[object Array]"},Lu=function(n){return hT.call(n)==="[object Function]"},Rm=function(n){return Wc(n)&&ph(n,"_vueTypes_name")},bT=function(n){return Wc(n)&&(ph(n,"type")||["_vueTypes_name","validator","default","required"].some(function(e){return ph(n,e)}))};function _W(n,e){return Object.defineProperty(n.bind(e),"__original",{value:n})}function Yc(n,e,t){var i;t===void 0&&(t=!1);var a=!0,l="";i=Wc(n)?n:{type:n};var o=Rm(i)?i._vueTypes_name+" - ":"";if(bT(i)&&i.type!==null){if(i.type===void 0||i.type===!0||!i.required&&e===void 0)return a;Vu(i.type)?(a=i.type.some(function(Z){return Yc(Z,e,!0)===!0}),l=i.type.map(function(Z){return t5(Z)}).join(" or ")):a=(l=t5(i))==="Array"?Vu(e):l==="Object"?Wc(e):l==="String"||l==="Number"||l==="Boolean"||l==="Function"?function(Z){if(Z==null)return"";var p=Z.constructor.toString().match(fT);return p?p[1]:""}(e)===l:e instanceof i.type}if(!a){var r=o+'value "'+e+'" should be of type "'+l+'"';return t===!1?(na(r),!1):r}if(ph(i,"validator")&&Lu(i.validator)){var f=na,v=[];if(na=function(Z){v.push(Z)},a=i.validator(e),na=f,!a){var b=(v.length>1?"* ":"")+v.join(` +* `);return v.length=0,t===!1?(na(b),a):b}}return a}function Oa(n,e){var t=Object.defineProperties(e,{_vueTypes_name:{value:n,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(a){return a!==void 0||this.default?Lu(a)||Yc(this,a,!0)===!0?(this.default=Vu(a)?function(){return[].concat(a)}:Wc(a)?function(){return Object.assign({},a)}:a,this):(na(this._vueTypes_name+' - invalid default value: "'+a+'"'),this):this}}}),i=t.validator;return Lu(i)&&(t.validator=_W(i,t)),t}function Qr(n,e){var t=Oa(n,e);return Object.defineProperty(t,"validate",{value:function(i){return Lu(this.validator)&&na(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: +`+JSON.stringify(this)),this.validator=_W(i,this),this}})}function n5(n,e,t){var i,a,l=(i=e,a={},Object.getOwnPropertyNames(i).forEach(function(Z){a[Z]=Object.getOwnPropertyDescriptor(i,Z)}),Object.defineProperties({},a));if(l._vueTypes_name=n,!Wc(t))return l;var o,r,f=t.validator,v=uT(t,["validator"]);if(Lu(f)){var b=l.validator;b&&(b=(r=(o=b).__original)!==null&&r!==void 0?r:o),l.validator=_W(b?function(Z){return b.call(this,Z)&&f.call(this,Z)}:f,l)}return Object.assign(l,v)}function D0(n){return n.replace(/^(?!\s*$)/gm," ")}var zK=function(){return Qr("any",{})},kK=function(){return Qr("function",{type:Function})},FK=function(){return Qr("boolean",{type:Boolean})},JK=function(){return Qr("string",{type:String})},DK=function(){return Qr("number",{type:Number})},OK=function(){return Qr("array",{type:Array})},jK=function(){return Qr("object",{type:Object})},UK=function(){return Oa("integer",{type:Number,validator:function(n){return SK(n)}})},EK=function(){return Oa("symbol",{validator:function(n){return typeof n=="symbol"}})};function KK(n,e){if(e===void 0&&(e="custom validation failed"),typeof n!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return Oa(n.name||"<>",{validator:function(t){var i=n(t);return i||na(this._vueTypes_name+" - "+e),i}})}function HK(n){if(!Vu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var e='oneOf - value should be one of "'+n.join('", "')+'".',t=n.reduce(function(i,a){if(a!=null){var l=a.constructor;i.indexOf(l)===-1&&i.push(l)}return i},[]);return Oa("oneOf",{type:t.length>0?t:void 0,validator:function(i){var a=n.indexOf(i)!==-1;return a||na(e),a}})}function PK(n){if(!Vu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var e=!1,t=[],i=0;i0&&t.some(function(f){return o.indexOf(f)===-1})){var r=t.filter(function(f){return o.indexOf(f)===-1});return na(r.length===1?'shape - required property "'+r[0]+'" is not defined.':'shape - required properties "'+r.join('", "')+'" are not defined.'),!1}return o.every(function(f){if(e.indexOf(f)===-1)return l._vueTypes_isLoose===!0||(na('shape - shape definition does not include a "'+f+'" property. Allowed keys: "'+e.join('", "')+'".'),!1);var v=Yc(n[f],a[f],!0);return typeof v=="string"&&na('shape - "'+f+`" property validation error: + `+D0(v)),v===!0})}});return Object.defineProperty(i,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(i,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),i}var Jr=function(){function n(){}return n.extend=function(e){var t=this;if(Vu(e))return e.forEach(function(Z){return t.extend(Z)}),this;var i=e.name,a=e.validate,l=a!==void 0&&a,o=e.getter,r=o!==void 0&&o,f=uT(e,["name","validate","getter"]);if(ph(this,i))throw new TypeError('[VueTypes error]: Type "'+i+'" already defined');var v,b=f.type;return Rm(b)?(delete f.type,Object.defineProperty(this,i,r?{get:function(){return n5(i,b,f)}}:{value:function(){var Z,p=n5(i,b,f);return p.validator&&(p.validator=(Z=p.validator).bind.apply(Z,[p].concat([].slice.call(arguments)))),p}})):(v=r?{get:function(){var Z=Object.assign({},f);return l?Qr(i,Z):Oa(i,Z)},enumerable:!0}:{value:function(){var Z,p,y=Object.assign({},f);return Z=l?Qr(i,y):Oa(i,y),y.validator&&(Z.validator=(p=y.validator).bind.apply(p,[Z].concat([].slice.call(arguments)))),Z},enumerable:!0},Object.defineProperty(this,i,v))},sT(n,null,[{key:"any",get:function(){return zK()}},{key:"func",get:function(){return kK().def(this.defaults.func)}},{key:"bool",get:function(){return FK().def(this.defaults.bool)}},{key:"string",get:function(){return JK().def(this.defaults.string)}},{key:"number",get:function(){return DK().def(this.defaults.number)}},{key:"array",get:function(){return OK().def(this.defaults.array)}},{key:"object",get:function(){return jK().def(this.defaults.object)}},{key:"integer",get:function(){return UK().def(this.defaults.integer)}},{key:"symbol",get:function(){return EK()}}]),n}();function mT(n){var e;return n===void 0&&(n={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(t){function i(){return t.apply(this,arguments)||this}return cT(i,t),sT(i,null,[{key:"sensibleDefaults",get:function(){return Sb({},this.defaults)},set:function(a){this.defaults=a!==!1?Sb({},a!==!0?a:n):{}}}]),i}(Jr)).defaults=Sb({},n),e}Jr.defaults={},Jr.custom=KK,Jr.oneOf=HK,Jr.instanceOf=BK,Jr.oneOfType=PK,Jr.arrayOf=QK,Jr.objectOf=AK,Jr.shape=_K,Jr.utils={validate:function(n,e){return Yc(e,n,!0)===!0},toType:function(n,e,t){return t===void 0&&(t=!1),t?Qr(n,e):Oa(n,e)}};(function(n){function e(){return n.apply(this,arguments)||this}return cT(e,n),e})(mT());var pT=mT({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});pT.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function yT(n){return n.default=void 0,n}const We=pT;var $K=["image","description","imageStyle","class"],ZT=D(RK,null,null),vT=D(TK,null,null),Eu=function(e,t){var i,a=t.slots,l=a===void 0?{}:a,o=t.attrs,r=Nt("empty",e),f=r.direction,v=r.prefixCls,b=v.value,Z=P(P({},e),o),p=Z.image,y=p===void 0?ZT:p,X=Z.description,m=X===void 0?((i=l.description)===null||i===void 0?void 0:i.call(l))||void 0:X,N=Z.imageStyle,G=Z.class,d=G===void 0?"":G,u=jt(Z,$K);return D(Uu,{componentName:"Empty",children:function(h){var c,W=typeof m<"u"?m:h.description,M=typeof W=="string"?W:"empty",I=null;return typeof y=="string"?I=D("img",{alt:M,src:y},null):I=y,D("div",P({class:_e(b,d,(c={},ce(c,"".concat(b,"-normal"),y===vT),ce(c,"".concat(b,"-rtl"),f.value==="rtl"),c))},u),[D("div",{class:"".concat(b,"-image"),style:N},[I]),W&&D("p",{class:"".concat(b,"-description")},[W]),l.default&&D("div",{class:"".concat(b,"-footer")},[Ri(l.default())])])}},null)};Eu.displayName="AEmpty";Eu.PRESENTED_IMAGE_DEFAULT=ZT;Eu.PRESENTED_IMAGE_SIMPLE=vT;Eu.inheritAttrs=!1;Eu.props={prefixCls:String,image:We.any,description:We.any,imageStyle:{type:Object,default:void 0}};const cs=wi(Eu);var qK=function(e){var t=Nt("empty",e),i=t.prefixCls,a=function(o){switch(o){case"Table":case"List":return D(cs,{image:cs.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return D(cs,{image:cs.PRESENTED_IMAGE_SIMPLE,class:"".concat(i.value,"-small")},null);default:return D(cs,null,null)}};return a(e.componentName)};function WT(n){return D(qK,{componentName:n},null)}var i5={};function eH(n,e){}function tH(n,e){}function GT(n,e,t){!e&&!i5[t]&&(n(!1,t),i5[t]=!0)}function XT(n,e){GT(eH,n,e)}function nH(n,e){GT(tH,n,e)}const Ci=function(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";XT(n,"[antdv: ".concat(e,"] ").concat(t))};var g2="internalMark",zb=He({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(e,t){var i=t.slots;Ci(e.ANT_MARK__===g2,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var a=zn({antLocale:P(P({},e.locale),{},{exist:!0}),ANT_MARK__:g2});return hn("localeData",a),rt(function(){return e.locale},function(){a.antLocale=P(P({},e.locale),{},{exist:!0})},{immediate:!0}),function(){var l;return(l=i.default)===null||l===void 0?void 0:l.call(i)}}});zb.install=function(n){return n.component(zb.name,zb),n};const NT=wi(zb);pi("bottomLeft","bottomRight","topLeft","topRight");var iH=function(e){return e!==void 0&&(e==="topLeft"||e==="topRight")?"slide-down":"slide-up"},Ys=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,enterFromClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterToClass:"".concat(e,"-enter ").concat(e,"-enter-active"),leaveFromClass:" ".concat(e,"-leave"),leaveActiveClass:"".concat(e,"-leave ").concat(e,"-leave-active"),leaveToClass:"".concat(e,"-leave ").concat(e,"-leave-active")}:{css:!1},t);return i},$W=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,appearActiveClass:"".concat(e),appearToClass:"".concat(e,"-appear ").concat(e,"-appear-active"),enterFromClass:"".concat(e,"-appear ").concat(e,"-enter ").concat(e,"-appear-prepare ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e),enterToClass:"".concat(e,"-enter ").concat(e,"-appear ").concat(e,"-appear-active ").concat(e,"-enter-active"),leaveActiveClass:"".concat(e," ").concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-active")}:{css:!1},t);return i},Ir=function(e,t,i){return i!==void 0?i:"".concat(e,"-").concat(t)};const lH=He({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(e,t){var i=t.attrs,a=t.slots,l,o=de(function(){return e.duration===void 0?1.5:e.duration}),r=function(){o.value&&(l=setTimeout(function(){v()},o.value*1e3))},f=function(){l&&(clearTimeout(l),l=null)},v=function(p){p&&p.stopPropagation(),f();var y=e.onClose,X=e.noticeKey;y&&y(X)},b=function(){f(),r()};return Kt(function(){r()}),la(function(){f()}),rt([o,function(){return e.updateMark},function(){return e.visible}],function(Z,p){var y=ft(Z,3),X=y[0],m=y[1],N=y[2],G=ft(p,3),d=G[0],u=G[1],s=G[2];(X!==d||m!==u||N!==s&&s)&&b()},{flush:"post"}),function(){var Z,p,y=e.prefixCls,X=e.closable,m=e.closeIcon,N=m===void 0?(Z=a.closeIcon)===null||Z===void 0?void 0:Z.call(a):m,G=e.onClick,d=e.holder,u=i.class,s=i.style,h="".concat(y,"-notice"),c=Object.keys(i).reduce(function(M,I){return(I.substr(0,5)==="data-"||I.substr(0,5)==="aria-"||I==="role")&&(M[I]=i[I]),M},{}),W=D("div",P({class:_e(h,u,ce({},"".concat(h,"-closable"),X)),style:s,onMouseenter:f,onMouseleave:r,onClick:G},c),[D("div",{class:"".concat(h,"-content")},[(p=a.default)===null||p===void 0?void 0:p.call(a)]),X?D("a",{tabindex:0,onClick:v,class:"".concat(h,"-close")},[N||D("span",{class:"".concat(h,"-close-x")},null)]):null]);return d?D(DW,{to:d},{default:function(){return W}}):W}}});var aH=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],l5=0,rH=Date.now();function a5(){var n=l5;return l5+=1,"rcNotification_".concat(rH,"_").concat(n)}var V2=He({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=new Map,r=Ne([]),f=de(function(){var Z=e.prefixCls,p=e.animation,y=p===void 0?"fade":p,X=e.transitionName;return!X&&y&&(X="".concat(Z,"-").concat(y)),$W(X)}),v=function(p,y){var X=p.key||a5(),m=P(P({},p),{},{key:X}),N=e.maxCount,G=r.value.map(function(u){return u.notice.key}).indexOf(X),d=r.value.concat();G!==-1?d.splice(G,1,{notice:m,holderCallback:y}):(N&&r.value.length>=N&&(m.key=d[0].notice.key,m.updateMark=a5(),m.userPassKey=X,d.shift()),d.push({notice:m,holderCallback:y})),r.value=d},b=function(p){r.value=r.value.filter(function(y){var X=y.notice,m=X.key,N=X.userPassKey,G=N||m;return G!==p})};return a({add:v,remove:b,notices:r}),function(){var Z,p,y=e.prefixCls,X=e.closeIcon,m=X===void 0?(Z=l.closeIcon)===null||Z===void 0?void 0:Z.call(l,{prefixCls:y}):X,N=r.value.map(function(d,u){var s=d.notice,h=d.holderCallback,c=u===r.value.length-1?s.updateMark:void 0,W=s.key,M=s.userPassKey,I=s.content,w=P(P(P({prefixCls:y,closeIcon:typeof m=="function"?m({prefixCls:y}):m},s),s.props),{},{key:W,noticeKey:M||W,updateMark:c,onClose:function(x){var R;b(x),(R=s.onClose)===null||R===void 0||R.call(s)},onClick:s.onClick});return h?D("div",{key:W,class:"".concat(y,"-hook-holder"),ref:function(x){typeof W>"u"||(x?(o.set(W,x),h(x,w)):o.delete(W))}},null):D(lH,w,{default:function(){return[typeof I=="function"?I({prefixCls:y}):I]}})}),G=(p={},ce(p,y,1),ce(p,i.class,!!i.class),p);return D("div",{class:G,style:i.style||{top:"65px",left:"50%"}},[D(jW,P({tag:"div"},f.value),{default:function(){return[N]}})])}}});V2.newInstance=function(e,t){var i=e||{},a=i.name,l=a===void 0?"notification":a,o=i.getContainer,r=i.appContext,f=i.prefixCls,v=i.rootPrefixCls,b=i.transitionName,Z=i.hasTransitionName,p=jt(i,aH),y=document.createElement("div");if(o){var X=o();X.appendChild(y)}else document.body.appendChild(y);var m=He({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(d,u){var s=u.attrs,h=Ne();return Kt(function(){t({notice:function(W){var M;(M=h.value)===null||M===void 0||M.add(W)},removeNotice:function(W){var M;(M=h.value)===null||M===void 0||M.remove(W)},destroy:function(){gm(null,y),y.parentNode&&y.parentNode.removeChild(y)},component:h})}),function(){var c=ba,W=c.getPrefixCls(l,f),M=c.getRootPrefixCls(v,W),I=Z?b:"".concat(M,"-").concat(b);return D(pG,P(P({},c),{},{notUpdateGlobalConfig:!0,prefixCls:M}),{default:function(){return[D(V2,P(P({ref:h},s),{},{prefixCls:W,transitionName:I}),null)]}})}}}),N=D(m,p);N.appContext=r||N.appContext,gm(N,y)};const MT=V2;var oH={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const sH=oH;function gl(n,e){cH(n)&&(n="100%");var t=uH(n);return n=e===360?n:Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(String(n*e),10)/100),Math.abs(n-e)<1e-6?1:(e===360?n=(n<0?n%e+e:n%e)/parseFloat(String(e)):n=n%e/parseFloat(String(e)),n)}function Qf(n){return Math.min(1,Math.max(0,n))}function cH(n){return typeof n=="string"&&n.indexOf(".")!==-1&&parseFloat(n)===1}function uH(n){return typeof n=="string"&&n.indexOf("%")!==-1}function IT(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Bf(n){return n<=1?"".concat(Number(n)*100,"%"):n}function sc(n){return n.length===1?"0"+n:String(n)}function dH(n,e,t){return{r:gl(n,255)*255,g:gl(e,255)*255,b:gl(t,255)*255}}function r5(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l=0,o=0,r=(i+a)/2;if(i===a)o=0,l=0;else{var f=i-a;switch(o=r>.5?f/(2-i-a):f/(i+a),i){case n:l=(e-t)/f+(e1&&(t-=1),t<1/6?n+(e-n)*(6*t):t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function hH(n,e,t){var i,a,l;if(n=gl(n,360),e=gl(e,100),t=gl(t,100),e===0)a=t,l=t,i=t;else{var o=t<.5?t*(1+e):t+e-t*e,r=2*t-o;i=Ky(r,o,n+1/3),a=Ky(r,o,n),l=Ky(r,o,n-1/3)}return{r:i*255,g:a*255,b:l*255}}function L2(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l=0,o=i,r=i-a,f=i===0?0:r/i;if(i===a)l=0;else{switch(i){case n:l=(e-t)/r+(e>16,g:(n&65280)>>8,b:n&255}}var T2={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function iu(n){var e={r:0,g:0,b:0},t=1,i=null,a=null,l=null,o=!1,r=!1;return typeof n=="string"&&(n=vH(n)),typeof n=="object"&&(bo(n.r)&&bo(n.g)&&bo(n.b)?(e=dH(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):bo(n.h)&&bo(n.s)&&bo(n.v)?(i=Bf(n.s),a=Bf(n.v),e=fH(n.h,i,a),o=!0,r="hsv"):bo(n.h)&&bo(n.s)&&bo(n.l)&&(i=Bf(n.s),l=Bf(n.l),e=hH(n.h,i,l),o=!0,r="hsl"),Object.prototype.hasOwnProperty.call(n,"a")&&(t=n.a)),t=IT(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}var yH="[-\\+]?\\d+%?",ZH="[-\\+]?\\d*\\.\\d+%?",hs="(?:".concat(ZH,")|(?:").concat(yH,")"),Hy="[\\s|\\(]+(".concat(hs,")[,|\\s]+(").concat(hs,")[,|\\s]+(").concat(hs,")\\s*\\)?"),Py="[\\s|\\(]+(".concat(hs,")[,|\\s]+(").concat(hs,")[,|\\s]+(").concat(hs,")[,|\\s]+(").concat(hs,")\\s*\\)?"),br={CSS_UNIT:new RegExp(hs),rgb:new RegExp("rgb"+Hy),rgba:new RegExp("rgba"+Py),hsl:new RegExp("hsl"+Hy),hsla:new RegExp("hsla"+Py),hsv:new RegExp("hsv"+Hy),hsva:new RegExp("hsva"+Py),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function vH(n){if(n=n.trim().toLowerCase(),n.length===0)return!1;var e=!1;if(T2[n])n=T2[n],e=!0;else if(n==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t=br.rgb.exec(n);return t?{r:t[1],g:t[2],b:t[3]}:(t=br.rgba.exec(n),t?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=br.hsl.exec(n),t?{h:t[1],s:t[2],l:t[3]}:(t=br.hsla.exec(n),t?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=br.hsv.exec(n),t?{h:t[1],s:t[2],v:t[3]}:(t=br.hsva.exec(n),t?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=br.hex8.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),a:o5(t[4]),format:e?"name":"hex8"}:(t=br.hex6.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),format:e?"name":"hex"}:(t=br.hex4.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),a:o5(t[4]+t[4]),format:e?"name":"hex8"}:(t=br.hex3.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),format:e?"name":"hex"}:!1)))))))))}function bo(n){return Boolean(br.CSS_UNIT.exec(String(n)))}var Qy=function(){function n(e,t){e===void 0&&(e=""),t===void 0&&(t={});var i;if(e instanceof n)return e;typeof e=="number"&&(e=pH(e)),this.originalInput=e;var a=iu(e);this.originalInput=e,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(i=t.format)!==null&&i!==void 0?i:a.format,this.gradientType=t.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return n.prototype.isDark=function(){return this.getBrightness()<128},n.prototype.isLight=function(){return!this.isDark()},n.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},n.prototype.getLuminance=function(){var e=this.toRgb(),t,i,a,l=e.r/255,o=e.g/255,r=e.b/255;return l<=.03928?t=l/12.92:t=Math.pow((l+.055)/1.055,2.4),o<=.03928?i=o/12.92:i=Math.pow((o+.055)/1.055,2.4),r<=.03928?a=r/12.92:a=Math.pow((r+.055)/1.055,2.4),.2126*t+.7152*i+.0722*a},n.prototype.getAlpha=function(){return this.a},n.prototype.setAlpha=function(e){return this.a=IT(e),this.roundA=Math.round(100*this.a)/100,this},n.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},n.prototype.toHsv=function(){var e=L2(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},n.prototype.toHsvString=function(){var e=L2(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.v*100);return this.a===1?"hsv(".concat(t,", ").concat(i,"%, ").concat(a,"%)"):"hsva(".concat(t,", ").concat(i,"%, ").concat(a,"%, ").concat(this.roundA,")")},n.prototype.toHsl=function(){var e=r5(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},n.prototype.toHslString=function(){var e=r5(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.l*100);return this.a===1?"hsl(".concat(t,", ").concat(i,"%, ").concat(a,"%)"):"hsla(".concat(t,", ").concat(i,"%, ").concat(a,"%, ").concat(this.roundA,")")},n.prototype.toHex=function(e){return e===void 0&&(e=!1),R2(this.r,this.g,this.b,e)},n.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},n.prototype.toHex8=function(e){return e===void 0&&(e=!1),bH(this.r,this.g,this.b,this.a,e)},n.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},n.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},n.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),i=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(t,", ").concat(i,")"):"rgba(".concat(e,", ").concat(t,", ").concat(i,", ").concat(this.roundA,")")},n.prototype.toPercentageRgb=function(){var e=function(t){return"".concat(Math.round(gl(t,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},n.prototype.toPercentageRgbString=function(){var e=function(t){return Math.round(gl(t,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},n.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+R2(this.r,this.g,this.b,!1),t=0,i=Object.entries(T2);t=0,l=!t&&a&&(e.startsWith("hex")||e==="name");return l?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},n.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},n.prototype.clone=function(){return new n(this.toString())},n.prototype.lighten=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l+=e/100,t.l=Qf(t.l),new n(t)},n.prototype.brighten=function(e){e===void 0&&(e=10);var t=this.toRgb();return t.r=Math.max(0,Math.min(255,t.r-Math.round(255*-(e/100)))),t.g=Math.max(0,Math.min(255,t.g-Math.round(255*-(e/100)))),t.b=Math.max(0,Math.min(255,t.b-Math.round(255*-(e/100)))),new n(t)},n.prototype.darken=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l-=e/100,t.l=Qf(t.l),new n(t)},n.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},n.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},n.prototype.desaturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s-=e/100,t.s=Qf(t.s),new n(t)},n.prototype.saturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s+=e/100,t.s=Qf(t.s),new n(t)},n.prototype.greyscale=function(){return this.desaturate(100)},n.prototype.spin=function(e){var t=this.toHsl(),i=(t.h+e)%360;return t.h=i<0?360+i:i,new n(t)},n.prototype.mix=function(e,t){t===void 0&&(t=50);var i=this.toRgb(),a=new n(e).toRgb(),l=t/100,o={r:(a.r-i.r)*l+i.r,g:(a.g-i.g)*l+i.g,b:(a.b-i.b)*l+i.b,a:(a.a-i.a)*l+i.a};return new n(o)},n.prototype.analogous=function(e,t){e===void 0&&(e=6),t===void 0&&(t=30);var i=this.toHsl(),a=360/t,l=[this];for(i.h=(i.h-(a*e>>1)+720)%360;--e;)i.h=(i.h+a)%360,l.push(new n(i));return l},n.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new n(e)},n.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var t=this.toHsv(),i=t.h,a=t.s,l=t.v,o=[],r=1/e;e--;)o.push(new n({h:i,s:a,v:l})),l=(l+r)%1;return o},n.prototype.splitcomplement=function(){var e=this.toHsl(),t=e.h;return[this,new n({h:(t+72)%360,s:e.s,l:e.l}),new n({h:(t+216)%360,s:e.s,l:e.l})]},n.prototype.onBackground=function(e){var t=this.toRgb(),i=new n(e).toRgb();return new n({r:i.r+(t.r-i.r)*t.a,g:i.g+(t.g-i.g)*t.a,b:i.b+(t.b-i.b)*t.a})},n.prototype.triad=function(){return this.polyad(3)},n.prototype.tetrad=function(){return this.polyad(4)},n.prototype.polyad=function(e){for(var t=this.toHsl(),i=t.h,a=[this],l=360/e,o=1;o=60&&Math.round(n.h)<=240?i=t?Math.round(n.h)-Af*e:Math.round(n.h)+Af*e:i=t?Math.round(n.h)+Af*e:Math.round(n.h)-Af*e,i<0?i+=360:i>=360&&(i-=360),i}function d5(n,e,t){if(n.h===0&&n.s===0)return n.s;var i;return t?i=n.s-s5*e:e===wT?i=n.s+s5:i=n.s+WH*e,i>1&&(i=1),t&&e===YT&&i>.1&&(i=.1),i<.06&&(i=.06),Number(i.toFixed(2))}function h5(n,e,t){var i;return t?i=n.v+GH*e:i=n.v-XH*e,i>1&&(i=1),Number(i.toFixed(2))}function yh(n){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=[],i=iu(n),a=YT;a>0;a-=1){var l=c5(i),o=_f(iu({h:u5(l,a,!0),s:d5(l,a,!0),v:h5(l,a,!0)}));t.push(o)}t.push(_f(i));for(var r=1;r<=wT;r+=1){var f=c5(i),v=_f(iu({h:u5(f,r),s:d5(f,r),v:h5(f,r)}));t.push(v)}return e.theme==="dark"?NH.map(function(b){var Z=b.index,p=b.opacity,y=_f(MH(iu(e.backgroundColor||"#141414"),iu(t[Z]),p*100));return y}):t}var pu={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},By={},Ay={};Object.keys(pu).forEach(function(n){By[n]=yh(pu[n]),By[n].primary=By[n][5],Ay[n]=yh(pu[n],{theme:"dark",backgroundColor:"#141414"}),Ay[n].primary=Ay[n][5]});var f5=[],Gd=[],IH="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function YH(){var n=document.createElement("style");return n.setAttribute("type","text/css"),n}function wH(n,e){if(e=e||{},n===void 0)throw new Error(IH);var t=e.prepend===!0?"prepend":"append",i=e.container!==void 0?e.container:document.querySelector("head"),a=f5.indexOf(i);a===-1&&(a=f5.push(i)-1,Gd[a]={});var l;return Gd[a]!==void 0&&Gd[a][t]!==void 0?l=Gd[a][t]:(l=Gd[a][t]=YH(),t==="prepend"?i.insertBefore(l,i.childNodes[0]):i.appendChild(l)),n.charCodeAt(0)===65279&&(n=n.substr(1,n.length)),l.styleSheet?l.styleSheet.cssText+=n:l.textContent+=n,l}function b5(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:YH;cn(function(){b5||(typeof window<"u"&&window.document&&window.document.documentElement&&MH(e,{prepend:!0}),b5=!0)})},gH=["icon","primaryColor","secondaryColor"];function VH(n,e){if(n==null)return{};var t=LH(n,e),i,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function LH(n,e){if(n==null)return{};var t={},i=Object.keys(n),a,l;for(l=0;l=0)&&(t[a]=n[a]);return t}function zb(n){for(var e=1;en.length)&&(e=n.length);for(var t=0,i=new Array(e);tn.length)&&(e=n.length);for(var t=0,i=new Array(e);t=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function PH(n,e){if(n==null)return{};var t={},i=Object.keys(n),a,l;for(l=0;l=0)&&(t[a]=n[a]);return t}wT("#1890ff");var Ku=function(e,t){var i,a=y5({},e,t.attrs),l=a.class,o=a.icon,r=a.spin,f=a.rotate,v=a.tabindex,b=a.twoToneColor,Z=a.onClick,p=HH(a,DH),y=(i={anticon:!0},R2(i,"anticon-".concat(o.name),Boolean(o.name)),R2(i,l,l),i),X=r===""||r||o.name==="loading"?"anticon-spin":"",m=v;m===void 0&&Z&&(m=-1,p.tabindex=m);var N=f?{msTransform:"rotate(".concat(f,"deg)"),transform:"rotate(".concat(f,"deg)")}:void 0,G=YT(b),d=OH(G,2),u=d[0],s=d[1];return D("span",y5({role:"img","aria-label":o.name},p,{onClick:Z,class:y}),[D(AW,{class:X,icon:o,primaryColor:u,secondaryColor:s,style:N},null)])};Ku.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};Ku.displayName="AntdIcon";Ku.inheritAttrs=!1;Ku.getTwoToneColor=JH;Ku.setTwoToneColor=wT;const bn=Ku;function Z5(n){for(var e=1;e=0;--T){var J=this.tryEntries[T],U=J.completion;if(J.tryLoc==="root")return Y("end");if(J.tryLoc<=this.prev){var K=l.call(J,"catchLoc"),H=l.call(J,"finallyLoc");if(K&&H){if(this.prev=0;--Y){var T=this.tryEntries[Y];if(T.tryLoc<=this.prev&&l.call(T,"finallyLoc")&&this.prev=0;--V){var Y=this.tryEntries[V];if(Y.finallyLoc===L)return this.complete(Y.completion,Y.afterLoc),C(Y),X}},catch:function(L){for(var V=this.tryEntries.length-1;V>=0;--V){var Y=this.tryEntries[V];if(Y.tryLoc===L){var T=Y.completion;if(T.type==="throw"){var J=T.arg;C(Y)}return J}}throw new Error("illegal catch attempt")},delegateYield:function(L,V,Y){return this.delegate={iterator:R(L),resultName:V,nextLoc:Y},this.method==="next"&&(this.arg=void 0),X}},i}n.exports=t,n.exports.__esModule=!0,n.exports.default=n.exports})(mP);var kb=T2(),Xa=kb;try{regeneratorRuntime=kb}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=kb:Function("r","regeneratorRuntime = r")(kb)}var yP={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const ZP=yP;function M5(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:FT,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:JT,i;switch(n){case"topLeft":i={left:"0px",top:e,bottom:"auto"};break;case"topRight":i={right:"0px",top:e,bottom:"auto"};break;case"bottomLeft":i={left:"0px",top:"auto",bottom:t};break;default:i={right:"0px",top:"auto",bottom:t};break}return i}function CP(n,e){var t=n.prefixCls,i=n.placement,a=i===void 0?DT:i,l=n.getContainer,o=l===void 0?OT:l,r=n.top,f=n.bottom,v=n.closeIcon,b=v===void 0?jT:v,Z=n.appContext,p=QP(),y=p.getPrefixCls,X=y("notification",t||C2),m="".concat(X,"-").concat(a,"-").concat(S2),N=tc[m];if(N){Promise.resolve(N).then(function(d){e(d)});return}var G=_e("".concat(X,"-").concat(a),ce({},"".concat(X,"-rtl"),S2===!0));GT.newInstance({name:"notification",prefixCls:t||C2,class:G,style:xP(a,r,f),appContext:Z,getContainer:o,closeIcon:function(u){var s=u.prefixCls,h=D("span",{class:"".concat(s,"-close-x")},[Ld(b,{},D(Ar,{class:"".concat(s,"-close-icon")},null))]);return h},maxCount:UT,hasTransitionName:!0},function(d){tc[m]=d,e(d)})}var SP={success:lG,info:rG,error:sG,warning:J0};function zP(n){var e=n.icon,t=n.type,i=n.description,a=n.message,l=n.btn,o=n.duration===void 0?kT:n.duration;CP(n,function(r){r.notice({content:function(v){var b=v.prefixCls,Z="".concat(b,"-notice"),p=null;if(e)p=function(){return D("span",{class:"".concat(Z,"-icon")},[Ld(e)])};else if(t){var y=SP[t];p=function(){return D(y,{class:"".concat(Z,"-icon ").concat(Z,"-icon-").concat(t)},null)}}return D("div",{class:p?"".concat(Z,"-with-icon"):""},[p&&p(),D("div",{class:"".concat(Z,"-message")},[!i&&p?D("span",{class:"".concat(Z,"-message-single-line-auto-margin")},null):null,Ld(a)]),D("div",{class:"".concat(Z,"-description")},[Ld(i)]),l?D("span",{class:"".concat(Z,"-btn")},[Ld(l)]):null])},duration:o,closable:!0,onClose:n.onClose,onClick:n.onClick,key:n.key,style:n.style||{},class:n.class})})}var yh={open:zP,close:function(e){Object.keys(tc).forEach(function(t){return Promise.resolve(tc[t]).then(function(i){i.removeNotice(e)})})},config:TP,destroy:function(){Object.keys(tc).forEach(function(e){Promise.resolve(tc[e]).then(function(t){t.destroy()}),delete tc[e]})}},kP=["success","info","warning","error"];kP.forEach(function(n){yh[n]=function(e){return yh.open(P(P({},e),{},{type:n}))}});yh.warn=yh.warning;const dG=yh;function wc(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var FP="vc-util-key";function ET(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=n.mark;return e?e.startsWith("data-")?e:"data-".concat(e):FP}function hG(n){if(n.attachTo)return n.attachTo;var e=document.querySelector("head");return e||document.body}function V5(n){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!wc())return null;var i=document.createElement("style");if((e=t.csp)!==null&&e!==void 0&&e.nonce){var a;i.nonce=(a=t.csp)===null||a===void 0?void 0:a.nonce}i.innerHTML=n;var l=hG(t),o=l.firstChild;return t.prepend&&l.prepend?l.prepend(i):t.prepend&&o?l.insertBefore(i,o):l.appendChild(i),i}var z2=new Map;function JP(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=hG(e);return Array.from(z2.get(t).children).find(function(i){return i.tagName==="STYLE"&&i.getAttribute(ET(e))===n})}function DP(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=hG(t);if(!z2.has(i)){var a=V5("",t),l=a.parentNode;z2.set(i,l),l.removeChild(a)}var o=JP(e,t);if(o){var r,f;if((r=t.csp)!==null&&r!==void 0&&r.nonce&&o.nonce!==((f=t.csp)===null||f===void 0?void 0:f.nonce)){var v;o.nonce=(v=t.csp)===null||v===void 0?void 0:v.nonce}return o.innerHTML!==n&&(o.innerHTML=n),o}var b=V5(n,t);return b.setAttribute(ET(t),e),b}const jn=function(n,e,t){vT(n,"[ant-design-vue: ".concat(e,"] ").concat(t))};var OP="-ant-".concat(Date.now(),"-").concat(Math.random());function jP(n,e){var t={},i=function(b,Z){var p=b.clone();return p=(Z==null?void 0:Z(p))||p,p.toRgbString()},a=function(b,Z){var p=new Ky(b),y=ph(p.toRgbString());t["".concat(Z,"-color")]=i(p),t["".concat(Z,"-color-disabled")]=y[1],t["".concat(Z,"-color-hover")]=y[4],t["".concat(Z,"-color-active")]=y[6],t["".concat(Z,"-color-outline")]=p.clone().setAlpha(.2).toRgbString(),t["".concat(Z,"-color-deprecated-bg")]=y[1],t["".concat(Z,"-color-deprecated-border")]=y[3]};if(e.primaryColor){a(e.primaryColor,"primary");var l=new Ky(e.primaryColor),o=ph(l.toRgbString());o.forEach(function(v,b){t["primary-".concat(b+1)]=v}),t["primary-color-deprecated-l-35"]=i(l,function(v){return v.lighten(35)}),t["primary-color-deprecated-l-20"]=i(l,function(v){return v.lighten(20)}),t["primary-color-deprecated-t-20"]=i(l,function(v){return v.tint(20)}),t["primary-color-deprecated-t-50"]=i(l,function(v){return v.tint(50)}),t["primary-color-deprecated-f-12"]=i(l,function(v){return v.setAlpha(v.getAlpha()*.12)});var r=new Ky(o[0]);t["primary-color-active-deprecated-f-30"]=i(r,function(v){return v.setAlpha(v.getAlpha()*.3)}),t["primary-color-active-deprecated-d-02"]=i(r,function(v){return v.darken(2)})}e.successColor&&a(e.successColor,"success"),e.warningColor&&a(e.warningColor,"warning"),e.errorColor&&a(e.errorColor,"error"),e.infoColor&&a(e.infoColor,"info");var f=Object.keys(t).map(function(v){return"--".concat(n,"-").concat(v,": ").concat(t[v],";")});wc()?DP(` +`,p5=!1,LH=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:VH;cn(function(){p5||(typeof window<"u"&&window.document&&window.document.documentElement&&wH(e,{prepend:!0}),p5=!0)})},RH=["icon","primaryColor","secondaryColor"];function TH(n,e){if(n==null)return{};var t=xH(n,e),i,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function xH(n,e){if(n==null)return{};var t={},i=Object.keys(n),a,l;for(l=0;l=0)&&(t[a]=n[a]);return t}function kb(n){for(var e=1;en.length)&&(e=n.length);for(var t=0,i=new Array(e);tn.length)&&(e=n.length);for(var t=0,i=new Array(e);t=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function AH(n,e){if(n==null)return{};var t={},i=Object.keys(n),a,l;for(l=0;l=0)&&(t[a]=n[a]);return t}LT("#1890ff");var Hu=function(e,t){var i,a=v5({},e,t.attrs),l=a.class,o=a.icon,r=a.spin,f=a.rotate,v=a.tabindex,b=a.twoToneColor,Z=a.onClick,p=BH(a,UH),y=(i={anticon:!0},C2(i,"anticon-".concat(o.name),Boolean(o.name)),C2(i,l,l),i),X=r===""||r||o.name==="loading"?"anticon-spin":"",m=v;m===void 0&&Z&&(m=-1,p.tabindex=m);var N=f?{msTransform:"rotate(".concat(f,"deg)"),transform:"rotate(".concat(f,"deg)")}:void 0,G=VT(b),d=EH(G,2),u=d[0],s=d[1];return D("span",v5({role:"img","aria-label":o.name},p,{onClick:Z,class:y}),[D(qW,{class:X,icon:o,primaryColor:u,secondaryColor:s,style:N},null)])};Hu.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};Hu.displayName="AntdIcon";Hu.inheritAttrs=!1;Hu.getTwoToneColor=jH;Hu.setTwoToneColor=LT;const bn=Hu;function W5(n){for(var e=1;e=0;--T){var J=this.tryEntries[T],U=J.completion;if(J.tryLoc==="root")return Y("end");if(J.tryLoc<=this.prev){var K=l.call(J,"catchLoc"),H=l.call(J,"finallyLoc");if(K&&H){if(this.prev=0;--Y){var T=this.tryEntries[Y];if(T.tryLoc<=this.prev&&l.call(T,"finallyLoc")&&this.prev=0;--V){var Y=this.tryEntries[V];if(Y.finallyLoc===L)return this.complete(Y.completion,Y.afterLoc),C(Y),X}},catch:function(L){for(var V=this.tryEntries.length-1;V>=0;--V){var Y=this.tryEntries[V];if(Y.tryLoc===L){var T=Y.completion;if(T.type==="throw"){var J=T.arg;C(Y)}return J}}throw new Error("illegal catch attempt")},delegateYield:function(L,V,Y){return this.delegate={iterator:R(L),resultName:V,nextLoc:Y},this.method==="next"&&(this.arg=void 0),X}},i}n.exports=t,n.exports.__esModule=!0,n.exports.default=n.exports})(ZP);var Fb=S2(),Xa=Fb;try{regeneratorRuntime=Fb}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Fb:Function("r","regeneratorRuntime = r")(Fb)}var WP={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const GP=WP;function Y5(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:OT,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:jT,i;switch(n){case"topLeft":i={left:"0px",top:e,bottom:"auto"};break;case"topRight":i={right:"0px",top:e,bottom:"auto"};break;case"bottomLeft":i={left:"0px",top:"auto",bottom:t};break;default:i={right:"0px",top:"auto",bottom:t};break}return i}function kP(n,e){var t=n.prefixCls,i=n.placement,a=i===void 0?UT:i,l=n.getContainer,o=l===void 0?ET:l,r=n.top,f=n.bottom,v=n.closeIcon,b=v===void 0?KT:v,Z=n.appContext,p=_P(),y=p.getPrefixCls,X=y("notification",t||k2),m="".concat(X,"-").concat(a,"-").concat(F2),N=tc[m];if(N){Promise.resolve(N).then(function(d){e(d)});return}var G=_e("".concat(X,"-").concat(a),ce({},"".concat(X,"-rtl"),F2===!0));MT.newInstance({name:"notification",prefixCls:t||k2,class:G,style:zP(a,r,f),appContext:Z,getContainer:o,closeIcon:function(u){var s=u.prefixCls,h=D("span",{class:"".concat(s,"-close-x")},[Rd(b,{},D(Ar,{class:"".concat(s,"-close-icon")},null))]);return h},maxCount:HT,hasTransitionName:!0},function(d){tc[m]=d,e(d)})}var FP={success:rG,info:sG,error:uG,warning:j0};function JP(n){var e=n.icon,t=n.type,i=n.description,a=n.message,l=n.btn,o=n.duration===void 0?DT:n.duration;kP(n,function(r){r.notice({content:function(v){var b=v.prefixCls,Z="".concat(b,"-notice"),p=null;if(e)p=function(){return D("span",{class:"".concat(Z,"-icon")},[Rd(e)])};else if(t){var y=FP[t];p=function(){return D(y,{class:"".concat(Z,"-icon ").concat(Z,"-icon-").concat(t)},null)}}return D("div",{class:p?"".concat(Z,"-with-icon"):""},[p&&p(),D("div",{class:"".concat(Z,"-message")},[!i&&p?D("span",{class:"".concat(Z,"-message-single-line-auto-margin")},null):null,Rd(a)]),D("div",{class:"".concat(Z,"-description")},[Rd(i)]),l?D("span",{class:"".concat(Z,"-btn")},[Rd(l)]):null])},duration:o,closable:!0,onClose:n.onClose,onClick:n.onClick,key:n.key,style:n.style||{},class:n.class})})}var Zh={open:JP,close:function(e){Object.keys(tc).forEach(function(t){return Promise.resolve(tc[t]).then(function(i){i.removeNotice(e)})})},config:SP,destroy:function(){Object.keys(tc).forEach(function(e){Promise.resolve(tc[e]).then(function(t){t.destroy()}),delete tc[e]})}},DP=["success","info","warning","error"];DP.forEach(function(n){Zh[n]=function(e){return Zh.open(P(P({},e),{},{type:n}))}});Zh.warn=Zh.warning;const fG=Zh;function gc(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var OP="vc-util-key";function PT(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=n.mark;return e?e.startsWith("data-")?e:"data-".concat(e):OP}function bG(n){if(n.attachTo)return n.attachTo;var e=document.querySelector("head");return e||document.body}function R5(n){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!gc())return null;var i=document.createElement("style");if((e=t.csp)!==null&&e!==void 0&&e.nonce){var a;i.nonce=(a=t.csp)===null||a===void 0?void 0:a.nonce}i.innerHTML=n;var l=bG(t),o=l.firstChild;return t.prepend&&l.prepend?l.prepend(i):t.prepend&&o?l.insertBefore(i,o):l.appendChild(i),i}var J2=new Map;function jP(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=bG(e);return Array.from(J2.get(t).children).find(function(i){return i.tagName==="STYLE"&&i.getAttribute(PT(e))===n})}function UP(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=bG(t);if(!J2.has(i)){var a=R5("",t),l=a.parentNode;J2.set(i,l),l.removeChild(a)}var o=jP(e,t);if(o){var r,f;if((r=t.csp)!==null&&r!==void 0&&r.nonce&&o.nonce!==((f=t.csp)===null||f===void 0?void 0:f.nonce)){var v;o.nonce=(v=t.csp)===null||v===void 0?void 0:v.nonce}return o.innerHTML!==n&&(o.innerHTML=n),o}var b=R5(n,t);return b.setAttribute(PT(t),e),b}const jn=function(n,e,t){XT(n,"[ant-design-vue: ".concat(e,"] ").concat(t))};var EP="-ant-".concat(Date.now(),"-").concat(Math.random());function KP(n,e){var t={},i=function(b,Z){var p=b.clone();return p=(Z==null?void 0:Z(p))||p,p.toRgbString()},a=function(b,Z){var p=new Qy(b),y=yh(p.toRgbString());t["".concat(Z,"-color")]=i(p),t["".concat(Z,"-color-disabled")]=y[1],t["".concat(Z,"-color-hover")]=y[4],t["".concat(Z,"-color-active")]=y[6],t["".concat(Z,"-color-outline")]=p.clone().setAlpha(.2).toRgbString(),t["".concat(Z,"-color-deprecated-bg")]=y[1],t["".concat(Z,"-color-deprecated-border")]=y[3]};if(e.primaryColor){a(e.primaryColor,"primary");var l=new Qy(e.primaryColor),o=yh(l.toRgbString());o.forEach(function(v,b){t["primary-".concat(b+1)]=v}),t["primary-color-deprecated-l-35"]=i(l,function(v){return v.lighten(35)}),t["primary-color-deprecated-l-20"]=i(l,function(v){return v.lighten(20)}),t["primary-color-deprecated-t-20"]=i(l,function(v){return v.tint(20)}),t["primary-color-deprecated-t-50"]=i(l,function(v){return v.tint(50)}),t["primary-color-deprecated-f-12"]=i(l,function(v){return v.setAlpha(v.getAlpha()*.12)});var r=new Qy(o[0]);t["primary-color-active-deprecated-f-30"]=i(r,function(v){return v.setAlpha(v.getAlpha()*.3)}),t["primary-color-active-deprecated-d-02"]=i(r,function(v){return v.darken(2)})}e.successColor&&a(e.successColor,"success"),e.warningColor&&a(e.warningColor,"warning"),e.errorColor&&a(e.errorColor,"error"),e.infoColor&&a(e.infoColor,"info");var f=Object.keys(t).map(function(v){return"--".concat(n,"-").concat(v,": ").concat(t[v],";")});gc()?UP(` :root { `.concat(f.join(` `),` } - `),"".concat(OP,"-dynamic-theme")):jn(!1,"ConfigProvider","SSR do not support dynamic theme with css variables.")}var KT=Symbol("GlobalFormContextKey"),UP=function(e){hn(KT,e)},EP=function(){return un(KT,{validateMessages:de(function(){})})},KP=function(){return{getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:{type:Object,default:void 0},input:{type:Object},autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:{type:Object,default:void 0},pageHeader:{type:Object},componentSize:{type:String},direction:{type:String},space:{type:Object},virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:{type:Object,default:void 0},notUpdateGlobalConfig:Boolean}},HP="ant";function pu(){return ba.prefixCls||HP}var k2=zn({}),HT=zn({}),ba=zn({});qt(function(){Xn(ba,k2,HT),ba.prefixCls=pu(),ba.getPrefixCls=function(n,e){return e||(n?"".concat(ba.prefixCls,"-").concat(n):ba.prefixCls)},ba.getRootPrefixCls=function(n,e){return n||(ba.prefixCls?ba.prefixCls:e&&e.includes("-")?e.replace(/^(.*)-[^-]*$/,"$1"):pu())}});var Qy,PP=function(e){Qy&&Qy(),Qy=qt(function(){Xn(HT,zn(e)),Xn(ba,zn(e))}),e.theme&&jP(pu(),e.theme)},QP=function(){return{getPrefixCls:function(t,i){return i||(t?"".concat(pu(),"-").concat(t):pu())},getRootPrefixCls:function(t,i){return t||(ba.prefixCls?ba.prefixCls:i&&i.includes("-")?i.replace(/^(.*)-[^-]*$/,"$1"):pu())}}},Qd=He({compatConfig:{MODE:3},name:"AConfigProvider",inheritAttrs:!1,props:KP(),setup:function(e,t){var i=t.slots,a=function(Z,p){var y=e.prefixCls,X=y===void 0?"ant":y;return p||(Z?"".concat(X,"-").concat(Z):X)},l=function(Z){var p=e.renderEmpty||i.renderEmpty||yT;return p(Z)},o=function(Z,p){var y=e.prefixCls;if(p)return p;var X=y||a("");return Z?"".concat(X,"-").concat(Z):X},r=zn(P(P({},e),{},{getPrefixCls:o,renderEmpty:l}));Object.keys(e).forEach(function(b){rt(function(){return e[b]},function(){r[b]=e[b]})}),e.notUpdateGlobalConfig||(Xn(k2,r),rt(r,function(){Xn(k2,r)}));var f=de(function(){var b={};if(e.locale){var Z,p;b=((Z=e.locale.Form)===null||Z===void 0?void 0:Z.defaultValidateMessages)||((p=Mr.Form)===null||p===void 0?void 0:p.defaultValidateMessages)||{}}return e.form&&e.form.validateMessages&&(b=P(P({},b),e.form.validateMessages)),b});UP({validateMessages:f}),hn("configProvider",r);var v=function(Z){var p;return D(WT,{locale:e.locale||Z,ANT_MARK__:I2},{default:function(){return[(p=i.default)===null||p===void 0?void 0:p.call(i)]}})};return qt(function(){e.direction&&(nG.config({rtl:e.direction==="rtl"}),dG.config({rtl:e.direction==="rtl"}))}),function(){return D(ju,{children:function(Z,p,y){return v(y)}},null)}}}),fG=zn({getPrefixCls:function(e,t){return t||(e?"ant-".concat(e):"ant")},renderEmpty:yT,direction:"ltr"});Qd.config=PP;Qd.install=function(n){n.component(Qd.name,Qd)};const bG=Qd,Nt=function(n,e){var t=un("configProvider",fG),i=de(function(){return t.getPrefixCls(n,e.prefixCls)}),a=de(function(){var d;return(d=e.direction)!==null&&d!==void 0?d:t.direction}),l=de(function(){return t.getPrefixCls()}),o=de(function(){return t.autoInsertSpaceInButton}),r=de(function(){return t.renderEmpty}),f=de(function(){return t.space}),v=de(function(){return t.pageHeader}),b=de(function(){return t.form}),Z=de(function(){return e.getTargetContainer||t.getTargetContainer}),p=de(function(){return e.getPopupContainer||t.getPopupContainer}),y=de(function(){var d;return(d=e.dropdownMatchSelectWidth)!==null&&d!==void 0?d:t.dropdownMatchSelectWidth}),X=de(function(){return(e.virtual===void 0?t.virtual!==!1:e.virtual!==!1)&&y.value!==!1}),m=de(function(){return e.size||t.componentSize}),N=de(function(){var d;return e.autocomplete||((d=t.input)===null||d===void 0?void 0:d.autocomplete)}),G=de(function(){return t.csp});return{configProvider:t,prefixCls:i,direction:a,size:m,getTargetContainer:Z,getPopupContainer:p,space:f,pageHeader:v,form:b,autoInsertSpaceInButton:o,renderEmpty:r,virtual:X,dropdownMatchSelectWidth:y,rootPrefixCls:l,getPrefixCls:t.getPrefixCls,autocomplete:N,csp:G}};function dn(n,e){for(var t=Xn({},n),i=0;i"u")return 0;var t=e?"scrollTop":"scrollLeft",i=0;if(F2(n)?i=n[e?"pageYOffset":"pageXOffset"]:n instanceof Document?i=n.documentElement[t]:n&&(i=n[t]),n&&!F2(n)&&typeof i!="number"){var a;i=(a=(n.ownerDocument||n).documentElement)===null||a===void 0?void 0:a[t]}return i}function $P(n,e,t,i){var a=t-e;return n/=i/2,n<1?a/2*n*n*n+e:a/2*((n-=2)*n*n+2)+e}function pG(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.getContainer,i=t===void 0?function(){return window}:t,a=e.callback,l=e.duration,o=l===void 0?450:l,r=i(),f=mG(r,!0),v=Date.now(),b=function Z(){var p=Date.now(),y=p-v,X=$P(y>o?o:y,f,n,o);F2(r)?r.scrollTo(window.pageXOffset,X):r instanceof HTMLDocument||r.constructor.name==="HTMLDocument"?r.documentElement.scrollTop=X:r.scrollTop=X,y0&&arguments[0]!==void 0?arguments[0]:0,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,M=[],I=m.value();if(y.links.forEach(function(C){var x=R5.exec(C.toString());if(x){var R=document.getElementById(x[1]);if(R){var g=L5(R,I);gC.top?x:C});return w.link}return""},G=function(c){var W=e.getCurrentAnchor;X.value!==c&&(X.value=typeof W=="function"?W():c,i("change",c))},d=function(c){var W=e.offsetTop,M=e.targetOffset;G(c);var I=m.value(),w=mG(I,!0),C=R5.exec(c);if(C){var x=document.getElementById(C[1]);if(x){var R=L5(x,I),g=w+R;g-=M!==void 0?M:W||0,y.animating=!0,pG(g,{callback:function(){y.animating=!1},getContainer:m.value})}}};o({scrollTo:d});var u=function(){if(!y.animating){var c=e.offsetTop,W=e.bounds,M=e.targetOffset,I=N(M!==void 0?M:c||0,W);G(I)}},s=function(){var c=p.value.getElementsByClassName("".concat(f.value,"-link-title-active"))[0];c&&(Z.value.style.top="".concat(c.offsetTop+c.clientHeight/2-4.5,"px"))};return tQ({registerLink:function(c){y.links.includes(c)||y.links.push(c)},unregisterLink:function(c){var W=y.links.indexOf(c);W!==-1&&y.links.splice(W,1)},activeLink:X,scrollTo:d,handleClick:function(c,W){i("click",c,W)}}),Kt(function(){cn(function(){var h=m.value();y.scrollContainer=h,y.scrollEvent=hi(y.scrollContainer,"scroll",u),u()})}),fn(function(){y.scrollEvent&&y.scrollEvent.remove()}),Dl(function(){if(y.scrollEvent){var h=m.value();y.scrollContainer!==h&&(y.scrollContainer=h,y.scrollEvent.remove(),y.scrollEvent=hi(y.scrollContainer,"scroll",u),u())}s()}),function(){var h,c=e.offsetTop,W=e.affix,M=e.showInkInFixed,I=f.value,w=_e("".concat(I,"-ink-ball"),{visible:X.value}),C=_e(e.wrapperClass,"".concat(I,"-wrapper"),ce({},"".concat(I,"-rtl"),b.value==="rtl")),x=_e(I,ce({},"".concat(I,"-fixed"),!W&&!M)),R=P({maxHeight:c?"calc(100vh - ".concat(c,"px)"):"100vh"},e.wrapperStyle),g=D("div",{class:C,style:R,ref:p},[D("div",{class:x},[D("div",{class:"".concat(I,"-ink")},[D("span",{class:w,ref:Z},null)]),(h=l.default)===null||h===void 0?void 0:h.call(l)])]);return W?D(PT,P(P({},a),{},{offsetTop:c,target:m.value}),{default:function(){return[g]}}):g}}});var lQ=function(){return{prefixCls:String,href:String,title:We.any,target:String}};const BT=He({compatConfig:{MODE:3},name:"AAnchorLink",props:pn(lQ(),{href:"#"}),slots:["title"],setup:function(e,t){var i=t.slots,a=null,l=eQ(),o=l.handleClick,r=l.scrollTo,f=l.unregisterLink,v=l.registerLink,b=l.activeLink,Z=Nt("anchor",e),p=Z.prefixCls,y=function(m){var N=e.href;o(m,{title:a,href:N}),r(N)};return rt(function(){return e.href},function(X,m){cn(function(){f(m),v(X)})}),Kt(function(){v(e.href)}),fn(function(){f(e.href)}),function(){var X,m=e.href,N=e.target,G=p.value,d=ui(i,e,"title");a=d;var u=b.value===m,s=_e("".concat(G,"-link"),ce({},"".concat(G,"-link-active"),u)),h=_e("".concat(G,"-link-title"),ce({},"".concat(G,"-link-title-active"),u));return D("div",{class:s},[D("a",{class:h,href:m,title:typeof d=="string"?d:"",target:N,onClick:y},[d]),(X=i.default)===null||X===void 0?void 0:X.call(i)])}}});nc.Link=BT;nc.install=function(n){return n.component(nc.name,nc),n.component(nc.Link.name,nc.Link),n};function yG(n){return OR(n)||UR(n)||k0(n)||jR()}function T5(n,e){var t=n.key,i;return"value"in n&&(i=n.value),t??(i!==void 0?i:"rc-index-key-".concat(e))}function AT(n,e){var t=n||{},i=t.label,a=t.value,l=t.options;return{label:i||(e?"children":"label"),value:a||"value",options:l||"options"}}function aQ(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.fieldNames,i=e.childrenAsData,a=[],l=AT(t,!1),o=l.label,r=l.value,f=l.options;function v(b,Z){b.forEach(function(p){var y=p[o];if(Z||!(f in p)){var X=p[r];a.push({key:T5(p,a.length),groupOption:Z,data:p,label:y,value:X})}else{var m=y;m===void 0&&i&&(m=p.label),a.push({key:T5(p,a.length),group:!0,data:p,label:m}),v(p[f],!0)}})}return v(n,!1),a}function J2(n){var e=P({},n);return"props"in e||Object.defineProperty(e,"props",{get:function(){return e}}),e}function rQ(n,e){if(!e||!e.length)return null;var t=!1;function i(l,o){var r=yG(o),f=r[0],v=r.slice(1);if(!f)return[l];var b=l.split(f);return t=t||b.length>1,b.reduce(function(Z,p){return[].concat(yt(Z),yt(i(p,v)))},[]).filter(function(Z){return Z})}var a=i(n,e);return t?a:null}function ic(n,e){return n?n.contains(e):!1}var _T=["moz","ms","webkit"];function oQ(){var n=0;return function(e){var t=new Date().getTime(),i=Math.max(0,16-(t-n)),a=window.setTimeout(function(){e(t+i)},i);return n=t+i,a}}function sQ(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var n=_T.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return n?window["".concat(n,"RequestAnimationFrame")]:oQ()}function cQ(n){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(n);var e=_T.filter(function(t){return"".concat(t,"CancelAnimationFrame")in window||"".concat(t,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,n):clearTimeout(n)}var x5=sQ(),uQ=function(e){return cQ(e.id)},dQ=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=Date.now();function a(){Date.now()-i>=t?e.call():l.id=x5(a)}var l={id:x5(a)};return l},ZG={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},hQ=P(P({},ZG),{},{mobile:{type:Object}}),fQ=P(P({},ZG),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function $T(n){var e=n.prefixCls,t=n.animation,i=n.transitionName;return t?{name:"".concat(e,"-").concat(t)}:i?{name:i}:{}}function qT(n){var e=n.prefixCls,t=n.visible,i=n.zIndex,a=n.mask,l=n.maskAnimation,o=n.maskTransitionName;if(!a)return null;var r={};return(o||l)&&(r=$T({prefixCls:e,transitionName:o,animation:l})),D(aa,P({appear:!0},r),{default:function(){return[vl(D("div",{style:{zIndex:i},class:"".concat(e,"-mask")},null),[[a4("if"),t]])]}})}qT.displayName="Mask";const bQ=He({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:hQ,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var i=t.expose,a=t.slots,l=Ne();return i({forceAlign:function(){},getElement:function(){return l.value}}),function(){var o,r=e.zIndex,f=e.visible,v=e.prefixCls,b=e.mobile;b=b===void 0?{}:b;var Z=b.popupClassName,p=b.popupStyle,y=b.popupMotion,X=y===void 0?{}:y,m=b.popupRender,N=P({zIndex:r},p),G=ti((o=a.default)===null||o===void 0?void 0:o.call(a));G.length>1&&(G=D("div",{class:"".concat(v,"-content")},[G])),m&&(G=m(G));var d=_e(v,Z);return D(aa,P({ref:l},X),{default:function(){return[f?D("div",{class:d,style:N},[G]):null]}})}}});var C5=["measure","align",null,"motion"];const mQ=function(n,e){var t=Ne(null),i=Ne(),a=Ne(!1);function l(f){a.value||(t.value=f)}function o(){At.cancel(i.value)}function r(f){o(),i.value=At(function(){var v=t.value;switch(t.value){case"align":v="motion";break;case"motion":v="stable";break}l(v),f==null||f()})}return rt(n,function(){l("measure")},{immediate:!0,flush:"post"}),Kt(function(){rt(t,function(){switch(t.value){case"measure":e();break}t.value&&(i.value=At(Yc(Xa.mark(function f(){var v,b;return Xa.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:v=C5.indexOf(t.value),b=C5[v+1],b&&v!==-1&&l(b);case 3:case"end":return p.stop()}},f)}))))},{immediate:!0,flush:"post"})}),fn(function(){a.value=!0,o()}),[t,r]},pQ=function(n){var e=Ne({width:0,height:0});function t(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var i=de(function(){var a={};if(n.value){var l=e.value,o=l.width,r=l.height;n.value.indexOf("height")!==-1&&r?a.height="".concat(r,"px"):n.value.indexOf("minHeight")!==-1&&r&&(a.minHeight="".concat(r,"px")),n.value.indexOf("width")!==-1&&o?a.width="".concat(o,"px"):n.value.indexOf("minWidth")!==-1&&o&&(a.minWidth="".concat(o,"px"))}return a});return[i,t]};function S5(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function z5(n){for(var e=1;e=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}function JQ(n,e,t,i){var a=Yn.clone(n),l={width:e.width,height:e.height};return i.adjustX&&a.left=t.left&&a.left+l.width>t.right&&(l.width-=a.left+l.width-t.right),i.adjustX&&a.left+l.width>t.right&&(a.left=Math.max(t.right-l.width,t.left)),i.adjustY&&a.top=t.top&&a.top+l.height>t.bottom&&(l.height-=a.top+l.height-t.bottom),i.adjustY&&a.top+l.height>t.bottom&&(a.top=Math.max(t.bottom-l.height,t.top)),Yn.mix(a,l)}function XG(n){var e,t,i;if(!Yn.isWindow(n)&&n.nodeType!==9)e=Yn.offset(n),t=Yn.outerWidth(n),i=Yn.outerHeight(n);else{var a=Yn.getWindow(n);e={left:Yn.getWindowScrollLeft(a),top:Yn.getWindowScrollTop(a)},t=Yn.viewportWidth(a),i=Yn.viewportHeight(a)}return e.width=t,e.height=i,e}function E5(n,e){var t=e.charAt(0),i=e.charAt(1),a=n.width,l=n.height,o=n.left,r=n.top;return t==="c"?r+=l/2:t==="b"&&(r+=l),i==="c"?o+=a/2:i==="r"&&(o+=a),{left:o,top:r}}function qf(n,e,t,i,a){var l=E5(e,t[1]),o=E5(n,t[0]),r=[o.left-l.left,o.top-l.top];return{left:Math.round(n.left-r[0]+i[0]-a[0]),top:Math.round(n.top-r[1]+i[1]-a[1])}}function K5(n,e,t){return n.leftt.right}function H5(n,e,t){return n.topt.bottom}function DQ(n,e,t){return n.left>t.right||n.left+e.widtht.bottom||n.top+e.height=t.right||i.top>=t.bottom}function NG(n,e,t){var i=t.target||e,a=XG(i),l=!jQ(i,t.overflow&&t.overflow.alwaysByViewport);return ox(n,a,t,l)}NG.__getOffsetParent=U2;NG.__getVisibleRectForElement=GG;function UQ(n,e,t){var i,a,l=Yn.getDocument(n),o=l.defaultView||l.parentWindow,r=Yn.getWindowScrollLeft(o),f=Yn.getWindowScrollTop(o),v=Yn.viewportWidth(o),b=Yn.viewportHeight(o);"pageX"in e?i=e.pageX:i=r+e.clientX,"pageY"in e?a=e.pageY:a=f+e.clientY;var Z={left:i,top:a,width:0,height:0},p=i>=0&&i<=r+v&&a>=0&&a<=f+b,y=[t.points[0],"cc"];return ox(n,Z,z5(z5({},t),{},{points:y}),p)}function wn(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=n;if(Array.isArray(n)&&(a=Ri(n)[0]),!a)return null;var l=Vl(a,e,i);return l.props=t?P(P({},l.props),e):l.props,Ci(Yt(l.props.class)!=="object","class must be string"),l}function EQ(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return n.map(function(i){return wn(i,e,t)})}const MG=function(n){if(!n)return!1;if(n.offsetParent)return!0;if(n.getBBox){var e=n.getBBox();if(e.width||e.height)return!0}if(n.getBoundingClientRect){var t=n.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function KQ(n,e){return n===e?!0:!n||!e?!1:"pageX"in e&&"pageY"in e?n.pageX===e.pageX&&n.pageY===e.pageY:"clientX"in e&&"clientY"in e?n.clientX===e.clientX&&n.clientY===e.clientY:!1}function HQ(n,e){n!==document.activeElement&&ic(e,n)&&typeof n.focus=="function"&&n.focus()}function B5(n,e){var t=null,i=null;function a(o){var r=ft(o,1),f=r[0].target;if(document.documentElement.contains(f)){var v=f.getBoundingClientRect(),b=v.width,Z=v.height,p=Math.floor(b),y=Math.floor(Z);(t!==p||i!==y)&&Promise.resolve().then(function(){e({width:p,height:y})}),t=p,i=y}}var l=new OW(a);return n&&l.observe(n),function(){l.disconnect()}}const PQ=function(n,e){var t=!1,i=null;function a(){clearTimeout(i)}function l(o){if(!t||o===!0){if(n()===!1)return;t=!0,a(),i=setTimeout(function(){t=!1},e.value)}else a(),i=setTimeout(function(){t=!1,l()},e.value)}return[l,function(){t=!1,a()}]};function QQ(){this.__data__=[],this.size=0}function IG(n,e){return n===e||n!==n&&e!==e}function O0(n,e){for(var t=n.length;t--;)if(IG(n[t][0],e))return t;return-1}var BQ=Array.prototype,AQ=BQ.splice;function _Q(n){var e=this.__data__,t=O0(e,n);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():AQ.call(e,t,1),--this.size,!0}function $Q(n){var e=this.__data__,t=O0(e,n);return t<0?void 0:e[t][1]}function qQ(n){return O0(this.__data__,n)>-1}function e7(n,e){var t=this.__data__,i=O0(t,n);return i<0?(++this.size,t.push([n,e])):t[i][1]=e,this}function zo(n){var e=-1,t=n==null?0:n.length;for(this.clear();++er))return!1;var v=l.get(n),b=l.get(e);if(v&&b)return v==e&&b==n;var Z=-1,p=!0,y=t&Q7?new Lu:void 0;for(l.set(n,e),l.set(e,n);++Z-1&&n%1==0&&n-1&&n%1==0&&n<=wB}var gB="[object Arguments]",VB="[object Array]",LB="[object Boolean]",RB="[object Date]",TB="[object Error]",xB="[object Function]",CB="[object Map]",SB="[object Number]",zB="[object Object]",kB="[object RegExp]",FB="[object Set]",JB="[object String]",DB="[object WeakMap]",OB="[object ArrayBuffer]",jB="[object DataView]",UB="[object Float32Array]",EB="[object Float64Array]",KB="[object Int8Array]",HB="[object Int16Array]",PB="[object Int32Array]",QB="[object Uint8Array]",BB="[object Uint8ClampedArray]",AB="[object Uint16Array]",_B="[object Uint32Array]",Ni={};Ni[UB]=Ni[EB]=Ni[KB]=Ni[HB]=Ni[PB]=Ni[QB]=Ni[BB]=Ni[AB]=Ni[_B]=!0;Ni[gB]=Ni[VB]=Ni[OB]=Ni[LB]=Ni[jB]=Ni[RB]=Ni[TB]=Ni[xB]=Ni[CB]=Ni[SB]=Ni[zB]=Ni[kB]=Ni[FB]=Ni[JB]=Ni[DB]=!1;function $B(n){return Nr(n)&&RG(n.length)&&!!Ni[Is(n)]}function U0(n){return function(e){return n(e)}}var bx=typeof Fa=="object"&&Fa&&!Fa.nodeType&&Fa,Bd=bx&&typeof Ja=="object"&&Ja&&!Ja.nodeType&&Ja,qB=Bd&&Bd.exports===bx,tZ=qB&&ER.process,eA=function(){try{var n=Bd&&Bd.require&&Bd.require("util").types;return n||tZ&&tZ.binding&&tZ.binding("util")}catch{}}();const Ru=eA;var nY=Ru&&Ru.isTypedArray,tA=nY?U0(nY):$B;const mx=tA;var nA=Object.prototype,iA=nA.hasOwnProperty;function px(n,e){var t=or(n),i=!t&&VG(n),a=!t&&!i&&Sm(n),l=!t&&!i&&!a&&mx(n),o=t||i||a||l,r=o?pB(n.length,String):[],f=r.length;for(var v in n)(e||iA.call(n,v))&&!(o&&(v=="length"||a&&(v=="offset"||v=="parent")||l&&(v=="buffer"||v=="byteLength"||v=="byteOffset")||LG(v,f)))&&r.push(v);return r}var lA=Object.prototype;function TG(n){var e=n&&n.constructor,t=typeof e=="function"&&e.prototype||lA;return n===t}var aA=HR(Object.keys,Object);const rA=aA;var oA=Object.prototype,sA=oA.hasOwnProperty;function cA(n){if(!TG(n))return rA(n);var e=[];for(var t in Object(n))sA.call(n,t)&&t!="constructor"&&e.push(t);return e}function kh(n){return n!=null&&RG(n.length)&&!sx(n)}function Hu(n){return kh(n)?px(n):cA(n)}function E2(n){return ux(n,Hu,gG)}var uA=1,dA=Object.prototype,hA=dA.hasOwnProperty;function fA(n,e,t,i,a,l){var o=t&uA,r=E2(n),f=r.length,v=E2(e),b=v.length;if(f!=b&&!o)return!1;for(var Z=f;Z--;){var p=r[Z];if(!(o?p in e:hA.call(e,p)))return!1}var y=l.get(n),X=l.get(e);if(y&&X)return y==e&&X==n;var m=!0;l.set(n,e),l.set(e,n);for(var N=o;++Z1&&(H=D("div",{class:"".concat(g,"-content")},[H]));var k=_e(g,a.class,f.value),F=X.value||!e.visible,O=F?Ys(M.value.name,M.value):{};return D(aa,P(P({ref:r},O),{},{onBeforeEnter:I}),{default:function(){return!S||e.visible?vl(D(gA,{target:h(),key:"popup",ref:o,monitorWindowResize:!0,disabled:w.value,align:R,onAlign:W},{default:function(){return D("div",P(P({class:k,onMouseenter:L,onMouseleave:V,onMousedown:FI(J,["capture"])},ce({},Ui?"onTouchstartPassive":"onTouchstart",FI(T,["capture"]))),{},{style:K}),[H])}}),[[gr,X.value]]):null}})}}}),LA=He({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:fQ,setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne(!1),r=Ne(!1),f=Ne();return rt([function(){return e.visible},function(){return e.mobile}],function(){o.value=e.visible,e.visible&&e.mobile&&(r.value=!0)},{immediate:!0,flush:"post"}),l({forceAlign:function(){var b;(b=f.value)===null||b===void 0||b.forceAlign()},getElement:function(){var b;return(b=f.value)===null||b===void 0?void 0:b.getElement()}}),function(){var v=P(P(P({},e),i),{},{visible:o.value}),b=r.value?D(bQ,P(P({},v),{},{mobile:e.mobile,ref:f}),{default:a.default}):D(VA,P(P({},v),{},{ref:f}),{default:a.default});return D("div",null,[D(qT,v,null),b])}}});function RA(n,e,t){return t?n[0]===e[0]:n[0]===e[0]&&n[1]===e[1]}function fY(n,e,t){var i=n[e]||{};return P(P({},i),t)}function TA(n,e,t,i){for(var a=t.points,l=Object.keys(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,i=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(QR(this),P(P({},this.$data),i));if(a===null)return;i=P(P({},i),a||{})}Xn(this.$data,i),this._.isMounted&&this.$forceUpdate(),cn(function(){t&&t()})},__emit:function(){var e=[].slice.call(arguments,0),t=e[0];t="on".concat(t[0].toUpperCase()).concat(t.substring(1));var i=this.$props[t]||this.$attrs[t];if(e.length&&i)if(Array.isArray(i))for(var a=0,l=i.length;a1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};hn(vx,{inTriggerContext:t.inTriggerContext,shouldRender:de(function(){var i=e||{},a=i.sPopupVisible,l=i.popupRef,o=i.forceRender,r=i.autoDestroy,f=!1;return(a||l||o)&&(f=!0),!a&&r&&(f=!1),f})})},CA=function(){xG({},{inTriggerContext:!1});var e=un(vx,{shouldRender:de(function(){return!1}),inTriggerContext:!1});return{shouldRender:de(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const Q2=He({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:We.func.isRequired,didUpdate:Function},setup:function(e,t){var i=t.slots,a=!0,l,o=CA(),r=o.shouldRender;T0(function(){a=!1,r.value&&(l=e.getContainer())});var f=rt(r,function(){r.value&&!l&&(l=e.getContainer()),l&&f()});return Dl(function(){cn(function(){if(r.value){var v;(v=e.didUpdate)===null||v===void 0||v.call(e,e)}})}),fn(function(){l&&l.parentNode&&l.parentNode.removeChild(l)}),function(){if(!r.value)return null;if(a){var v;return(v=i.default)===null||v===void 0?void 0:v.call(i)}return l?D(kW,{to:l},i):null}}});function bY(){}function SA(){return""}function zA(n){return n?n.ownerDocument:window.document}var kA=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"];const Pu=He({compatConfig:{MODE:3},name:"Trigger",mixins:[Lc],inheritAttrs:!1,props:{action:We.oneOfType([We.string,We.arrayOf(We.string)]).def([]),showAction:We.any.def([]),hideAction:We.any.def([]),getPopupClassNameFromAlign:We.any.def(SA),onPopupVisibleChange:Function,afterPopupVisibleChange:We.func.def(bY),popup:We.any,popupStyle:{type:Object,default:void 0},prefixCls:We.string.def("rc-trigger-popup"),popupClassName:We.string.def(""),popupPlacement:String,builtinPlacements:We.object,popupTransitionName:String,popupAnimation:We.any,mouseEnterDelay:We.number.def(0),mouseLeaveDelay:We.number.def(.1),zIndex:Number,focusDelay:We.number.def(0),blurDelay:We.number.def(.15),getPopupContainer:Function,getDocument:We.func.def(zA),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:We.object.def(function(){return{}}),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function,tryPopPortal:Boolean},setup:function(e){var t=de(function(){var f=e.popupPlacement,v=e.popupAlign,b=e.builtinPlacements;return f&&b?fY(b,f,v):v}),i=xA(e.tryPopPortal),a=i.setPortal,l=i.popPortal,o=Ne(null),r=function(v){o.value=v};return{popPortal:l,setPortal:a,vcTriggerContext:un("vcTriggerContext",{}),popupRef:o,setPopupRef:r,triggerRef:Ne(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data:function(){var e=this,t,i=this.$props,a;return this.popupVisible!==void 0?a=!!i.popupVisible:a=!!i.defaultPopupVisible,kA.forEach(function(l){e["fire".concat(l)]=function(o){e.fireEvents(l,o)}}),(t=this.setPortal)===null||t===void 0||t.call(this,D(Q2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent})),{prevPopupVisible:a,sPopupVisible:a,point:null}},watch:{popupVisible:function(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created:function(){hn("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown}),xG(this)},deactivated:function(){this.setPopupVisible(!1)},mounted:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeUnmount:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),At.cancel(this.attachId)},methods:{updatedCal:function(){var e=this.$props,t=this.$data;if(t.sPopupVisible){var i;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(i=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=hi(i,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(i=i||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=hi(i,"touchstart",this.onDocumentClick,Ui?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(i=i||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=hi(i,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=hi(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var t=this.$props.mouseEnterDelay;this.fireEvents("onMouseenter",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove:function(e){this.fireEvents("onMousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("onMouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){var t;e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&ic((t=this.popupRef)===null||t===void 0?void 0:t.getElement(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("onFocus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("onMousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("onTouchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){ic(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu:function(e){e.preventDefault(),this.fireEvents("onContextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("onClick",e),this.focusTime){var t;if(this.preClickTime&&this.preTouchTime?t=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?t=this.preClickTime:this.preTouchTime&&(t=this.preTouchTime),Math.abs(t-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var i=!this.$data.sPopupVisible;(this.isClickToHide()&&!i||i&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,t=this.vcTriggerContext,i=t===void 0?{}:t;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),i.onPopupMouseDown&&i.onPopupMouseDown.apply(i,arguments)},onDocumentClick:function(e){if(!(this.$props.mask&&!this.$props.maskClosable)){var t=e.target,i=this.getRootDomNode(),a=this.getPopupDomNode();(!ic(i,t)||this.isContextMenuOnly())&&!ic(a,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)}},getPopupDomNode:function(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode:function(){var e=this.$props.getTriggerDOMNode;if(e){var t=ds(this.triggerRef);return ds(e(t))}try{var i=ds(this.triggerRef);if(i)return i}catch{}return ds(this)},handleGetPopupClassFromAlign:function(e){var t=[],i=this.$props,a=i.popupPlacement,l=i.builtinPlacements,o=i.prefixCls,r=i.alignPoint,f=i.getPopupClassNameFromAlign;return a&&l&&t.push(TA(l,o,e,r)),f&&t.push(f(e)),t.join(" ")},getPopupAlign:function(){var e=this.$props,t=e.popupPlacement,i=e.popupAlign,a=e.builtinPlacements;return t&&a?fY(a,t,i):i},getComponent:function(){var e=this,t={};this.isMouseEnterToShow()&&(t.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(t.onMouseleave=this.onPopupMouseleave),t.onMousedown=this.onPopupMouseDown,t[Ui?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;var i=this.handleGetPopupClassFromAlign,a=this.getRootDomNode,l=this.getContainer,o=this.$attrs,r=this.$props,f=r.prefixCls,v=r.destroyPopupOnHide,b=r.popupClassName,Z=r.popupAnimation,p=r.popupTransitionName,y=r.popupStyle,X=r.mask,m=r.maskAnimation,N=r.maskTransitionName,G=r.zIndex,d=r.stretch,u=r.alignPoint,s=r.mobile,h=r.forceRender,c=this.$data,W=c.sPopupVisible,M=c.point,I=P(P({prefixCls:f,destroyPopupOnHide:v,visible:W,point:u?M:null,align:this.align,animation:Z,getClassNameFromAlign:i,stretch:d,getRootDomNode:a,mask:X,zIndex:G,transitionName:p,maskAnimation:m,maskTransitionName:N,getContainer:l,class:b,style:y,onAlign:o.onPopupAlign||bY},t),{},{ref:this.setPopupRef,mobile:s,forceRender:h});return D(LA,I,{default:this.$slots.popup||function(){return HW(e,"popup")}})},attachParent:function(e){var t=this;At.cancel(this.attachId);var i=this.$props,a=i.getPopupContainer,l=i.getDocument,o=this.getRootDomNode(),r;a?(o||a.length===0)&&(r=a(o)):r=l(this.getRootDomNode()).body,r?r.appendChild(e):this.attachId=At(function(){t.attachParent(e)})},getContainer:function(){var e=this.$props,t=e.getDocument,i=t(this.getRootDomNode()).createElement("div");return i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="100%",this.attachParent(i),i},setPopupVisible:function(e,t){var i=this.alignPoint,a=this.sPopupVisible,l=this.onPopupVisibleChange;this.clearDelayTimer(),a!==e&&(Mo(this,"popupVisible")||this.setState({sPopupVisible:e,prevPopupVisible:a}),l&&l(e)),i&&t&&e&&this.setPoint(t)},setPoint:function(e){var t=this.$props.alignPoint;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate:function(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible:function(e,t,i){var a=this,l=t*1e3;if(this.clearDelayTimer(),l){var o=i?{pageX:i.pageX,pageY:i.pageY}:null;this.delayTimer=dQ(function(){a.setPopupVisible(e,o),a.clearDelayTimer()},l)}else this.setPopupVisible(e,i)},clearDelayTimer:function(){this.delayTimer&&(uQ(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var t=function(){},i=EI(this);return this.childOriginEvents[e]&&i[e]?this["fire".concat(e)]:(t=this.childOriginEvents[e]||i[e]||t,t)},isClickToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isContextMenuOnly:function(){var e=this.$props.action;return e==="contextmenu"||e.length===1&&e[0]==="contextmenu"},isContextmenuToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("contextmenu")!==-1||i.indexOf("contextmenu")!==-1},isClickToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isMouseEnterToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("hover")!==-1||i.indexOf("mouseenter")!==-1},isMouseLeaveToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("hover")!==-1||i.indexOf("mouseleave")!==-1},isFocusToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("focus")!==-1||i.indexOf("focus")!==-1},isBlurToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("focus")!==-1||i.indexOf("blur")!==-1},forcePopupAlign:function(){if(this.$data.sPopupVisible){var e;(e=this.popupRef)===null||e===void 0||e.forceAlign()}},fireEvents:function(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);var i=this.$props[e]||this.$attrs[e];i&&i(t)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,t=this.$attrs,i=Ri(Th(this)),a=this.$props.alignPoint,l=i[0];this.childOriginEvents=EI(l);var o={key:"trigger"};this.isContextmenuToShow()?o.onContextmenu=this.onContextmenu:o.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(o.onClick=this.onClick,o.onMousedown=this.onMousedown,o[Ui?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(o.onClick=this.createTwoChains("onClick"),o.onMousedown=this.createTwoChains("onMousedown"),o[Ui?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(o.onMouseenter=this.onMouseenter,a&&(o.onMousemove=this.onMouseMove)):o.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?o.onMouseleave=this.onMouseleave:o.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(o.onFocus=this.onFocus,o.onBlur=this.onBlur):(o.onFocus=this.createTwoChains("onFocus"),o.onBlur=function(b){b&&(!b.relatedTarget||!ic(b.target,b.relatedTarget))&&e.createTwoChains("onBlur")(b)});var r=_e(l&&l.props&&l.props.class,t.class);r&&(o.class=r);var f=wn(l,P(P({},o),{},{ref:"triggerRef"}),!0,!0);if(this.popPortal)return f;var v=D(Q2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent});return D(ln,null,[v,f])}});var FA=["empty"],JA=function(e){var t=e===!0?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},DA=He({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:We.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:We.oneOfType([Number,Boolean]).def(!0),popupElement:We.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=de(function(){var f=e.dropdownMatchSelectWidth;return JA(f)}),r=Ne();return l({getPopupElement:function(){return r.value}}),function(){var f=P(P({},e),a),v=f.empty,b=v===void 0?!1:v,Z=jt(f,FA),p=Z.visible,y=Z.dropdownAlign,X=Z.prefixCls,m=Z.popupElement,N=Z.dropdownClassName,G=Z.dropdownStyle,d=Z.direction,u=d===void 0?"ltr":d,s=Z.placement,h=Z.dropdownMatchSelectWidth,c=Z.containerWidth,W=Z.dropdownRender,M=Z.animation,I=Z.transitionName,w=Z.getPopupContainer,C=Z.getTriggerDOMNode,x=Z.onPopupVisibleChange,R=Z.onPopupMouseEnter,g="".concat(X,"-dropdown"),S=m;W&&(S=W({menuNode:m,props:e}));var L=M?"".concat(g,"-").concat(M):I,V=P({minWidth:"".concat(c,"px")},G);return typeof h=="number"?V.width="".concat(h,"px"):h&&(V.width="".concat(c,"px")),D(Pu,P(P({},e),{},{showAction:x?["click"]:[],hideAction:x?["click"]:[],popupPlacement:s||(u==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:o.value,prefixCls:g,popupTransitionName:L,popupAlign:y,popupVisible:p,getPopupContainer:w,popupClassName:_e(N,ce({},"".concat(g,"-empty"),b)),popupStyle:V,getTriggerDOMNode:C,onPopupVisibleChange:x}),{default:i.default,popup:function(){return D("div",{ref:r,onMouseenter:R},[S])}})}}});const OA=DA;var Wn={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=Wn.F1&&t<=Wn.F12)return!1;switch(t){case Wn.ALT:case Wn.CAPS_LOCK:case Wn.CONTEXT_MENU:case Wn.CTRL:case Wn.DOWN:case Wn.END:case Wn.ESC:case Wn.HOME:case Wn.INSERT:case Wn.LEFT:case Wn.MAC_FF_META:case Wn.META:case Wn.NUMLOCK:case Wn.NUM_CENTER:case Wn.PAGE_DOWN:case Wn.PAGE_UP:case Wn.PAUSE:case Wn.PRINT_SCREEN:case Wn.RIGHT:case Wn.SHIFT:case Wn.UP:case Wn.WIN_KEY:case Wn.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=Wn.ZERO&&e<=Wn.NINE||e>=Wn.NUM_ZERO&&e<=Wn.NUM_MULTIPLY||e>=Wn.A&&e<=Wn.Z||window.navigator.userAgent.indexOf("WebKit")!==-1&&e===0)return!0;switch(e){case Wn.SPACE:case Wn.QUESTION_MARK:case Wn.NUM_PLUS:case Wn.NUM_MINUS:case Wn.NUM_PERIOD:case Wn.NUM_DIVISION:case Wn.SEMICOLON:case Wn.DASH:case Wn.EQUALS:case Wn.COMMA:case Wn.PERIOD:case Wn.SLASH:case Wn.APOSTROPHE:case Wn.SINGLE_QUOTE:case Wn.OPEN_SQUARE_BRACKET:case Wn.BACKSLASH:case Wn.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const bt=Wn;var H0=function(e,t){var i,a=t.slots,l=e.class,o=e.customizeIcon,r=e.customizeIconProps,f=e.onMousedown,v=e.onClick,b;return typeof o=="function"?b=o(r):b=o,D("span",{class:l,onMousedown:function(p){p.preventDefault(),f&&f(p)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:v,"aria-hidden":!0},[b!==void 0?b:D("span",{class:l.split(/\s+/).map(function(Z){return"".concat(Z,"-icon")})},[(i=a.default)===null||i===void 0?void 0:i.call(a)])])};H0.inheritAttrs=!1;H0.displayName="TransBtn";H0.props={class:String,customizeIcon:We.any,customizeIconProps:We.any,onMousedown:Function,onClick:Function};const zm=H0;function jA(n){n.target.composing=!0}function mY(n){n.target.composing&&(n.target.composing=!1,UA(n.target,"input"))}function UA(n,e){var t=document.createEvent("HTMLEvents");t.initEvent(e,!0,!0),n.dispatchEvent(t)}function nZ(n,e,t,i){n.addEventListener(e,t,i)}var EA={created:function(e,t){(!t.modifiers||!t.modifiers.lazy)&&(nZ(e,"compositionstart",jA),nZ(e,"compositionend",mY),nZ(e,"change",mY))}};const Qu=EA;var KA={inputRef:We.any,prefixCls:String,id:String,inputElement:We.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),attrs:We.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},HA=He({compatConfig:{MODE:3},name:"Input",inheritAttrs:!1,props:KA,setup:function(e){var t=null,i=un("VCSelectContainerEvent");return function(){var a,l,o=e.prefixCls,r=e.id,f=e.inputElement,v=e.disabled,b=e.tabindex,Z=e.autofocus,p=e.autocomplete,y=e.editable,X=e.activeDescendantId,m=e.value,N=e.onKeydown,G=e.onMousedown,d=e.onChange,u=e.onPaste,s=e.onCompositionstart,h=e.onCompositionend,c=e.onFocus,W=e.onBlur,M=e.open,I=e.inputRef,w=e.attrs,C=f||vl(D("input",null,null),[[Qu]]),x=C.props||{},R=x.onKeydown,g=x.onInput,S=x.onFocus,L=x.onBlur,V=x.onMousedown,Y=x.onCompositionstart,T=x.onCompositionend,J=x.style;return C=wn(C,Xn(P(P(P({type:"search"},x),{},{id:r,ref:I,disabled:v,tabindex:b,autocomplete:p||"off",autofocus:Z,class:_e("".concat(o,"-selection-search-input"),(a=C)===null||a===void 0||(l=a.props)===null||l===void 0?void 0:l.class),role:"combobox","aria-expanded":M,"aria-haspopup":"listbox","aria-owns":"".concat(r,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(r,"_list"),"aria-activedescendant":X},w),{},{value:y?m:"",readonly:!y,unselectable:y?null:"on",style:P(P({},J),{},{opacity:y?null:0}),onKeydown:function(K){N(K),R&&R(K)},onMousedown:function(K){G(K),V&&V(K)},onInput:function(K){d(K),g&&g(K)},onCompositionstart:function(K){s(K),Y&&Y(K)},onCompositionend:function(K){h(K),T&&T(K)},onPaste:u,onFocus:function(){clearTimeout(t),S&&S(arguments.length<=0?void 0:arguments[0]),c&&c(arguments.length<=0?void 0:arguments[0]),i==null||i.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var K=arguments.length,H=new Array(K),k=0;k"u")return 0;var t=e?"scrollTop":"scrollLeft",i=0;if(O2(n)?i=n[e?"pageYOffset":"pageXOffset"]:n instanceof Document?i=n.documentElement[t]:n&&(i=n[t]),n&&!O2(n)&&typeof i!="number"){var a;i=(a=(n.ownerDocument||n).documentElement)===null||a===void 0?void 0:a[t]}return i}function tQ(n,e,t,i){var a=t-e;return n/=i/2,n<1?a/2*n*n*n+e:a/2*((n-=2)*n*n+2)+e}function ZG(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.getContainer,i=t===void 0?function(){return window}:t,a=e.callback,l=e.duration,o=l===void 0?450:l,r=i(),f=yG(r,!0),v=Date.now(),b=function Z(){var p=Date.now(),y=p-v,X=tQ(y>o?o:y,f,n,o);O2(r)?r.scrollTo(window.pageXOffset,X):r instanceof HTMLDocument||r.constructor.name==="HTMLDocument"?r.documentElement.scrollTop=X:r.scrollTop=X,y0&&arguments[0]!==void 0?arguments[0]:0,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,M=[],I=m.value();if(y.links.forEach(function(C){var x=x5.exec(C.toString());if(x){var R=document.getElementById(x[1]);if(R){var g=T5(R,I);gC.top?x:C});return w.link}return""},G=function(c){var W=e.getCurrentAnchor;X.value!==c&&(X.value=typeof W=="function"?W():c,i("change",c))},d=function(c){var W=e.offsetTop,M=e.targetOffset;G(c);var I=m.value(),w=yG(I,!0),C=x5.exec(c);if(C){var x=document.getElementById(C[1]);if(x){var R=T5(x,I),g=w+R;g-=M!==void 0?M:W||0,y.animating=!0,ZG(g,{callback:function(){y.animating=!1},getContainer:m.value})}}};o({scrollTo:d});var u=function(){if(!y.animating){var c=e.offsetTop,W=e.bounds,M=e.targetOffset,I=N(M!==void 0?M:c||0,W);G(I)}},s=function(){var c=p.value.getElementsByClassName("".concat(f.value,"-link-title-active"))[0];c&&(Z.value.style.top="".concat(c.offsetTop+c.clientHeight/2-4.5,"px"))};return lQ({registerLink:function(c){y.links.includes(c)||y.links.push(c)},unregisterLink:function(c){var W=y.links.indexOf(c);W!==-1&&y.links.splice(W,1)},activeLink:X,scrollTo:d,handleClick:function(c,W){i("click",c,W)}}),Kt(function(){cn(function(){var h=m.value();y.scrollContainer=h,y.scrollEvent=hi(y.scrollContainer,"scroll",u),u()})}),fn(function(){y.scrollEvent&&y.scrollEvent.remove()}),Dl(function(){if(y.scrollEvent){var h=m.value();y.scrollContainer!==h&&(y.scrollContainer=h,y.scrollEvent.remove(),y.scrollEvent=hi(y.scrollContainer,"scroll",u),u())}s()}),function(){var h,c=e.offsetTop,W=e.affix,M=e.showInkInFixed,I=f.value,w=_e("".concat(I,"-ink-ball"),{visible:X.value}),C=_e(e.wrapperClass,"".concat(I,"-wrapper"),ce({},"".concat(I,"-rtl"),b.value==="rtl")),x=_e(I,ce({},"".concat(I,"-fixed"),!W&&!M)),R=P({maxHeight:c?"calc(100vh - ".concat(c,"px)"):"100vh"},e.wrapperStyle),g=D("div",{class:C,style:R,ref:p},[D("div",{class:x},[D("div",{class:"".concat(I,"-ink")},[D("span",{class:w,ref:Z},null)]),(h=l.default)===null||h===void 0?void 0:h.call(l)])]);return W?D(AT,P(P({},a),{},{offsetTop:c,target:m.value}),{default:function(){return[g]}}):g}}});var oQ=function(){return{prefixCls:String,href:String,title:We.any,target:String}};const $T=He({compatConfig:{MODE:3},name:"AAnchorLink",props:pn(oQ(),{href:"#"}),slots:["title"],setup:function(e,t){var i=t.slots,a=null,l=iQ(),o=l.handleClick,r=l.scrollTo,f=l.unregisterLink,v=l.registerLink,b=l.activeLink,Z=Nt("anchor",e),p=Z.prefixCls,y=function(m){var N=e.href;o(m,{title:a,href:N}),r(N)};return rt(function(){return e.href},function(X,m){cn(function(){f(m),v(X)})}),Kt(function(){v(e.href)}),fn(function(){f(e.href)}),function(){var X,m=e.href,N=e.target,G=p.value,d=ui(i,e,"title");a=d;var u=b.value===m,s=_e("".concat(G,"-link"),ce({},"".concat(G,"-link-active"),u)),h=_e("".concat(G,"-link-title"),ce({},"".concat(G,"-link-title-active"),u));return D("div",{class:s},[D("a",{class:h,href:m,title:typeof d=="string"?d:"",target:N,onClick:y},[d]),(X=i.default)===null||X===void 0?void 0:X.call(i)])}}});nc.Link=$T;nc.install=function(n){return n.component(nc.name,nc),n.component(nc.Link.name,nc.Link),n};function vG(n){return ER(n)||HR(n)||J0(n)||KR()}function C5(n,e){var t=n.key,i;return"value"in n&&(i=n.value),t??(i!==void 0?i:"rc-index-key-".concat(e))}function qT(n,e){var t=n||{},i=t.label,a=t.value,l=t.options;return{label:i||(e?"children":"label"),value:a||"value",options:l||"options"}}function sQ(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.fieldNames,i=e.childrenAsData,a=[],l=qT(t,!1),o=l.label,r=l.value,f=l.options;function v(b,Z){b.forEach(function(p){var y=p[o];if(Z||!(f in p)){var X=p[r];a.push({key:C5(p,a.length),groupOption:Z,data:p,label:y,value:X})}else{var m=y;m===void 0&&i&&(m=p.label),a.push({key:C5(p,a.length),group:!0,data:p,label:m}),v(p[f],!0)}})}return v(n,!1),a}function j2(n){var e=P({},n);return"props"in e||Object.defineProperty(e,"props",{get:function(){return e}}),e}function cQ(n,e){if(!e||!e.length)return null;var t=!1;function i(l,o){var r=vG(o),f=r[0],v=r.slice(1);if(!f)return[l];var b=l.split(f);return t=t||b.length>1,b.reduce(function(Z,p){return[].concat(yt(Z),yt(i(p,v)))},[]).filter(function(Z){return Z})}var a=i(n,e);return t?a:null}function ic(n,e){return n?n.contains(e):!1}var ex=["moz","ms","webkit"];function uQ(){var n=0;return function(e){var t=new Date().getTime(),i=Math.max(0,16-(t-n)),a=window.setTimeout(function(){e(t+i)},i);return n=t+i,a}}function dQ(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var n=ex.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return n?window["".concat(n,"RequestAnimationFrame")]:uQ()}function hQ(n){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(n);var e=ex.filter(function(t){return"".concat(t,"CancelAnimationFrame")in window||"".concat(t,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,n):clearTimeout(n)}var S5=dQ(),fQ=function(e){return hQ(e.id)},bQ=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=Date.now();function a(){Date.now()-i>=t?e.call():l.id=S5(a)}var l={id:S5(a)};return l},WG={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},mQ=P(P({},WG),{},{mobile:{type:Object}}),pQ=P(P({},WG),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function tx(n){var e=n.prefixCls,t=n.animation,i=n.transitionName;return t?{name:"".concat(e,"-").concat(t)}:i?{name:i}:{}}function nx(n){var e=n.prefixCls,t=n.visible,i=n.zIndex,a=n.mask,l=n.maskAnimation,o=n.maskTransitionName;if(!a)return null;var r={};return(o||l)&&(r=tx({prefixCls:e,transitionName:o,animation:l})),D(aa,P({appear:!0},r),{default:function(){return[cl(D("div",{style:{zIndex:i},class:"".concat(e,"-mask")},null),[[hR("if"),t]])]}})}nx.displayName="Mask";const yQ=He({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:mQ,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var i=t.expose,a=t.slots,l=Ne();return i({forceAlign:function(){},getElement:function(){return l.value}}),function(){var o,r=e.zIndex,f=e.visible,v=e.prefixCls,b=e.mobile;b=b===void 0?{}:b;var Z=b.popupClassName,p=b.popupStyle,y=b.popupMotion,X=y===void 0?{}:y,m=b.popupRender,N=P({zIndex:r},p),G=ti((o=a.default)===null||o===void 0?void 0:o.call(a));G.length>1&&(G=D("div",{class:"".concat(v,"-content")},[G])),m&&(G=m(G));var d=_e(v,Z);return D(aa,P({ref:l},X),{default:function(){return[f?D("div",{class:d,style:N},[G]):null]}})}}});var z5=["measure","align",null,"motion"];const ZQ=function(n,e){var t=Ne(null),i=Ne(),a=Ne(!1);function l(f){a.value||(t.value=f)}function o(){At.cancel(i.value)}function r(f){o(),i.value=At(function(){var v=t.value;switch(t.value){case"align":v="motion";break;case"motion":v="stable";break}l(v),f==null||f()})}return rt(n,function(){l("measure")},{immediate:!0,flush:"post"}),Kt(function(){rt(t,function(){switch(t.value){case"measure":e();break}t.value&&(i.value=At(wc(Xa.mark(function f(){var v,b;return Xa.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:v=z5.indexOf(t.value),b=z5[v+1],b&&v!==-1&&l(b);case 3:case"end":return p.stop()}},f)}))))},{immediate:!0,flush:"post"})}),fn(function(){a.value=!0,o()}),[t,r]},vQ=function(n){var e=Ne({width:0,height:0});function t(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var i=de(function(){var a={};if(n.value){var l=e.value,o=l.width,r=l.height;n.value.indexOf("height")!==-1&&r?a.height="".concat(r,"px"):n.value.indexOf("minHeight")!==-1&&r&&(a.minHeight="".concat(r,"px")),n.value.indexOf("width")!==-1&&o?a.width="".concat(o,"px"):n.value.indexOf("minWidth")!==-1&&o&&(a.minWidth="".concat(o,"px"))}return a});return[i,t]};function k5(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function F5(n){for(var e=1;e=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}function jQ(n,e,t,i){var a=Yn.clone(n),l={width:e.width,height:e.height};return i.adjustX&&a.left=t.left&&a.left+l.width>t.right&&(l.width-=a.left+l.width-t.right),i.adjustX&&a.left+l.width>t.right&&(a.left=Math.max(t.right-l.width,t.left)),i.adjustY&&a.top=t.top&&a.top+l.height>t.bottom&&(l.height-=a.top+l.height-t.bottom),i.adjustY&&a.top+l.height>t.bottom&&(a.top=Math.max(t.bottom-l.height,t.top)),Yn.mix(a,l)}function MG(n){var e,t,i;if(!Yn.isWindow(n)&&n.nodeType!==9)e=Yn.offset(n),t=Yn.outerWidth(n),i=Yn.outerHeight(n);else{var a=Yn.getWindow(n);e={left:Yn.getWindowScrollLeft(a),top:Yn.getWindowScrollTop(a)},t=Yn.viewportWidth(a),i=Yn.viewportHeight(a)}return e.width=t,e.height=i,e}function H5(n,e){var t=e.charAt(0),i=e.charAt(1),a=n.width,l=n.height,o=n.left,r=n.top;return t==="c"?r+=l/2:t==="b"&&(r+=l),i==="c"?o+=a/2:i==="r"&&(o+=a),{left:o,top:r}}function eb(n,e,t,i,a){var l=H5(e,t[1]),o=H5(n,t[0]),r=[o.left-l.left,o.top-l.top];return{left:Math.round(n.left-r[0]+i[0]-a[0]),top:Math.round(n.top-r[1]+i[1]-a[1])}}function P5(n,e,t){return n.leftt.right}function Q5(n,e,t){return n.topt.bottom}function UQ(n,e,t){return n.left>t.right||n.left+e.widtht.bottom||n.top+e.height=t.right||i.top>=t.bottom}function IG(n,e,t){var i=t.target||e,a=MG(i),l=!KQ(i,t.overflow&&t.overflow.alwaysByViewport);return ux(n,a,t,l)}IG.__getOffsetParent=H2;IG.__getVisibleRectForElement=NG;function HQ(n,e,t){var i,a,l=Yn.getDocument(n),o=l.defaultView||l.parentWindow,r=Yn.getWindowScrollLeft(o),f=Yn.getWindowScrollTop(o),v=Yn.viewportWidth(o),b=Yn.viewportHeight(o);"pageX"in e?i=e.pageX:i=r+e.clientX,"pageY"in e?a=e.pageY:a=f+e.clientY;var Z={left:i,top:a,width:0,height:0},p=i>=0&&i<=r+v&&a>=0&&a<=f+b,y=[t.points[0],"cc"];return ux(n,Z,F5(F5({},t),{},{points:y}),p)}function wn(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=n;if(Array.isArray(n)&&(a=Ri(n)[0]),!a)return null;var l=Vl(a,e,i);return l.props=t?P(P({},l.props),e):l.props,Ci(Yt(l.props.class)!=="object","class must be string"),l}function PQ(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return n.map(function(i){return wn(i,e,t)})}const YG=function(n){if(!n)return!1;if(n.offsetParent)return!0;if(n.getBBox){var e=n.getBBox();if(e.width||e.height)return!0}if(n.getBoundingClientRect){var t=n.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function QQ(n,e){return n===e?!0:!n||!e?!1:"pageX"in e&&"pageY"in e?n.pageX===e.pageX&&n.pageY===e.pageY:"clientX"in e&&"clientY"in e?n.clientX===e.clientX&&n.clientY===e.clientY:!1}function BQ(n,e){n!==document.activeElement&&ic(e,n)&&typeof n.focus=="function"&&n.focus()}function _5(n,e){var t=null,i=null;function a(o){var r=ft(o,1),f=r[0].target;if(document.documentElement.contains(f)){var v=f.getBoundingClientRect(),b=v.width,Z=v.height,p=Math.floor(b),y=Math.floor(Z);(t!==p||i!==y)&&Promise.resolve().then(function(){e({width:p,height:y})}),t=p,i=y}}var l=new EW(a);return n&&l.observe(n),function(){l.disconnect()}}const AQ=function(n,e){var t=!1,i=null;function a(){clearTimeout(i)}function l(o){if(!t||o===!0){if(n()===!1)return;t=!0,a(),i=setTimeout(function(){t=!1},e.value)}else a(),i=setTimeout(function(){t=!1,l()},e.value)}return[l,function(){t=!1,a()}]};function _Q(){this.__data__=[],this.size=0}function wG(n,e){return n===e||n!==n&&e!==e}function E0(n,e){for(var t=n.length;t--;)if(wG(n[t][0],e))return t;return-1}var $Q=Array.prototype,qQ=$Q.splice;function e7(n){var e=this.__data__,t=E0(e,n);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():qQ.call(e,t,1),--this.size,!0}function t7(n){var e=this.__data__,t=E0(e,n);return t<0?void 0:e[t][1]}function n7(n){return E0(this.__data__,n)>-1}function i7(n,e){var t=this.__data__,i=E0(t,n);return i<0?(++this.size,t.push([n,e])):t[i][1]=e,this}function zo(n){var e=-1,t=n==null?0:n.length;for(this.clear();++er))return!1;var v=l.get(n),b=l.get(e);if(v&&b)return v==e&&b==n;var Z=-1,p=!0,y=t&_7?new Ru:void 0;for(l.set(n,e),l.set(e,n);++Z-1&&n%1==0&&n-1&&n%1==0&&n<=LB}var RB="[object Arguments]",TB="[object Array]",xB="[object Boolean]",CB="[object Date]",SB="[object Error]",zB="[object Function]",kB="[object Map]",FB="[object Number]",JB="[object Object]",DB="[object RegExp]",OB="[object Set]",jB="[object String]",UB="[object WeakMap]",EB="[object ArrayBuffer]",KB="[object DataView]",HB="[object Float32Array]",PB="[object Float64Array]",QB="[object Int8Array]",BB="[object Int16Array]",AB="[object Int32Array]",_B="[object Uint8Array]",$B="[object Uint8ClampedArray]",qB="[object Uint16Array]",eA="[object Uint32Array]",Ni={};Ni[HB]=Ni[PB]=Ni[QB]=Ni[BB]=Ni[AB]=Ni[_B]=Ni[$B]=Ni[qB]=Ni[eA]=!0;Ni[RB]=Ni[TB]=Ni[EB]=Ni[xB]=Ni[KB]=Ni[CB]=Ni[SB]=Ni[zB]=Ni[kB]=Ni[FB]=Ni[JB]=Ni[DB]=Ni[OB]=Ni[jB]=Ni[UB]=!1;function tA(n){return Nr(n)&&xG(n.length)&&!!Ni[Is(n)]}function H0(n){return function(e){return n(e)}}var yx=typeof Fa=="object"&&Fa&&!Fa.nodeType&&Fa,Ad=yx&&typeof Ja=="object"&&Ja&&!Ja.nodeType&&Ja,nA=Ad&&Ad.exports===yx,lZ=nA&&PR.process,iA=function(){try{var n=Ad&&Ad.require&&Ad.require("util").types;return n||lZ&&lZ.binding&&lZ.binding("util")}catch{}}();const Tu=iA;var lY=Tu&&Tu.isTypedArray,lA=lY?H0(lY):tA;const Zx=lA;var aA=Object.prototype,rA=aA.hasOwnProperty;function vx(n,e){var t=or(n),i=!t&&RG(n),a=!t&&!i&&zm(n),l=!t&&!i&&!a&&Zx(n),o=t||i||a||l,r=o?vB(n.length,String):[],f=r.length;for(var v in n)(e||rA.call(n,v))&&!(o&&(v=="length"||a&&(v=="offset"||v=="parent")||l&&(v=="buffer"||v=="byteLength"||v=="byteOffset")||TG(v,f)))&&r.push(v);return r}var oA=Object.prototype;function CG(n){var e=n&&n.constructor,t=typeof e=="function"&&e.prototype||oA;return n===t}var sA=BR(Object.keys,Object);const cA=sA;var uA=Object.prototype,dA=uA.hasOwnProperty;function hA(n){if(!CG(n))return cA(n);var e=[];for(var t in Object(n))dA.call(n,t)&&t!="constructor"&&e.push(t);return e}function Fh(n){return n!=null&&xG(n.length)&&!dx(n)}function Pu(n){return Fh(n)?vx(n):hA(n)}function P2(n){return fx(n,Pu,LG)}var fA=1,bA=Object.prototype,mA=bA.hasOwnProperty;function pA(n,e,t,i,a,l){var o=t&fA,r=P2(n),f=r.length,v=P2(e),b=v.length;if(f!=b&&!o)return!1;for(var Z=f;Z--;){var p=r[Z];if(!(o?p in e:mA.call(e,p)))return!1}var y=l.get(n),X=l.get(e);if(y&&X)return y==e&&X==n;var m=!0;l.set(n,e),l.set(e,n);for(var N=o;++Z1&&(H=D("div",{class:"".concat(g,"-content")},[H]));var k=_e(g,a.class,f.value),F=X.value||!e.visible,O=F?Ys(M.value.name,M.value):{};return D(aa,P(P({ref:r},O),{},{onBeforeEnter:I}),{default:function(){return!S||e.visible?cl(D(RA,{target:h(),key:"popup",ref:o,monitorWindowResize:!0,disabled:w.value,align:R,onAlign:W},{default:function(){return D("div",P(P({class:k,onMouseenter:L,onMouseleave:V,onMousedown:DI(J,["capture"])},ce({},Ui?"onTouchstartPassive":"onTouchstart",DI(T,["capture"]))),{},{style:K}),[H])}}),[[gr,X.value]]):null}})}}}),xA=He({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:pQ,setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne(!1),r=Ne(!1),f=Ne();return rt([function(){return e.visible},function(){return e.mobile}],function(){o.value=e.visible,e.visible&&e.mobile&&(r.value=!0)},{immediate:!0,flush:"post"}),l({forceAlign:function(){var b;(b=f.value)===null||b===void 0||b.forceAlign()},getElement:function(){var b;return(b=f.value)===null||b===void 0?void 0:b.getElement()}}),function(){var v=P(P(P({},e),i),{},{visible:o.value}),b=r.value?D(yQ,P(P({},v),{},{mobile:e.mobile,ref:f}),{default:a.default}):D(TA,P(P({},v),{},{ref:f}),{default:a.default});return D("div",null,[D(nx,v,null),b])}}});function CA(n,e,t){return t?n[0]===e[0]:n[0]===e[0]&&n[1]===e[1]}function mY(n,e,t){var i=n[e]||{};return P(P({},i),t)}function SA(n,e,t,i){for(var a=t.points,l=Object.keys(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,i=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(_R(this),P(P({},this.$data),i));if(a===null)return;i=P(P({},i),a||{})}Xn(this.$data,i),this._.isMounted&&this.$forceUpdate(),cn(function(){t&&t()})},__emit:function(){var e=[].slice.call(arguments,0),t=e[0];t="on".concat(t[0].toUpperCase()).concat(t.substring(1));var i=this.$props[t]||this.$attrs[t];if(e.length&&i)if(Array.isArray(i))for(var a=0,l=i.length;a1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};hn(Xx,{inTriggerContext:t.inTriggerContext,shouldRender:de(function(){var i=e||{},a=i.sPopupVisible,l=i.popupRef,o=i.forceRender,r=i.autoDestroy,f=!1;return(a||l||o)&&(f=!0),!a&&r&&(f=!1),f})})},kA=function(){SG({},{inTriggerContext:!1});var e=un(Xx,{shouldRender:de(function(){return!1}),inTriggerContext:!1});return{shouldRender:de(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const _2=He({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:We.func.isRequired,didUpdate:Function},setup:function(e,t){var i=t.slots,a=!0,l,o=kA(),r=o.shouldRender;C0(function(){a=!1,r.value&&(l=e.getContainer())});var f=rt(r,function(){r.value&&!l&&(l=e.getContainer()),l&&f()});return Dl(function(){cn(function(){if(r.value){var v;(v=e.didUpdate)===null||v===void 0||v.call(e,e)}})}),fn(function(){l&&l.parentNode&&l.parentNode.removeChild(l)}),function(){if(!r.value)return null;if(a){var v;return(v=i.default)===null||v===void 0?void 0:v.call(i)}return l?D(DW,{to:l},i):null}}});function pY(){}function FA(){return""}function JA(n){return n?n.ownerDocument:window.document}var DA=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"];const Qu=He({compatConfig:{MODE:3},name:"Trigger",mixins:[Rc],inheritAttrs:!1,props:{action:We.oneOfType([We.string,We.arrayOf(We.string)]).def([]),showAction:We.any.def([]),hideAction:We.any.def([]),getPopupClassNameFromAlign:We.any.def(FA),onPopupVisibleChange:Function,afterPopupVisibleChange:We.func.def(pY),popup:We.any,popupStyle:{type:Object,default:void 0},prefixCls:We.string.def("rc-trigger-popup"),popupClassName:We.string.def(""),popupPlacement:String,builtinPlacements:We.object,popupTransitionName:String,popupAnimation:We.any,mouseEnterDelay:We.number.def(0),mouseLeaveDelay:We.number.def(.1),zIndex:Number,focusDelay:We.number.def(0),blurDelay:We.number.def(.15),getPopupContainer:Function,getDocument:We.func.def(JA),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:We.object.def(function(){return{}}),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function,tryPopPortal:Boolean},setup:function(e){var t=de(function(){var f=e.popupPlacement,v=e.popupAlign,b=e.builtinPlacements;return f&&b?mY(b,f,v):v}),i=zA(e.tryPopPortal),a=i.setPortal,l=i.popPortal,o=Ne(null),r=function(v){o.value=v};return{popPortal:l,setPortal:a,vcTriggerContext:un("vcTriggerContext",{}),popupRef:o,setPopupRef:r,triggerRef:Ne(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data:function(){var e=this,t,i=this.$props,a;return this.popupVisible!==void 0?a=!!i.popupVisible:a=!!i.defaultPopupVisible,DA.forEach(function(l){e["fire".concat(l)]=function(o){e.fireEvents(l,o)}}),(t=this.setPortal)===null||t===void 0||t.call(this,D(_2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent})),{prevPopupVisible:a,sPopupVisible:a,point:null}},watch:{popupVisible:function(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created:function(){hn("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown}),SG(this)},deactivated:function(){this.setPopupVisible(!1)},mounted:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeUnmount:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),At.cancel(this.attachId)},methods:{updatedCal:function(){var e=this.$props,t=this.$data;if(t.sPopupVisible){var i;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(i=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=hi(i,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(i=i||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=hi(i,"touchstart",this.onDocumentClick,Ui?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(i=i||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=hi(i,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=hi(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var t=this.$props.mouseEnterDelay;this.fireEvents("onMouseenter",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove:function(e){this.fireEvents("onMousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("onMouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){var t;e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&ic((t=this.popupRef)===null||t===void 0?void 0:t.getElement(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("onFocus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("onMousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("onTouchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){ic(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu:function(e){e.preventDefault(),this.fireEvents("onContextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("onClick",e),this.focusTime){var t;if(this.preClickTime&&this.preTouchTime?t=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?t=this.preClickTime:this.preTouchTime&&(t=this.preTouchTime),Math.abs(t-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var i=!this.$data.sPopupVisible;(this.isClickToHide()&&!i||i&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,t=this.vcTriggerContext,i=t===void 0?{}:t;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),i.onPopupMouseDown&&i.onPopupMouseDown.apply(i,arguments)},onDocumentClick:function(e){if(!(this.$props.mask&&!this.$props.maskClosable)){var t=e.target,i=this.getRootDomNode(),a=this.getPopupDomNode();(!ic(i,t)||this.isContextMenuOnly())&&!ic(a,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)}},getPopupDomNode:function(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode:function(){var e=this.$props.getTriggerDOMNode;if(e){var t=ds(this.triggerRef);return ds(e(t))}try{var i=ds(this.triggerRef);if(i)return i}catch{}return ds(this)},handleGetPopupClassFromAlign:function(e){var t=[],i=this.$props,a=i.popupPlacement,l=i.builtinPlacements,o=i.prefixCls,r=i.alignPoint,f=i.getPopupClassNameFromAlign;return a&&l&&t.push(SA(l,o,e,r)),f&&t.push(f(e)),t.join(" ")},getPopupAlign:function(){var e=this.$props,t=e.popupPlacement,i=e.popupAlign,a=e.builtinPlacements;return t&&a?mY(a,t,i):i},getComponent:function(){var e=this,t={};this.isMouseEnterToShow()&&(t.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(t.onMouseleave=this.onPopupMouseleave),t.onMousedown=this.onPopupMouseDown,t[Ui?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;var i=this.handleGetPopupClassFromAlign,a=this.getRootDomNode,l=this.getContainer,o=this.$attrs,r=this.$props,f=r.prefixCls,v=r.destroyPopupOnHide,b=r.popupClassName,Z=r.popupAnimation,p=r.popupTransitionName,y=r.popupStyle,X=r.mask,m=r.maskAnimation,N=r.maskTransitionName,G=r.zIndex,d=r.stretch,u=r.alignPoint,s=r.mobile,h=r.forceRender,c=this.$data,W=c.sPopupVisible,M=c.point,I=P(P({prefixCls:f,destroyPopupOnHide:v,visible:W,point:u?M:null,align:this.align,animation:Z,getClassNameFromAlign:i,stretch:d,getRootDomNode:a,mask:X,zIndex:G,transitionName:p,maskAnimation:m,maskTransitionName:N,getContainer:l,class:b,style:y,onAlign:o.onPopupAlign||pY},t),{},{ref:this.setPopupRef,mobile:s,forceRender:h});return D(xA,I,{default:this.$slots.popup||function(){return BW(e,"popup")}})},attachParent:function(e){var t=this;At.cancel(this.attachId);var i=this.$props,a=i.getPopupContainer,l=i.getDocument,o=this.getRootDomNode(),r;a?(o||a.length===0)&&(r=a(o)):r=l(this.getRootDomNode()).body,r?r.appendChild(e):this.attachId=At(function(){t.attachParent(e)})},getContainer:function(){var e=this.$props,t=e.getDocument,i=t(this.getRootDomNode()).createElement("div");return i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="100%",this.attachParent(i),i},setPopupVisible:function(e,t){var i=this.alignPoint,a=this.sPopupVisible,l=this.onPopupVisibleChange;this.clearDelayTimer(),a!==e&&(Mo(this,"popupVisible")||this.setState({sPopupVisible:e,prevPopupVisible:a}),l&&l(e)),i&&t&&e&&this.setPoint(t)},setPoint:function(e){var t=this.$props.alignPoint;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate:function(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible:function(e,t,i){var a=this,l=t*1e3;if(this.clearDelayTimer(),l){var o=i?{pageX:i.pageX,pageY:i.pageY}:null;this.delayTimer=bQ(function(){a.setPopupVisible(e,o),a.clearDelayTimer()},l)}else this.setPopupVisible(e,i)},clearDelayTimer:function(){this.delayTimer&&(fQ(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var t=function(){},i=HI(this);return this.childOriginEvents[e]&&i[e]?this["fire".concat(e)]:(t=this.childOriginEvents[e]||i[e]||t,t)},isClickToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isContextMenuOnly:function(){var e=this.$props.action;return e==="contextmenu"||e.length===1&&e[0]==="contextmenu"},isContextmenuToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("contextmenu")!==-1||i.indexOf("contextmenu")!==-1},isClickToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isMouseEnterToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("hover")!==-1||i.indexOf("mouseenter")!==-1},isMouseLeaveToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("hover")!==-1||i.indexOf("mouseleave")!==-1},isFocusToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("focus")!==-1||i.indexOf("focus")!==-1},isBlurToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("focus")!==-1||i.indexOf("blur")!==-1},forcePopupAlign:function(){if(this.$data.sPopupVisible){var e;(e=this.popupRef)===null||e===void 0||e.forceAlign()}},fireEvents:function(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);var i=this.$props[e]||this.$attrs[e];i&&i(t)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,t=this.$attrs,i=Ri(xh(this)),a=this.$props.alignPoint,l=i[0];this.childOriginEvents=HI(l);var o={key:"trigger"};this.isContextmenuToShow()?o.onContextmenu=this.onContextmenu:o.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(o.onClick=this.onClick,o.onMousedown=this.onMousedown,o[Ui?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(o.onClick=this.createTwoChains("onClick"),o.onMousedown=this.createTwoChains("onMousedown"),o[Ui?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(o.onMouseenter=this.onMouseenter,a&&(o.onMousemove=this.onMouseMove)):o.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?o.onMouseleave=this.onMouseleave:o.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(o.onFocus=this.onFocus,o.onBlur=this.onBlur):(o.onFocus=this.createTwoChains("onFocus"),o.onBlur=function(b){b&&(!b.relatedTarget||!ic(b.target,b.relatedTarget))&&e.createTwoChains("onBlur")(b)});var r=_e(l&&l.props&&l.props.class,t.class);r&&(o.class=r);var f=wn(l,P(P({},o),{},{ref:"triggerRef"}),!0,!0);if(this.popPortal)return f;var v=D(_2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent});return D(ln,null,[v,f])}});var OA=["empty"],jA=function(e){var t=e===!0?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},UA=He({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:We.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:We.oneOfType([Number,Boolean]).def(!0),popupElement:We.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=de(function(){var f=e.dropdownMatchSelectWidth;return jA(f)}),r=Ne();return l({getPopupElement:function(){return r.value}}),function(){var f=P(P({},e),a),v=f.empty,b=v===void 0?!1:v,Z=jt(f,OA),p=Z.visible,y=Z.dropdownAlign,X=Z.prefixCls,m=Z.popupElement,N=Z.dropdownClassName,G=Z.dropdownStyle,d=Z.direction,u=d===void 0?"ltr":d,s=Z.placement,h=Z.dropdownMatchSelectWidth,c=Z.containerWidth,W=Z.dropdownRender,M=Z.animation,I=Z.transitionName,w=Z.getPopupContainer,C=Z.getTriggerDOMNode,x=Z.onPopupVisibleChange,R=Z.onPopupMouseEnter,g="".concat(X,"-dropdown"),S=m;W&&(S=W({menuNode:m,props:e}));var L=M?"".concat(g,"-").concat(M):I,V=P({minWidth:"".concat(c,"px")},G);return typeof h=="number"?V.width="".concat(h,"px"):h&&(V.width="".concat(c,"px")),D(Qu,P(P({},e),{},{showAction:x?["click"]:[],hideAction:x?["click"]:[],popupPlacement:s||(u==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:o.value,prefixCls:g,popupTransitionName:L,popupAlign:y,popupVisible:p,getPopupContainer:w,popupClassName:_e(N,ce({},"".concat(g,"-empty"),b)),popupStyle:V,getTriggerDOMNode:C,onPopupVisibleChange:x}),{default:i.default,popup:function(){return D("div",{ref:r,onMouseenter:R},[S])}})}}});const EA=UA;var Wn={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=Wn.F1&&t<=Wn.F12)return!1;switch(t){case Wn.ALT:case Wn.CAPS_LOCK:case Wn.CONTEXT_MENU:case Wn.CTRL:case Wn.DOWN:case Wn.END:case Wn.ESC:case Wn.HOME:case Wn.INSERT:case Wn.LEFT:case Wn.MAC_FF_META:case Wn.META:case Wn.NUMLOCK:case Wn.NUM_CENTER:case Wn.PAGE_DOWN:case Wn.PAGE_UP:case Wn.PAUSE:case Wn.PRINT_SCREEN:case Wn.RIGHT:case Wn.SHIFT:case Wn.UP:case Wn.WIN_KEY:case Wn.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=Wn.ZERO&&e<=Wn.NINE||e>=Wn.NUM_ZERO&&e<=Wn.NUM_MULTIPLY||e>=Wn.A&&e<=Wn.Z||window.navigator.userAgent.indexOf("WebKit")!==-1&&e===0)return!0;switch(e){case Wn.SPACE:case Wn.QUESTION_MARK:case Wn.NUM_PLUS:case Wn.NUM_MINUS:case Wn.NUM_PERIOD:case Wn.NUM_DIVISION:case Wn.SEMICOLON:case Wn.DASH:case Wn.EQUALS:case Wn.COMMA:case Wn.PERIOD:case Wn.SLASH:case Wn.APOSTROPHE:case Wn.SINGLE_QUOTE:case Wn.OPEN_SQUARE_BRACKET:case Wn.BACKSLASH:case Wn.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const bt=Wn;var B0=function(e,t){var i,a=t.slots,l=e.class,o=e.customizeIcon,r=e.customizeIconProps,f=e.onMousedown,v=e.onClick,b;return typeof o=="function"?b=o(r):b=o,D("span",{class:l,onMousedown:function(p){p.preventDefault(),f&&f(p)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:v,"aria-hidden":!0},[b!==void 0?b:D("span",{class:l.split(/\s+/).map(function(Z){return"".concat(Z,"-icon")})},[(i=a.default)===null||i===void 0?void 0:i.call(a)])])};B0.inheritAttrs=!1;B0.displayName="TransBtn";B0.props={class:String,customizeIcon:We.any,customizeIconProps:We.any,onMousedown:Function,onClick:Function};const km=B0;function KA(n){n.target.composing=!0}function yY(n){n.target.composing&&(n.target.composing=!1,HA(n.target,"input"))}function HA(n,e){var t=document.createEvent("HTMLEvents");t.initEvent(e,!0,!0),n.dispatchEvent(t)}function aZ(n,e,t,i){n.addEventListener(e,t,i)}var PA={created:function(e,t){(!t.modifiers||!t.modifiers.lazy)&&(aZ(e,"compositionstart",KA),aZ(e,"compositionend",yY),aZ(e,"change",yY))}};const Bu=PA;var QA={inputRef:We.any,prefixCls:String,id:String,inputElement:We.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),attrs:We.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},BA=He({compatConfig:{MODE:3},name:"Input",inheritAttrs:!1,props:QA,setup:function(e){var t=null,i=un("VCSelectContainerEvent");return function(){var a,l,o=e.prefixCls,r=e.id,f=e.inputElement,v=e.disabled,b=e.tabindex,Z=e.autofocus,p=e.autocomplete,y=e.editable,X=e.activeDescendantId,m=e.value,N=e.onKeydown,G=e.onMousedown,d=e.onChange,u=e.onPaste,s=e.onCompositionstart,h=e.onCompositionend,c=e.onFocus,W=e.onBlur,M=e.open,I=e.inputRef,w=e.attrs,C=f||cl(D("input",null,null),[[Bu]]),x=C.props||{},R=x.onKeydown,g=x.onInput,S=x.onFocus,L=x.onBlur,V=x.onMousedown,Y=x.onCompositionstart,T=x.onCompositionend,J=x.style;return C=wn(C,Xn(P(P(P({type:"search"},x),{},{id:r,ref:I,disabled:v,tabindex:b,autocomplete:p||"off",autofocus:Z,class:_e("".concat(o,"-selection-search-input"),(a=C)===null||a===void 0||(l=a.props)===null||l===void 0?void 0:l.class),role:"combobox","aria-expanded":M,"aria-haspopup":"listbox","aria-owns":"".concat(r,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(r,"_list"),"aria-activedescendant":X},w),{},{value:y?m:"",readonly:!y,unselectable:y?null:"on",style:P(P({},J),{},{opacity:y?null:0}),onKeydown:function(K){N(K),R&&R(K)},onMousedown:function(K){G(K),V&&V(K)},onInput:function(K){d(K),g&&g(K)},onCompositionstart:function(K){s(K),Y&&Y(K)},onCompositionend:function(K){h(K),T&&T(K)},onPaste:u,onFocus:function(){clearTimeout(t),S&&S(arguments.length<=0?void 0:arguments[0]),c&&c(arguments.length<=0?void 0:arguments[0]),i==null||i.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var K=arguments.length,H=new Array(K),k=0;k1&&arguments[1]!==void 0?arguments[1]:!1,t;e===!1?t={aria:!0,data:!0,attr:!0}:e===!0?t={aria:!0}:t=P({},e);var i={};return Object.keys(n).forEach(function(a){(t.aria&&(a==="role"||yY(a,BA))||t.data&&yY(a,AA)||t.attr&&(pY.includes(a)||pY.includes(a.toLowerCase())))&&(i[a]=n[a])}),i}var Gx=Symbol("OverflowContextProviderKey"),B2=He({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(Gx,de(function(){return e.value})),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}}),_A=function(){return un(Gx,de(function(){return null}))},$A=["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"],Hc=void 0;const Fb=He({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:We.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:We.any,invalidate:Boolean},setup:function(e,t){var i=t.slots,a=t.expose,l=de(function(){return e.responsive&&!e.display}),o=Ne();a({itemNodeRef:o});function r(f){e.registerSize(e.itemKey,f)}return la(function(){r(null)}),function(){var f,v=e.prefixCls,b=e.invalidate,Z=e.item,p=e.renderItem,y=e.responsive;e.registerSize,e.itemKey,e.display;var X=e.order,m=e.component,N=m===void 0?"div":m,G=jt(e,$A),d=(f=i.default)===null||f===void 0?void 0:f.call(i),u=p&&Z!==Hc?p(Z):d,s;b||(s={opacity:l.value?0:1,height:l.value?0:Hc,overflowY:l.value?"hidden":Hc,order:y?X:Hc,pointerEvents:l.value?"none":Hc,position:l.value?"absolute":Hc});var h={};return l.value&&(h["aria-hidden"]=!0),D(rr,{disabled:!y,onResize:function(W){var M=W.offsetWidth;r(M)}},{default:function(){return D(N,P(P(P({class:_e(!b&&v),style:s},h),G),{},{ref:o}),{default:function(){return[u]}})}})}}});var qA=["component"],e_=["className"],t_=["class"];const n_=He({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:We.any,title:We.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function}},setup:function(e,t){var i=t.slots,a=t.attrs,l=_A();return function(){if(!l.value){var o,r=e.component,f=r===void 0?"div":r,v=jt(e,qA);return D(f,P(P({},v),a),{default:function(){return[(o=i.default)===null||o===void 0?void 0:o.call(i)]}})}var b=l.value,Z=b.className,p=jt(b,e_),y=a.class,X=jt(a,t_);return D(B2,{value:null},{default:function(){return[D(Fb,P(P(P({class:_e(Z,y)},p),X),e),i)]}})}}});var i_=["class","style"],Xx="responsive",Nx="invalidate";function l_(n){return"+ ".concat(n.length," ...")}var a_=function(){return{id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:We.any,component:String,itemComponent:We.any,onVisibleChange:Function,ssr:String,onMousedown:Function}},P0=He({name:"Overflow",inheritAttrs:!1,props:a_(),emits:["visibleChange"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.slots,o=de(function(){return e.ssr==="full"}),r=Ne(null),f=de(function(){return r.value||0}),v=Ne(new Map),b=Ne(0),Z=Ne(0),p=Ne(0),y=Ne(null),X=Ne(null),m=de(function(){return X.value===null&&o.value?Number.MAX_SAFE_INTEGER:X.value||0}),N=Ne(!1),G=de(function(){return"".concat(e.prefixCls,"-item")}),d=de(function(){return Math.max(b.value,Z.value)}),u=de(function(){return!!(e.data.length&&e.maxCount===Xx)}),s=de(function(){return e.maxCount===Nx}),h=de(function(){return u.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount}),c=de(function(){var L=e.data;return u.value?r.value===null&&o.value?L=e.data:L=e.data.slice(0,Math.min(e.data.length,f.value/e.itemWidth)):typeof e.maxCount=="number"&&(L=e.data.slice(0,e.maxCount)),L}),W=de(function(){return u.value?e.data.slice(m.value+1):e.data.slice(c.value.length)}),M=function(V,Y){var T;return typeof e.itemKey=="function"?e.itemKey(V):(T=e.itemKey&&(V==null?void 0:V[e.itemKey]))!==null&&T!==void 0?T:Y},I=de(function(){return e.renderItem||function(L){return L}}),w=function(V,Y){X.value=V,Y||(N.value=Vf.value){w(T-1),y.value=L-J-p.value+Z.value;break}}e.suffix&&S(0)+p.value>f.value&&(y.value=null)}}),function(){var L=N.value&&!!W.value.length,V=e.itemComponent,Y=e.renderRawItem,T=e.renderRawRest,J=e.renderRest,U=e.prefixCls,K=U===void 0?"rc-overflow":U,H=e.suffix,k=e.component,F=k===void 0?"div":k,O=e.id,Q=e.onMousedown,oe=i.class,se=i.style,he=jt(i,i_),pe={};y.value!==null&&u.value&&(pe={position:"absolute",left:"".concat(y.value,"px"),top:0});var re={prefixCls:G.value,responsive:u.value,component:V,invalidate:s.value},_=Y?function(ee,te){var be=M(ee,te);return D(B2,{key:be,value:P(P({},re),{},{order:te,item:ee,itemKey:be,registerSize:x,display:te<=m.value})},{default:function(){return[Y(ee,te)]}})}:function(ee,te){var be=M(ee,te);return D(Fb,P(P({},re),{},{order:te,key:be,item:ee,renderItem:I.value,itemKey:be,registerSize:x,display:te<=m.value}),null)},E=function(){return null},$={order:L?m.value:Number.MAX_SAFE_INTEGER,className:"".concat(G.value," ").concat(G.value,"-rest"),registerSize:R,display:L};if(T)T&&(E=function(){return D(B2,{value:P(P({},re),$)},{default:function(){return[T(W.value)]}})});else{var ae=J||l_;E=function(){return D(Fb,P(P({},re),$),{default:function(){return typeof ae=="function"?ae(W.value):ae}})}}var le=function(){var te;return D(F,P({id:O,class:_e(!s.value&&K,oe),style:se,onMousedown:Q},he),{default:function(){return[c.value.map(_),h.value?E():null,H&&D(Fb,P(P({},re),{},{order:m.value,class:"".concat(G.value,"-suffix"),registerSize:g,display:!0,style:pe}),{default:function(){return H}}),(te=l.default)===null||te===void 0?void 0:te.call(l)]}})};return D(rr,{disabled:!u.value,onResize:C},{default:le})}}});P0.Item=n_;P0.RESPONSIVE=Xx;P0.INVALIDATE=Nx;const vu=P0;var Mx=Symbol("TreeSelectLegacyContextPropsKey");function r_(n){return hn(Mx,n)}function Q0(){return un(Mx,{})}var o_={id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),removeIcon:We.any,choiceTransitionName:String,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any.def(function(){return function(n){return"+ ".concat(n.length," ...")}}),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},ZY=function(e){e.preventDefault(),e.stopPropagation()},s_=He({name:"MultipleSelectSelector",inheritAttrs:!1,props:o_,setup:function(e){var t=Ne(),i=Ne(0),a=Ne(!1),l=Q0(),o=de(function(){return"".concat(e.prefixCls,"-selection")}),r=de(function(){return e.open||e.mode==="tags"?e.searchValue:""}),f=de(function(){return e.mode==="tags"||e.showSearch&&(e.open||a.value)});Kt(function(){rt(r,function(){i.value=t.value.scrollWidth},{flush:"post",immediate:!0})});function v(y,X,m,N,G){return D("span",{class:_e("".concat(o.value,"-item"),ce({},"".concat(o.value,"-item-disabled"),m)),title:typeof y=="string"||typeof y=="number"?y.toString():void 0},[D("span",{class:"".concat(o.value,"-item-content")},[X]),N&&D(zm,{class:"".concat(o.value,"-item-remove"),onMousedown:ZY,onClick:G,customizeIcon:e.removeIcon},{default:function(){return[Fl("×")]}})])}function b(y,X,m,N,G,d){var u=function(W){ZY(W),e.onToggleOpen(!open)},s=d;if(l.keyEntities){var h;s=((h=l.keyEntities[y])===null||h===void 0?void 0:h.node)||{}}return D("span",{key:y,onMousedown:u},[e.tagRender({label:X,value:y,disabled:m,closable:N,onClose:G,option:s})])}function Z(y){var X=y.disabled,m=y.label,N=y.value,G=y.option,d=!e.disabled&&!X,u=m;if(typeof e.maxTagTextLength=="number"&&(typeof m=="string"||typeof m=="number")){var s=String(u);s.length>e.maxTagTextLength&&(u="".concat(s.slice(0,e.maxTagTextLength),"..."))}var h=function(W){var M;W&&W.stopPropagation(),(M=e.onRemove)===null||M===void 0||M.call(e,y)};return typeof e.tagRender=="function"?b(N,u,X,d,h,G):v(m,u,X,d,h)}function p(y){var X=e.maxTagPlaceholder,m=X===void 0?function(G){return"+ ".concat(G.length," ...")}:X,N=typeof m=="function"?m(y):m;return v(N,N,!1)}return function(){var y=e.id,X=e.prefixCls,m=e.values,N=e.open,G=e.inputRef,d=e.placeholder,u=e.disabled,s=e.autofocus,h=e.autocomplete,c=e.activeDescendantId,W=e.tabindex,M=e.onInputChange,I=e.onInputPaste,w=e.onInputKeyDown,C=e.onInputMouseDown,x=e.onInputCompositionStart,R=e.onInputCompositionEnd,g=D("div",{class:"".concat(o.value,"-search"),style:{width:i.value+"px"},key:"input"},[D(Wx,{inputRef:G,open:N,prefixCls:X,id:y,inputElement:null,disabled:u,autofocus:s,autocomplete:h,editable:f.value,activeDescendantId:c,value:r.value,onKeydown:w,onMousedown:C,onChange:M,onPaste:I,onCompositionstart:x,onCompositionend:R,tabindex:W,attrs:ws(e,!0),onFocus:function(){return a.value=!0},onBlur:function(){return a.value=!1}},null),D("span",{ref:t,class:"".concat(o.value,"-search-mirror"),"aria-hidden":!0},[r.value,Fl(" ")])]),S=D(vu,{prefixCls:"".concat(o.value,"-overflow"),data:m,renderItem:Z,renderRest:p,suffix:g,itemKey:"key",maxCount:e.maxTagCount,key:"overflow"},null);return D(ln,null,[S,!m.length&&!r.value&&D("span",{class:"".concat(o.value,"-placeholder")},[d])])}}});const c_=s_;var u_={inputElement:We.any,id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},CG=He({name:"SingleSelector",setup:function(e){var t=Ne(!1),i=de(function(){return e.mode==="combobox"}),a=de(function(){return i.value||e.showSearch}),l=de(function(){var b=e.searchValue||"";return i.value&&e.activeValue&&!t.value&&(b=e.activeValue),b}),o=Q0();rt([i,function(){return e.activeValue}],function(){i.value&&(t.value=!1)},{immediate:!0});var r=de(function(){return e.mode!=="combobox"&&!e.open&&!e.showSearch?!1:!!l.value}),f=de(function(){var b=e.values[0];return b&&(typeof b.label=="string"||typeof b.label=="number")?b.label.toString():void 0}),v=function(){if(e.values[0])return null;var Z=r.value?{visibility:"hidden"}:void 0;return D("span",{class:"".concat(e.prefixCls,"-selection-placeholder"),style:Z},[e.placeholder])};return function(){var b,Z=e.inputElement,p=e.prefixCls,y=e.id,X=e.values,m=e.inputRef,N=e.disabled,G=e.autofocus,d=e.autocomplete,u=e.activeDescendantId,s=e.open,h=e.tabindex,c=e.optionLabelRender,W=e.onInputKeyDown,M=e.onInputMouseDown,I=e.onInputChange,w=e.onInputPaste,C=e.onInputCompositionStart,x=e.onInputCompositionEnd,R=X[0],g=null;if(R&&o.customSlots){var S,L,V,Y=(S=R.key)!==null&&S!==void 0?S:R.value,T=((L=o.keyEntities[Y])===null||L===void 0?void 0:L.node)||{};g=o.customSlots[(V=T.slots)===null||V===void 0?void 0:V.title]||o.customSlots.title||R.label,typeof g=="function"&&(g=g(T))}else g=c&&R?c(R.option):R==null?void 0:R.label;return D(ln,null,[D("span",{class:"".concat(p,"-selection-search")},[D(Wx,{inputRef:m,prefixCls:p,id:y,open:s,inputElement:Z,disabled:N,autofocus:G,autocomplete:d,editable:a.value,activeDescendantId:u,value:l.value,onKeydown:W,onMousedown:M,onChange:function(U){t.value=!0,I(U)},onPaste:w,onCompositionstart:C,onCompositionend:x,tabindex:h,attrs:ws(e,!0)},null)]),!i.value&&R&&!r.value&&D("span",{class:"".concat(p,"-selection-item"),title:f.value},[D(ln,{key:(b=R.key)!==null&&b!==void 0?b:R.value},[g])]),v()])}}});CG.props=u_;CG.inheritAttrs=!1;const d_=CG;function h_(n){return![bt.ESC,bt.SHIFT,bt.BACKSPACE,bt.TAB,bt.WIN_KEY,bt.ALT,bt.META,bt.WIN_KEY_RIGHT,bt.CTRL,bt.SEMICOLON,bt.EQUALS,bt.CAPS_LOCK,bt.CONTEXT_MENU,bt.F1,bt.F2,bt.F3,bt.F4,bt.F5,bt.F6,bt.F7,bt.F8,bt.F9,bt.F10,bt.F11,bt.F12].includes(n)}function Ix(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,e=null,t;fn(function(){clearTimeout(t)});function i(a){(a||e===null)&&(e=a),clearTimeout(t),t=setTimeout(function(){e=null},n)}return[function(){return e},i]}function Xh(){var n=function e(t){e.current=t};return n}var f_=He({name:"Selector",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:We.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:We.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),disabled:{type:Boolean,default:void 0},placeholder:We.any,removeIcon:We.any,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup:function(e,t){var i=t.expose,a=Xh(),l=!1,o=Ix(0),r=ft(o,2),f=r[0],v=r[1],b=function(h){var c=h.which;(c===bt.UP||c===bt.DOWN)&&h.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(h),c===bt.ENTER&&e.mode==="tags"&&!l&&!e.open&&e.onSearchSubmit(h.target.value),h_(c)&&e.onToggleOpen(!0)},Z=function(){v(!0)},p=null,y=function(h){e.onSearch(h,!0,l)!==!1&&e.onToggleOpen(!0)},X=function(){l=!0},m=function(h){l=!1,e.mode!=="combobox"&&y(h.target.value)},N=function(h){var c=h.target.value;if(e.tokenWithEnter&&p&&/[\r\n]/.test(p)){var W=p.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");c=c.replace(W,p)}p=null,y(c)},G=function(h){var c=h.clipboardData,W=c.getData("text");p=W},d=function(h){var c=h.target;if(c!==a.current){var W=document.body.style.msTouchAction!==void 0;W?setTimeout(function(){a.current.focus()}):a.current.focus()}},u=function(h){var c=f();h.target!==a.current&&!c&&h.preventDefault(),(e.mode!=="combobox"&&(!e.showSearch||!c)||!e.open)&&(e.open&&e.onSearch("",!0,!1),e.onToggleOpen())};return i({focus:function(){a.current.focus()},blur:function(){a.current.blur()}}),function(){var s=e.prefixCls,h=e.domRef,c=e.mode,W={inputRef:a,onInputKeyDown:b,onInputMouseDown:Z,onInputChange:N,onInputPaste:G,onInputCompositionStart:X,onInputCompositionEnd:m},M=c==="multiple"||c==="tags"?D(c_,P(P({},e),W),null):D(d_,P(P({},e),W),null);return D("div",{ref:h,class:"".concat(s,"-selector"),onClick:d,onMousedown:u},[M])}}});const b_=f_;function m_(n,e,t){function i(a){var l,o,r,f=a.target;f.shadowRoot&&a.composed&&(f=a.composedPath()[0]||f);var v=[(l=n[0])===null||l===void 0?void 0:l.value,(o=n[1])===null||o===void 0||(r=o.value)===null||r===void 0?void 0:r.getPopupElement()];e.value&&v.every(function(b){return b&&!b.contains(f)&&b!==f})&&t(!1)}Kt(function(){window.addEventListener("mousedown",i)}),fn(function(){window.removeEventListener("mousedown",i)})}function p_(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,e=Ne(!1),t,i=function(){clearTimeout(t)};Kt(function(){i()});var a=function(o,r){i(),t=setTimeout(function(){e.value=o,r&&r()},n)};return[e,a,i]}var Yx=Symbol("BaseSelectContextKey");function y_(n){return hn(Yx,n)}function Fh(){return un(Yx,{})}const SG=function(){if(typeof navigator>"u"||typeof window>"u")return!1;var n=navigator.userAgent||navigator.vendor||window.opera;return!!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(n==null?void 0:n.substr(0,4)))};function km(n){if(!$i(n))return zn(n);var e=new Proxy({},{get:function(i,a,l){return Reflect.get(n.value,a,l)},set:function(i,a,l){return n.value[a]=l,!0},deleteProperty:function(i,a){return Reflect.deleteProperty(n.value,a)},has:function(i,a){return Reflect.has(n.value,a)},ownKeys:function(){return Object.keys(n.value)},getOwnPropertyDescriptor:function(){return{enumerable:!0,configurable:!0}}});return zn(e)}var Z_=["prefixCls","id","open","defaultOpen","mode","showSearch","searchValue","onSearch","allowClear","clearIcon","showArrow","inputIcon","disabled","loading","getInputElement","getPopupContainer","placement","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","showAction","direction","tokenSeparators","tagRender","optionLabelRender","onPopupScroll","onDropdownVisibleChange","onFocus","onBlur","onKeyup","onKeydown","onMousedown","onClear","omitDomProps","getRawInputElement","displayValues","onDisplayValuesChange","emptyOptions","activeDescendantId","activeValue","OptionList"],v_=["value","onChange","removeIcon","placeholder","autofocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabindex","OptionList","notFoundContent"],W_=function(){return{prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:We.any,emptyOptions:Boolean}},B0=function(){return{showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:We.any,placeholder:We.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:We.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:We.any,clearIcon:We.any,removeIcon:We.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}},G_=function(){return P(P({},W_()),B0())};function wx(n){return n==="tags"||n==="multiple"}const zG=He({compatConfig:{MODE:3},name:"BaseSelect",inheritAttrs:!1,props:pn(G_(),{showAction:[],notFoundContent:"Not Found"}),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=de(function(){return wx(e.mode)}),r=de(function(){return e.showSearch!==void 0?e.showSearch:o.value||e.mode==="combobox"}),f=Ne(!1);Kt(function(){f.value=SG()});var v=Q0(),b=Ne(null),Z=Xh(),p=Ne(null),y=Ne(null),X=Ne(null),m=p_(),N=ft(m,3),G=N[0],d=N[1],u=N[2],s=function(){var _;(_=y.value)===null||_===void 0||_.focus()},h=function(){var _;(_=y.value)===null||_===void 0||_.blur()};a({focus:s,blur:h,scrollTo:function(_){var E;return(E=X.value)===null||E===void 0?void 0:E.scrollTo(_)}});var c=de(function(){var re;if(e.mode!=="combobox")return e.searchValue;var _=(re=e.displayValues[0])===null||re===void 0?void 0:re.value;return typeof _=="string"||typeof _=="number"?String(_):""}),W=e.open!==void 0?e.open:e.defaultOpen,M=Ne(W),I=Ne(W),w=function(_){M.value=e.open!==void 0?e.open:_,I.value=M.value};rt(function(){return e.open},function(){w(e.open)});var C=de(function(){return!e.notFoundContent&&e.emptyOptions});qt(function(){I.value=M.value,(e.disabled||C.value&&I.value&&e.mode==="combobox")&&(I.value=!1)});var x=de(function(){return C.value?!1:I.value}),R=function(_){var E=_!==void 0?_:!I.value;M.value!==E&&!e.disabled&&(w(E),e.onDropdownVisibleChange&&e.onDropdownVisibleChange(E))},g=de(function(){return(e.tokenSeparators||[]).some(function(re){return[` + onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`,ZY="".concat(AA," ").concat(_A).split(/[\s\n]+/),$A="aria-",qA="data-";function vY(n,e){return n.indexOf(e)===0}function ws(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t;e===!1?t={aria:!0,data:!0,attr:!0}:e===!0?t={aria:!0}:t=P({},e);var i={};return Object.keys(n).forEach(function(a){(t.aria&&(a==="role"||vY(a,$A))||t.data&&vY(a,qA)||t.attr&&(ZY.includes(a)||ZY.includes(a.toLowerCase())))&&(i[a]=n[a])}),i}var Mx=Symbol("OverflowContextProviderKey"),$2=He({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(Mx,de(function(){return e.value})),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}}),e_=function(){return un(Mx,de(function(){return null}))},t_=["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"],Pc=void 0;const Jb=He({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:We.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:We.any,invalidate:Boolean},setup:function(e,t){var i=t.slots,a=t.expose,l=de(function(){return e.responsive&&!e.display}),o=Ne();a({itemNodeRef:o});function r(f){e.registerSize(e.itemKey,f)}return la(function(){r(null)}),function(){var f,v=e.prefixCls,b=e.invalidate,Z=e.item,p=e.renderItem,y=e.responsive;e.registerSize,e.itemKey,e.display;var X=e.order,m=e.component,N=m===void 0?"div":m,G=jt(e,t_),d=(f=i.default)===null||f===void 0?void 0:f.call(i),u=p&&Z!==Pc?p(Z):d,s;b||(s={opacity:l.value?0:1,height:l.value?0:Pc,overflowY:l.value?"hidden":Pc,order:y?X:Pc,pointerEvents:l.value?"none":Pc,position:l.value?"absolute":Pc});var h={};return l.value&&(h["aria-hidden"]=!0),D(rr,{disabled:!y,onResize:function(W){var M=W.offsetWidth;r(M)}},{default:function(){return D(N,P(P(P({class:_e(!b&&v),style:s},h),G),{},{ref:o}),{default:function(){return[u]}})}})}}});var n_=["component"],i_=["className"],l_=["class"];const a_=He({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:We.any,title:We.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function}},setup:function(e,t){var i=t.slots,a=t.attrs,l=e_();return function(){if(!l.value){var o,r=e.component,f=r===void 0?"div":r,v=jt(e,n_);return D(f,P(P({},v),a),{default:function(){return[(o=i.default)===null||o===void 0?void 0:o.call(i)]}})}var b=l.value,Z=b.className,p=jt(b,i_),y=a.class,X=jt(a,l_);return D($2,{value:null},{default:function(){return[D(Jb,P(P(P({class:_e(Z,y)},p),X),e),i)]}})}}});var r_=["class","style"],Ix="responsive",Yx="invalidate";function o_(n){return"+ ".concat(n.length," ...")}var s_=function(){return{id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:We.any,component:String,itemComponent:We.any,onVisibleChange:Function,ssr:String,onMousedown:Function}},A0=He({name:"Overflow",inheritAttrs:!1,props:s_(),emits:["visibleChange"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.slots,o=de(function(){return e.ssr==="full"}),r=Ne(null),f=de(function(){return r.value||0}),v=Ne(new Map),b=Ne(0),Z=Ne(0),p=Ne(0),y=Ne(null),X=Ne(null),m=de(function(){return X.value===null&&o.value?Number.MAX_SAFE_INTEGER:X.value||0}),N=Ne(!1),G=de(function(){return"".concat(e.prefixCls,"-item")}),d=de(function(){return Math.max(b.value,Z.value)}),u=de(function(){return!!(e.data.length&&e.maxCount===Ix)}),s=de(function(){return e.maxCount===Yx}),h=de(function(){return u.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount}),c=de(function(){var L=e.data;return u.value?r.value===null&&o.value?L=e.data:L=e.data.slice(0,Math.min(e.data.length,f.value/e.itemWidth)):typeof e.maxCount=="number"&&(L=e.data.slice(0,e.maxCount)),L}),W=de(function(){return u.value?e.data.slice(m.value+1):e.data.slice(c.value.length)}),M=function(V,Y){var T;return typeof e.itemKey=="function"?e.itemKey(V):(T=e.itemKey&&(V==null?void 0:V[e.itemKey]))!==null&&T!==void 0?T:Y},I=de(function(){return e.renderItem||function(L){return L}}),w=function(V,Y){X.value=V,Y||(N.value=Vf.value){w(T-1),y.value=L-J-p.value+Z.value;break}}e.suffix&&S(0)+p.value>f.value&&(y.value=null)}}),function(){var L=N.value&&!!W.value.length,V=e.itemComponent,Y=e.renderRawItem,T=e.renderRawRest,J=e.renderRest,U=e.prefixCls,K=U===void 0?"rc-overflow":U,H=e.suffix,k=e.component,F=k===void 0?"div":k,O=e.id,Q=e.onMousedown,oe=i.class,se=i.style,he=jt(i,r_),pe={};y.value!==null&&u.value&&(pe={position:"absolute",left:"".concat(y.value,"px"),top:0});var re={prefixCls:G.value,responsive:u.value,component:V,invalidate:s.value},_=Y?function(ee,te){var be=M(ee,te);return D($2,{key:be,value:P(P({},re),{},{order:te,item:ee,itemKey:be,registerSize:x,display:te<=m.value})},{default:function(){return[Y(ee,te)]}})}:function(ee,te){var be=M(ee,te);return D(Jb,P(P({},re),{},{order:te,key:be,item:ee,renderItem:I.value,itemKey:be,registerSize:x,display:te<=m.value}),null)},E=function(){return null},$={order:L?m.value:Number.MAX_SAFE_INTEGER,className:"".concat(G.value," ").concat(G.value,"-rest"),registerSize:R,display:L};if(T)T&&(E=function(){return D($2,{value:P(P({},re),$)},{default:function(){return[T(W.value)]}})});else{var ae=J||o_;E=function(){return D(Jb,P(P({},re),$),{default:function(){return typeof ae=="function"?ae(W.value):ae}})}}var le=function(){var te;return D(F,P({id:O,class:_e(!s.value&&K,oe),style:se,onMousedown:Q},he),{default:function(){return[c.value.map(_),h.value?E():null,H&&D(Jb,P(P({},re),{},{order:m.value,class:"".concat(G.value,"-suffix"),registerSize:g,display:!0,style:pe}),{default:function(){return H}}),(te=l.default)===null||te===void 0?void 0:te.call(l)]}})};return D(rr,{disabled:!u.value,onResize:C},{default:le})}}});A0.Item=a_;A0.RESPONSIVE=Ix;A0.INVALIDATE=Yx;const Wu=A0;var wx=Symbol("TreeSelectLegacyContextPropsKey");function c_(n){return hn(wx,n)}function _0(){return un(wx,{})}var u_={id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),removeIcon:We.any,choiceTransitionName:String,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any.def(function(){return function(n){return"+ ".concat(n.length," ...")}}),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},WY=function(e){e.preventDefault(),e.stopPropagation()},d_=He({name:"MultipleSelectSelector",inheritAttrs:!1,props:u_,setup:function(e){var t=Ne(),i=Ne(0),a=Ne(!1),l=_0(),o=de(function(){return"".concat(e.prefixCls,"-selection")}),r=de(function(){return e.open||e.mode==="tags"?e.searchValue:""}),f=de(function(){return e.mode==="tags"||e.showSearch&&(e.open||a.value)});Kt(function(){rt(r,function(){i.value=t.value.scrollWidth},{flush:"post",immediate:!0})});function v(y,X,m,N,G){return D("span",{class:_e("".concat(o.value,"-item"),ce({},"".concat(o.value,"-item-disabled"),m)),title:typeof y=="string"||typeof y=="number"?y.toString():void 0},[D("span",{class:"".concat(o.value,"-item-content")},[X]),N&&D(km,{class:"".concat(o.value,"-item-remove"),onMousedown:WY,onClick:G,customizeIcon:e.removeIcon},{default:function(){return[Fl("×")]}})])}function b(y,X,m,N,G,d){var u=function(W){WY(W),e.onToggleOpen(!open)},s=d;if(l.keyEntities){var h;s=((h=l.keyEntities[y])===null||h===void 0?void 0:h.node)||{}}return D("span",{key:y,onMousedown:u},[e.tagRender({label:X,value:y,disabled:m,closable:N,onClose:G,option:s})])}function Z(y){var X=y.disabled,m=y.label,N=y.value,G=y.option,d=!e.disabled&&!X,u=m;if(typeof e.maxTagTextLength=="number"&&(typeof m=="string"||typeof m=="number")){var s=String(u);s.length>e.maxTagTextLength&&(u="".concat(s.slice(0,e.maxTagTextLength),"..."))}var h=function(W){var M;W&&W.stopPropagation(),(M=e.onRemove)===null||M===void 0||M.call(e,y)};return typeof e.tagRender=="function"?b(N,u,X,d,h,G):v(m,u,X,d,h)}function p(y){var X=e.maxTagPlaceholder,m=X===void 0?function(G){return"+ ".concat(G.length," ...")}:X,N=typeof m=="function"?m(y):m;return v(N,N,!1)}return function(){var y=e.id,X=e.prefixCls,m=e.values,N=e.open,G=e.inputRef,d=e.placeholder,u=e.disabled,s=e.autofocus,h=e.autocomplete,c=e.activeDescendantId,W=e.tabindex,M=e.onInputChange,I=e.onInputPaste,w=e.onInputKeyDown,C=e.onInputMouseDown,x=e.onInputCompositionStart,R=e.onInputCompositionEnd,g=D("div",{class:"".concat(o.value,"-search"),style:{width:i.value+"px"},key:"input"},[D(Nx,{inputRef:G,open:N,prefixCls:X,id:y,inputElement:null,disabled:u,autofocus:s,autocomplete:h,editable:f.value,activeDescendantId:c,value:r.value,onKeydown:w,onMousedown:C,onChange:M,onPaste:I,onCompositionstart:x,onCompositionend:R,tabindex:W,attrs:ws(e,!0),onFocus:function(){return a.value=!0},onBlur:function(){return a.value=!1}},null),D("span",{ref:t,class:"".concat(o.value,"-search-mirror"),"aria-hidden":!0},[r.value,Fl(" ")])]),S=D(Wu,{prefixCls:"".concat(o.value,"-overflow"),data:m,renderItem:Z,renderRest:p,suffix:g,itemKey:"key",maxCount:e.maxTagCount,key:"overflow"},null);return D(ln,null,[S,!m.length&&!r.value&&D("span",{class:"".concat(o.value,"-placeholder")},[d])])}}});const h_=d_;var f_={inputElement:We.any,id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},zG=He({name:"SingleSelector",setup:function(e){var t=Ne(!1),i=de(function(){return e.mode==="combobox"}),a=de(function(){return i.value||e.showSearch}),l=de(function(){var b=e.searchValue||"";return i.value&&e.activeValue&&!t.value&&(b=e.activeValue),b}),o=_0();rt([i,function(){return e.activeValue}],function(){i.value&&(t.value=!1)},{immediate:!0});var r=de(function(){return e.mode!=="combobox"&&!e.open&&!e.showSearch?!1:!!l.value}),f=de(function(){var b=e.values[0];return b&&(typeof b.label=="string"||typeof b.label=="number")?b.label.toString():void 0}),v=function(){if(e.values[0])return null;var Z=r.value?{visibility:"hidden"}:void 0;return D("span",{class:"".concat(e.prefixCls,"-selection-placeholder"),style:Z},[e.placeholder])};return function(){var b,Z=e.inputElement,p=e.prefixCls,y=e.id,X=e.values,m=e.inputRef,N=e.disabled,G=e.autofocus,d=e.autocomplete,u=e.activeDescendantId,s=e.open,h=e.tabindex,c=e.optionLabelRender,W=e.onInputKeyDown,M=e.onInputMouseDown,I=e.onInputChange,w=e.onInputPaste,C=e.onInputCompositionStart,x=e.onInputCompositionEnd,R=X[0],g=null;if(R&&o.customSlots){var S,L,V,Y=(S=R.key)!==null&&S!==void 0?S:R.value,T=((L=o.keyEntities[Y])===null||L===void 0?void 0:L.node)||{};g=o.customSlots[(V=T.slots)===null||V===void 0?void 0:V.title]||o.customSlots.title||R.label,typeof g=="function"&&(g=g(T))}else g=c&&R?c(R.option):R==null?void 0:R.label;return D(ln,null,[D("span",{class:"".concat(p,"-selection-search")},[D(Nx,{inputRef:m,prefixCls:p,id:y,open:s,inputElement:Z,disabled:N,autofocus:G,autocomplete:d,editable:a.value,activeDescendantId:u,value:l.value,onKeydown:W,onMousedown:M,onChange:function(U){t.value=!0,I(U)},onPaste:w,onCompositionstart:C,onCompositionend:x,tabindex:h,attrs:ws(e,!0)},null)]),!i.value&&R&&!r.value&&D("span",{class:"".concat(p,"-selection-item"),title:f.value},[D(ln,{key:(b=R.key)!==null&&b!==void 0?b:R.value},[g])]),v()])}}});zG.props=f_;zG.inheritAttrs=!1;const b_=zG;function m_(n){return![bt.ESC,bt.SHIFT,bt.BACKSPACE,bt.TAB,bt.WIN_KEY,bt.ALT,bt.META,bt.WIN_KEY_RIGHT,bt.CTRL,bt.SEMICOLON,bt.EQUALS,bt.CAPS_LOCK,bt.CONTEXT_MENU,bt.F1,bt.F2,bt.F3,bt.F4,bt.F5,bt.F6,bt.F7,bt.F8,bt.F9,bt.F10,bt.F11,bt.F12].includes(n)}function gx(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,e=null,t;fn(function(){clearTimeout(t)});function i(a){(a||e===null)&&(e=a),clearTimeout(t),t=setTimeout(function(){e=null},n)}return[function(){return e},i]}function Nh(){var n=function e(t){e.current=t};return n}var p_=He({name:"Selector",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:We.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:We.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),disabled:{type:Boolean,default:void 0},placeholder:We.any,removeIcon:We.any,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup:function(e,t){var i=t.expose,a=Nh(),l=!1,o=gx(0),r=ft(o,2),f=r[0],v=r[1],b=function(h){var c=h.which;(c===bt.UP||c===bt.DOWN)&&h.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(h),c===bt.ENTER&&e.mode==="tags"&&!l&&!e.open&&e.onSearchSubmit(h.target.value),m_(c)&&e.onToggleOpen(!0)},Z=function(){v(!0)},p=null,y=function(h){e.onSearch(h,!0,l)!==!1&&e.onToggleOpen(!0)},X=function(){l=!0},m=function(h){l=!1,e.mode!=="combobox"&&y(h.target.value)},N=function(h){var c=h.target.value;if(e.tokenWithEnter&&p&&/[\r\n]/.test(p)){var W=p.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");c=c.replace(W,p)}p=null,y(c)},G=function(h){var c=h.clipboardData,W=c.getData("text");p=W},d=function(h){var c=h.target;if(c!==a.current){var W=document.body.style.msTouchAction!==void 0;W?setTimeout(function(){a.current.focus()}):a.current.focus()}},u=function(h){var c=f();h.target!==a.current&&!c&&h.preventDefault(),(e.mode!=="combobox"&&(!e.showSearch||!c)||!e.open)&&(e.open&&e.onSearch("",!0,!1),e.onToggleOpen())};return i({focus:function(){a.current.focus()},blur:function(){a.current.blur()}}),function(){var s=e.prefixCls,h=e.domRef,c=e.mode,W={inputRef:a,onInputKeyDown:b,onInputMouseDown:Z,onInputChange:N,onInputPaste:G,onInputCompositionStart:X,onInputCompositionEnd:m},M=c==="multiple"||c==="tags"?D(h_,P(P({},e),W),null):D(b_,P(P({},e),W),null);return D("div",{ref:h,class:"".concat(s,"-selector"),onClick:d,onMousedown:u},[M])}}});const y_=p_;function Z_(n,e,t){function i(a){var l,o,r,f=a.target;f.shadowRoot&&a.composed&&(f=a.composedPath()[0]||f);var v=[(l=n[0])===null||l===void 0?void 0:l.value,(o=n[1])===null||o===void 0||(r=o.value)===null||r===void 0?void 0:r.getPopupElement()];e.value&&v.every(function(b){return b&&!b.contains(f)&&b!==f})&&t(!1)}Kt(function(){window.addEventListener("mousedown",i)}),fn(function(){window.removeEventListener("mousedown",i)})}function v_(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,e=Ne(!1),t,i=function(){clearTimeout(t)};Kt(function(){i()});var a=function(o,r){i(),t=setTimeout(function(){e.value=o,r&&r()},n)};return[e,a,i]}var Vx=Symbol("BaseSelectContextKey");function W_(n){return hn(Vx,n)}function Jh(){return un(Vx,{})}const kG=function(){if(typeof navigator>"u"||typeof window>"u")return!1;var n=navigator.userAgent||navigator.vendor||window.opera;return!!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(n==null?void 0:n.substr(0,4)))};function Fm(n){if(!$i(n))return zn(n);var e=new Proxy({},{get:function(i,a,l){return Reflect.get(n.value,a,l)},set:function(i,a,l){return n.value[a]=l,!0},deleteProperty:function(i,a){return Reflect.deleteProperty(n.value,a)},has:function(i,a){return Reflect.has(n.value,a)},ownKeys:function(){return Object.keys(n.value)},getOwnPropertyDescriptor:function(){return{enumerable:!0,configurable:!0}}});return zn(e)}var G_=["prefixCls","id","open","defaultOpen","mode","showSearch","searchValue","onSearch","allowClear","clearIcon","showArrow","inputIcon","disabled","loading","getInputElement","getPopupContainer","placement","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","showAction","direction","tokenSeparators","tagRender","optionLabelRender","onPopupScroll","onDropdownVisibleChange","onFocus","onBlur","onKeyup","onKeydown","onMousedown","onClear","omitDomProps","getRawInputElement","displayValues","onDisplayValuesChange","emptyOptions","activeDescendantId","activeValue","OptionList"],X_=["value","onChange","removeIcon","placeholder","autofocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabindex","OptionList","notFoundContent"],N_=function(){return{prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:We.any,emptyOptions:Boolean}},$0=function(){return{showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:We.any,placeholder:We.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:We.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:We.any,clearIcon:We.any,removeIcon:We.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}},M_=function(){return P(P({},N_()),$0())};function Lx(n){return n==="tags"||n==="multiple"}const FG=He({compatConfig:{MODE:3},name:"BaseSelect",inheritAttrs:!1,props:pn(M_(),{showAction:[],notFoundContent:"Not Found"}),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=de(function(){return Lx(e.mode)}),r=de(function(){return e.showSearch!==void 0?e.showSearch:o.value||e.mode==="combobox"}),f=Ne(!1);Kt(function(){f.value=kG()});var v=_0(),b=Ne(null),Z=Nh(),p=Ne(null),y=Ne(null),X=Ne(null),m=v_(),N=ft(m,3),G=N[0],d=N[1],u=N[2],s=function(){var _;(_=y.value)===null||_===void 0||_.focus()},h=function(){var _;(_=y.value)===null||_===void 0||_.blur()};a({focus:s,blur:h,scrollTo:function(_){var E;return(E=X.value)===null||E===void 0?void 0:E.scrollTo(_)}});var c=de(function(){var re;if(e.mode!=="combobox")return e.searchValue;var _=(re=e.displayValues[0])===null||re===void 0?void 0:re.value;return typeof _=="string"||typeof _=="number"?String(_):""}),W=e.open!==void 0?e.open:e.defaultOpen,M=Ne(W),I=Ne(W),w=function(_){M.value=e.open!==void 0?e.open:_,I.value=M.value};rt(function(){return e.open},function(){w(e.open)});var C=de(function(){return!e.notFoundContent&&e.emptyOptions});qt(function(){I.value=M.value,(e.disabled||C.value&&I.value&&e.mode==="combobox")&&(I.value=!1)});var x=de(function(){return C.value?!1:I.value}),R=function(_){var E=_!==void 0?_:!I.value;M.value!==E&&!e.disabled&&(w(E),e.onDropdownVisibleChange&&e.onDropdownVisibleChange(E))},g=de(function(){return(e.tokenSeparators||[]).some(function(re){return[` `,`\r -`].includes(re)})}),S=function(_,E,$){var ae,le=!0,ee=_;(ae=e.onActiveValueChange)===null||ae===void 0||ae.call(e,null);var te=$?null:rQ(_,e.tokenSeparators);if(e.mode!=="combobox"&&te){var be;ee="",(be=e.onSearchSplit)===null||be===void 0||be.call(e,te),R(!1),le=!1}return e.onSearch&&c.value!==ee&&e.onSearch(ee,{source:E?"typing":"effect"}),le},L=function(_){var E;!_||!_.trim()||(E=e.onSearch)===null||E===void 0||E.call(e,_,{source:"submit"})};rt(I,function(){!I.value&&!o.value&&e.mode!=="combobox"&&S("",!1,!1)},{immediate:!0,flush:"post"}),rt(function(){return e.disabled},function(){M.value&&e.disabled&&w(!1)},{immediate:!0});var V=Ix(),Y=ft(V,2),T=Y[0],J=Y[1],U=function(_){var E,$=T(),ae=_.which;if(ae===bt.ENTER&&(e.mode!=="combobox"&&_.preventDefault(),I.value||R(!0)),J(!!c.value),ae===bt.BACKSPACE&&!$&&o.value&&!c.value&&e.displayValues.length){for(var le=yt(e.displayValues),ee=null,te=le.length-1;te>=0;te-=1){var be=le[te];if(!be.disabled){le.splice(te,1),ee=be;break}}ee&&e.onDisplayValuesChange(le,{type:"remove",values:[ee]})}for(var ne=arguments.length,B=new Array(ne>1?ne-1:0),q=1;q1?E-1:0),ae=1;ae1?te-1:0),ne=1;net}},render:function(){var e=this.state,t=e.dragging,i=e.visible,a=this.$props.prefixCls,l=this.getSpinHeight()+"px",o=this.getTop()+"px",r=this.showScroll(),f=r&&i;return D("div",{ref:this.scrollbarRef,class:_e("".concat(a,"-scrollbar"),ce({},"".concat(a,"-scrollbar-show"),r)),style:{width:"8px",top:0,bottom:0,right:0,position:"absolute",display:f?void 0:"none"},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[D("div",{ref:this.thumbRef,class:_e("".concat(a,"-scrollbar-thumb"),ce({},"".concat(a,"-scrollbar-thumb-moving"),t)),style:{width:"100%",height:l,top:o,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:"99px",cursor:"pointer",userSelect:"none"},onMousedown:this.onMouseDown},null)])}});function Y_(n,e,t,i){var a=new Map,l=new Map,o=Ne(Symbol("update"));rt(n,function(){o.value=Symbol("update")});var r=0;function f(){r+=1;var b=r;Promise.resolve().then(function(){b===r&&a.forEach(function(Z,p){if(Z&&Z.offsetParent){var y=Z.offsetHeight;l.get(p)!==y&&(o.value=Symbol("update"),l.set(p,Z.offsetHeight))}})})}function v(b,Z){var p=e(b),y=a.get(p);Z?(a.set(p,Z.$el||Z),f()):a.delete(p),!y!=!Z&&(Z?t==null||t(b):i==null||i(b))}return[v,f,l,o]}function w_(n,e,t,i,a,l,o,r){var f;return function(v){if(v==null){r();return}At.cancel(f);var b=e.value,Z=i.itemHeight;if(typeof v=="number")o(v);else if(v&&Yt(v)==="object"){var p,y=v.align;"index"in v?p=v.index:p=b.findIndex(function(G){return a(G)===v.key});var X=v.offset,m=X===void 0?0:X,N=function G(d,u){if(!(d<0||!n.value)){var s=n.value.clientHeight,h=!1,c=u;if(s){for(var W=u||y,M=0,I=0,w=0,C=Math.min(b.length,p),x=0;x<=C;x+=1){var R=a(b[x]);I=M;var g=t.get(R);w=I+(g===void 0?Z:g),M=w,x===p&&g===void 0&&(h=!0)}var S=n.value.scrollTop,L=null;switch(W){case"top":L=I-m;break;case"bottom":L=w-s+m;break;default:{var V=S+s;IV&&(c="bottom")}}L!==null&&L!==S&&o(L)}f=At(function(){h&&l(),G(d-1,c)})}};N(5)}}}var g_=(typeof navigator>"u"?"undefined":Yt(navigator))==="object"&&/Firefox/i.test(navigator.userAgent);const V_=g_,Vx=function(n,e){var t=!1,i=null;function a(){clearTimeout(i),t=!0,i=setTimeout(function(){t=!1},50)}return function(l){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=l<0&&n.value||l>0&&e.value;return o&&r?(clearTimeout(i),t=!1):(!r||t)&&a(),!t&&r}};function L_(n,e,t,i){var a=0,l=null,o=null,r=!1,f=Vx(e,t);function v(Z){if(n.value){At.cancel(l);var p=Z.deltaY;a+=p,o=p,!f(p)&&(V_||Z.preventDefault(),l=At(function(){var y=r?10:1;i(a*y),a=0}))}}function b(Z){n.value&&(r=Z.detail===o)}return[v,b]}var R_=14/15;function T_(n,e,t){var i=!1,a=0,l=null,o=null,r=function(){l&&(l.removeEventListener("touchmove",f),l.removeEventListener("touchend",v))},f=function(y){if(i){var X=Math.ceil(y.touches[0].pageY),m=a-X;a=X,t(m)&&y.preventDefault(),clearInterval(o),o=setInterval(function(){m*=R_,(!t(m,!0)||Math.abs(m)<=.1)&&clearInterval(o)},16)}},v=function(){i=!1,r()},b=function(y){r(),y.touches.length===1&&!i&&(i=!0,a=Math.ceil(y.touches[0].pageY),l=y.target,l.addEventListener("touchmove",f,{passive:!1}),l.addEventListener("touchend",v))},Z=function(){};Kt(function(){document.addEventListener("touchmove",Z,{passive:!1}),rt(n,function(p){e.value.removeEventListener("touchstart",b),r(),clearInterval(o),p&&e.value.addEventListener("touchstart",b,{passive:!1})},{immediate:!0})}),fn(function(){document.removeEventListener("touchmove",Z)})}var x_=["prefixCls","height","itemHeight","fullHeight","data","itemKey","virtual","component","onScroll","children","style","class"],C_=[],S_={overflowY:"auto",overflowAnchor:"none"};function z_(n,e,t,i,a,l){var o=l.getKey;return n.slice(e,t+1).map(function(r,f){var v=e+f,b=a(r,v,{}),Z=o(r);return D(N_,{key:Z,setRef:function(y){return i(r,y)}},{default:function(){return[b]}})})}var k_=He({compatConfig:{MODE:3},name:"List",inheritAttrs:!1,props:{prefixCls:String,data:We.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup:function(e,t){var i=t.expose,a=de(function(){var H=e.height,k=e.itemHeight,F=e.virtual;return!!(F!==!1&&H&&k)}),l=de(function(){var H=e.height,k=e.itemHeight,F=e.data;return a.value&&F&&k*F.length>H}),o=zn({scrollTop:0,scrollMoving:!1}),r=de(function(){return e.data||C_}),f=Gn([]);rt(r,function(){f.value=on(r.value).slice()},{immediate:!0});var v=Gn(function(H){});rt(function(){return e.itemKey},function(H){typeof H=="function"?v.value=H:v.value=function(k){return k==null?void 0:k[H]}},{immediate:!0});var b=Ne(),Z=Ne(),p=Ne(),y=function(k){return v.value(k)},X={getKey:y};function m(H){var k;typeof H=="function"?k=H(o.scrollTop):k=H;var F=I(k);b.value&&(b.value.scrollTop=F),o.scrollTop=F}var N=Y_(f,y,null,null),G=ft(N,4),d=G[0],u=G[1],s=G[2],h=G[3],c=zn({scrollHeight:void 0,start:0,end:0,offset:void 0}),W=Ne(0);Kt(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),Dl(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),rt([a,f],function(){a.value||Xn(c,{scrollHeight:void 0,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([a,f,W,l],function(){a.value&&!l.value&&Xn(c,{scrollHeight:W.value,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([l,a,function(){return o.scrollTop},f,h,function(){return e.height},W],function(){if(!(!a.value||!l.value)){for(var H=0,k,F,O,Q=f.value.length,oe=f.value,se=o.scrollTop,he=e.itemHeight,pe=e.height,re=se+pe,_=0;_=se&&(k=_,F=H),O===void 0&&le>re&&(O=_),H=le}k===void 0&&(k=0,F=0),O===void 0&&(O=Q-1),O=Math.min(O+1,Q),Xn(c,{scrollHeight:H,start:k,end:O,offset:F})}},{immediate:!0});var M=de(function(){return c.scrollHeight-e.height});function I(H){var k=H;return Number.isNaN(M.value)||(k=Math.min(k,M.value)),k=Math.max(k,0),k}var w=de(function(){return o.scrollTop<=0}),C=de(function(){return o.scrollTop>=M.value}),x=Vx(w,C);function R(H){var k=H;m(k)}function g(H){var k,F=H.currentTarget.scrollTop;Math.abs(F-o.scrollTop)>=1&&m(F),(k=e.onScroll)===null||k===void 0||k.call(e,H)}var S=L_(a,w,C,function(H){m(function(k){var F=k+H;return F})}),L=ft(S,2),V=L[0],Y=L[1];T_(a,b,function(H,k){return x(H,k)?!1:(V({preventDefault:function(){},deltaY:H}),!0)});function T(H){a.value&&H.preventDefault()}var J=function(){b.value&&(b.value.removeEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.removeEventListener("DOMMouseScroll",Y),b.value.removeEventListener("MozMousePixelScroll",T))};qt(function(){cn(function(){b.value&&(J(),b.value.addEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.addEventListener("DOMMouseScroll",Y),b.value.addEventListener("MozMousePixelScroll",T))})}),fn(function(){J()});var U=w_(b,f,s,e,y,u,m,function(){var H;(H=p.value)===null||H===void 0||H.delayHidden()});i({scrollTo:U});var K=de(function(){var H=null;return e.height&&(H=P(ce({},e.fullHeight?"height":"maxHeight",e.height+"px"),S_),a.value&&(H.overflowY="hidden",o.scrollMoving&&(H.pointerEvents="none"))),H});return rt([function(){return c.start},function(){return c.end},f],function(){if(e.onVisibleChange){var H=f.value.slice(c.start,c.end+1);e.onVisibleChange(H,f.value)}},{flush:"post"}),{state:o,mergedData:f,componentStyle:K,onFallbackScroll:g,onScrollBar:R,componentRef:b,useVirtual:a,calRes:c,collectHeight:u,setInstance:d,sharedConfig:X,scrollBarRef:p,fillerInnerRef:Z}},render:function(){var e=this,t=P(P({},this.$props),this.$attrs),i=t.prefixCls,a=i===void 0?"rc-virtual-list":i,l=t.height;t.itemHeight,t.fullHeight,t.data,t.itemKey,t.virtual;var o=t.component,r=o===void 0?"div":o;t.onScroll;var f=t.children,v=f===void 0?this.$slots.default:f,b=t.style,Z=t.class,p=jt(t,x_),y=_e(a,Z),X=this.state.scrollTop,m=this.calRes,N=m.scrollHeight,G=m.offset,d=m.start,u=m.end,s=this.componentStyle,h=this.onFallbackScroll,c=this.onScrollBar,W=this.useVirtual,M=this.collectHeight,I=this.sharedConfig,w=this.setInstance,C=this.mergedData;return D("div",P({style:P(P({},b),{},{position:"relative"}),class:y},p),[D(r,{class:"".concat(a,"-holder"),style:s,ref:"componentRef",onScroll:h},{default:function(){return[D(X_,{prefixCls:a,height:N,offset:G,onInnerResize:M,ref:"fillerInnerRef"},{default:function(){return z_(C,d,u,w,v,I)}})]}}),W&&D(I_,{ref:"scrollBarRef",prefixCls:a,scrollTop:X,height:l,scrollHeight:N,count:C.length,onScroll:c,onStartMove:function(){e.state.scrollMoving=!0},onStopMove:function(){e.state.scrollMoving=!1}},null)])}});const Lx=k_;function kG(n,e,t){var i=Ne(n());return rt(e,function(a,l){t?t(a,l)&&(i.value=n()):i.value=n()}),i}function F_(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}var Rx=Symbol("SelectContextKey");function J_(n){return hn(Rx,n)}function D_(){return un(Rx,{})}var O_=["disabled","title","children","style","class","className"];function WY(n){return typeof n=="string"||typeof n=="number"}var j_=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["option"],setup:function(e,t){var i=t.expose,a=t.slots,l=Fh(),o=D_(),r=de(function(){return"".concat(l.prefixCls,"-item")}),f=kG(function(){return o.flattenOptions},[function(){return l.open},function(){return o.flattenOptions}],function(c){return c[0]}),v=Xh(),b=function(W){W.preventDefault()},Z=function(W){v.current&&v.current.scrollTo(typeof W=="number"?{index:W}:W)},p=function(W){for(var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,I=f.value.length,w=0;w1&&arguments[1]!==void 0?arguments[1]:!1;y.activeIndex=W;var I={source:M?"keyboard":"mouse"},w=f.value[W];if(!w){o.onActiveValue(null,-1,I);return}o.onActiveValue(w.value,W,I)};rt([function(){return f.value.length},function(){return l.searchValue}],function(){X(o.defaultActiveFirstOption!==!1?p(0):-1)},{immediate:!0});var m=function(W){return o.rawValues.has(W)&&l.mode!=="combobox"};rt([function(){return l.open},function(){return l.searchValue}],function(){if(!l.multiple&&l.open&&o.rawValues.size===1){var c=Array.from(o.rawValues)[0],W=on(f.value).findIndex(function(M){var I=M.data;return I[o.fieldNames.value]===c});W!==-1&&(X(W),cn(function(){Z(W)}))}l.open&&cn(function(){var M;(M=v.current)===null||M===void 0||M.scrollTo(void 0)})},{immediate:!0,flush:"post"});var N=function(W){W!==void 0&&o.onSelect(W,{selected:!o.rawValues.has(W)}),l.multiple||l.toggleOpen(!1)},G=function(W){return typeof W.label=="function"?W.label():W.label};function d(c){var W=f.value[c];if(!W)return null;var M=W.data||{},I=M.value,w=W.group,C=ws(M,!0),x=G(W);return W?D("div",P(P({"aria-label":typeof x=="string"&&!w?x:null},C),{},{key:c,role:w?"presentation":"option",id:"".concat(l.id,"_list_").concat(c),"aria-selected":m(I)}),[I]):null}var u=function(W){var M=W.which,I=W.ctrlKey;switch(M){case bt.N:case bt.P:case bt.UP:case bt.DOWN:{var w=0;if(M===bt.UP?w=-1:M===bt.DOWN?w=1:F_()&&I&&(M===bt.N?w=1:M===bt.P&&(w=-1)),w!==0){var C=p(y.activeIndex+w,w);Z(C),X(C,!0)}break}case bt.ENTER:{var x=f.value[y.activeIndex];x&&!x.data.disabled?N(x.value):N(void 0),l.open&&W.preventDefault();break}case bt.ESC:l.toggleOpen(!1),l.open&&W.stopPropagation()}},s=function(){},h=function(W){Z(W)};return i({onKeydown:u,onKeyup:s,scrollTo:h}),function(){var c=l.id,W=l.notFoundContent,M=l.onPopupScroll,I=o.menuItemSelectedIcon,w=o.fieldNames,C=o.virtual,x=o.listHeight,R=o.listItemHeight,g=a.option,S=y.activeIndex,L=Object.keys(w).map(function(V){return w[V]});return f.value.length===0?D("div",{role:"listbox",id:"".concat(c,"_list"),class:"".concat(r.value,"-empty"),onMousedown:b},[W]):D(ln,null,[D("div",{role:"listbox",id:"".concat(c,"_list"),style:{height:0,width:0,overflow:"hidden"}},[d(S-1),d(S),d(S+1)]),D(Lx,{itemKey:"key",ref:v,data:f.value,height:x,itemHeight:R,fullHeight:!1,onMousedown:b,onScroll:M,virtual:C},{default:function(Y,T){var J,U=Y.group,K=Y.groupOption,H=Y.data,k=Y.value,F=H.key,O=typeof Y.label=="function"?Y.label():Y.label;if(U){var Q,oe=(Q=H.title)!==null&&Q!==void 0?Q:WY(O)&&O;return D("div",{class:_e(r.value,"".concat(r.value,"-group")),title:oe},[g?g(H):O!==void 0?O:F])}var se=H.disabled,he=H.title;H.children;var pe=H.style,re=H.class,_=H.className,E=jt(H,O_),$=dn(E,L),ae=m(k),le="".concat(r.value,"-option"),ee=_e(r.value,le,re,_,(J={},ce(J,"".concat(le,"-grouped"),K),ce(J,"".concat(le,"-active"),S===T&&!se),ce(J,"".concat(le,"-disabled"),se),ce(J,"".concat(le,"-selected"),ae),J)),te=G(Y),be=!I||typeof I=="function"||ae,ne=typeof te=="number"?te:te||k,B=WY(ne)?ne.toString():void 0;return he!==void 0&&(B=he),D("div",P(P({},$),{},{"aria-selected":ae,class:ee,title:B,onMousemove:function(ue){E.onMousemove&&E.onMousemove(ue),!(S===T||se)&&X(T)},onClick:function(ue){se||N(k),E.onClick&&E.onClick(ue)},style:pe}),[D("div",{class:"".concat(le,"-content")},[g?g(H):ne]),Si(I)||ae,be&&D(zm,{class:"".concat(r.value,"-option-state"),customizeIcon:I,customizeIconProps:{isSelected:ae}},{default:function(){return[ae?"✓":null]}})])}})])}}});const U_=j_;var E_=["value","disabled"];function K_(n){var e=n.key,t=n.children,i=n.props,a=i.value,l=i.disabled,o=jt(i,E_),r=t==null?void 0:t.default;return P({key:e,value:a!==void 0?a:e,children:r,disabled:l||l===""},o)}function Tx(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=ti(n).map(function(i,a){var l;if(!Si(i)||!i.type)return null;var o=i.type.isSelectOptGroup,r=i.key,f=i.children,v=i.props;if(e||!o)return K_(i);var b=f&&f.default?f.default():void 0,Z=(v==null?void 0:v.label)||((l=f.label)===null||l===void 0?void 0:l.call(f))||r;return P(P({key:"__RC_SELECT_GRP__".concat(r===null?a:String(r),"__")},v),{},{label:Z,options:Tx(b||[])})}).filter(function(i){return i});return t}function H_(n,e,t){var i=Gn(),a=Gn(),l=Gn(),o=Gn([]);return rt([n,e],function(){n.value?o.value=on(n.value).slice():o.value=Tx(e.value)},{immediate:!0,deep:!0}),qt(function(){var r=o.value,f=new Map,v=new Map,b=t.value;function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=0;X0&&arguments[0]!==void 0?arguments[0]:Ne(""),e="rc_select_".concat(Q_());return n.value||e}function xx(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function iZ(n,e){return xx(n).join("").toUpperCase().includes(e)}const B_=function(n,e,t,i,a){return de(function(){var l=t.value,o=a==null?void 0:a.value,r=i==null?void 0:i.value;if(!l||r===!1)return n.value;var f=e.value,v=f.options,b=f.label,Z=f.value,p=[],y=typeof r=="function",X=l.toUpperCase(),m=y?r:function(G,d){return o?iZ(d[o],X):d[v]?iZ(d[b!=="children"?b:"label"],X):iZ(d[Z],X)},N=y?function(G){return J2(G)}:function(G){return G};return n.value.forEach(function(G){if(G[v]){var d=m(l,N(G));if(d)p.push(G);else{var u=G[v].filter(function(s){return m(l,N(s))});u.length&&p.push(P(P({},G),{},ce({},v,u)))}return}m(l,N(G))&&p.push(G)}),p})},A_=function(n,e){var t=Gn({values:new Map,options:new Map}),i=de(function(){var l=t.value,o=l.values,r=l.options,f=n.value.map(function(Z){if(Z.label===void 0){var p;return P(P({},Z),{},{label:(p=o.get(Z.value))===null||p===void 0?void 0:p.label})}return Z}),v=new Map,b=new Map;return f.forEach(function(Z){v.set(Z.value,Z),b.set(Z.value,e.value.get(Z.value)||r.get(Z.value))}),t.value.values=v,t.value.options=b,f}),a=function(o){return e.value.get(o)||t.value.options.get(o)};return[i,a]};function Wi(n,e){var t=e||{},i=t.defaultValue,a=t.value,l=a===void 0?Ne():a,o=typeof n=="function"?n():n;l.value!==void 0&&(o=mi(l)),i!==void 0&&(o=typeof i=="function"?i():i);var r=Ne(o),f=Ne(o);qt(function(){var b=l.value!==void 0?l.value:r.value;e.postState&&(b=e.postState(b)),f.value=b});function v(b){var Z=f.value;r.value=b,on(f.value)!==b&&e.onChange&&e.onChange(b,Z)}return rt(l,function(){r.value=l.value}),[f,v]}function di(n){var e=typeof n=="function"?n():n,t=Ne(e);function i(a){t.value=a}return[t,i]}var __=["inputValue"];function Cx(){return P(P({},B0()),{},{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:We.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:We.any,defaultValue:We.any,onChange:Function,children:Array})}function $_(n){return!n||Yt(n)!=="object"}const q_=He({compatConfig:{MODE:3},name:"Select",inheritAttrs:!1,props:pn(Cx(),{prefixCls:"vc-select",autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup:function(e,t){var i=t.expose,a=t.attrs,l=t.slots,o=FG(Ot(e,"id")),r=de(function(){return wx(e.mode)}),f=de(function(){return!!(!e.options&&e.children)}),v=de(function(){return e.filterOption===void 0&&e.mode==="combobox"?!1:e.filterOption}),b=de(function(){return AT(e.fieldNames,f.value)}),Z=Wi("",{value:de(function(){return e.searchValue!==void 0?e.searchValue:e.inputValue}),postState:function(ne){return ne||""}}),p=ft(Z,2),y=p[0],X=p[1],m=H_(Ot(e,"options"),Ot(e,"children"),b),N=m.valueOptions,G=m.labelOptions,d=m.options,u=function(ne){var B=xx(ne);return B.map(function(q){var ue,ve,Ge,Je;if($_(q))ue=q;else{var xe;Ge=q.key,ve=q.label,ue=(xe=q.value)!==null&&xe!==void 0?xe:Ge}var ke=N.value.get(ue);if(ke){var Pe;ve===void 0&&(ve=ke==null?void 0:ke[e.optionLabelProp||b.value.label]),Ge===void 0&&(Ge=(Pe=ke==null?void 0:ke.key)!==null&&Pe!==void 0?Pe:ue),Je=ke==null?void 0:ke.disabled}return{label:ve,value:ue,key:Ge,disabled:Je,option:ke}})},s=Wi(e.defaultValue,{value:Ot(e,"value")}),h=ft(s,2),c=h[0],W=h[1],M=de(function(){var be,ne=u(c.value);return e.mode==="combobox"&&!((be=ne[0])!==null&&be!==void 0&&be.value)?[]:ne}),I=A_(M,N),w=ft(I,2),C=w[0],x=w[1],R=de(function(){if(!e.mode&&C.value.length===1){var be=C.value[0];if(be.value===null&&(be.label===null||be.label===void 0))return[]}return C.value.map(function(ne){var B;return P(P({},ne),{},{label:(B=typeof ne.label=="function"?ne.label():ne.label)!==null&&B!==void 0?B:ne.value})})}),g=de(function(){return new Set(C.value.map(function(be){return be.value}))});qt(function(){if(e.mode==="combobox"){var be,ne=(be=C.value[0])===null||be===void 0?void 0:be.value;ne!=null&&X(String(ne))}},{flush:"post"});var S=function(ne,B){var q,ue=B??ne;return q={},ce(q,b.value.value,ne),ce(q,b.value.label,ue),q},L=Gn();qt(function(){if(e.mode!=="tags"){L.value=d.value;return}var be=d.value.slice(),ne=function(q){return N.value.has(q)};yt(C.value).sort(function(B,q){return B.value2&&arguments[2]!==void 0?arguments[2]:{},ue=q.source,ve=ue===void 0?"keyboard":ue;se(B),e.backfill&&e.mode==="combobox"&&ne!==null&&ve==="keyboard"&&F(String(ne))},re=function(ne,B){var q=function(){var we,Se=x(ne),De=Se==null?void 0:Se[b.value.label];return[e.labelInValue?{label:typeof De=="function"?De():De,originLabel:De,value:ne,key:(we=Se==null?void 0:Se.key)!==null&&we!==void 0?we:ne}:ne,J2(Se)]};if(B&&e.onSelect){var ue=q(),ve=ft(ue,2),Ge=ve[0],Je=ve[1];e.onSelect(Ge,Je)}else if(!B&&e.onDeselect){var xe=q(),ke=ft(xe,2),Pe=ke[0],Be=ke[1];e.onDeselect(Pe,Be)}},_=function(ne,B){var q,ue=r.value?B.selected:!0;ue?q=r.value?[].concat(yt(C.value),[ne]):[ne]:q=C.value.filter(function(ve){return ve.value!==ne}),U(q),re(ne,ue),e.mode==="combobox"?F(""):(!r.value||e.autoClearSearchValue)&&(X(""),F(""))},E=function(ne,B){U(ne),(B.type==="remove"||B.type==="clear")&&B.values.forEach(function(q){re(q.value,!1)})},$=function(ne,B){if(X(ne),F(null),B.source==="submit"){var q=(ne||"").trim();if(q){var ue=Array.from(new Set([].concat(yt(g.value),[q])));U(ue),re(q,!0),X("")}return}if(B.source!=="blur"){var ve;e.mode==="combobox"&&U(ne),(ve=e.onSearch)===null||ve===void 0||ve.call(e,ne)}},ae=function(ne){var B=ne;e.mode!=="tags"&&(B=ne.map(function(ue){var ve=G.value.get(ue);return ve==null?void 0:ve.value}).filter(function(ue){return ue!==void 0}));var q=Array.from(new Set([].concat(yt(g.value),yt(B))));U(q),q.forEach(function(ue){re(ue,!0)})},le=de(function(){return e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1});J_(km(P(P({},m),{},{flattenOptions:J,onActiveValue:pe,defaultActiveFirstOption:he,onSelect:_,menuItemSelectedIcon:Ot(e,"menuItemSelectedIcon"),rawValues:g,fieldNames:b,virtual:le,listHeight:Ot(e,"listHeight"),listItemHeight:Ot(e,"listItemHeight"),childrenAsData:f})));var ee=Ne();i({focus:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.focus()},blur:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.blur()},scrollTo:function(ne){var B;(B=ee.value)===null||B===void 0||B.scrollTo(ne)}});var te=de(function(){return dn(e,["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange"])});return function(){return D(zG,P(P(P({},te.value),a),{},{id:o,prefixCls:e.prefixCls,ref:ee,omitDomProps:__,mode:e.mode,displayValues:R.value,onDisplayValuesChange:E,searchValue:y.value,onSearch:$,onSearchSplit:ae,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:U_,emptyOptions:!J.value.length,activeValue:k.value,activeDescendantId:"".concat(o,"_list_").concat(oe.value)}),l)}}});var JG=function(){return null};JG.isSelectOption=!0;JG.displayName="ASelectOption";const e6=JG;var DG=function(){return null};DG.isSelectOptGroup=!0;DG.displayName="ASelectOptGroup";const t6=DG;var n6={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"};const i6=n6;function XY(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=n.loading,i=n.multiple,a=n.prefixCls,l=n.suffixIcon||e.suffixIcon&&e.suffixIcon(),o=n.clearIcon||e.clearIcon&&e.clearIcon(),r=n.menuItemSelectedIcon||e.menuItemSelectedIcon&&e.menuItemSelectedIcon(),f=n.removeIcon||e.removeIcon&&e.removeIcon(),v=o;o||(v=D(So,null,null));var b=null;if(l!==void 0)b=l;else if(t)b=D(Yr,{spin:!0},null);else{var Z="".concat(a,"-suffix");b=function(m){var N=m.open,G=m.showSearch;return N&&G?D($0,{class:Z},null):D(Jh,{class:Z},null)}}var p=null;r!==void 0?p=r:i?p=D(_0,null,null):p=null;var y=null;return f!==void 0?y=f:y=D(Ar,null,null),{clearIcon:v,suffixIcon:b,itemIcon:p,removeIcon:y}}var Fm=Symbol("ContextProps"),Jm=Symbol("InternalContextProps"),d6=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:de(function(){return!0}),i=Ne(new Map),a=function(r,f){i.value.set(r,f),i.value=new Map(i.value)},l=function(r){i.value.delete(r),i.value=new Map(i.value)};rt([t,i],function(){}),hn(Fm,e),hn(Jm,{addFormItemField:a,removeFormItemField:l})},A2={id:de(function(){}),onFieldBlur:function(){},onFieldChange:function(){},clearValidate:function(){}},_2={addFormItemField:function(){},removeFormItemField:function(){}},Hi=function(){var e=un(Jm,_2),t=Symbol("FormItemFieldKey"),i=Wl();return e.addFormItemField(t,i.type),fn(function(){e.removeFormItemField(t)}),hn(Jm,_2),hn(Fm,A2),un(Fm,A2)};const Dm=He({compatConfig:{MODE:3},name:"AFormItemRest",setup:function(e,t){var i=t.slots;return hn(Jm,_2),hn(Fm,A2),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}});var KG=function(){return P(P({},dn(Cx(),["inputIcon","mode","getInputElement","getRawInputElement","backfill"])),{},{value:{type:[Array,Object,String,Number]},defaultValue:{type:[Array,Object,String,Number]},notFoundContent:We.any,suffixIcon:We.any,itemIcon:We.any,size:String,mode:String,bordered:{type:Boolean,default:!0},transitionName:String,choiceTransitionName:{type:String,default:""},"onUpdate:value":Function})},IY="SECRET_COMBOBOX_MODE_DO_NOT_USE",Or=He({compatConfig:{MODE:3},name:"ASelect",Option:e6,OptGroup:t6,inheritAttrs:!1,props:pn(KG(),{listHeight:256,listItemHeight:24}),SECRET_COMBOBOX_MODE_DO_NOT_USE:IY,slots:["notFoundContent","suffixIcon","itemIcon","removeIcon","clearIcon","dropdownRender","option","placeholder","tagRender","maxTagPlaceholder","optionLabel"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.slots,o=t.expose,r=Ne(),f=Hi(),v=function(){var w;(w=r.value)===null||w===void 0||w.focus()},b=function(){var w;(w=r.value)===null||w===void 0||w.blur()},Z=function(w){var C;(C=r.value)===null||C===void 0||C.scrollTo(w)},p=de(function(){var I=e.mode;if(I!=="combobox")return I===IY?"combobox":I}),y=Nt("select",e),X=y.prefixCls,m=y.direction,N=y.configProvider,G=y.size,d=y.getPrefixCls,u=de(function(){return d()}),s=de(function(){return Ir(u.value,"slide-up",e.transitionName)}),h=de(function(){var I;return _e((I={},ce(I,"".concat(X.value,"-lg"),G.value==="large"),ce(I,"".concat(X.value,"-sm"),G.value==="small"),ce(I,"".concat(X.value,"-rtl"),m.value==="rtl"),ce(I,"".concat(X.value,"-borderless"),!e.bordered),I))}),c=function(){for(var w=arguments.length,C=new Array(w),x=0;x=1},subscribe:function(e){return Us.size||this.register(),aZ+=1,Us.set(aZ,e),e(lb),aZ},unsubscribe:function(e){Us.delete(e),Us.size||this.unregister()},unregister:function(){var e=this;Object.keys(ib).forEach(function(t){var i=ib[t],a=e.matchHandlers[i];a==null||a.mql.removeListener(a==null?void 0:a.listener)}),Us.clear()},register:function(){var e=this;Object.keys(ib).forEach(function(t){var i=ib[t],a=function(r){var f=r.matches;e.dispatch(P(P({},lb),{},ce({},t,f)))},l=window.matchMedia(i);l.addListener(a),e.matchHandlers[i]={mql:l,listener:a},a(l)})}};const Tu=I6;function Bu(){var n=Ne({}),e=null;return Kt(function(){e=Tu.subscribe(function(t){n.value=t})}),la(function(){Tu.unsubscribe(e)}),n}var Sx=Symbol("SizeProvider"),Y6=function(e){var t=un("configProvider",fG),i=de(function(){return e.size||t.componentSize});return hn(Sx,i),i},zx=function(e){var t=e?de(function(){return e.size}):un(Sx,de(function(){return"default"}));return t};const w6=Y6;function Sa(n){var e=Gn();return qt(function(){e.value=n()},{flush:"sync"}),e}var g6=function(){return{prefixCls:String,shape:{type:String,default:"circle"},size:{type:[Number,String,Object],default:function(){return"default"}},src:String,srcset:String,icon:We.any,alt:String,gap:Number,draggable:{type:Boolean,default:void 0},crossOrigin:String,loadError:{type:Function}}},V6=He({compatConfig:{MODE:3},name:"AAvatar",inheritAttrs:!1,props:g6(),slots:["icon"],setup:function(e,t){var i=t.slots,a=t.attrs,l=Ne(!0),o=Ne(!1),r=Ne(1),f=Ne(null),v=Ne(null),b=Nt("avatar",e),Z=b.prefixCls,p=zx(),y=de(function(){return e.size==="default"?p.value:e.size}),X=Bu(),m=Sa(function(){if(Yt(e.size)==="object"){var u=Xc.find(function(h){return X.value[h]}),s=e.size[u];return s}}),N=function(s){return m.value?{width:"".concat(m.value,"px"),height:"".concat(m.value,"px"),lineHeight:"".concat(m.value,"px"),fontSize:"".concat(s?m.value/2:18,"px")}:{}},G=function(){if(!(!f.value||!v.value)){var s=f.value.offsetWidth,h=v.value.offsetWidth;if(s!==0&&h!==0){var c=e.gap,W=c===void 0?4:c;W*20&&arguments[0]!==void 0?arguments[0]:[],e=0,t=n.length;e=0||I.indexOf("Bottom")>=0?C.top="".concat(w.height-W.offset[1],"px"):(I.indexOf("Top")>=0||I.indexOf("bottom")>=0)&&(C.top="".concat(-W.offset[1],"px")),I.indexOf("left")>=0||I.indexOf("Right")>=0?C.left="".concat(w.width-W.offset[0],"px"):(I.indexOf("right")>=0||I.indexOf("Left")>=0)&&(C.left="".concat(-W.offset[0],"px")),c.style.transformOrigin="".concat(C.left," ").concat(C.top)}};return function(){var h,c,W,M=e.openClassName,I=e.color,w=e.overlayClassName,C=(h=Ri((c=i.default)===null||c===void 0?void 0:c.call(i)))!==null&&h!==void 0?h:null;C=C.length===1?C[0]:C;var x=b.value;if(e.visible===void 0&&y()&&(x=!1),!C)return null;var R=d(Si(C)?C:D("span",null,[C])),g=_e((W={},ce(W,M||"".concat(f.value,"-open"),!0),ce(W,R.props&&R.props.class,R.props&&R.props.class),W)),S=_e(w,ce({},"".concat(f.value,"-").concat(I),I&&VY.test(I))),L,V;I&&!VY.test(I)&&(L={backgroundColor:I},V={backgroundColor:I});var Y=P(P(P({},l),e),{},{prefixCls:f.value,getPopupContainer:v.value,builtinPlacements:N.value,visible:x,ref:Z,overlayClassName:S,overlayInnerStyle:L,onVisibleChange:X,onPopupAlign:s});return D(x6,Y,{default:function(){return[b.value?wn(R,{class:g}):R]},arrowContent:function(){return D("span",{class:"".concat(f.value,"-arrow-content"),style:V},null)},overlay:u})}}}),Xr=wi(F6);var J6=function(){return P(P({},BG()),{},{content:We.any,title:We.any})},D6=He({compatConfig:{MODE:3},name:"APopover",props:pn(J6(),P(P({},Dx()),{},{trigger:"hover",transitionName:"zoom-big",placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup:function(e,t){var i=t.expose,a=t.slots,l=Ne();i({getPopupDomNode:function(){var p,y;return(p=l.value)===null||p===void 0||(y=p.getPopupDomNode)===null||y===void 0?void 0:y.call(p)}});var o=Nt("popover",e),r=o.prefixCls,f=o.configProvider,v=de(function(){return f.getPrefixCls()}),b=function(){var p,y,X=e.title,m=X===void 0?Ri((p=a.title)===null||p===void 0?void 0:p.call(a)):X,N=e.content,G=N===void 0?Ri((y=a.content)===null||y===void 0?void 0:y.call(a)):N,d=!!(Array.isArray(m)?m.length:m),u=!!(Array.isArray(G)?G.length:m);if(!(!d&&!u))return D(ln,null,[d&&D("div",{class:"".concat(r.value,"-title")},[m]),D("div",{class:"".concat(r.value,"-inner-content")},[G])])};return function(){return D(Xr,P(P({},dn(e,["title","content"])),{},{prefixCls:r.value,ref:l,transitionName:Ir(v.value,"zoom-big",e.transitionName)}),{title:b,default:a.default})}}});const Ox=wi(D6);var O6=function(){return{prefixCls:String,maxCount:Number,maxStyle:{type:Object,default:void 0},maxPopoverPlacement:{type:String,default:"top"},maxPopoverTrigger:String,size:{type:[Number,String,Object],default:"default"}}},j6=He({compatConfig:{MODE:3},name:"AAvatarGroup",inheritAttrs:!1,props:O6(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("avatar-group",e),o=l.prefixCls,r=l.direction;return w6(e),function(){var f,v=e.maxPopoverPlacement,b=v===void 0?"top":v,Z=e.maxCount,p=e.maxStyle,y=e.maxPopoverTrigger,X=y===void 0?"hover":y,m=(f={},ce(f,o.value,!0),ce(f,"".concat(o.value,"-rtl"),r.value==="rtl"),ce(f,"".concat(a.class),!!a.class),f),N=ui(i,e),G=ti(N).map(function(h,c){return wn(h,{key:"avatar-key-".concat(c)})}),d=G.length;if(Z&&ZG}),X=function(){var G=e.target,d=G||Z,u=d();b.scrollEvent=hi(u,"scroll",function(s){y(s)}),y({target:u})},m=function(){b.scrollEvent&&b.scrollEvent.remove(),y.cancel()};return rt(function(){return e.target},function(){m(),cn(function(){X()})}),Kt(function(){cn(function(){X()})}),L0(function(){cn(function(){X()})}),oR(function(){m()}),fn(function(){m()}),function(){var N,G,d=D("div",{class:"".concat(r.value,"-content")},[D("div",{class:"".concat(r.value,"-icon")},[D(H6,null,null)])]),u=P(P({},a),{},{onClick:p,class:(N={},ce(N,"".concat(r.value),!0),ce(N,"".concat(a.class),a.class),ce(N,"".concat(r.value,"-rtl"),f.value==="rtl"),N)}),s=Ys("fade");return D(aa,s,{default:function(){return[vl(D("div",P(P({},u),{},{ref:v}),[((G=i.default)===null||G===void 0?void 0:G.call(i))||d]),[[gr,b.visible]])]}})}}});const B6=wi(Q6);function RY(n){var e=n.prefixCls,t=n.value,i=n.current,a=n.offset,l=a===void 0?0:a,o;return l&&(o={position:"absolute",top:"".concat(l,"00%"),left:0}),D("p",{style:o,class:_e("".concat(e,"-only-unit"),{current:i})},[t])}function A6(n,e,t){for(var i=n,a=0;(i+10)%10!==e;)i+=t,a+=t;return a}const _6=He({compatConfig:{MODE:3},name:"SingleNumber",props:{prefixCls:String,value:String,count:Number},setup:function(e){var t=de(function(){return Number(e.value)}),i=de(function(){return Math.abs(e.count)}),a=zn({prevValue:t.value,prevCount:i.value}),l=function(){a.prevValue=t.value,a.prevCount=i.value},o=Ne();return rt(t,function(){clearTimeout(o.value),o.value=setTimeout(function(){l()},1e3)},{flush:"post"}),la(function(){clearTimeout(o.value)}),function(){var r,f={},v=t.value;if(a.prevValue===v||Number.isNaN(v)||Number.isNaN(a.prevValue))r=[RY(P(P({},e),{},{current:!0}))],f={transition:"none"};else{r=[];for(var b=v+10,Z=[],p=v;p<=b;p+=1)Z.push(p);var y=Z.findIndex(function(m){return m%10===a.prevValue});r=Z.map(function(m,N){var G=m%10;return RY(P(P({},e),{},{value:G,offset:N-y,current:N===y}))});var X=a.prevCounte.overflowCount?"".concat(e.overflowCount,"+"):e.count}),v=de(function(){return e.status!==null&&e.status!==void 0||e.color!==null&&e.color!==void 0}),b=de(function(){return f.value==="0"||f.value===0}),Z=de(function(){return e.dot&&!b.value}),p=de(function(){return Z.value?"":f.value}),y=de(function(){var s=p.value===null||p.value===void 0||p.value==="";return(s||b.value&&!e.showZero)&&!Z.value}),X=Ne(e.count),m=Ne(p.value),N=Ne(Z.value);rt([function(){return e.count},p,Z],function(){y.value||(X.value=e.count,m.value=p.value,N.value=Z.value)},{immediate:!0});var G=de(function(){var s;return s={},ce(s,"".concat(o.value,"-status-dot"),v.value),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),Td(e.color)),s}),d=de(function(){return e.color&&!Td(e.color)?{background:e.color}:{}}),u=de(function(){var s;return s={},ce(s,"".concat(o.value,"-dot"),N.value),ce(s,"".concat(o.value,"-count"),!N.value),ce(s,"".concat(o.value,"-count-sm"),e.size==="small"),ce(s,"".concat(o.value,"-multiple-words"),!N.value&&m.value&&m.value.toString().length>1),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),Td(e.color)),s});return function(){var s,h,c,W=e.offset,M=e.title,I=e.color,w=a.style,C=ui(i,e,"text"),x=o.value,R=X.value,g=ti((s=i.default)===null||s===void 0?void 0:s.call(i));g=g.length?g:null;var S=!!(!y.value||i.count),L=function(){if(!W)return P({},w);var k={marginTop:jx(W[1])?"".concat(W[1],"px"):W[1]};return r.value==="rtl"?k.left="".concat(parseInt(W[0],10),"px"):k.right="".concat(-parseInt(W[0],10),"px"),P(P({},k),w)}(),V=M??(typeof R=="string"||typeof R=="number"?R:void 0),Y=S||!C?null:D("span",{class:"".concat(x,"-status-text")},[C]),T=Yt(R)==="object"||R===void 0&&i.count?wn(R??((h=i.count)===null||h===void 0?void 0:h.call(i)),{style:L},!1):null,J=_e(x,(c={},ce(c,"".concat(x,"-status"),v.value),ce(c,"".concat(x,"-not-a-wrapper"),!g),ce(c,"".concat(x,"-rtl"),r.value==="rtl"),c),a.class);if(!g&&v.value){var U=L.color;return D("span",P(P({},a),{},{class:J,style:L}),[D("span",{class:G.value,style:d.value},null),D("span",{style:{color:U},class:"".concat(x,"-status-text")},[C])])}var K=Ys(g?"".concat(x,"-zoom"):"",{appear:!1}),H=P(P({},L),e.numberStyle);return I&&!Td(I)&&(H=H||{},H.background=I),D("span",P(P({},a),{},{class:J}),[g,D(aa,K,{default:function(){return[vl(D(e8,{prefixCls:e.scrollNumberPrefixCls,show:S,class:u.value,count:m.value,title:V,style:H,key:"scrollNumber"},{default:function(){return[T]}}),[[gr,S]])]}}),Y])}}});Db.install=function(n){return n.component(Db.name,Db),n.component(Um.name,Um),n};var Pc={adjustX:1,adjustY:1},Qc=[0,0],a8={topLeft:{points:["bl","tl"],overflow:Pc,offset:[0,-4],targetOffset:Qc},topCenter:{points:["bc","tc"],overflow:Pc,offset:[0,-4],targetOffset:Qc},topRight:{points:["br","tr"],overflow:Pc,offset:[0,-4],targetOffset:Qc},bottomLeft:{points:["tl","bl"],overflow:Pc,offset:[0,4],targetOffset:Qc},bottomCenter:{points:["tc","bc"],overflow:Pc,offset:[0,4],targetOffset:Qc},bottomRight:{points:["tr","br"],overflow:Pc,offset:[0,4],targetOffset:Qc}};const r8=a8;var o8=["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"];const Ux=He({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:We.string.def("rc-dropdown"),transitionName:String,overlayClassName:We.string.def(""),openClassName:String,animation:We.any,align:We.object,overlayStyle:{type:Object,default:void 0},placement:We.string.def("bottomLeft"),overlay:We.any,trigger:We.oneOfType([We.string,We.arrayOf(We.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:We.array,hideAction:We.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:We.number.def(.15),mouseLeaveDelay:We.number.def(.1)},emits:["visibleChange","overlayClick"],slots:["overlay"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.expose,o=Ne(!!e.visible);rt(function(){return e.visible},function(X){X!==void 0&&(o.value=X)});var r=Ne();l({triggerRef:r});var f=function(m){e.visible===void 0&&(o.value=!1),a("overlayClick",m)},v=function(m){e.visible===void 0&&(o.value=m),a("visibleChange",m)},b=function(){var m,N=(m=i.overlay)===null||m===void 0?void 0:m.call(i),G={prefixCls:"".concat(e.prefixCls,"-menu"),onClick:f,getPopupContainer:function(){return r.value.getPopupDomNode()}};return D(ln,null,[e.arrow&&D("div",{class:"".concat(e.prefixCls,"-arrow")},null),wn(N,G,!1)])},Z=de(function(){var X=e.minOverlayWidthMatchTrigger,m=X===void 0?!e.alignPoint:X;return m}),p=function(){var m,N=(m=i.default)===null||m===void 0?void 0:m.call(i);return o.value&&N?wn(N[0],{class:e.openClassName||"".concat(e.prefixCls,"-open")},!1):N},y=de(function(){return!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction});return function(){var X=e.prefixCls,m=e.arrow,N=e.showAction,G=e.overlayStyle,d=e.trigger,u=e.placement,s=e.align,h=e.getPopupContainer,c=e.transitionName,W=e.animation,M=e.overlayClassName,I=jt(e,o8);return D(Pu,P(P({},I),{},{prefixCls:X,ref:r,popupClassName:_e(M,ce({},"".concat(X,"-show-arrow"),m)),popupStyle:G,builtinPlacements:r8,action:d,showAction:N,hideAction:y.value||[],popupPlacement:u,popupAlign:s,popupTransitionName:c,popupAnimation:W,popupVisible:o.value,stretch:Z.value?"minWidth":"",onPopupVisibleChange:v,getPopupContainer:h}),{popup:b,default:p})}}});var rZ={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},oZ={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},iu=[],lu=[];function s8(){var n=document.createElement("div"),e=n.style;"AnimationEvent"in window||(delete rZ.animationstart.animation,delete oZ.animationend.animation),"TransitionEvent"in window||(delete rZ.transitionstart.transition,delete oZ.transitionend.transition);function t(i,a){for(var l in i)if(i.hasOwnProperty(l)){var o=i[l];for(var r in o)if(r in e){a.push(o[r]);break}}}t(rZ,iu),t(oZ,lu)}typeof window<"u"&&typeof document<"u"&&s8();function TY(n,e,t){n.addEventListener(e,t,!1)}function xY(n,e,t){n.removeEventListener(e,t,!1)}var c8={startEvents:iu,addStartEventListener:function(e,t){if(iu.length===0){setTimeout(t,0);return}iu.forEach(function(i){TY(e,i,t)})},removeStartEventListener:function(e,t){iu.length!==0&&iu.forEach(function(i){xY(e,i,t)})},endEvents:lu,addEndEventListener:function(e,t){if(lu.length===0){setTimeout(t,0);return}lu.forEach(function(i){TY(e,i,t)})},removeEndEventListener:function(e,t){lu.length!==0&&lu.forEach(function(i){xY(e,i,t)})}};const ab=c8;var qo;function CY(n){return!n||n.offsetParent===null}function u8(n){var e=(n||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return e&&e[1]&&e[2]&&e[3]?!(e[1]===e[2]&&e[2]===e[3]):!0}const _G=He({compatConfig:{MODE:3},name:"Wave",props:{insertExtraNode:Boolean,disabled:Boolean},setup:function(e,t){var i=t.slots,a=t.expose,l=Wl(),o=Nt("",e),r=o.csp,f=o.prefixCls;a({csp:r});var v=null,b=null,Z=null,p=!1,y=null,X=!1,m=function(c){if(!X){var W=ds(l);!c||c.target!==W||p||u(W)}},N=function(c){!c||c.animationName!=="fadeEffect"||u(c.target)},G=function(){var c=e.insertExtraNode;return c?"".concat(f.value,"-click-animating"):"".concat(f.value,"-click-animating-without-extra-node")},d=function(c,W){var M=e.insertExtraNode,I=e.disabled;if(!(I||!c||CY(c)||c.className.indexOf("-leave")>=0)){y=document.createElement("div"),y.className="".concat(f.value,"-click-animating-node");var w=G();if(c.removeAttribute(w),c.setAttribute(w,"true"),qo=qo||document.createElement("style"),W&&W!=="#ffffff"&&W!=="rgb(255, 255, 255)"&&u8(W)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(W)&&W!=="transparent"){var C;(C=r.value)!==null&&C!==void 0&&C.nonce&&(qo.nonce=r.value.nonce),y.style.borderColor=W,qo.innerHTML=` +`].includes(re)})}),S=function(_,E,$){var ae,le=!0,ee=_;(ae=e.onActiveValueChange)===null||ae===void 0||ae.call(e,null);var te=$?null:cQ(_,e.tokenSeparators);if(e.mode!=="combobox"&&te){var be;ee="",(be=e.onSearchSplit)===null||be===void 0||be.call(e,te),R(!1),le=!1}return e.onSearch&&c.value!==ee&&e.onSearch(ee,{source:E?"typing":"effect"}),le},L=function(_){var E;!_||!_.trim()||(E=e.onSearch)===null||E===void 0||E.call(e,_,{source:"submit"})};rt(I,function(){!I.value&&!o.value&&e.mode!=="combobox"&&S("",!1,!1)},{immediate:!0,flush:"post"}),rt(function(){return e.disabled},function(){M.value&&e.disabled&&w(!1)},{immediate:!0});var V=gx(),Y=ft(V,2),T=Y[0],J=Y[1],U=function(_){var E,$=T(),ae=_.which;if(ae===bt.ENTER&&(e.mode!=="combobox"&&_.preventDefault(),I.value||R(!0)),J(!!c.value),ae===bt.BACKSPACE&&!$&&o.value&&!c.value&&e.displayValues.length){for(var le=yt(e.displayValues),ee=null,te=le.length-1;te>=0;te-=1){var be=le[te];if(!be.disabled){le.splice(te,1),ee=be;break}}ee&&e.onDisplayValuesChange(le,{type:"remove",values:[ee]})}for(var ne=arguments.length,B=new Array(ne>1?ne-1:0),q=1;q1?E-1:0),ae=1;ae1?te-1:0),ne=1;net}},render:function(){var e=this.state,t=e.dragging,i=e.visible,a=this.$props.prefixCls,l=this.getSpinHeight()+"px",o=this.getTop()+"px",r=this.showScroll(),f=r&&i;return D("div",{ref:this.scrollbarRef,class:_e("".concat(a,"-scrollbar"),ce({},"".concat(a,"-scrollbar-show"),r)),style:{width:"8px",top:0,bottom:0,right:0,position:"absolute",display:f?void 0:"none"},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[D("div",{ref:this.thumbRef,class:_e("".concat(a,"-scrollbar-thumb"),ce({},"".concat(a,"-scrollbar-thumb-moving"),t)),style:{width:"100%",height:l,top:o,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:"99px",cursor:"pointer",userSelect:"none"},onMousedown:this.onMouseDown},null)])}});function V_(n,e,t,i){var a=new Map,l=new Map,o=Ne(Symbol("update"));rt(n,function(){o.value=Symbol("update")});var r=0;function f(){r+=1;var b=r;Promise.resolve().then(function(){b===r&&a.forEach(function(Z,p){if(Z&&Z.offsetParent){var y=Z.offsetHeight;l.get(p)!==y&&(o.value=Symbol("update"),l.set(p,Z.offsetHeight))}})})}function v(b,Z){var p=e(b),y=a.get(p);Z?(a.set(p,Z.$el||Z),f()):a.delete(p),!y!=!Z&&(Z?t==null||t(b):i==null||i(b))}return[v,f,l,o]}function L_(n,e,t,i,a,l,o,r){var f;return function(v){if(v==null){r();return}At.cancel(f);var b=e.value,Z=i.itemHeight;if(typeof v=="number")o(v);else if(v&&Yt(v)==="object"){var p,y=v.align;"index"in v?p=v.index:p=b.findIndex(function(G){return a(G)===v.key});var X=v.offset,m=X===void 0?0:X,N=function G(d,u){if(!(d<0||!n.value)){var s=n.value.clientHeight,h=!1,c=u;if(s){for(var W=u||y,M=0,I=0,w=0,C=Math.min(b.length,p),x=0;x<=C;x+=1){var R=a(b[x]);I=M;var g=t.get(R);w=I+(g===void 0?Z:g),M=w,x===p&&g===void 0&&(h=!0)}var S=n.value.scrollTop,L=null;switch(W){case"top":L=I-m;break;case"bottom":L=w-s+m;break;default:{var V=S+s;IV&&(c="bottom")}}L!==null&&L!==S&&o(L)}f=At(function(){h&&l(),G(d-1,c)})}};N(5)}}}var R_=(typeof navigator>"u"?"undefined":Yt(navigator))==="object"&&/Firefox/i.test(navigator.userAgent);const T_=R_,Tx=function(n,e){var t=!1,i=null;function a(){clearTimeout(i),t=!0,i=setTimeout(function(){t=!1},50)}return function(l){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=l<0&&n.value||l>0&&e.value;return o&&r?(clearTimeout(i),t=!1):(!r||t)&&a(),!t&&r}};function x_(n,e,t,i){var a=0,l=null,o=null,r=!1,f=Tx(e,t);function v(Z){if(n.value){At.cancel(l);var p=Z.deltaY;a+=p,o=p,!f(p)&&(T_||Z.preventDefault(),l=At(function(){var y=r?10:1;i(a*y),a=0}))}}function b(Z){n.value&&(r=Z.detail===o)}return[v,b]}var C_=14/15;function S_(n,e,t){var i=!1,a=0,l=null,o=null,r=function(){l&&(l.removeEventListener("touchmove",f),l.removeEventListener("touchend",v))},f=function(y){if(i){var X=Math.ceil(y.touches[0].pageY),m=a-X;a=X,t(m)&&y.preventDefault(),clearInterval(o),o=setInterval(function(){m*=C_,(!t(m,!0)||Math.abs(m)<=.1)&&clearInterval(o)},16)}},v=function(){i=!1,r()},b=function(y){r(),y.touches.length===1&&!i&&(i=!0,a=Math.ceil(y.touches[0].pageY),l=y.target,l.addEventListener("touchmove",f,{passive:!1}),l.addEventListener("touchend",v))},Z=function(){};Kt(function(){document.addEventListener("touchmove",Z,{passive:!1}),rt(n,function(p){e.value.removeEventListener("touchstart",b),r(),clearInterval(o),p&&e.value.addEventListener("touchstart",b,{passive:!1})},{immediate:!0})}),fn(function(){document.removeEventListener("touchmove",Z)})}var z_=["prefixCls","height","itemHeight","fullHeight","data","itemKey","virtual","component","onScroll","children","style","class"],k_=[],F_={overflowY:"auto",overflowAnchor:"none"};function J_(n,e,t,i,a,l){var o=l.getKey;return n.slice(e,t+1).map(function(r,f){var v=e+f,b=a(r,v,{}),Z=o(r);return D(Y_,{key:Z,setRef:function(y){return i(r,y)}},{default:function(){return[b]}})})}var D_=He({compatConfig:{MODE:3},name:"List",inheritAttrs:!1,props:{prefixCls:String,data:We.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup:function(e,t){var i=t.expose,a=de(function(){var H=e.height,k=e.itemHeight,F=e.virtual;return!!(F!==!1&&H&&k)}),l=de(function(){var H=e.height,k=e.itemHeight,F=e.data;return a.value&&F&&k*F.length>H}),o=zn({scrollTop:0,scrollMoving:!1}),r=de(function(){return e.data||k_}),f=Gn([]);rt(r,function(){f.value=on(r.value).slice()},{immediate:!0});var v=Gn(function(H){});rt(function(){return e.itemKey},function(H){typeof H=="function"?v.value=H:v.value=function(k){return k==null?void 0:k[H]}},{immediate:!0});var b=Ne(),Z=Ne(),p=Ne(),y=function(k){return v.value(k)},X={getKey:y};function m(H){var k;typeof H=="function"?k=H(o.scrollTop):k=H;var F=I(k);b.value&&(b.value.scrollTop=F),o.scrollTop=F}var N=V_(f,y,null,null),G=ft(N,4),d=G[0],u=G[1],s=G[2],h=G[3],c=zn({scrollHeight:void 0,start:0,end:0,offset:void 0}),W=Ne(0);Kt(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),Dl(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),rt([a,f],function(){a.value||Xn(c,{scrollHeight:void 0,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([a,f,W,l],function(){a.value&&!l.value&&Xn(c,{scrollHeight:W.value,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([l,a,function(){return o.scrollTop},f,h,function(){return e.height},W],function(){if(!(!a.value||!l.value)){for(var H=0,k,F,O,Q=f.value.length,oe=f.value,se=o.scrollTop,he=e.itemHeight,pe=e.height,re=se+pe,_=0;_=se&&(k=_,F=H),O===void 0&&le>re&&(O=_),H=le}k===void 0&&(k=0,F=0),O===void 0&&(O=Q-1),O=Math.min(O+1,Q),Xn(c,{scrollHeight:H,start:k,end:O,offset:F})}},{immediate:!0});var M=de(function(){return c.scrollHeight-e.height});function I(H){var k=H;return Number.isNaN(M.value)||(k=Math.min(k,M.value)),k=Math.max(k,0),k}var w=de(function(){return o.scrollTop<=0}),C=de(function(){return o.scrollTop>=M.value}),x=Tx(w,C);function R(H){var k=H;m(k)}function g(H){var k,F=H.currentTarget.scrollTop;Math.abs(F-o.scrollTop)>=1&&m(F),(k=e.onScroll)===null||k===void 0||k.call(e,H)}var S=x_(a,w,C,function(H){m(function(k){var F=k+H;return F})}),L=ft(S,2),V=L[0],Y=L[1];S_(a,b,function(H,k){return x(H,k)?!1:(V({preventDefault:function(){},deltaY:H}),!0)});function T(H){a.value&&H.preventDefault()}var J=function(){b.value&&(b.value.removeEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.removeEventListener("DOMMouseScroll",Y),b.value.removeEventListener("MozMousePixelScroll",T))};qt(function(){cn(function(){b.value&&(J(),b.value.addEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.addEventListener("DOMMouseScroll",Y),b.value.addEventListener("MozMousePixelScroll",T))})}),fn(function(){J()});var U=L_(b,f,s,e,y,u,m,function(){var H;(H=p.value)===null||H===void 0||H.delayHidden()});i({scrollTo:U});var K=de(function(){var H=null;return e.height&&(H=P(ce({},e.fullHeight?"height":"maxHeight",e.height+"px"),F_),a.value&&(H.overflowY="hidden",o.scrollMoving&&(H.pointerEvents="none"))),H});return rt([function(){return c.start},function(){return c.end},f],function(){if(e.onVisibleChange){var H=f.value.slice(c.start,c.end+1);e.onVisibleChange(H,f.value)}},{flush:"post"}),{state:o,mergedData:f,componentStyle:K,onFallbackScroll:g,onScrollBar:R,componentRef:b,useVirtual:a,calRes:c,collectHeight:u,setInstance:d,sharedConfig:X,scrollBarRef:p,fillerInnerRef:Z}},render:function(){var e=this,t=P(P({},this.$props),this.$attrs),i=t.prefixCls,a=i===void 0?"rc-virtual-list":i,l=t.height;t.itemHeight,t.fullHeight,t.data,t.itemKey,t.virtual;var o=t.component,r=o===void 0?"div":o;t.onScroll;var f=t.children,v=f===void 0?this.$slots.default:f,b=t.style,Z=t.class,p=jt(t,z_),y=_e(a,Z),X=this.state.scrollTop,m=this.calRes,N=m.scrollHeight,G=m.offset,d=m.start,u=m.end,s=this.componentStyle,h=this.onFallbackScroll,c=this.onScrollBar,W=this.useVirtual,M=this.collectHeight,I=this.sharedConfig,w=this.setInstance,C=this.mergedData;return D("div",P({style:P(P({},b),{},{position:"relative"}),class:y},p),[D(r,{class:"".concat(a,"-holder"),style:s,ref:"componentRef",onScroll:h},{default:function(){return[D(I_,{prefixCls:a,height:N,offset:G,onInnerResize:M,ref:"fillerInnerRef"},{default:function(){return J_(C,d,u,w,v,I)}})]}}),W&&D(g_,{ref:"scrollBarRef",prefixCls:a,scrollTop:X,height:l,scrollHeight:N,count:C.length,onScroll:c,onStartMove:function(){e.state.scrollMoving=!0},onStopMove:function(){e.state.scrollMoving=!1}},null)])}});const xx=D_;function JG(n,e,t){var i=Ne(n());return rt(e,function(a,l){t?t(a,l)&&(i.value=n()):i.value=n()}),i}function O_(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}var Cx=Symbol("SelectContextKey");function j_(n){return hn(Cx,n)}function U_(){return un(Cx,{})}var E_=["disabled","title","children","style","class","className"];function XY(n){return typeof n=="string"||typeof n=="number"}var K_=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["option"],setup:function(e,t){var i=t.expose,a=t.slots,l=Jh(),o=U_(),r=de(function(){return"".concat(l.prefixCls,"-item")}),f=JG(function(){return o.flattenOptions},[function(){return l.open},function(){return o.flattenOptions}],function(c){return c[0]}),v=Nh(),b=function(W){W.preventDefault()},Z=function(W){v.current&&v.current.scrollTo(typeof W=="number"?{index:W}:W)},p=function(W){for(var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,I=f.value.length,w=0;w1&&arguments[1]!==void 0?arguments[1]:!1;y.activeIndex=W;var I={source:M?"keyboard":"mouse"},w=f.value[W];if(!w){o.onActiveValue(null,-1,I);return}o.onActiveValue(w.value,W,I)};rt([function(){return f.value.length},function(){return l.searchValue}],function(){X(o.defaultActiveFirstOption!==!1?p(0):-1)},{immediate:!0});var m=function(W){return o.rawValues.has(W)&&l.mode!=="combobox"};rt([function(){return l.open},function(){return l.searchValue}],function(){if(!l.multiple&&l.open&&o.rawValues.size===1){var c=Array.from(o.rawValues)[0],W=on(f.value).findIndex(function(M){var I=M.data;return I[o.fieldNames.value]===c});W!==-1&&(X(W),cn(function(){Z(W)}))}l.open&&cn(function(){var M;(M=v.current)===null||M===void 0||M.scrollTo(void 0)})},{immediate:!0,flush:"post"});var N=function(W){W!==void 0&&o.onSelect(W,{selected:!o.rawValues.has(W)}),l.multiple||l.toggleOpen(!1)},G=function(W){return typeof W.label=="function"?W.label():W.label};function d(c){var W=f.value[c];if(!W)return null;var M=W.data||{},I=M.value,w=W.group,C=ws(M,!0),x=G(W);return W?D("div",P(P({"aria-label":typeof x=="string"&&!w?x:null},C),{},{key:c,role:w?"presentation":"option",id:"".concat(l.id,"_list_").concat(c),"aria-selected":m(I)}),[I]):null}var u=function(W){var M=W.which,I=W.ctrlKey;switch(M){case bt.N:case bt.P:case bt.UP:case bt.DOWN:{var w=0;if(M===bt.UP?w=-1:M===bt.DOWN?w=1:O_()&&I&&(M===bt.N?w=1:M===bt.P&&(w=-1)),w!==0){var C=p(y.activeIndex+w,w);Z(C),X(C,!0)}break}case bt.ENTER:{var x=f.value[y.activeIndex];x&&!x.data.disabled?N(x.value):N(void 0),l.open&&W.preventDefault();break}case bt.ESC:l.toggleOpen(!1),l.open&&W.stopPropagation()}},s=function(){},h=function(W){Z(W)};return i({onKeydown:u,onKeyup:s,scrollTo:h}),function(){var c=l.id,W=l.notFoundContent,M=l.onPopupScroll,I=o.menuItemSelectedIcon,w=o.fieldNames,C=o.virtual,x=o.listHeight,R=o.listItemHeight,g=a.option,S=y.activeIndex,L=Object.keys(w).map(function(V){return w[V]});return f.value.length===0?D("div",{role:"listbox",id:"".concat(c,"_list"),class:"".concat(r.value,"-empty"),onMousedown:b},[W]):D(ln,null,[D("div",{role:"listbox",id:"".concat(c,"_list"),style:{height:0,width:0,overflow:"hidden"}},[d(S-1),d(S),d(S+1)]),D(xx,{itemKey:"key",ref:v,data:f.value,height:x,itemHeight:R,fullHeight:!1,onMousedown:b,onScroll:M,virtual:C},{default:function(Y,T){var J,U=Y.group,K=Y.groupOption,H=Y.data,k=Y.value,F=H.key,O=typeof Y.label=="function"?Y.label():Y.label;if(U){var Q,oe=(Q=H.title)!==null&&Q!==void 0?Q:XY(O)&&O;return D("div",{class:_e(r.value,"".concat(r.value,"-group")),title:oe},[g?g(H):O!==void 0?O:F])}var se=H.disabled,he=H.title;H.children;var pe=H.style,re=H.class,_=H.className,E=jt(H,E_),$=dn(E,L),ae=m(k),le="".concat(r.value,"-option"),ee=_e(r.value,le,re,_,(J={},ce(J,"".concat(le,"-grouped"),K),ce(J,"".concat(le,"-active"),S===T&&!se),ce(J,"".concat(le,"-disabled"),se),ce(J,"".concat(le,"-selected"),ae),J)),te=G(Y),be=!I||typeof I=="function"||ae,ne=typeof te=="number"?te:te||k,B=XY(ne)?ne.toString():void 0;return he!==void 0&&(B=he),D("div",P(P({},$),{},{"aria-selected":ae,class:ee,title:B,onMousemove:function(ue){E.onMousemove&&E.onMousemove(ue),!(S===T||se)&&X(T)},onClick:function(ue){se||N(k),E.onClick&&E.onClick(ue)},style:pe}),[D("div",{class:"".concat(le,"-content")},[g?g(H):ne]),Si(I)||ae,be&&D(km,{class:"".concat(r.value,"-option-state"),customizeIcon:I,customizeIconProps:{isSelected:ae}},{default:function(){return[ae?"✓":null]}})])}})])}}});const H_=K_;var P_=["value","disabled"];function Q_(n){var e=n.key,t=n.children,i=n.props,a=i.value,l=i.disabled,o=jt(i,P_),r=t==null?void 0:t.default;return P({key:e,value:a!==void 0?a:e,children:r,disabled:l||l===""},o)}function Sx(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=ti(n).map(function(i,a){var l;if(!Si(i)||!i.type)return null;var o=i.type.isSelectOptGroup,r=i.key,f=i.children,v=i.props;if(e||!o)return Q_(i);var b=f&&f.default?f.default():void 0,Z=(v==null?void 0:v.label)||((l=f.label)===null||l===void 0?void 0:l.call(f))||r;return P(P({key:"__RC_SELECT_GRP__".concat(r===null?a:String(r),"__")},v),{},{label:Z,options:Sx(b||[])})}).filter(function(i){return i});return t}function B_(n,e,t){var i=Gn(),a=Gn(),l=Gn(),o=Gn([]);return rt([n,e],function(){n.value?o.value=on(n.value).slice():o.value=Sx(e.value)},{immediate:!0,deep:!0}),qt(function(){var r=o.value,f=new Map,v=new Map,b=t.value;function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=0;X0&&arguments[0]!==void 0?arguments[0]:Ne(""),e="rc_select_".concat(__());return n.value||e}function zx(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function rZ(n,e){return zx(n).join("").toUpperCase().includes(e)}const $_=function(n,e,t,i,a){return de(function(){var l=t.value,o=a==null?void 0:a.value,r=i==null?void 0:i.value;if(!l||r===!1)return n.value;var f=e.value,v=f.options,b=f.label,Z=f.value,p=[],y=typeof r=="function",X=l.toUpperCase(),m=y?r:function(G,d){return o?rZ(d[o],X):d[v]?rZ(d[b!=="children"?b:"label"],X):rZ(d[Z],X)},N=y?function(G){return j2(G)}:function(G){return G};return n.value.forEach(function(G){if(G[v]){var d=m(l,N(G));if(d)p.push(G);else{var u=G[v].filter(function(s){return m(l,N(s))});u.length&&p.push(P(P({},G),{},ce({},v,u)))}return}m(l,N(G))&&p.push(G)}),p})},q_=function(n,e){var t=Gn({values:new Map,options:new Map}),i=de(function(){var l=t.value,o=l.values,r=l.options,f=n.value.map(function(Z){if(Z.label===void 0){var p;return P(P({},Z),{},{label:(p=o.get(Z.value))===null||p===void 0?void 0:p.label})}return Z}),v=new Map,b=new Map;return f.forEach(function(Z){v.set(Z.value,Z),b.set(Z.value,e.value.get(Z.value)||r.get(Z.value))}),t.value.values=v,t.value.options=b,f}),a=function(o){return e.value.get(o)||t.value.options.get(o)};return[i,a]};function Wi(n,e){var t=e||{},i=t.defaultValue,a=t.value,l=a===void 0?Ne():a,o=typeof n=="function"?n():n;l.value!==void 0&&(o=mi(l)),i!==void 0&&(o=typeof i=="function"?i():i);var r=Ne(o),f=Ne(o);qt(function(){var b=l.value!==void 0?l.value:r.value;e.postState&&(b=e.postState(b)),f.value=b});function v(b){var Z=f.value;r.value=b,on(f.value)!==b&&e.onChange&&e.onChange(b,Z)}return rt(l,function(){r.value=l.value}),[f,v]}function di(n){var e=typeof n=="function"?n():n,t=Ne(e);function i(a){t.value=a}return[t,i]}var e6=["inputValue"];function kx(){return P(P({},$0()),{},{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:We.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:We.any,defaultValue:We.any,onChange:Function,children:Array})}function t6(n){return!n||Yt(n)!=="object"}const n6=He({compatConfig:{MODE:3},name:"Select",inheritAttrs:!1,props:pn(kx(),{prefixCls:"vc-select",autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup:function(e,t){var i=t.expose,a=t.attrs,l=t.slots,o=DG(Ot(e,"id")),r=de(function(){return Lx(e.mode)}),f=de(function(){return!!(!e.options&&e.children)}),v=de(function(){return e.filterOption===void 0&&e.mode==="combobox"?!1:e.filterOption}),b=de(function(){return qT(e.fieldNames,f.value)}),Z=Wi("",{value:de(function(){return e.searchValue!==void 0?e.searchValue:e.inputValue}),postState:function(ne){return ne||""}}),p=ft(Z,2),y=p[0],X=p[1],m=B_(Ot(e,"options"),Ot(e,"children"),b),N=m.valueOptions,G=m.labelOptions,d=m.options,u=function(ne){var B=zx(ne);return B.map(function(q){var ue,ve,Ge,Je;if(t6(q))ue=q;else{var xe;Ge=q.key,ve=q.label,ue=(xe=q.value)!==null&&xe!==void 0?xe:Ge}var ke=N.value.get(ue);if(ke){var Pe;ve===void 0&&(ve=ke==null?void 0:ke[e.optionLabelProp||b.value.label]),Ge===void 0&&(Ge=(Pe=ke==null?void 0:ke.key)!==null&&Pe!==void 0?Pe:ue),Je=ke==null?void 0:ke.disabled}return{label:ve,value:ue,key:Ge,disabled:Je,option:ke}})},s=Wi(e.defaultValue,{value:Ot(e,"value")}),h=ft(s,2),c=h[0],W=h[1],M=de(function(){var be,ne=u(c.value);return e.mode==="combobox"&&!((be=ne[0])!==null&&be!==void 0&&be.value)?[]:ne}),I=q_(M,N),w=ft(I,2),C=w[0],x=w[1],R=de(function(){if(!e.mode&&C.value.length===1){var be=C.value[0];if(be.value===null&&(be.label===null||be.label===void 0))return[]}return C.value.map(function(ne){var B;return P(P({},ne),{},{label:(B=typeof ne.label=="function"?ne.label():ne.label)!==null&&B!==void 0?B:ne.value})})}),g=de(function(){return new Set(C.value.map(function(be){return be.value}))});qt(function(){if(e.mode==="combobox"){var be,ne=(be=C.value[0])===null||be===void 0?void 0:be.value;ne!=null&&X(String(ne))}},{flush:"post"});var S=function(ne,B){var q,ue=B??ne;return q={},ce(q,b.value.value,ne),ce(q,b.value.label,ue),q},L=Gn();qt(function(){if(e.mode!=="tags"){L.value=d.value;return}var be=d.value.slice(),ne=function(q){return N.value.has(q)};yt(C.value).sort(function(B,q){return B.value2&&arguments[2]!==void 0?arguments[2]:{},ue=q.source,ve=ue===void 0?"keyboard":ue;se(B),e.backfill&&e.mode==="combobox"&&ne!==null&&ve==="keyboard"&&F(String(ne))},re=function(ne,B){var q=function(){var we,Se=x(ne),De=Se==null?void 0:Se[b.value.label];return[e.labelInValue?{label:typeof De=="function"?De():De,originLabel:De,value:ne,key:(we=Se==null?void 0:Se.key)!==null&&we!==void 0?we:ne}:ne,j2(Se)]};if(B&&e.onSelect){var ue=q(),ve=ft(ue,2),Ge=ve[0],Je=ve[1];e.onSelect(Ge,Je)}else if(!B&&e.onDeselect){var xe=q(),ke=ft(xe,2),Pe=ke[0],Be=ke[1];e.onDeselect(Pe,Be)}},_=function(ne,B){var q,ue=r.value?B.selected:!0;ue?q=r.value?[].concat(yt(C.value),[ne]):[ne]:q=C.value.filter(function(ve){return ve.value!==ne}),U(q),re(ne,ue),e.mode==="combobox"?F(""):(!r.value||e.autoClearSearchValue)&&(X(""),F(""))},E=function(ne,B){U(ne),(B.type==="remove"||B.type==="clear")&&B.values.forEach(function(q){re(q.value,!1)})},$=function(ne,B){if(X(ne),F(null),B.source==="submit"){var q=(ne||"").trim();if(q){var ue=Array.from(new Set([].concat(yt(g.value),[q])));U(ue),re(q,!0),X("")}return}if(B.source!=="blur"){var ve;e.mode==="combobox"&&U(ne),(ve=e.onSearch)===null||ve===void 0||ve.call(e,ne)}},ae=function(ne){var B=ne;e.mode!=="tags"&&(B=ne.map(function(ue){var ve=G.value.get(ue);return ve==null?void 0:ve.value}).filter(function(ue){return ue!==void 0}));var q=Array.from(new Set([].concat(yt(g.value),yt(B))));U(q),q.forEach(function(ue){re(ue,!0)})},le=de(function(){return e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1});j_(Fm(P(P({},m),{},{flattenOptions:J,onActiveValue:pe,defaultActiveFirstOption:he,onSelect:_,menuItemSelectedIcon:Ot(e,"menuItemSelectedIcon"),rawValues:g,fieldNames:b,virtual:le,listHeight:Ot(e,"listHeight"),listItemHeight:Ot(e,"listItemHeight"),childrenAsData:f})));var ee=Ne();i({focus:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.focus()},blur:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.blur()},scrollTo:function(ne){var B;(B=ee.value)===null||B===void 0||B.scrollTo(ne)}});var te=de(function(){return dn(e,["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange"])});return function(){return D(FG,P(P(P({},te.value),a),{},{id:o,prefixCls:e.prefixCls,ref:ee,omitDomProps:e6,mode:e.mode,displayValues:R.value,onDisplayValuesChange:E,searchValue:y.value,onSearch:$,onSearchSplit:ae,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:H_,emptyOptions:!J.value.length,activeValue:k.value,activeDescendantId:"".concat(o,"_list_").concat(oe.value)}),l)}}});var OG=function(){return null};OG.isSelectOption=!0;OG.displayName="ASelectOption";const i6=OG;var jG=function(){return null};jG.isSelectOptGroup=!0;jG.displayName="ASelectOptGroup";const l6=jG;var a6={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"};const r6=a6;function MY(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=n.loading,i=n.multiple,a=n.prefixCls,l=n.suffixIcon||e.suffixIcon&&e.suffixIcon(),o=n.clearIcon||e.clearIcon&&e.clearIcon(),r=n.menuItemSelectedIcon||e.menuItemSelectedIcon&&e.menuItemSelectedIcon(),f=n.removeIcon||e.removeIcon&&e.removeIcon(),v=o;o||(v=D(So,null,null));var b=null;if(l!==void 0)b=l;else if(t)b=D(Yr,{spin:!0},null);else{var Z="".concat(a,"-suffix");b=function(m){var N=m.open,G=m.showSearch;return N&&G?D(tp,{class:Z},null):D(Dh,{class:Z},null)}}var p=null;r!==void 0?p=r:i?p=D(ep,null,null):p=null;var y=null;return f!==void 0?y=f:y=D(Ar,null,null),{clearIcon:v,suffixIcon:b,itemIcon:p,removeIcon:y}}var Jm=Symbol("ContextProps"),Dm=Symbol("InternalContextProps"),b6=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:de(function(){return!0}),i=Ne(new Map),a=function(r,f){i.value.set(r,f),i.value=new Map(i.value)},l=function(r){i.value.delete(r),i.value=new Map(i.value)};rt([t,i],function(){}),hn(Jm,e),hn(Dm,{addFormItemField:a,removeFormItemField:l})},q2={id:de(function(){}),onFieldBlur:function(){},onFieldChange:function(){},clearValidate:function(){}},ev={addFormItemField:function(){},removeFormItemField:function(){}},Hi=function(){var e=un(Dm,ev),t=Symbol("FormItemFieldKey"),i=Wl();return e.addFormItemField(t,i.type),fn(function(){e.removeFormItemField(t)}),hn(Dm,ev),hn(Jm,q2),un(Jm,q2)};const Om=He({compatConfig:{MODE:3},name:"AFormItemRest",setup:function(e,t){var i=t.slots;return hn(Dm,ev),hn(Jm,q2),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}});var PG=function(){return P(P({},dn(kx(),["inputIcon","mode","getInputElement","getRawInputElement","backfill"])),{},{value:{type:[Array,Object,String,Number]},defaultValue:{type:[Array,Object,String,Number]},notFoundContent:We.any,suffixIcon:We.any,itemIcon:We.any,size:String,mode:String,bordered:{type:Boolean,default:!0},transitionName:String,choiceTransitionName:{type:String,default:""},"onUpdate:value":Function})},wY="SECRET_COMBOBOX_MODE_DO_NOT_USE",Or=He({compatConfig:{MODE:3},name:"ASelect",Option:i6,OptGroup:l6,inheritAttrs:!1,props:pn(PG(),{listHeight:256,listItemHeight:24}),SECRET_COMBOBOX_MODE_DO_NOT_USE:wY,slots:["notFoundContent","suffixIcon","itemIcon","removeIcon","clearIcon","dropdownRender","option","placeholder","tagRender","maxTagPlaceholder","optionLabel"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.slots,o=t.expose,r=Ne(),f=Hi(),v=function(){var w;(w=r.value)===null||w===void 0||w.focus()},b=function(){var w;(w=r.value)===null||w===void 0||w.blur()},Z=function(w){var C;(C=r.value)===null||C===void 0||C.scrollTo(w)},p=de(function(){var I=e.mode;if(I!=="combobox")return I===wY?"combobox":I}),y=Nt("select",e),X=y.prefixCls,m=y.direction,N=y.configProvider,G=y.size,d=y.getPrefixCls,u=de(function(){return d()}),s=de(function(){return Ir(u.value,"slide-up",e.transitionName)}),h=de(function(){var I;return _e((I={},ce(I,"".concat(X.value,"-lg"),G.value==="large"),ce(I,"".concat(X.value,"-sm"),G.value==="small"),ce(I,"".concat(X.value,"-rtl"),m.value==="rtl"),ce(I,"".concat(X.value,"-borderless"),!e.bordered),I))}),c=function(){for(var w=arguments.length,C=new Array(w),x=0;x=1},subscribe:function(e){return Us.size||this.register(),sZ+=1,Us.set(sZ,e),e(ab),sZ},unsubscribe:function(e){Us.delete(e),Us.size||this.unregister()},unregister:function(){var e=this;Object.keys(lb).forEach(function(t){var i=lb[t],a=e.matchHandlers[i];a==null||a.mql.removeListener(a==null?void 0:a.listener)}),Us.clear()},register:function(){var e=this;Object.keys(lb).forEach(function(t){var i=lb[t],a=function(r){var f=r.matches;e.dispatch(P(P({},ab),{},ce({},t,f)))},l=window.matchMedia(i);l.addListener(a),e.matchHandlers[i]={mql:l,listener:a},a(l)})}};const xu=g6;function Au(){var n=Ne({}),e=null;return Kt(function(){e=xu.subscribe(function(t){n.value=t})}),la(function(){xu.unsubscribe(e)}),n}var Fx=Symbol("SizeProvider"),V6=function(e){var t=un("configProvider",mG),i=de(function(){return e.size||t.componentSize});return hn(Fx,i),i},Jx=function(e){var t=e?de(function(){return e.size}):un(Fx,de(function(){return"default"}));return t};const L6=V6;function Sa(n){var e=Gn();return qt(function(){e.value=n()},{flush:"sync"}),e}var R6=function(){return{prefixCls:String,shape:{type:String,default:"circle"},size:{type:[Number,String,Object],default:function(){return"default"}},src:String,srcset:String,icon:We.any,alt:String,gap:Number,draggable:{type:Boolean,default:void 0},crossOrigin:String,loadError:{type:Function}}},T6=He({compatConfig:{MODE:3},name:"AAvatar",inheritAttrs:!1,props:R6(),slots:["icon"],setup:function(e,t){var i=t.slots,a=t.attrs,l=Ne(!0),o=Ne(!1),r=Ne(1),f=Ne(null),v=Ne(null),b=Nt("avatar",e),Z=b.prefixCls,p=Jx(),y=de(function(){return e.size==="default"?p.value:e.size}),X=Au(),m=Sa(function(){if(Yt(e.size)==="object"){var u=Xc.find(function(h){return X.value[h]}),s=e.size[u];return s}}),N=function(s){return m.value?{width:"".concat(m.value,"px"),height:"".concat(m.value,"px"),lineHeight:"".concat(m.value,"px"),fontSize:"".concat(s?m.value/2:18,"px")}:{}},G=function(){if(!(!f.value||!v.value)){var s=f.value.offsetWidth,h=v.value.offsetWidth;if(s!==0&&h!==0){var c=e.gap,W=c===void 0?4:c;W*20&&arguments[0]!==void 0?arguments[0]:[],e=0,t=n.length;e=0||I.indexOf("Bottom")>=0?C.top="".concat(w.height-W.offset[1],"px"):(I.indexOf("Top")>=0||I.indexOf("bottom")>=0)&&(C.top="".concat(-W.offset[1],"px")),I.indexOf("left")>=0||I.indexOf("Right")>=0?C.left="".concat(w.width-W.offset[0],"px"):(I.indexOf("right")>=0||I.indexOf("Left")>=0)&&(C.left="".concat(-W.offset[0],"px")),c.style.transformOrigin="".concat(C.left," ").concat(C.top)}};return function(){var h,c,W,M=e.openClassName,I=e.color,w=e.overlayClassName,C=(h=Ri((c=i.default)===null||c===void 0?void 0:c.call(i)))!==null&&h!==void 0?h:null;C=C.length===1?C[0]:C;var x=b.value;if(e.visible===void 0&&y()&&(x=!1),!C)return null;var R=d(Si(C)?C:D("span",null,[C])),g=_e((W={},ce(W,M||"".concat(f.value,"-open"),!0),ce(W,R.props&&R.props.class,R.props&&R.props.class),W)),S=_e(w,ce({},"".concat(f.value,"-").concat(I),I&&RY.test(I))),L,V;I&&!RY.test(I)&&(L={backgroundColor:I},V={backgroundColor:I});var Y=P(P(P({},l),e),{},{prefixCls:f.value,getPopupContainer:v.value,builtinPlacements:N.value,visible:x,ref:Z,overlayClassName:S,overlayInnerStyle:L,onVisibleChange:X,onPopupAlign:s});return D(z6,Y,{default:function(){return[b.value?wn(R,{class:g}):R]},arrowContent:function(){return D("span",{class:"".concat(f.value,"-arrow-content"),style:V},null)},overlay:u})}}}),Xr=wi(O6);var j6=function(){return P(P({},_G()),{},{content:We.any,title:We.any})},U6=He({compatConfig:{MODE:3},name:"APopover",props:pn(j6(),P(P({},Ux()),{},{trigger:"hover",transitionName:"zoom-big",placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup:function(e,t){var i=t.expose,a=t.slots,l=Ne();i({getPopupDomNode:function(){var p,y;return(p=l.value)===null||p===void 0||(y=p.getPopupDomNode)===null||y===void 0?void 0:y.call(p)}});var o=Nt("popover",e),r=o.prefixCls,f=o.configProvider,v=de(function(){return f.getPrefixCls()}),b=function(){var p,y,X=e.title,m=X===void 0?Ri((p=a.title)===null||p===void 0?void 0:p.call(a)):X,N=e.content,G=N===void 0?Ri((y=a.content)===null||y===void 0?void 0:y.call(a)):N,d=!!(Array.isArray(m)?m.length:m),u=!!(Array.isArray(G)?G.length:m);if(!(!d&&!u))return D(ln,null,[d&&D("div",{class:"".concat(r.value,"-title")},[m]),D("div",{class:"".concat(r.value,"-inner-content")},[G])])};return function(){return D(Xr,P(P({},dn(e,["title","content"])),{},{prefixCls:r.value,ref:l,transitionName:Ir(v.value,"zoom-big",e.transitionName)}),{title:b,default:a.default})}}});const Ex=wi(U6);var E6=function(){return{prefixCls:String,maxCount:Number,maxStyle:{type:Object,default:void 0},maxPopoverPlacement:{type:String,default:"top"},maxPopoverTrigger:String,size:{type:[Number,String,Object],default:"default"}}},K6=He({compatConfig:{MODE:3},name:"AAvatarGroup",inheritAttrs:!1,props:E6(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("avatar-group",e),o=l.prefixCls,r=l.direction;return L6(e),function(){var f,v=e.maxPopoverPlacement,b=v===void 0?"top":v,Z=e.maxCount,p=e.maxStyle,y=e.maxPopoverTrigger,X=y===void 0?"hover":y,m=(f={},ce(f,o.value,!0),ce(f,"".concat(o.value,"-rtl"),r.value==="rtl"),ce(f,"".concat(a.class),!!a.class),f),N=ui(i,e),G=ti(N).map(function(h,c){return wn(h,{key:"avatar-key-".concat(c)})}),d=G.length;if(Z&&ZG}),X=function(){var G=e.target,d=G||Z,u=d();b.scrollEvent=hi(u,"scroll",function(s){y(s)}),y({target:u})},m=function(){b.scrollEvent&&b.scrollEvent.remove(),y.cancel()};return rt(function(){return e.target},function(){m(),cn(function(){X()})}),Kt(function(){cn(function(){X()})}),T0(function(){cn(function(){X()})}),cR(function(){m()}),fn(function(){m()}),function(){var N,G,d=D("div",{class:"".concat(r.value,"-content")},[D("div",{class:"".concat(r.value,"-icon")},[D(B6,null,null)])]),u=P(P({},a),{},{onClick:p,class:(N={},ce(N,"".concat(r.value),!0),ce(N,"".concat(a.class),a.class),ce(N,"".concat(r.value,"-rtl"),f.value==="rtl"),N)}),s=Ys("fade");return D(aa,s,{default:function(){return[cl(D("div",P(P({},u),{},{ref:v}),[((G=i.default)===null||G===void 0?void 0:G.call(i))||d]),[[gr,b.visible]])]}})}}});const $6=wi(_6);function xY(n){var e=n.prefixCls,t=n.value,i=n.current,a=n.offset,l=a===void 0?0:a,o;return l&&(o={position:"absolute",top:"".concat(l,"00%"),left:0}),D("p",{style:o,class:_e("".concat(e,"-only-unit"),{current:i})},[t])}function q6(n,e,t){for(var i=n,a=0;(i+10)%10!==e;)i+=t,a+=t;return a}const e8=He({compatConfig:{MODE:3},name:"SingleNumber",props:{prefixCls:String,value:String,count:Number},setup:function(e){var t=de(function(){return Number(e.value)}),i=de(function(){return Math.abs(e.count)}),a=zn({prevValue:t.value,prevCount:i.value}),l=function(){a.prevValue=t.value,a.prevCount=i.value},o=Ne();return rt(t,function(){clearTimeout(o.value),o.value=setTimeout(function(){l()},1e3)},{flush:"post"}),la(function(){clearTimeout(o.value)}),function(){var r,f={},v=t.value;if(a.prevValue===v||Number.isNaN(v)||Number.isNaN(a.prevValue))r=[xY(P(P({},e),{},{current:!0}))],f={transition:"none"};else{r=[];for(var b=v+10,Z=[],p=v;p<=b;p+=1)Z.push(p);var y=Z.findIndex(function(m){return m%10===a.prevValue});r=Z.map(function(m,N){var G=m%10;return xY(P(P({},e),{},{value:G,offset:N-y,current:N===y}))});var X=a.prevCounte.overflowCount?"".concat(e.overflowCount,"+"):e.count}),v=de(function(){return e.status!==null&&e.status!==void 0||e.color!==null&&e.color!==void 0}),b=de(function(){return f.value==="0"||f.value===0}),Z=de(function(){return e.dot&&!b.value}),p=de(function(){return Z.value?"":f.value}),y=de(function(){var s=p.value===null||p.value===void 0||p.value==="";return(s||b.value&&!e.showZero)&&!Z.value}),X=Ne(e.count),m=Ne(p.value),N=Ne(Z.value);rt([function(){return e.count},p,Z],function(){y.value||(X.value=e.count,m.value=p.value,N.value=Z.value)},{immediate:!0});var G=de(function(){var s;return s={},ce(s,"".concat(o.value,"-status-dot"),v.value),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),xd(e.color)),s}),d=de(function(){return e.color&&!xd(e.color)?{background:e.color}:{}}),u=de(function(){var s;return s={},ce(s,"".concat(o.value,"-dot"),N.value),ce(s,"".concat(o.value,"-count"),!N.value),ce(s,"".concat(o.value,"-count-sm"),e.size==="small"),ce(s,"".concat(o.value,"-multiple-words"),!N.value&&m.value&&m.value.toString().length>1),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),xd(e.color)),s});return function(){var s,h,c,W=e.offset,M=e.title,I=e.color,w=a.style,C=ui(i,e,"text"),x=o.value,R=X.value,g=ti((s=i.default)===null||s===void 0?void 0:s.call(i));g=g.length?g:null;var S=!!(!y.value||i.count),L=function(){if(!W)return P({},w);var k={marginTop:Kx(W[1])?"".concat(W[1],"px"):W[1]};return r.value==="rtl"?k.left="".concat(parseInt(W[0],10),"px"):k.right="".concat(-parseInt(W[0],10),"px"),P(P({},k),w)}(),V=M??(typeof R=="string"||typeof R=="number"?R:void 0),Y=S||!C?null:D("span",{class:"".concat(x,"-status-text")},[C]),T=Yt(R)==="object"||R===void 0&&i.count?wn(R??((h=i.count)===null||h===void 0?void 0:h.call(i)),{style:L},!1):null,J=_e(x,(c={},ce(c,"".concat(x,"-status"),v.value),ce(c,"".concat(x,"-not-a-wrapper"),!g),ce(c,"".concat(x,"-rtl"),r.value==="rtl"),c),a.class);if(!g&&v.value){var U=L.color;return D("span",P(P({},a),{},{class:J,style:L}),[D("span",{class:G.value,style:d.value},null),D("span",{style:{color:U},class:"".concat(x,"-status-text")},[C])])}var K=Ys(g?"".concat(x,"-zoom"):"",{appear:!1}),H=P(P({},L),e.numberStyle);return I&&!xd(I)&&(H=H||{},H.background=I),D("span",P(P({},a),{},{class:J}),[g,D(aa,K,{default:function(){return[cl(D(i8,{prefixCls:e.scrollNumberPrefixCls,show:S,class:u.value,count:m.value,title:V,style:H,key:"scrollNumber"},{default:function(){return[T]}}),[[gr,S]])]}}),Y])}}});Ob.install=function(n){return n.component(Ob.name,Ob),n.component(Em.name,Em),n};var Qc={adjustX:1,adjustY:1},Bc=[0,0],s8={topLeft:{points:["bl","tl"],overflow:Qc,offset:[0,-4],targetOffset:Bc},topCenter:{points:["bc","tc"],overflow:Qc,offset:[0,-4],targetOffset:Bc},topRight:{points:["br","tr"],overflow:Qc,offset:[0,-4],targetOffset:Bc},bottomLeft:{points:["tl","bl"],overflow:Qc,offset:[0,4],targetOffset:Bc},bottomCenter:{points:["tc","bc"],overflow:Qc,offset:[0,4],targetOffset:Bc},bottomRight:{points:["tr","br"],overflow:Qc,offset:[0,4],targetOffset:Bc}};const c8=s8;var u8=["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"];const Hx=He({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:We.string.def("rc-dropdown"),transitionName:String,overlayClassName:We.string.def(""),openClassName:String,animation:We.any,align:We.object,overlayStyle:{type:Object,default:void 0},placement:We.string.def("bottomLeft"),overlay:We.any,trigger:We.oneOfType([We.string,We.arrayOf(We.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:We.array,hideAction:We.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:We.number.def(.15),mouseLeaveDelay:We.number.def(.1)},emits:["visibleChange","overlayClick"],slots:["overlay"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.expose,o=Ne(!!e.visible);rt(function(){return e.visible},function(X){X!==void 0&&(o.value=X)});var r=Ne();l({triggerRef:r});var f=function(m){e.visible===void 0&&(o.value=!1),a("overlayClick",m)},v=function(m){e.visible===void 0&&(o.value=m),a("visibleChange",m)},b=function(){var m,N=(m=i.overlay)===null||m===void 0?void 0:m.call(i),G={prefixCls:"".concat(e.prefixCls,"-menu"),onClick:f,getPopupContainer:function(){return r.value.getPopupDomNode()}};return D(ln,null,[e.arrow&&D("div",{class:"".concat(e.prefixCls,"-arrow")},null),wn(N,G,!1)])},Z=de(function(){var X=e.minOverlayWidthMatchTrigger,m=X===void 0?!e.alignPoint:X;return m}),p=function(){var m,N=(m=i.default)===null||m===void 0?void 0:m.call(i);return o.value&&N?wn(N[0],{class:e.openClassName||"".concat(e.prefixCls,"-open")},!1):N},y=de(function(){return!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction});return function(){var X=e.prefixCls,m=e.arrow,N=e.showAction,G=e.overlayStyle,d=e.trigger,u=e.placement,s=e.align,h=e.getPopupContainer,c=e.transitionName,W=e.animation,M=e.overlayClassName,I=jt(e,u8);return D(Qu,P(P({},I),{},{prefixCls:X,ref:r,popupClassName:_e(M,ce({},"".concat(X,"-show-arrow"),m)),popupStyle:G,builtinPlacements:c8,action:d,showAction:N,hideAction:y.value||[],popupPlacement:u,popupAlign:s,popupTransitionName:c,popupAnimation:W,popupVisible:o.value,stretch:Z.value?"minWidth":"",onPopupVisibleChange:v,getPopupContainer:h}),{popup:b,default:p})}}});var cZ={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},uZ={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},lu=[],au=[];function d8(){var n=document.createElement("div"),e=n.style;"AnimationEvent"in window||(delete cZ.animationstart.animation,delete uZ.animationend.animation),"TransitionEvent"in window||(delete cZ.transitionstart.transition,delete uZ.transitionend.transition);function t(i,a){for(var l in i)if(i.hasOwnProperty(l)){var o=i[l];for(var r in o)if(r in e){a.push(o[r]);break}}}t(cZ,lu),t(uZ,au)}typeof window<"u"&&typeof document<"u"&&d8();function CY(n,e,t){n.addEventListener(e,t,!1)}function SY(n,e,t){n.removeEventListener(e,t,!1)}var h8={startEvents:lu,addStartEventListener:function(e,t){if(lu.length===0){setTimeout(t,0);return}lu.forEach(function(i){CY(e,i,t)})},removeStartEventListener:function(e,t){lu.length!==0&&lu.forEach(function(i){SY(e,i,t)})},endEvents:au,addEndEventListener:function(e,t){if(au.length===0){setTimeout(t,0);return}au.forEach(function(i){CY(e,i,t)})},removeEndEventListener:function(e,t){au.length!==0&&au.forEach(function(i){SY(e,i,t)})}};const rb=h8;var qo;function zY(n){return!n||n.offsetParent===null}function f8(n){var e=(n||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return e&&e[1]&&e[2]&&e[3]?!(e[1]===e[2]&&e[2]===e[3]):!0}const qG=He({compatConfig:{MODE:3},name:"Wave",props:{insertExtraNode:Boolean,disabled:Boolean},setup:function(e,t){var i=t.slots,a=t.expose,l=Wl(),o=Nt("",e),r=o.csp,f=o.prefixCls;a({csp:r});var v=null,b=null,Z=null,p=!1,y=null,X=!1,m=function(c){if(!X){var W=ds(l);!c||c.target!==W||p||u(W)}},N=function(c){!c||c.animationName!=="fadeEffect"||u(c.target)},G=function(){var c=e.insertExtraNode;return c?"".concat(f.value,"-click-animating"):"".concat(f.value,"-click-animating-without-extra-node")},d=function(c,W){var M=e.insertExtraNode,I=e.disabled;if(!(I||!c||zY(c)||c.className.indexOf("-leave")>=0)){y=document.createElement("div"),y.className="".concat(f.value,"-click-animating-node");var w=G();if(c.removeAttribute(w),c.setAttribute(w,"true"),qo=qo||document.createElement("style"),W&&W!=="#ffffff"&&W!=="rgb(255, 255, 255)"&&f8(W)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(W)&&W!=="transparent"){var C;(C=r.value)!==null&&C!==void 0&&C.nonce&&(qo.nonce=r.value.nonce),y.style.borderColor=W,qo.innerHTML=` [`.concat(f.value,"-click-animating-without-extra-node='true']::after, .").concat(f.value,`-click-animating-node { --antd-wave-shadow-color: `).concat(W,`; - }`),document.body.contains(qo)||document.body.appendChild(qo)}M&&c.appendChild(y),ab.addStartEventListener(c,m),ab.addEndEventListener(c,N)}},u=function(c){if(!(!c||c===y||!(c instanceof Element))){var W=e.insertExtraNode,M=G();c.setAttribute(M,"false"),qo&&(qo.innerHTML=""),W&&y&&c.contains(y)&&c.removeChild(y),ab.removeStartEventListener(c,m),ab.removeEndEventListener(c,N)}},s=function(c){if(!(!c||!c.getAttribute||c.getAttribute("disabled")||c.className.indexOf("disabled")>=0)){var W=function(I){if(!(I.target.tagName==="INPUT"||CY(I.target))){u(c);var w=getComputedStyle(c).getPropertyValue("border-top-color")||getComputedStyle(c).getPropertyValue("border-color")||getComputedStyle(c).getPropertyValue("background-color");b=setTimeout(function(){return d(c,w)},0),At.cancel(Z),p=!0,Z=At(function(){p=!1},10)}};return c.addEventListener("click",W,!0),{cancel:function(){c.removeEventListener("click",W,!0)}}}};return Kt(function(){cn(function(){var h=ds(l);h.nodeType===1&&(v=s(h))})}),fn(function(){v&&v.cancel(),clearTimeout(b),X=!0}),function(){var h;return(h=i.default)===null||h===void 0?void 0:h.call(i)[0]}}});function Em(n){return n==="danger"?{danger:!0}:{type:n}}var d8=function(){return{prefixCls:String,type:String,htmlType:{type:String,default:"button"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:function(){return!1}},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:We.any,href:String,target:String,title:String,onClick:{type:Function},onMousedown:{type:Function}}};const Ex=d8;var SY=function(e){e&&(e.style.width="0px",e.style.opacity="0",e.style.transform="scale(0)")},zY=function(e){cn(function(){e&&(e.style.width="".concat(e.scrollWidth,"px"),e.style.opacity="1",e.style.transform="scale(1)")})},kY=function(e){e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)};const h8=He({compatConfig:{MODE:3},name:"LoadingIcon",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup:function(e){return function(){var t=e.existIcon,i=e.prefixCls,a=e.loading;if(t)return D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]);var l=!!a;return D(aa,{name:"".concat(i,"-loading-icon-motion"),onBeforeEnter:SY,onEnter:zY,onAfterEnter:kY,onBeforeLeave:zY,onLeave:function(r){setTimeout(function(){SY(r)})},onAfterLeave:kY},{default:function(){return[l?D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]):null]}})}}});var FY=/^[\u4e00-\u9fa5]{2}$/,JY=FY.test.bind(FY);function rb(n){return n==="text"||n==="link"}const qi=He({compatConfig:{MODE:3},name:"AButton",inheritAttrs:!1,__ANT_BUTTON:!0,props:pn(Ex(),{type:"default"}),slots:["icon"],setup:function(e,t){var i=t.slots,a=t.attrs,l=t.emit,o=Nt("btn",e),r=o.prefixCls,f=o.autoInsertSpaceInButton,v=o.direction,b=o.size,Z=Ne(null),p=Ne(void 0),y=!1,X=Ne(!1),m=Ne(!1),N=de(function(){return f.value!==!1}),G=de(function(){return Yt(e.loading)==="object"&&e.loading.delay?e.loading.delay||!0:!!e.loading});rt(G,function(c){clearTimeout(p.value),typeof G.value=="number"?p.value=setTimeout(function(){X.value=c},G.value):X.value=c},{immediate:!0});var d=de(function(){var c,W=e.type,M=e.shape,I=M===void 0?"default":M,w=e.ghost,C=e.block,x=e.danger,R=r.value,g={large:"lg",small:"sm",middle:void 0},S=b.value,L=S&&g[S]||"";return c={},ce(c,"".concat(R),!0),ce(c,"".concat(R,"-").concat(W),W),ce(c,"".concat(R,"-").concat(I),I!=="default"&&I),ce(c,"".concat(R,"-").concat(L),L),ce(c,"".concat(R,"-loading"),X.value),ce(c,"".concat(R,"-background-ghost"),w&&!rb(W)),ce(c,"".concat(R,"-two-chinese-chars"),m.value&&N.value),ce(c,"".concat(R,"-block"),C),ce(c,"".concat(R,"-dangerous"),!!x),ce(c,"".concat(R,"-rtl"),v.value==="rtl"),c}),u=function(){var W=Z.value;if(!(!W||f.value===!1)){var M=W.textContent;y&&JY(M)?m.value||(m.value=!0):m.value&&(m.value=!1)}},s=function(W){if(X.value||e.disabled){W.preventDefault();return}l("click",W)},h=function(W,M){var I=M?" ":"";if(W.type===Ms){var w=W.children.trim();return JY(w)&&(w=w.split("").join(I)),D("span",null,[w])}return W};return qt(function(){jn(!(e.ghost&&rb(e.type)),"Button","`link` or `text` button can't be a `ghost` button.")}),Kt(u),Dl(u),fn(function(){p.value&&clearTimeout(p.value)}),function(){var c,W,M=e.icon,I=M===void 0?(c=i.icon)===null||c===void 0?void 0:c.call(i):M,w=ti((W=i.default)===null||W===void 0?void 0:W.call(i));y=w.length===1&&!I&&!rb(e.type);var C=e.type,x=e.htmlType,R=e.disabled,g=e.href,S=e.title,L=e.target,V=e.onMousedown,Y=X.value?"loading":I,T=P(P({},a),{},{title:S,disabled:R,class:[d.value,a.class,ce({},"".concat(r.value,"-icon-only"),w.length===0&&!!Y)],onClick:s,onMousedown:V});R||delete T.disabled;var J=I&&!X.value?I:D(h8,{existIcon:!!I,prefixCls:r.value,loading:!!X.value},null),U=w.map(function(H){return h(H,y&&N.value)});if(g!==void 0)return D("a",P(P({},T),{},{href:g,target:L,ref:Z}),[J,U]);var K=D("button",P(P({},T),{},{ref:Z,type:x}),[J,U]);return rb(C)?K:D(_G,{ref:"wave",disabled:!!X.value},{default:function(){return[K]}})}}});function DY(n,e){for(var t=0;t=0?"".concat(f.value,"-slide-down"):"".concat(f.value,"-slide-up")}),p=function(){var N,G,d,u=e.overlay||((N=i.overlay)===null||N===void 0?void 0:N.call(i)),s=Array.isArray(u)?u[0]:u;if(!s)return null;var h=s.props||{};jn(!h.mode||h.mode==="vertical","Dropdown",'mode="'.concat(h.mode,`" is not supported for Dropdown's Menu.`));var c=h.selectable,W=c===void 0?!1:c,M=h.expandIcon,I=M===void 0?(G=s.children)===null||G===void 0||(d=G.expandIcon)===null||d===void 0?void 0:d.call(G):M,w=typeof I<"u"&&Si(I)?I:D("span",{class:"".concat(r.value,"-menu-submenu-arrow")},[D(xo,{class:"".concat(r.value,"-menu-submenu-arrow-icon")},null)]),C=Si(s)?wn(s,{mode:"vertical",selectable:W,expandIcon:function(){return w}}):s;return C},y=de(function(){var m=e.placement;if(!m)return v.value==="rtl"?"bottomRight":"bottomLeft";if(m.includes("Center")){var N=m.slice(0,m.indexOf("Center"));return jn(!m.includes("Center"),"Dropdown","You are using '".concat(m,"' placement in Dropdown, which is deprecated. Try to use '").concat(N,"' instead.")),N}return m}),X=function(N){l("update:visible",N),l("visibleChange",N)};return function(){var m,N,G=e.arrow,d=e.trigger,u=e.disabled,s=e.overlayClassName,h=(m=i.default)===null||m===void 0?void 0:m.call(i)[0],c=wn(h,Xn({class:_e(h==null||(N=h.props)===null||N===void 0?void 0:N.class,ce({},"".concat(r.value,"-rtl"),v.value==="rtl"),"".concat(r.value,"-trigger"))},u?{disabled:u}:{})),W=_e(s,ce({},"".concat(r.value,"-rtl"),v.value==="rtl")),M=u?[]:d,I;M&&M.indexOf("contextmenu")!==-1&&(I=!0);var w=Fx({arrowPointAtCenter:Yt(G)==="object"&&G.pointAtCenter,autoAdjustOverflow:!0}),C=dn(P(P(P({},e),a),{},{builtinPlacements:w,overlayClassName:W,arrow:G,alignPoint:I,prefixCls:r.value,getPopupContainer:b.value,transitionName:Z.value,trigger:M,onVisibleChange:X,placement:y.value}),["overlay","onUpdate:visible"]);return D(Ux,C,{default:function(){return[c]},overlay:p})}}});Hx.Button=Nh;const Pr=Hx;var M8=["class","style"],I8=function(){return{prefixCls:String,href:String,separator:We.any,overlay:We.any,onClick:Function}};const Mh=He({compatConfig:{MODE:3},name:"ABreadcrumbItem",inheritAttrs:!1,__ANT_BREADCRUMB_ITEM:!0,props:I8(),slots:["separator","overlay"],setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("breadcrumb",e),o=l.prefixCls,r=function(v,b){var Z=ui(i,e,"overlay");return Z?D(Pr,{overlay:Z,placement:"bottom"},{default:function(){return[D("span",{class:"".concat(b,"-overlay-link")},[v,D(Jh,null,null)])]}}):v};return function(){var f,v=(f=ui(i,e,"separator"))!==null&&f!==void 0?f:"/",b=ui(i,e),Z=a.class,p=a.style,y=jt(a,M8),X;return e.href!==void 0?X=D("a",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]):X=D("span",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]),X=r(X,o.value),b?D("span",{class:Z,style:p},[X,v&&D("span",{class:"".concat(o.value,"-separator")},[v])]):null}}});function Y8(n,e,t,i){var a=t?t.call(i,n,e):void 0;if(a!==void 0)return!!a;if(n===e)return!0;if(Yt(n)!=="object"||!n||Yt(e)!=="object"||!e)return!1;var l=Object.keys(n),o=Object.keys(e);if(l.length!==o.length)return!1;for(var r=Object.prototype.hasOwnProperty.bind(e),f=0;f-1}function t3(n,e,t){for(var i=-1,a=n==null?0:n.length;++i=k8){var v=e?null:z8(n);if(v)return YG(v);o=!1,a=xm,f=new Lu}else f=e?[]:r;e:for(;++i"u"?pe=I&&he?se:"":oe===!1&&(pe="");var re={title:pe};!s.value&&!u.value&&(re.title=null,re.visible=!1);var _={};e.role==="option"&&(_["aria-selected"]=g.value);var E=ui(i,e,"icon");return D(Xr,P(P({},re),{},{placement:d.value?"left":"right",overlayClassName:"".concat(X.value,"-inline-collapsed-tooltip")}),{default:function(){return[D(vu.Item,P(P(P({component:"li"},l),{},{id:e.id,style:P(P({},l.style||{}),H.value),class:[S.value,(Q={},ce(Q,"".concat(l.class),!!l.class),ce(Q,"".concat(X.value,"-item-only-child"),(E?he+1:he)===1),Q)],role:e.role||"menuitem",tabindex:e.disabled?null:-1,"data-menu-id":f,"aria-disabled":e.disabled},_),{},{onMouseenter:Y,onMouseleave:T,onClick:V,onKeydown:J,onFocus:U,title:typeof oe=="string"?oe:void 0}),{default:function(){return[wn(E,{class:"".concat(X.value,"-item-icon")},!1),K(E,se)]}})]}})}}});var fs={adjustX:1,adjustY:1},U8={topLeft:{points:["bl","tl"],overflow:fs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:fs,offset:[0,7]},leftTop:{points:["tr","tl"],overflow:fs,offset:[-4,0]},rightTop:{points:["tl","tr"],overflow:fs,offset:[4,0]}},E8={topLeft:{points:["bl","tl"],overflow:fs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:fs,offset:[0,7]},rightTop:{points:["tr","tl"],overflow:fs,offset:[-4,0]},leftTop:{points:["tl","tr"],overflow:fs,offset:[4,0]}},K8={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"};const EY=He({compatConfig:{MODE:3},name:"PopupTrigger",inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:["popup"],emits:["visibleChange"],setup:function(e,t){var i=t.slots,a=t.emit,l=Ne(!1),o=gs(),r=o.getPopupContainer,f=o.rtl,v=o.subMenuOpenDelay,b=o.subMenuCloseDelay,Z=o.builtinPlacements,p=o.triggerSubMenuAction,y=o.isRootMenu,X=o.forceSubMenuRender,m=o.motion,N=o.defaultMotions,G=Ax(),d=de(function(){return f.value?P(P({},E8),Z.value):P(P({},U8),Z.value)}),u=de(function(){return K8[e.mode]}),s=Ne();rt(function(){return e.visible},function(W){At.cancel(s.value),s.value=At(function(){l.value=W})},{immediate:!0}),fn(function(){At.cancel(s.value)});var h=function(M){a("visibleChange",M)},c=de(function(){var W,M,I=m.value||((W=N.value)===null||W===void 0?void 0:W[e.mode])||((M=N.value)===null||M===void 0?void 0:M.other),w=typeof I=="function"?I():I;return w?Ys(w.name,{css:!0}):void 0});return function(){var W=e.prefixCls,M=e.popupClassName,I=e.mode,w=e.popupOffset,C=e.disabled;return D(Pu,{prefixCls:W,popupClassName:_e("".concat(W,"-popup"),ce({},"".concat(W,"-rtl"),f.value),M),stretch:I==="horizontal"?"minWidth":null,getPopupContainer:y.value?r.value:function(x){return x.parentNode},builtinPlacements:d.value,popupPlacement:u.value,popupVisible:l.value,popupAlign:w&&{offset:w},action:C?[]:[p.value],mouseEnterDelay:v.value,mouseLeaveDelay:b.value,onPopupVisibleChange:h,forceRender:G||X.value,popupAnimation:c.value},{popup:i.popup,default:i.default})}}});var o3=function(e,t){var i,a=t.slots,l=t.attrs,o=gs(),r=o.prefixCls,f=o.mode;return D("ul",P(P({},l),{},{class:_e(r.value,"".concat(r.value,"-sub"),"".concat(r.value,"-").concat(f.value==="inline"?"inline":"vertical")),"data-menu-list":!0}),[(i=a.default)===null||i===void 0?void 0:i.call(a)])};o3.displayName="SubMenuList";const s3=o3,H8=He({compatConfig:{MODE:3},name:"InlineSubMenuList",inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup:function(e,t){var i=t.slots,a=de(function(){return"inline"}),l=gs(),o=l.motion,r=l.mode,f=l.defaultMotions,v=de(function(){return r.value===a.value}),b=Ne(!v.value),Z=de(function(){return v.value?e.open:!1});rt(r,function(){v.value&&(b.value=!1)},{flush:"post"});var p=de(function(){var y,X,m=o.value||((y=f.value)===null||y===void 0?void 0:y[a.value])||((X=f.value)===null||X===void 0?void 0:X.other),N=typeof m=="function"?m():m;return P(P({},N),{},{appear:e.keyPath.length<=1})});return function(){var y;return b.value?null:D(Hm,{mode:a.value},{default:function(){return[D(aa,p.value,{default:function(){return[vl(D(s3,{id:e.id},{default:function(){return[(y=i.default)===null||y===void 0?void 0:y.call(i)]}}),[[gr,Z.value]])]}})]}})}}});var KY=0,P8=function(){return{icon:We.any,title:We.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function}};const xu=He({compatConfig:{MODE:3},name:"ASubMenu",inheritAttrs:!1,props:P8(),slots:["icon","title","expandIcon"],setup:function(e,t){var i,a,l=t.slots,o=t.attrs,r=t.emit;$x(!1);var f=n1(),v=Wl(),b=Yt(v.vnode.key)==="symbol"?String(v.vnode.key):v.vnode.key;jn(Yt(v.vnode.key)!=="symbol","SubMenu",'SubMenu `:key="'.concat(String(b),'"` not support Symbol type'));var Z=N2(b)?b:"sub_menu_".concat(++KY,"_$$_not_set_key"),p=(i=e.eventKey)!==null&&i!==void 0?i:N2(b)?"sub_menu_".concat(++KY,"_$$_").concat(b):Z,y=t1(),X=y.parentEventKeys,m=y.parentInfo,N=y.parentKeys,G=de(function(){return[].concat(yt(N.value),[Z])}),d=Ne([]),u={eventKey:p,key:Z,parentEventKeys:X,childrenEventKeys:d,parentKeys:N};(a=m.childrenEventKeys)===null||a===void 0||a.value.push(p),fn(function(){if(m.childrenEventKeys){var B;m.childrenEventKeys.value=(B=m.childrenEventKeys)===null||B===void 0?void 0:B.value.filter(function(q){return q!=p})}}),D8(p,Z,u);var s=gs(),h=s.prefixCls,c=s.activeKeys,W=s.disabled,M=s.changeActiveKeys,I=s.mode,w=s.inlineCollapsed,C=s.antdMenuTheme,x=s.openKeys,R=s.overflowDisabled,g=s.onOpenChange,S=s.registerMenuInfo,L=s.unRegisterMenuInfo,V=s.selectedSubMenuKeys,Y=s.expandIcon,T=b!=null,J=!f&&(Ax()||!T);w8(J),(f&&T||!f&&!T||J)&&(S(p,u),fn(function(){L(p)}));var U=de(function(){return"".concat(h.value,"-submenu")}),K=de(function(){return W.value||e.disabled}),H=Ne(),k=Ne(),F=de(function(){return x.value.includes(Z)}),O=de(function(){return!R.value&&F.value}),Q=de(function(){return V.value.includes(Z)}),oe=Ne(!1);rt(c,function(){oe.value=!!c.value.find(function(B){return B===Z})},{immediate:!0});var se=function(q){K.value||(r("titleClick",q,Z),I.value==="inline"&&g(Z,!F.value))},he=function(q){K.value||(M(G.value),r("mouseenter",q))},pe=function(q){K.value||(M([]),r("mouseleave",q))},re=r3(de(function(){return G.value.length})),_=function(q){I.value!=="inline"&&g(Z,q)},E=function(){M(G.value)},$=p&&"".concat(p,"-popup"),ae=de(function(){return _e(h.value,"".concat(h.value,"-").concat(C.value),e.popupClassName)}),le=function(q,ue){if(!ue)return w.value&&!N.value.length&&q&&typeof q=="string"?D("div",{class:"".concat(h.value,"-inline-collapsed-noicon")},[q.charAt(0)]):D("span",{class:"".concat(h.value,"-title-content")},[q]);var ve=Si(q)&&q.type==="span";return D(ln,null,[wn(ue,{class:"".concat(h.value,"-item-icon")},!1),ve?q:D("span",{class:"".concat(h.value,"-title-content")},[q])])},ee=de(function(){return I.value!=="inline"&&G.value.length>1?"vertical":I.value}),te=de(function(){return I.value==="horizontal"?"vertical":I.value}),be=de(function(){return ee.value==="horizontal"?"vertical":ee.value}),ne=function(){var q=U.value,ue=ui(l,e,"icon"),ve=e.expandIcon||l.expandIcon||Y.value,Ge=le(ui(l,e,"title"),ue);return D("div",{style:re.value,class:"".concat(q,"-title"),tabindex:K.value?null:-1,ref:H,title:typeof Ge=="string"?Ge:null,"data-menu-id":Z,"aria-expanded":O.value,"aria-haspopup":!0,"aria-controls":$,"aria-disabled":K.value,onClick:se,onFocus:E},[Ge,I.value!=="horizontal"&&ve?ve(P(P({},e),{},{isOpen:O.value})):D("i",{class:"".concat(q,"-arrow")},null)])};return function(){var B;if(f){var q;return T?(q=l.default)===null||q===void 0?void 0:q.call(l):null}var ue=U.value,ve=function(){return null};return!R.value&&I.value!=="inline"?ve=function(){return D(EY,{mode:ee.value,prefixCls:ue,visible:!e.internalPopupClose&&O.value,popupClassName:ae.value,popupOffset:e.popupOffset,disabled:K.value,onVisibleChange:_},{default:function(){return[ne()]},popup:function(){return D(Hm,{mode:be.value,isRootMenu:!1},{default:function(){return[D(s3,{id:$,ref:k},{default:l.default})]}})}})}:ve=function(){return D(EY,null,{default:ne})},D(Hm,{mode:te.value},{default:function(){return[D(vu.Item,P(P({component:"li"},o),{},{role:"none",class:_e(ue,"".concat(ue,"-").concat(I.value),o.class,(B={},ce(B,"".concat(ue,"-open"),O.value),ce(B,"".concat(ue,"-active"),oe.value),ce(B,"".concat(ue,"-selected"),Q.value),ce(B,"".concat(ue,"-disabled"),K.value),B)),onMouseenter:he,onMouseleave:pe,"data-submenu-id":Z}),{default:function(){return D(ln,null,[ve(),!R.value&&D(H8,{id:$,open:O.value,keyPath:G.value},{default:l.default})])}})]}})}}});function c3(n,e){if(n.classList)return n.classList.contains(e);var t=n.className;return" ".concat(t," ").indexOf(" ".concat(e," "))>-1}function HY(n,e){n.classList?n.classList.add(e):c3(n,e)||(n.className="".concat(n.className," ").concat(e))}function PY(n,e){if(n.classList)n.classList.remove(e);else if(c3(n,e)){var t=n.className;n.className=" ".concat(t," ").replace(" ".concat(e," ")," ")}}var Q8=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:t,css:!0,onBeforeEnter:function(a){a.style.height="0px",a.style.opacity="0",HY(a,e)},onEnter:function(a){cn(function(){a.style.height="".concat(a.scrollHeight,"px"),a.style.opacity="1"})},onAfterEnter:function(a){a&&(PY(a,e),a.style.height=null,a.style.opacity=null)},onBeforeLeave:function(a){HY(a,e),a.style.height="".concat(a.offsetHeight,"px"),a.style.opacity=null},onLeave:function(a){setTimeout(function(){a.style.height="0px",a.style.opacity="0"})},onAfterLeave:function(a){a&&(PY(a,e),a.style&&(a.style.height=null,a.style.opacity=null))}}};const Dh=Q8;var B8=function(){return{id:String,prefixCls:String,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},motion:Object,theme:{type:String,default:"light"},mode:{type:String,default:"vertical"},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:.1},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:"hover"},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,"onUpdate:openKeys":Function,"onUpdate:selectedKeys":Function,"onUpdate:activeKey":Function}},QY=[];const Yi=He({compatConfig:{MODE:3},name:"AMenu",inheritAttrs:!1,props:B8(),slots:["expandIcon","overflowedIndicator"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs,o=Nt("menu",e),r=o.prefixCls,f=o.direction,v=o.getPrefixCls,b=Ne({}),Z=un(n3,Ne(void 0)),p=de(function(){return Z.value!==void 0?Z.value:e.inlineCollapsed}),y=Ne(!1);Kt(function(){y.value=!0}),qt(function(){jn(!(e.inlineCollapsed===!0&&e.mode!=="inline"),"Menu","`inlineCollapsed` should only be used when `mode` is inline."),jn(!(Z.value!==void 0&&e.inlineCollapsed===!0),"Menu","`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.")});var X=Ne([]),m=Ne([]),N=Ne({});rt(b,function(){for(var k={},F=0,O=Object.values(b.value);F0&&arguments[0]!==void 0?arguments[0]:u.value;au(u.value,k)||(u.value=k.slice())},{immediate:!0,deep:!0});var s,h=function(F){clearTimeout(s),s=setTimeout(function(){e.activeKey===void 0&&(X.value=F),a("update:activeKey",F[F.length-1])})},c=de(function(){return!!e.disabled}),W=de(function(){return f.value==="rtl"}),M=Ne("vertical"),I=Ne(!1);qt(function(){(e.mode==="inline"||e.mode==="vertical")&&p.value?(M.value="vertical",I.value=p.value):(M.value=e.mode,I.value=!1)});var w=de(function(){return M.value==="inline"}),C=function(F){u.value=F,a("update:openKeys",F),a("openChange",F)},x=Ne(u.value),R=Ne(!1);rt(u,function(){w.value&&(x.value=u.value)},{immediate:!0}),rt(w,function(){if(!R.value){R.value=!0;return}w.value?u.value=x.value:C(QY)},{immediate:!0});var g=de(function(){var k;return k={},ce(k,"".concat(r.value),!0),ce(k,"".concat(r.value,"-root"),!0),ce(k,"".concat(r.value,"-").concat(M.value),!0),ce(k,"".concat(r.value,"-inline-collapsed"),I.value),ce(k,"".concat(r.value,"-rtl"),W.value),ce(k,"".concat(r.value,"-").concat(e.theme),!0),k}),S=de(function(){return v()}),L=de(function(){return{horizontal:{name:"".concat(S.value,"-slide-up")},inline:Dh,other:{name:"".concat(S.value,"-zoom-big")}}});$x(!0);var V=function k(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],O=[],Q=b.value;return F.forEach(function(oe){var se=Q[oe],he=se.key,pe=se.childrenEventKeys;O.push.apply(O,[he].concat(yt(k(mi(pe)))))}),O},Y=function(F){a("click",F),d(F)},T=function(F,O){var Q,oe=((Q=N.value[F])===null||Q===void 0?void 0:Q.childrenEventKeys)||[],se=u.value.filter(function(pe){return pe!==F});if(O)se.push(F);else if(M.value!=="inline"){var he=V(mi(oe));se=cZ(se.filter(function(pe){return!he.includes(pe)}))}au(u,se)||C(se)},J=function(F,O){b.value=P(P({},b.value),{},ce({},F,O))},U=function(F){delete b.value[F],b.value=P({},b.value)},K=Ne(0),H=de(function(){return e.expandIcon||i.expandIcon?function(k){var F=e.expandIcon||i.expandIcon;return F=typeof F=="function"?F(k):F,wn(F,{class:"".concat(r.value,"-submenu-expand-icon")},!1)}:null});return V8({store:b,prefixCls:r,activeKeys:X,openKeys:u,selectedKeys:m,changeActiveKeys:h,disabled:c,rtl:W,mode:M,inlineIndent:de(function(){return e.inlineIndent}),subMenuCloseDelay:de(function(){return e.subMenuCloseDelay}),subMenuOpenDelay:de(function(){return e.subMenuOpenDelay}),builtinPlacements:de(function(){return e.builtinPlacements}),triggerSubMenuAction:de(function(){return e.triggerSubMenuAction}),getPopupContainer:de(function(){return e.getPopupContainer}),inlineCollapsed:I,antdMenuTheme:de(function(){return e.theme}),siderCollapsed:Z,defaultMotions:de(function(){return y.value?L.value:null}),motion:de(function(){return y.value?e.motion:null}),overflowDisabled:Ne(void 0),onOpenChange:T,onItemClick:Y,registerMenuInfo:J,unRegisterMenuInfo:U,selectedSubMenuKeys:G,isRootMenu:Ne(!0),expandIcon:H,forceSubMenuRender:de(function(){return e.forceSubMenuRender})}),function(){var k,F,O=ti((k=i.default)===null||k===void 0?void 0:k.call(i)),Q=K.value>=O.length-1||M.value!=="horizontal"||e.disabledOverflow,oe=M.value!=="horizontal"||e.disabledOverflow?O:O.map(function(he,pe){return D(Hm,{key:he.key,overflowDisabled:pe>K.value},{default:function(){return he}})}),se=((F=i.overflowedIndicator)===null||F===void 0?void 0:F.call(i))||D(qG,null,null);return D(vu,P(P({},l),{},{onMousedown:e.onMousedown,prefixCls:"".concat(r.value,"-overflow"),component:"ul",itemComponent:Ro,class:[g.value,l.class],role:"menu",id:e.id,data:oe,renderRawItem:function(pe){return pe},renderRawRest:function(pe){var re=pe.length,_=re?O.slice(-re):null;return D(ln,null,[D(xu,{eventKey:ob,key:ob,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}}),D(UY,null,{default:function(){return[D(xu,{eventKey:ob,key:ob,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}})]}})])},maxCount:M.value!=="horizontal"||e.disabledOverflow?vu.INVALIDATE:vu.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(pe){K.value=pe}}),{default:function(){return[D(kW,{to:"body"},{default:function(){return[D("div",{style:{display:"none"},"aria-hidden":!0},[D(UY,null,{default:function(){return[oe]}})])]}})]}})}}});var A8=function(){return{title:We.any}};const Pm=He({compatConfig:{MODE:3},name:"AMenuItemGroup",inheritAttrs:!1,props:A8(),slots:["title"],setup:function(e,t){var i=t.slots,a=t.attrs,l=gs(),o=l.prefixCls,r=de(function(){return"".concat(o.value,"-item-group")}),f=n1();return function(){var v,b;return f?(v=i.default)===null||v===void 0?void 0:v.call(i):D("li",P(P({},a),{},{onClick:function(p){return p.stopPropagation()},class:r.value}),[D("div",{title:typeof e.title=="string"?e.title:void 0,class:"".concat(r.value,"-title")},[ui(i,e,"title")]),D("ul",{class:"".concat(r.value,"-list")},[(b=i.default)===null||b===void 0?void 0:b.call(i)])])}}});var _8=function(){return{prefixCls:String,dashed:Boolean}};const Qm=He({compatConfig:{MODE:3},name:"AMenuDivider",props:_8(),setup:function(e){var t=Nt("menu",e),i=t.prefixCls,a=de(function(){var l;return l={},ce(l,"".concat(i.value,"-item-divider"),!0),ce(l,"".concat(i.value,"-item-divider-dashed"),!!e.dashed),l});return function(){return D("li",{class:a.value},null)}}});Yi.install=function(n){return n.component(Yi.name,Yi),n.component(Ro.name,Ro),n.component(xu.name,xu),n.component(Qm.name,Qm),n.component(Pm.name,Pm),n};Yi.Item=Ro;Yi.Divider=Qm;Yi.SubMenu=xu;Yi.ItemGroup=Pm;var $8=function(){return{prefixCls:String,routes:{type:Array},params:We.any,separator:We.any,itemRender:{type:Function}}};function q8(n,e){if(!n.breadcrumbName)return null;var t=Object.keys(e).join("|"),i=n.breadcrumbName.replace(new RegExp(":(".concat(t,")"),"g"),function(a,l){return e[l]||a});return i}function BY(n){var e=n.route,t=n.params,i=n.routes,a=n.paths,l=i.indexOf(e)===i.length-1,o=q8(e,t);return l?D("span",null,[o]):D("a",{href:"#/".concat(a.join("/"))},[o])}const bc=He({compatConfig:{MODE:3},name:"ABreadcrumb",props:$8(),slots:["separator","itemRender"],setup:function(e,t){var i=t.slots,a=Nt("breadcrumb",e),l=a.prefixCls,o=a.direction,r=function(Z,p){return Z=(Z||"").replace(/^\//,""),Object.keys(p).forEach(function(y){Z=Z.replace(":".concat(y),p[y])}),Z},f=function(Z,p,y){var X=yt(Z),m=r(p||"",y);return m&&X.push(m),X},v=function(Z){var p=Z.routes,y=p===void 0?[]:p,X=Z.params,m=X===void 0?{}:X,N=Z.separator,G=Z.itemRender,d=G===void 0?BY:G,u=[];return y.map(function(s){var h=r(s.path,m);h&&u.push(h);var c=[].concat(u),W=null;return s.children&&s.children.length&&(W=D(Yi,null,{default:function(){return[s.children.map(function(I){return D(Yi.Item,{key:I.path||I.breadcrumbName},{default:function(){return[d({route:I,params:m,routes:y,paths:f(c,I.path,m)})]}})})]}})),D(Mh,{overlay:W,separator:N,key:h||s.breadcrumbName},{default:function(){return[d({route:s,params:m,routes:y,paths:c})]}})})};return function(){var b,Z,p,y=e.routes,X=e.params,m=X===void 0?{}:X,N=ti(ui(i,e)),G=(b=ui(i,e,"separator"))!==null&&b!==void 0?b:"/",d=e.itemRender||i.itemRender||BY;y&&y.length>0?p=v({routes:y,params:m,separator:G,itemRender:d}):N.length&&(p=N.map(function(s,h){return Ci(Yt(s.type)==="object"&&(s.type.__ANT_BREADCRUMB_ITEM||s.type.__ANT_BREADCRUMB_SEPARATOR),"Breadcrumb","Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children"),Vl(s,{separator:G,key:h})}));var u=(Z={},ce(Z,l.value,!0),ce(Z,"".concat(l.value,"-rtl"),o.value==="rtl"),Z);return D("div",{class:u},[p])}}});var e$=["separator","class"],t$=function(){return{prefixCls:String}};const Bm=He({compatConfig:{MODE:3},name:"ABreadcrumbSeparator",__ANT_BREADCRUMB_SEPARATOR:!0,inheritAttrs:!1,props:t$(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("breadcrumb",e),o=l.prefixCls;return function(){var r;a.separator;var f=a.class,v=jt(a,e$),b=ti((r=i.default)===null||r===void 0?void 0:r.call(i));return D("span",P({class:["".concat(o.value,"-separator"),f]},v),[b.length>0?b:"/"])}}});bc.Item=Mh;bc.Separator=Bm;bc.install=function(n){return n.component(bc.name,bc),n.component(Mh.name,Mh),n.component(Bm.name,Bm),n};var $2={},n$={get exports(){return $2},set exports(n){$2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t=1e3,i=6e4,a=36e5,l="millisecond",o="second",r="minute",f="hour",v="day",b="week",Z="month",p="quarter",y="year",X="date",m="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,G=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var g=["th","st","nd","rd"],S=R%100;return"["+R+(g[(S-20)%10]||g[S]||g[0])+"]"}},u=function(R,g,S){var L=String(R);return!L||L.length>=g?R:""+Array(g+1-L.length).join(S)+R},s={s:u,z:function(R){var g=-R.utcOffset(),S=Math.abs(g),L=Math.floor(S/60),V=S%60;return(g<=0?"+":"-")+u(L,2,"0")+":"+u(V,2,"0")},m:function R(g,S){if(g.date()1)return R(T[0])}else{var J=g.name;c[J]=g,V=J}return!L&&V&&(h=V),V||!L&&h},I=function(R,g){if(W(R))return R.clone();var S=typeof g=="object"?g:{};return S.date=R,S.args=arguments,new C(S)},w=s;w.l=M,w.i=W,w.w=function(R,g){return I(R,{locale:g.$L,utc:g.$u,x:g.$x,$offset:g.$offset})};var C=function(){function R(S){this.$L=M(S.locale,null,!0),this.parse(S)}var g=R.prototype;return g.parse=function(S){this.$d=function(L){var V=L.date,Y=L.utc;if(V===null)return new Date(NaN);if(w.u(V))return new Date;if(V instanceof Date)return new Date(V);if(typeof V=="string"&&!/Z$/i.test(V)){var T=V.match(N);if(T){var J=T[2]-1||0,U=(T[7]||"0").substring(0,3);return Y?new Date(Date.UTC(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)):new Date(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)}}return new Date(V)}(S),this.$x=S.x||{},this.init()},g.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},g.$utils=function(){return w},g.isValid=function(){return this.$d.toString()!==m},g.isSame=function(S,L){var V=I(S);return this.startOf(L)<=V&&V<=this.endOf(L)},g.isAfter=function(S,L){return I(S)25){var b=o(this).startOf(i).add(1,i).date(v),Z=o(this).endOf(t);if(b.isBefore(Z))return 1}var p=o(this).startOf(i).date(v).startOf(t).subtract(1,"millisecond"),y=this.diff(p,t,!0);return y<0?o(this).startOf("week").week():Math.ceil(y)},r.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}})})(o$);const s$=tv;var nv={},c$={get exports(){return nv},set exports(n){nv=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){i.prototype.weekYear=function(){var a=this.month(),l=this.week(),o=this.year();return l===1&&a===11?o+1:a===0&&l>=52?o-1:o}}})})(c$);const u$=nv;var iv={},d$={get exports(){return iv},set exports(n){iv=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){var a=i.prototype,l=a.format;a.format=function(o){var r=this,f=this.$locale();if(!this.isValid())return l.bind(this)(o);var v=this.$utils(),b=(o||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(Z){switch(Z){case"Q":return Math.ceil((r.$M+1)/3);case"Do":return f.ordinal(r.$D);case"gggg":return r.weekYear();case"GGGG":return r.isoWeekYear();case"wo":return f.ordinal(r.week(),"W");case"w":case"ww":return v.s(r.week(),Z==="w"?1:2,"0");case"W":case"WW":return v.s(r.isoWeek(),Z==="W"?1:2,"0");case"k":case"kk":return v.s(String(r.$H===0?24:r.$H),Z==="k"?1:2,"0");case"X":return Math.floor(r.$d.getTime()/1e3);case"x":return r.$d.getTime();case"z":return"["+r.offsetName()+"]";case"zzz":return"["+r.offsetName("long")+"]";default:return Z}});return l.bind(this)(b)}}})})(d$);const h$=iv;var lv={},f$={get exports(){return lv},set exports(n){lv=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,a=/\d\d/,l=/\d\d?/,o=/\d*[^-_:/,()\s\d]+/,r={},f=function(m){return(m=+m)+(m>68?1900:2e3)},v=function(m){return function(N){this[m]=+N}},b=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(N){if(!N||N==="Z")return 0;var G=N.match(/([+-]|\d\d)/g),d=60*G[1]+(+G[2]||0);return d===0?0:G[0]==="+"?-d:d}(m)}],Z=function(m){var N=r[m];return N&&(N.indexOf?N:N.s.concat(N.f))},p=function(m,N){var G,d=r.meridiem;if(d){for(var u=1;u<=24;u+=1)if(m.indexOf(d(u,0,N))>-1){G=u>12;break}}else G=m===(N?"pm":"PM");return G},y={A:[o,function(m){this.afternoon=p(m,!1)}],a:[o,function(m){this.afternoon=p(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[a,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[l,v("seconds")],ss:[l,v("seconds")],m:[l,v("minutes")],mm:[l,v("minutes")],H:[l,v("hours")],h:[l,v("hours")],HH:[l,v("hours")],hh:[l,v("hours")],D:[l,v("day")],DD:[a,v("day")],Do:[o,function(m){var N=r.ordinal,G=m.match(/\d+/);if(this.day=G[0],N)for(var d=1;d<=31;d+=1)N(d).replace(/\[|\]/g,"")===m&&(this.day=d)}],M:[l,v("month")],MM:[a,v("month")],MMM:[o,function(m){var N=Z("months"),G=(Z("monthsShort")||N.map(function(d){return d.slice(0,3)})).indexOf(m)+1;if(G<1)throw new Error;this.month=G%12||G}],MMMM:[o,function(m){var N=Z("months").indexOf(m)+1;if(N<1)throw new Error;this.month=N%12||N}],Y:[/[+-]?\d+/,v("year")],YY:[a,function(m){this.year=f(m)}],YYYY:[/\d{4}/,v("year")],Z:b,ZZ:b};function X(m){var N,G;N=m,G=r&&r.formats;for(var d=(m=N.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(I,w,C){var x=C&&C.toUpperCase();return w||G[C]||t[C]||G[x].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,g,S){return g||S.slice(1)})})).match(i),u=d.length,s=0;s-1)return new Date((V==="X"?1e3:1)*L);var T=X(V)(L),J=T.year,U=T.month,K=T.day,H=T.hours,k=T.minutes,F=T.seconds,O=T.milliseconds,Q=T.zone,oe=new Date,se=K||(J||U?1:oe.getDate()),he=J||oe.getFullYear(),pe=0;J&&!U||(pe=U>0?U-1:oe.getMonth());var re=H||0,_=k||0,E=F||0,$=O||0;return Q?new Date(Date.UTC(he,pe,se,re,_,E,$+60*Q.offset*1e3)):Y?new Date(Date.UTC(he,pe,se,re,_,E,$)):new Date(he,pe,se,re,_,E,$)}catch{return new Date("")}}(h,M,c),this.init(),x&&x!==!0&&(this.$L=this.locale(x).$L),C&&h!=this.format(M)&&(this.$d=new Date("")),r={}}else if(M instanceof Array)for(var R=M.length,g=1;g<=R;g+=1){W[1]=M[g-1];var S=G.apply(this,W);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}g===R&&(this.$d=new Date(""))}else u.call(this,s)}}})})(f$);const b$=lv;ml.extend(b$);ml.extend(h$);ml.extend(l$);ml.extend(r$);ml.extend(s$);ml.extend(u$);ml.extend(function(n,e){var t=e.prototype,i=t.format;t.format=function(l){var o=(l||"").replace("Wo","wo");return i.bind(this)(o)}});var m$={bn_BD:"bn-bd",by_BY:"be",en_GB:"en-gb",en_US:"en",fr_BE:"fr",fr_CA:"fr-ca",hy_AM:"hy-am",kmr_IQ:"ku",nl_BE:"nl-be",pt_BR:"pt-br",zh_CN:"zh-cn",zh_HK:"zh-hk",zh_TW:"zh-tw"},Es=function(e){var t=m$[e];return t||e.split("_")[0]},AY=function(){qK(!1,"Not match any format. Please help to fire a issue about this.")},p$={getNow:function(){return ml()},getFixedDate:function(e){return ml(e,["YYYY-M-DD","YYYY-MM-DD"])},getEndDate:function(e){return e.endOf("month")},getWeekDay:function(e){var t=e.locale("en");return t.weekday()+t.localeData().firstDayOfWeek()},getYear:function(e){return e.year()},getMonth:function(e){return e.month()},getDate:function(e){return e.date()},getHour:function(e){return e.hour()},getMinute:function(e){return e.minute()},getSecond:function(e){return e.second()},addYear:function(e,t){return e.add(t,"year")},addMonth:function(e,t){return e.add(t,"month")},addDate:function(e,t){return e.add(t,"day")},setYear:function(e,t){return e.year(t)},setMonth:function(e,t){return e.month(t)},setDate:function(e,t){return e.date(t)},setHour:function(e,t){return e.hour(t)},setMinute:function(e,t){return e.minute(t)},setSecond:function(e,t){return e.second(t)},isAfter:function(e,t){return e.isAfter(t)},isValidate:function(e){return e.isValid()},locale:{getWeekFirstDay:function(e){return ml().locale(Es(e)).localeData().firstDayOfWeek()},getWeekFirstDate:function(e,t){return t.locale(Es(e)).weekday(0)},getWeek:function(e,t){return t.locale(Es(e)).week()},getShortWeekDays:function(e){return ml().locale(Es(e)).localeData().weekdaysMin()},getShortMonths:function(e){return ml().locale(Es(e)).localeData().monthsShort()},format:function(e,t,i){return t.locale(Es(e)).format(i)},parse:function(e,t,i){for(var a=Es(e),l=0;ly$)return t;do e%2&&(t+=n),e=Z$(e/2),e&&(n+=n);while(e);return t}function tp(n,e){for(var t=-1,i=n==null?0:n.length,a=Array(i);++ta?0:a+e),t=t>a?a:t,t<0&&(t+=a),a=e>t?0:t-e>>>0,e>>>=0;for(var l=Array(a);++i=i?n:u3(n,e,t)}var X$="\\ud800-\\udfff",N$="\\u0300-\\u036f",M$="\\ufe20-\\ufe2f",I$="\\u20d0-\\u20ff",Y$=N$+M$+I$,w$="\\ufe0e\\ufe0f",g$="\\u200d",V$=RegExp("["+g$+X$+Y$+w$+"]");function a1(n){return V$.test(n)}function d3(n){return function(e){return e==null?void 0:e[n]}}var L$=d3("length");const R$=L$;var h3="\\ud800-\\udfff",T$="\\u0300-\\u036f",x$="\\ufe20-\\ufe2f",C$="\\u20d0-\\u20ff",S$=T$+x$+C$,z$="\\ufe0e\\ufe0f",k$="["+h3+"]",av="["+S$+"]",rv="\\ud83c[\\udffb-\\udfff]",F$="(?:"+av+"|"+rv+")",f3="[^"+h3+"]",b3="(?:\\ud83c[\\udde6-\\uddff]){2}",m3="[\\ud800-\\udbff][\\udc00-\\udfff]",J$="\\u200d",p3=F$+"?",y3="["+z$+"]?",D$="(?:"+J$+"(?:"+[f3,b3,m3].join("|")+")"+y3+p3+")*",O$=y3+p3+D$,j$="(?:"+[f3+av+"?",av,b3,m3,k$].join("|")+")",ew=RegExp(rv+"(?="+rv+")|"+j$+O$,"g");function U$(n){for(var e=ew.lastIndex=0;ew.test(n);)++e;return e}function r1(n){return a1(n)?U$(n):R$(n)}function E$(n){return n.split("")}var Z3="\\ud800-\\udfff",K$="\\u0300-\\u036f",H$="\\ufe20-\\ufe2f",P$="\\u20d0-\\u20ff",Q$=K$+H$+P$,B$="\\ufe0e\\ufe0f",A$="["+Z3+"]",ov="["+Q$+"]",sv="\\ud83c[\\udffb-\\udfff]",_$="(?:"+ov+"|"+sv+")",v3="[^"+Z3+"]",W3="(?:\\ud83c[\\udde6-\\uddff]){2}",G3="[\\ud800-\\udbff][\\udc00-\\udfff]",$$="\\u200d",X3=_$+"?",N3="["+B$+"]?",q$="(?:"+$$+"(?:"+[v3,W3,G3].join("|")+")"+N3+X3+")*",eq=N3+X3+q$,tq="(?:"+[v3+ov+"?",ov,W3,G3,A$].join("|")+")",nq=RegExp(sv+"(?="+sv+")|"+tq+eq,"g");function iq(n){return n.match(nq)||[]}function lq(n){return a1(n)?iq(n):E$(n)}var aq=Math.ceil;function M3(n,e){e=e===void 0?" ":l1(e);var t=e.length;if(t<2)return t?_Y(e,n):e;var i=_Y(e,aq(n/r1(e)));return a1(e)?G$(lq(i),0,n).join(""):i.slice(0,n)}var rq=/\s/;function oq(n){for(var e=n.length;e--&&rq.test(n.charAt(e)););return e}var sq=/^\s+/;function cq(n){return n&&n.slice(0,oq(n)+1).replace(sq,"")}var tw=0/0,uq=/^[-+]0x[0-9a-f]+$/i,dq=/^0b[01]+$/i,hq=/^0o[0-7]+$/i,fq=parseInt;function cv(n){if(typeof n=="number")return n;if(np(n))return tw;if(wr(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=wr(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=cq(n);var t=dq.test(n);return t||hq.test(n)?fq(n.slice(2),t?2:8):uq.test(n)?tw:+n}var nw=1/0,bq=17976931348623157e292;function mq(n){if(!n)return n===0?n:0;if(n=cv(n),n===nw||n===-nw){var e=n<0?-1:1;return e*bq}return n===n?n:0}function o1(n){var e=mq(n),t=e%1;return e===e?t?e-t:e:0}function s1(n){return n==null?"":l1(n)}function I3(n,e,t){n=s1(n),e=o1(e);var i=e?r1(n):0;return e&&i1&&(o=e.addDate(o,-7)),o}function Ad(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(e){case"year":return t.addYear(n,i*10);case"quarter":case"month":return t.addYear(n,i);default:return t.addMonth(n,i)}}function wl(n,e){var t=e.generateConfig,i=e.locale,a=e.format;return typeof a=="function"?a(n):t.locale.format(i.locale,n,a)}function x3(n,e){var t=e.generateConfig,i=e.locale,a=e.formatList;return!n||typeof a[0]=="function"?null:t.locale.parse(i.locale,n,a)}function fv(n){var e=n.cellDate,t=n.mode,i=n.disabledDate,a=n.generateConfig;if(!i)return!1;var l=function(X,m,N){for(var G=m;G<=N;){var d=void 0;switch(X){case"date":{if(d=a.setDate(e,G),!i(d))return!1;break}case"month":{if(d=a.setMonth(e,G),!fv({cellDate:d,mode:"month",generateConfig:a,disabledDate:i}))return!1;break}case"year":{if(d=a.setYear(e,G),!fv({cellDate:d,mode:"year",generateConfig:a,disabledDate:i}))return!1;break}}G+=1}return!0};switch(t){case"date":case"week":return i(e);case"month":{var o=1,r=a.getDate(a.getEndDate(e));return l("date",o,r)}case"quarter":{var f=Math.floor(a.getMonth(e)/3)*3,v=f+2;return l("month",f,v)}case"year":return l("month",0,11);case"decade":{var b=a.getYear(e),Z=Math.floor(b/Zr)*Zr,p=Z+Zr-1;return l("year",Z,p)}}}function b1(n){var e=zi(n),t=_r(),i=t.hideHeader;if(i.value)return null;var a=e.prefixCls,l=e.generateConfig,o=e.locale,r=e.value,f=e.format,v="".concat(a,"-header");return D(Vs,{prefixCls:v},{default:function(){return[r?wl(r,{locale:o,format:f,generateConfig:l}):" "]}})}b1.displayName="TimeHeader";b1.inheritAttrs=!1;const hb=He({name:"TimeUnitColumn",props:["prefixCls","units","onSelect","value","active","hideDisabledOptions"],setup:function(e){var t=_r(),i=t.open,a=Ne(null),l=Ne(new Map),o=Ne();return rt(function(){return e.value},function(){var r=l.value.get(e.value);r&&i.value!==!1&&dv(a.value,r.offsetTop,120)}),fn(function(){var r;(r=o.value)===null||r===void 0||r.call(o)}),rt(i,function(){var r;(r=o.value)===null||r===void 0||r.call(o),cn(function(){if(i.value){var f=l.value.get(e.value);f&&(o.value=Zq(f,function(){dv(a.value,f.offsetTop,0)}))}})},{immediate:!0,flush:"post"}),function(){var r=e.prefixCls,f=e.units,v=e.onSelect,b=e.value,Z=e.active,p=e.hideDisabledOptions,y="".concat(r,"-cell");return D("ul",{class:_e("".concat(r,"-column"),ce({},"".concat(r,"-column-active"),Z)),ref:a,style:{position:"relative"}},[f.map(function(X){var m;return p&&X.disabled?null:D("li",{key:X.value,ref:function(G){l.value.set(X.value,G)},class:_e(y,(m={},ce(m,"".concat(y,"-disabled"),X.disabled),ce(m,"".concat(y,"-selected"),b===X.value),m)),onClick:function(){X.disabled||v(X.value)}},[D("div",{class:"".concat(y,"-inner")},[X.label])])})])}}});function C3(n,e){for(var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0",i=String(n);i.length=12:!1}),a=de(function(){return e.use12Hours?t.value%12:t.value}),l=de(function(){return e.value?e.generateConfig.getMinute(e.value):-1}),o=de(function(){return e.value?e.generateConfig.getSecond(e.value):-1}),r=Ne(e.generateConfig.getNow()),f=Ne(),v=Ne(),b=Ne();xW(function(){r.value=e.generateConfig.getNow()}),qt(function(){if(e.disabledTime){var G=e.disabledTime(r),d=[G.disabledHours,G.disabledMinutes,G.disabledSeconds];f.value=d[0],v.value=d[1],b.value=d[2]}else{var u=[e.disabledHours,e.disabledMinutes,e.disabledSeconds];f.value=u[0],v.value=u[1],b.value=u[2]}});var Z=function(d,u,s,h){var c=e.value||e.generateConfig.getNow(),W=Math.max(0,u),M=Math.max(0,s),I=Math.max(0,h);return c=w3(e.generateConfig,c,!e.use12Hours||!d?W:W+12,M,I),c},p=de(function(){var G;return uZ(0,23,(G=e.hourStep)!==null&&G!==void 0?G:1,f.value&&f.value())}),y=de(function(){if(!e.use12Hours)return[!1,!1];var G=[!0,!0];return p.value.forEach(function(d){var u=d.disabled,s=d.value;u||(s>=12?G[1]=!1:G[0]=!1)}),G}),X=de(function(){return e.use12Hours?p.value.filter(i.value?function(G){return G.value>=12}:function(G){return G.value<12}).map(function(G){var d=G.value%12,u=d===0?"12":C3(d,2);return P(P({},G),{},{label:u,value:d})}):p.value}),m=de(function(){var G;return uZ(0,59,(G=e.minuteStep)!==null&&G!==void 0?G:1,v.value&&v.value(t.value))}),N=de(function(){var G;return uZ(0,59,(G=e.secondStep)!==null&&G!==void 0?G:1,b.value&&b.value(t.value,l))});return function(){var G=e.prefixCls,d=e.operationRef,u=e.activeColumnIndex,s=e.showHour,h=e.showMinute,c=e.showSecond,W=e.use12Hours,M=e.hideDisabledOptions,I=e.onSelect,w=[],C="".concat(G,"-content"),x="".concat(G,"-time-panel");d.value={onUpDown:function(L){var V=w[u];if(V)for(var Y=V.units.findIndex(function(K){return K.value===V.value}),T=V.units.length,J=1;J2&&arguments[2]!==void 0?arguments[2]:!1,he=e.picker,pe=e.generateConfig,re=e.onSelect,_=e.onChange,E=e.disabledDate;(L.value===he||se)&&(W(Q),re&&re(Q),Z&&Z(Q,oe),_&&!Gu(pe,Q,c.value)&&!(E!=null&&E(Q))&&_(Q))},K=function(Q){return u.value&&u.value.onKeydown?([bt.LEFT,bt.RIGHT,bt.UP,bt.DOWN,bt.PAGE_UP,bt.PAGE_DOWN,bt.ENTER].includes(Q.which)&&Q.preventDefault(),u.value.onKeydown(Q)):!1},H=function(Q){u.value&&u.value.onBlur&&u.value.onBlur(Q)},k=function(){var Q=e.generateConfig,oe=e.hourStep,se=e.minuteStep,he=e.secondStep,pe=Q.getNow(),re=pq(Q.getHour(pe),Q.getMinute(pe),Q.getSecond(pe),l.value?oe:1,o.value?se:1,r.value?he:1),_=w3(Q,pe,re[0],re[1],re[2]);U(_,"submit")},F=de(function(){var O,Q=e.prefixCls,oe=e.direction;return _e("".concat(Q,"-panel"),(O={},ce(O,"".concat(Q,"-panel-has-range"),G&&G.value&&G.value[0]&&G.value[1]),ce(O,"".concat(Q,"-panel-has-range-hover"),d&&d.value&&d.value[0]&&d.value[1]),ce(O,"".concat(Q,"-panel-rtl"),oe==="rtl"),O))});return c1(P(P({},f),{},{mode:L,hideHeader:de(function(){var O;return e.hideHeader!==void 0?e.hideHeader:(O=f.hideHeader)===null||O===void 0?void 0:O.value}),hidePrevBtn:de(function(){return m.value&&N.value==="right"}),hideNextBtn:de(function(){return m.value&&N.value==="left"})})),rt(function(){return e.value},function(){e.value&&C(e.value)}),function(){var O=e.prefixCls,Q=O===void 0?"ant-picker":O,oe=e.locale,se=e.generateConfig,he=e.disabledDate,pe=e.picker,re=pe===void 0?"date":pe,_=e.tabindex,E=_===void 0?0:_,$=e.showNow,ae=e.showTime,le=e.showToday,ee=e.renderExtraFooter,te=e.onMousedown,be=e.onOk,ne=e.components;v&&N.value!=="right"&&(v.value={onKeydown:K,onClose:function(){u.value&&u.value.onClose&&u.value.onClose()}});var B,q=P(P(P({},i),e),{},{operationRef:u,prefixCls:Q,viewDate:w.value,value:c.value,onViewDateChange:x,sourceMode:Y.value,onPanelChange:J,disabledDate:he});switch(delete q.onChange,delete q.onSelect,L.value){case"decade":B=D(h1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"year":B=D(Y1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"month":B=D(W1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"quarter":B=D(N1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"week":B=D(y1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"time":delete q.showTime,B=D(lp,P(P(P({},q),Yt(ae)==="object"?ae:null),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;default:ae?B=D(p1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null):B=D(jh,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null)}var ue,ve;p!=null&&p.value||(ue=J3(Q,L.value,ee),ve=D3({prefixCls:Q,components:ne,needConfirmButton:a.value,okDisabled:!c.value||he&&he(c.value),locale:oe,showNow:$,onNow:a.value&&k,onOk:function(){c.value&&(U(c.value,"submit",!0),be&&be(c.value))}}));var Ge;if(le&&L.value==="date"&&re==="date"&&!ae){var Je=se.getNow(),xe="".concat(Q,"-today-btn"),ke=he&&he(Je);Ge=D("a",{class:_e(xe,ke&&"".concat(xe,"-disabled")),"aria-disabled":ke,onClick:function(){ke||U(Je,"mouse",!0)}},[oe.today])}return D("div",{tabindex:E,class:_e(F.value,i.class),style:i.style,onKeydown:K,onBlur:H,onMousedown:te,ref:b},[B,ue||ve||Ge?D("div",{class:"".concat(Q,"-footer")},[ue,ve,Ge]):null])}}})}var Dq=Jq();const w1=function(n){return D(Dq,n)};var Oq={bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function O3(n,e){var t,i=e.slots,a=zi(n),l=a.prefixCls,o=a.popupStyle,r=a.visible,f=a.dropdownClassName,v=a.dropdownAlign,b=a.transitionName,Z=a.getPopupContainer,p=a.range,y=a.popupPlacement,X=a.direction,m="".concat(l,"-dropdown"),N=function(){return y!==void 0?y:X==="rtl"?"bottomRight":"bottomLeft"};return D(Pu,{showAction:[],hideAction:[],popupPlacement:N(),builtinPlacements:Oq,prefixCls:m,popupTransitionName:b,popupAlign:v,popupVisible:r,popupClassName:_e(f,(t={},ce(t,"".concat(m,"-range"),p),ce(t,"".concat(m,"-rtl"),X==="rtl"),t)),popupStyle:o,getPopupContainer:Z,tryPopPortal:!0},{default:i.default,popup:i.popupElement})}function mv(n){var e=n.open,t=n.value,i=n.isClickOutside,a=n.triggerOpen,l=n.forwardKeydown,o=n.onKeydown,r=n.blurToCancel,f=n.onSubmit,v=n.onCancel,b=n.onFocus,Z=n.onBlur,p=Ne(!1),y=Ne(!1),X=Ne(!1),m=Ne(!1),N=Ne(!1),G=de(function(){return{onMousedown:function(){p.value=!0,a(!0)},onKeydown:function(s){var h=function(){N.value=!0};if(o(s,h),!N.value){switch(s.which){case bt.ENTER:{e.value?f()!==!1&&(p.value=!0):a(!0),s.preventDefault();return}case bt.TAB:{p.value&&e.value&&!s.shiftKey?(p.value=!1,s.preventDefault()):!p.value&&e.value&&!l(s)&&s.shiftKey&&(p.value=!0,s.preventDefault());return}case bt.ESC:{p.value=!0,v();return}}!e.value&&![bt.SHIFT].includes(s.which)?a(!0):p.value||l(s)}},onFocus:function(s){p.value=!0,y.value=!0,b&&b(s)},onBlur:function(s){if(X.value||!i(document.activeElement)){X.value=!1;return}r.value?setTimeout(function(){for(var h=document,c=h.activeElement;c&&c.shadowRoot;)c=c.shadowRoot.activeElement;i(c)&&v()},0):e.value&&(a(!1),m.value&&f()),y.value=!1,Z&&Z(s)}}});rt(e,function(){m.value=!1}),rt(t,function(){m.value=!0});var d=Ne();return Kt(function(){d.value=vq(function(u){var s=Wq(u);if(e.value){var h=i(s);h?(!y.value||h)&&a(!1):(X.value=!0,At(function(){X.value=!1}))}})}),fn(function(){d.value&&d.value()}),[G,{focused:y,typing:p}]}function pv(n){var e=n.valueTexts,t=n.onTextChange,i=Ne("");function a(o){i.value=o,t(o)}function l(){i.value=e.value[0]}return rt(function(){return yt(e.value)},function(o){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];o.join("||")!==r.join("||")&&e.value.every(function(f){return f!==i.value})&&l()},{immediate:!0}),[i,a,l]}function Am(n,e){var t=e.formatList,i=e.generateConfig,a=e.locale,l=kG(function(){if(!n.value)return[[""],""];for(var f="",v=[],b=0;b1&&arguments[1]!==void 0?arguments[1]:!1;if(At.cancel(o),X){l.value=y;return}o=At(function(){l.value=y})}var f=Am(l,{formatList:t,generateConfig:i,locale:a}),v=ft(f,2),b=v[1];function Z(y){r(y)}function p(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;r(null,y)}return rt(n,function(){p(!0)}),fn(function(){At.cancel(o)}),[b,Z,p]}function jq(){return He({name:"Picker",inheritAttrs:!1,props:["prefixCls","id","tabindex","dropdownClassName","dropdownAlign","popupStyle","transitionName","generateConfig","locale","inputReadOnly","allowClear","autofocus","showTime","showNow","showHour","showMinute","showSecond","picker","format","use12Hours","value","defaultValue","open","defaultOpen","defaultOpenValue","suffixIcon","clearIcon","disabled","disabledDate","placeholder","getPopupContainer","panelRender","inputRender","onChange","onOpenChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onContextmenu","onClick","onKeydown","onSelect","direction","autocomplete","showToday","renderExtraFooter","dateRender","minuteStep","hourStep","secondStep","hideDisabledOptions"],setup:function(e,t){var i=t.attrs,a=t.expose,l=Ne(null),o=de(function(){var _;return(_=e.picker)!==null&&_!==void 0?_:"date"}),r=de(function(){return o.value==="date"&&!!e.showTime||o.value==="time"}),f=de(function(){return S3(g3(e.format,o.value,e.showTime,e.use12Hours))}),v=Ne(null),b=Ne(null),Z=Ne(null),p=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue}),y=ft(p,2),X=y[0],m=y[1],N=Ne(X.value),G=function(E){N.value=E},d=Ne(null),u=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(E){return e.disabled?!1:E},onChange:function(E){e.onOpenChange&&e.onOpenChange(E),!E&&d.value&&d.value.onClose&&d.value.onClose()}}),s=ft(u,2),h=s[0],c=s[1],W=Am(N,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),M=ft(W,2),I=M[0],w=M[1],C=pv({valueTexts:I,onTextChange:function(E){var $=x3(E,{locale:e.locale,formatList:f.value,generateConfig:e.generateConfig});$&&(!e.disabledDate||!e.disabledDate($))&&G($)}}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=function(E){var $=e.onChange,ae=e.generateConfig,le=e.locale;G(E),m(E),$&&!Gu(ae,X.value,E)&&$(E,E?wl(E,{generateConfig:ae,locale:le,format:f.value[0]}):"")},V=function(E){e.disabled&&E||c(E)},Y=function(E){return h.value&&d.value&&d.value.onKeydown?d.value.onKeydown(E):!1},T=function(){e.onMouseup&&e.onMouseup.apply(e,arguments),l.value&&(l.value.focus(),V(!0))},J=mv({blurToCancel:r,open:h,value:R,triggerOpen:V,forwardKeydown:Y,isClickOutside:function(E){return!L3([v.value,b.value,Z.value],E)},onSubmit:function(){return!N.value||e.disabledDate&&e.disabledDate(N.value)?!1:(L(N.value),V(!1),S(),!0)},onCancel:function(){V(!1),G(X.value),S()},onKeydown:function(E,$){var ae;(ae=e.onKeydown)===null||ae===void 0||ae.call(e,E,$)},onFocus:function(E){var $;($=e.onFocus)===null||$===void 0||$.call(e,E)},onBlur:function(E){var $;($=e.onBlur)===null||$===void 0||$.call(e,E)}}),U=ft(J,2),K=U[0],H=U[1],k=H.focused,F=H.typing;rt([h,I],function(){h.value||(G(X.value),!I.value.length||I.value[0]===""?g(""):w.value!==R.value&&S())}),rt(o,function(){h.value||S()}),rt(X,function(){G(X.value)});var O=yv(R,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),Q=ft(O,3),oe=Q[0],se=Q[1],he=Q[2],pe=function(E,$){($==="submit"||$!=="key"&&!r.value)&&(L(E),V(!1))};c1({operationRef:d,hideHeader:de(function(){return o.value==="time"}),panelRef:v,onSelect:pe,open:h,defaultOpenValue:Ot(e,"defaultOpenValue"),onDateMouseenter:se,onDateMouseleave:he}),a({focus:function(){l.value&&l.value.focus()},blur:function(){l.value&&l.value.blur()}});var re=Zx();return function(){var _,E=e.prefixCls,$=E===void 0?"rc-picker":E,ae=e.id,le=e.tabindex,ee=e.dropdownClassName,te=e.dropdownAlign,be=e.popupStyle,ne=e.transitionName,B=e.generateConfig,q=e.locale,ue=e.inputReadOnly,ve=e.allowClear,Ge=e.autofocus,Je=e.picker,xe=Je===void 0?"date":Je;e.defaultOpenValue;var ke=e.suffixIcon,Pe=e.clearIcon,Be=e.disabled,Te=e.placeholder,we=e.getPopupContainer,Se=e.panelRender,De=e.onMousedown,me=e.onMouseenter,Ve=e.onMouseleave,Me=e.onContextmenu,Ie=e.onClick,Ze=e.onSelect,Ce=e.direction,ye=e.autocomplete,Ue=ye===void 0?"off":ye,qe=P(P(P({},e),i),{},{class:_e(ce({},"".concat($,"-panel-focused"),!F.value)),style:void 0,pickerValue:void 0,onPickerValueChange:void 0,onChange:null}),ie=D(w1,P(P({},qe),{},{generateConfig:B,value:N.value,locale:q,tabindex:-1,onSelect:function(ot){Ze==null||Ze(ot),G(ot)},direction:Ce,onPanelChange:function(ot,wt){var Mt=e.onPanelChange;he(!0),Mt==null||Mt(ot,wt)}}),null);Se&&(ie=Se(ie));var Oe=D("div",{class:"".concat($,"-panel-container"),onMousedown:function(ot){ot.preventDefault()}},[ie]),Ke;ke&&(Ke=D("span",{class:"".concat($,"-suffix")},[ke]));var Xe;ve&&X.value&&!Be&&(Xe=D("span",{onMousedown:function(ot){ot.preventDefault(),ot.stopPropagation()},onMouseup:function(ot){ot.preventDefault(),ot.stopPropagation(),L(null),V(!1)},class:"".concat($,"-clear"),role:"button"},[Pe||D("span",{class:"".concat($,"-clear-btn")},null)]));var Re=P(P(P({id:ae,tabindex:le,disabled:Be,readonly:ue||typeof f.value[0]=="function"||!F.value,value:oe.value||R.value,onInput:function(ot){g(ot.target.value)},autofocus:Ge,placeholder:Te,ref:l,title:R.value},K.value),{},{size:V3(xe,f.value[0],B)},z3(e)),{},{autocomplete:Ue}),Ae=e.inputRender?e.inputRender(Re):D("input",Re,null),ct=Ce==="rtl"?"bottomRight":"bottomLeft";return D(O3,{visible:h.value,popupStyle:be,prefixCls:$,dropdownClassName:ee,dropdownAlign:te,getPopupContainer:we,transitionName:ne,popupPlacement:ct,direction:Ce},{default:function(){return[D("div",{ref:Z,class:_e($,i.class,(_={},ce(_,"".concat($,"-disabled"),Be),ce(_,"".concat($,"-focused"),k.value),ce(_,"".concat($,"-rtl"),Ce==="rtl"),_)),style:i.style,onMousedown:De,onMouseup:T,onMouseenter:me,onMouseleave:Ve,onContextmenu:Me,onClick:Ie},[D("div",{class:_e("".concat($,"-input"),ce({},"".concat($,"-input-placeholder"),!!oe.value)),ref:b},[Ae,Ke,Xe]),re()])]},popupElement:function(){return Oe}})}}})}const Uq=jq();function Eq(n,e){var t=n.picker,i=n.locale,a=n.selectedValue,l=n.disabledDate,o=n.disabled,r=n.generateConfig,f=de(function(){return Kn(a.value,0)}),v=de(function(){return Kn(a.value,1)});function b(m){return r.value.locale.getWeekFirstDate(i.value.locale,m)}function Z(m){var N=r.value.getYear(m),G=r.value.getMonth(m);return N*100+G}function p(m){var N=r.value.getYear(m),G=hv(r.value,m);return N*10+G}var y=function(N){var G;if(l&&l!==null&&l!==void 0&&(G=l.value)!==null&&G!==void 0&&G.call(l,N))return!0;if(o[1]&&v)return!go(r.value,N,v.value)&&r.value.isAfter(N,v.value);if(e.value[1]&&v.value)switch(t.value){case"quarter":return p(N)>p(v.value);case"month":return Z(N)>Z(v.value);case"week":return b(N)>b(v.value);default:return!go(r.value,N,v.value)&&r.value.isAfter(N,v.value)}return!1},X=function(N){var G;if((G=l.value)!==null&&G!==void 0&&G.call(l,N))return!0;if(o[0]&&f)return!go(r.value,N,v.value)&&r.value.isAfter(f.value,N);if(e.value[0]&&f.value)switch(t.value){case"quarter":return p(N)1&&arguments[1]!==void 0?arguments[1]:!0;Wl()?Kt(n):e?n():cn(n)}function _q(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=Ne(),i=function(){return t.value=Boolean(n())};return i(),Aq(i,e),t}var dZ,hZ,U3=typeof window<"u";U3&&(!((dZ=window)===null||dZ===void 0||(hZ=dZ.navigator)===null||hZ===void 0)&&hZ.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);var $q=U3?window:void 0,qq=["window"];function eee(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.window,a=i===void 0?$q:i,l=jt(t,qq),o,r=_q(function(){return a&&"ResizeObserver"in a}),f=function(){o&&(o.disconnect(),o=void 0)},v=rt(function(){return j3(n)},function(Z){f(),r.value&&a&&Z&&(o=new ResizeObserver(e),o.observe(Z,l))},{immediate:!0,flush:"post"}),b=function(){f(),v()};return Qq(b),{isSupported:r,stop:b}}function Nd(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{width:0,height:0},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.box,a=i===void 0?"content-box":i,l=Ne(e.width),o=Ne(e.height);return eee(n,function(r){var f=ft(r,1),v=f[0],b=a==="border-box"?v.borderBoxSize:a==="content-box"?v.contentBoxSize:v.devicePixelContentBoxSize;b?(l.value=b.reduce(function(Z,p){var y=p.inlineSize;return Z+y},0),o.value=b.reduce(function(Z,p){var y=p.blockSize;return Z+y},0)):(l.value=v.contentRect.width,o.value=v.contentRect.height)},t),rt(function(){return j3(n)},function(r){l.value=r?e.width:0,o.value=r?e.height:0}),{width:l,height:o}}function rw(n,e){return n&&n[0]&&n[1]&&e.isAfter(n[0],n[1])?[n[1],n[0]]:n}function ow(n,e,t,i){return!!(n||i&&i[e]||t[(e+1)%2])}function tee(){return He({name:"RangerPicker",inheritAttrs:!1,props:["prefixCls","id","popupStyle","dropdownClassName","transitionName","dropdownAlign","getPopupContainer","generateConfig","locale","placeholder","autofocus","disabled","format","picker","showTime","showNow","showHour","showMinute","showSecond","use12Hours","separator","value","defaultValue","defaultPickerValue","open","defaultOpen","disabledDate","disabledTime","dateRender","panelRender","ranges","allowEmpty","allowClear","suffixIcon","clearIcon","pickerRef","inputReadOnly","mode","renderExtraFooter","onChange","onOpenChange","onPanelChange","onCalendarChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onClick","onOk","onKeydown","components","order","direction","activePickerIndex","autocomplete","minuteStep","hourStep","secondStep","hideDisabledOptions","disabledMinutes"],setup:function(e,t){var i=t.attrs,a=t.expose,l=de(function(){return e.picker==="date"&&!!e.showTime||e.picker==="time"}),o=Zx(),r=Ne({}),f=Ne(null),v=Ne(null),b=Ne(null),Z=Ne(null),p=Ne(null),y=Ne(null),X=Ne(null),m=Ne(null),N=de(function(){return S3(g3(e.format,e.picker,e.showTime,e.use12Hours))}),G=Wi(0,{value:Ot(e,"activePickerIndex")}),d=ft(G,2),u=d[0],s=d[1],h=Ne(null),c=de(function(){var _t=e.disabled;return Array.isArray(_t)?_t:[_t||!1,_t||!1]}),W=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue,postState:function(Rt){return e.picker==="time"&&!e.order?Rt:rw(Rt,e.generateConfig)}}),M=ft(W,2),I=M[0],w=M[1],C=Pq({values:I,picker:Ot(e,"picker"),defaultDates:e.defaultPickerValue,generateConfig:Ot(e,"generateConfig")}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=Wi(I.value,{postState:function(Rt){var zt=Rt;if(c.value[0]&&c.value[1])return zt;for(var Ht=0;Ht<2;Ht+=1)c[Ht]&&!Kn(zt,Ht)&&!Kn(e.allowEmpty,Ht)&&(zt=tr(zt,e.generateConfig.getNow(),Ht));return zt}}),V=ft(L,2),Y=V[0],T=V[1],J=Wi([e.picker,e.picker],{value:Ot(e,"mode")}),U=ft(J,2),K=U[0],H=U[1];rt(function(){return e.picker},function(){H([e.picker,e.picker])});var k=function(Rt,zt){var Ht;H(Rt),(Ht=e.onPanelChange)===null||Ht===void 0||Ht.call(e,zt,Rt)},F=Eq({picker:Ot(e,"picker"),selectedValue:Y,locale:Ot(e,"locale"),disabled:c,disabledDate:Ot(e,"disabledDate"),generateConfig:Ot(e,"generateConfig")},r),O=ft(F,2),Q=O[0],oe=O[1],se=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(Rt){return c.value[u.value]?!1:Rt},onChange:function(Rt){var zt;(zt=e.onOpenChange)===null||zt===void 0||zt.call(e,Rt),!Rt&&h.value&&h.value.onClose&&h.value.onClose()}}),he=ft(se,2),pe=he[0],re=he[1],_=de(function(){return pe.value&&u.value===0}),E=de(function(){return pe.value&&u.value===1}),$=Ne(0),ae=Ne(0),le=Ne(0),ee=Nd(f),te=ee.width;rt([pe,te],function(){!pe.value&&f.value&&(le.value=te.value)});var be=Nd(v),ne=be.width,B=Nd(m),q=B.width,ue=Nd(b),ve=ue.width,Ge=Nd(p),Je=Ge.width;rt([u,pe,ne,q,ve,Je,function(){return e.direction}],function(){ae.value=0,pe.value&&u.value?b.value&&p.value&&v.value&&(ae.value=ve.value+Je.value,ne.value&&q.value&&ae.value>ne.value-q.value-(e.direction==="rtl"||m.value.offsetLeft>ae.value?0:m.value.offsetLeft)&&($.value=ae.value)):u.value===0&&($.value=0)},{immediate:!0});var xe=Ne();function ke(_t,Rt){if(_t)clearTimeout(xe.value),r.value[Rt]=!0,s(Rt),re(_t),pe.value||S(null,Rt);else if(u.value===Rt){re(_t);var zt=r.value;xe.value=setTimeout(function(){zt===r.value&&(r.value={})})}}function Pe(_t){ke(!0,_t),setTimeout(function(){var Rt=[y,X][_t];Rt.value&&Rt.value.focus()},0)}function Be(_t,Rt){var zt=_t,Ht=Kn(zt,0),$t=Kn(zt,1),si=e.generateConfig,Ul=e.locale,Xl=e.picker,El=e.order,ll=e.onCalendarChange,Na=e.allowEmpty,Rl=e.onChange,dl=e.showTime;Ht&&$t&&si.isAfter(Ht,$t)&&(Xl==="week"&&!T3(si,Ul.locale,Ht,$t)||Xl==="quarter"&&!R3(si,Ht,$t)||Xl!=="week"&&Xl!=="quarter"&&Xl!=="time"&&!(dl?Gu(si,Ht,$t):go(si,Ht,$t))?(Rt===0?(zt=[Ht,null],$t=null):(Ht=null,zt=[null,$t]),r.value=ce({},Rt,!0)):(Xl!=="time"||El!==!1)&&(zt=rw(zt,si))),T(zt);var Tl=zt&&zt[0]?wl(zt[0],{generateConfig:si,locale:Ul,format:N.value[0]}):"",hl=zt&&zt[1]?wl(zt[1],{generateConfig:si,locale:Ul,format:N.value[0]}):"";if(ll){var Nl={range:Rt===0?"start":"end"};ll(zt,[Tl,hl],Nl)}var fl=ow(Ht,0,c.value,Na),to=ow($t,1,c.value,Na),Ml=zt===null||fl&&to;Ml&&(w(zt),Rl&&(!Gu(si,Kn(I.value,0),Ht)||!Gu(si,Kn(I.value,1),$t))&&Rl(zt,[Tl,hl]));var xl=null;Rt===0&&!c.value[1]?xl=1:Rt===1&&!c.value[0]&&(xl=0),xl!==null&&xl!==u.value&&(!r.value[xl]||!Kn(zt,xl))&&Kn(zt,Rt)?Pe(xl):ke(!1,Rt)}var Te=function(Rt){return pe&&h.value&&h.value.onKeydown?h.value.onKeydown(Rt):!1},we={formatList:N,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")},Se=Am(de(function(){return Kn(Y.value,0)}),we),De=ft(Se,2),me=De[0],Ve=De[1],Me=Am(de(function(){return Kn(Y.value,1)}),we),Ie=ft(Me,2),Ze=Ie[0],Ce=Ie[1],ye=function(Rt,zt){var Ht=x3(Rt,{locale:e.locale,formatList:N.value,generateConfig:e.generateConfig}),$t=zt===0?Q:oe;Ht&&!$t(Ht)&&(T(tr(Y.value,Ht,zt)),S(Ht,zt))},Ue=pv({valueTexts:me,onTextChange:function(Rt){return ye(Rt,0)}}),qe=ft(Ue,3),ie=qe[0],Oe=qe[1],Ke=qe[2],Xe=pv({valueTexts:Ze,onTextChange:function(Rt){return ye(Rt,1)}}),Re=ft(Xe,3),Ae=Re[0],ct=Re[1],lt=Re[2],ot=di(null),wt=ft(ot,2),Mt=wt[0],xt=wt[1],Gt=di(null),Zt=ft(Gt,2),Tt=Zt[0],Ct=Zt[1],St=yv(ie,we),Pt=ft(St,3),Ut=Pt[0],kt=Pt[1],en=Pt[2],nn=yv(Ae,we),Ft=ft(nn,3),Ln=Ft[0],An=Ft[1],Gi=Ft[2],Pi=function(Rt){Ct(tr(Y.value,Rt,u.value)),u.value===0?kt(Rt):An(Rt)},Gl=function(){Ct(tr(Y.value,null,u.value)),u.value===0?en():Gi()},Fn=function(Rt,zt){return{forwardKeydown:Te,onBlur:function($t){var si;(si=e.onBlur)===null||si===void 0||si.call(e,$t)},isClickOutside:function($t){return!L3([v.value,b.value,Z.value,f.value],$t)},onFocus:function($t){var si;s(Rt),(si=e.onFocus)===null||si===void 0||si.call(e,$t)},triggerOpen:function($t){ke($t,Rt)},onSubmit:function(){if(!Y.value||e.disabledDate&&e.disabledDate(Y.value[Rt]))return!1;Be(Y.value,Rt),zt()},onCancel:function(){ke(!1,Rt),T(I.value),zt()}}},cl=mv(P(P({},Fn(0,Ke)),{},{blurToCancel:l,open:_,value:ie,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),ki=ft(cl,2),tl=ki[0],nl=ki[1],Dt=nl.focused,ht=nl.typing,Fe=mv(P(P({},Fn(1,lt)),{},{blurToCancel:l,open:E,value:Ae,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),tt=ft(Fe,2),nt=tt[0],Vt=tt[1],Bt=Vt.focused,Nn=Vt.typing,oi=function(Rt){var zt;(zt=e.onClick)===null||zt===void 0||zt.call(e,Rt),!pe.value&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&(c.value[0]?c.value[1]||Pe(1):Pe(0))},gi=function(Rt){var zt;(zt=e.onMousedown)===null||zt===void 0||zt.call(e,Rt),pe.value&&(Dt.value||Bt.value)&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&Rt.preventDefault()},Ll=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[0]?wl(I.value[0],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""}),il=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[1]?wl(I.value[1],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""});rt([pe,me,Ze],function(){pe.value||(T(I.value),!me.value.length||me.value[0]===""?Oe(""):Ve.value!==ie.value&&Ke(),!Ze.value.length||Ze.value[0]===""?ct(""):Ce.value!==Ae.value&<())}),rt([Ll,il],function(){T(I.value)}),a({focus:function(){y.value&&y.value.focus()},blur:function(){y.value&&y.value.blur(),X.value&&X.value.blur()}});var Lr=de(function(){return Object.keys(e.ranges||{}).map(function(_t){var Rt=e.ranges[_t],zt=typeof Rt=="function"?Rt():Rt;return{label:_t,onClick:function(){Be(zt,null),ke(!1,u.value)},onMouseenter:function(){xt(zt)},onMouseleave:function(){xt(null)}}})}),ul=de(function(){return pe.value&&Tt.value&&Tt.value[0]&&Tt.value[1]&&e.generateConfig.isAfter(Tt.value[1],Tt.value[0])?Tt.value:null});function Ol(){var _t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Rt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},zt=e.generateConfig,Ht=e.showTime,$t=e.dateRender,si=e.direction,Ul=e.disabledTime,Xl=e.prefixCls,El=e.locale,ll=Ht;if(Ht&&Yt(Ht)==="object"&&Ht.defaultValue){var Na=Ht.defaultValue;ll=P(P({},Ht),{},{defaultValue:Kn(Na,u.value)||void 0})}var Rl=null;return $t&&(Rl=function(Tl){var hl=Tl.current,Nl=Tl.today;return $t({current:hl,today:Nl,info:{range:u.value?"end":"start"}})}),D(Cq,{value:{inRange:!0,panelPosition:_t,rangedValue:Mt.value||Y.value,hoverRangedValue:ul.value}},{default:function(){return[D(w1,P(P(P({},e),Rt),{},{dateRender:Rl,showTime:ll,mode:K.value[u.value],generateConfig:zt,style:void 0,direction:si,disabledDate:u.value===0?Q:oe,disabledTime:function(hl){return Ul?Ul(hl,u.value===0?"start":"end"):!1},class:_e(ce({},"".concat(Xl,"-panel-focused"),u.value===0?!ht.value:!Nn.value)),value:Kn(Y.value,u.value),locale:El,tabIndex:-1,onPanelChange:function(hl,Nl){u.value===0&&en(!0),u.value===1&&Gi(!0),k(tr(K.value,Nl,u.value),tr(Y.value,hl,u.value));var fl=hl;_t==="right"&&K.value[u.value]===Nl&&(fl=Ad(fl,Nl,zt,-1)),S(fl,u.value)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:u.value===0?Kn(Y.value,1):Kn(Y.value,0)}),null)]}})}var jl=function(Rt,zt){var Ht=tr(Y.value,Rt,u.value);zt==="submit"||zt!=="key"&&!l.value?(Be(Ht,u.value),u.value===0?en():Gi()):T(Ht)};return c1({operationRef:h,hideHeader:de(function(){return e.picker==="time"}),onDateMouseenter:Pi,onDateMouseleave:Gl,hideRanges:de(function(){return!0}),onSelect:jl,open:pe}),function(){var _t,Rt,zt,Ht=e.prefixCls,$t=Ht===void 0?"rc-picker":Ht,si=e.id,Ul=e.popupStyle,Xl=e.dropdownClassName,El=e.transitionName,ll=e.dropdownAlign,Na=e.getPopupContainer,Rl=e.generateConfig,dl=e.locale,Tl=e.placeholder,hl=e.autofocus,Nl=e.picker,fl=Nl===void 0?"date":Nl,to=e.showTime,Ml=e.separator,xl=Ml===void 0?"~":Ml,Rr=e.disabledDate,ra=e.panelRender,Ls=e.allowClear,Kl=e.suffixIcon,oa=e.clearIcon,no=e.inputReadOnly,$n=e.renderExtraFooter,Un=e.onMouseenter,sr=e.onMouseleave,Jo=e.onMouseup,Do=e.onOk,Oo=e.components,ja=e.direction,je=e.autocomplete,et=je===void 0?"off":je,mt=ja==="rtl"?{right:"".concat(ae.value,"px")}:{left:"".concat(ae.value,"px")};function Lt(){var fi,Qn=J3($t,K.value[u.value],$n),qn=D3({prefixCls:$t,components:Oo,needConfirmButton:l.value,okDisabled:!Kn(Y.value,u.value)||Rr&&Rr(Y.value[u.value]),locale:dl,rangeList:Lr.value,onOk:function(){Kn(Y.value,u.value)&&(Be(Y.value,u.value),Do&&Do(Y.value))}});if(fl!=="time"&&!to){var Ti=u.value===0?R.value:g.value,yi=Ad(Ti,fl,Rl),Hl=K.value[u.value],Zi=Hl===fl,io=Ol(Zi?"left":!1,{pickerValue:Ti,onPickerValueChange:function(ge){S(ge,u.value)}}),Pl=Ol("right",{pickerValue:yi,onPickerValueChange:function(ge){S(Ad(ge,fl,Rl,-1),u.value)}});ja==="rtl"?fi=D(ln,null,[Pl,Zi&&io]):fi=D(ln,null,[io,Zi&&Pl])}else fi=Ol();var al=D(ln,null,[D("div",{class:"".concat($t,"-panels")},[fi]),(Qn||qn)&&D("div",{class:"".concat($t,"-footer")},[Qn,qn])]);return ra&&(al=ra(al)),D("div",{class:"".concat($t,"-panel-container"),style:{marginLeft:"".concat($.value,"px")},ref:v,onMousedown:function(ge){ge.preventDefault()}},[al])}var Jn=D("div",{class:_e("".concat($t,"-range-wrapper"),"".concat($t,"-").concat(fl,"-range-wrapper")),style:{minWidth:"".concat(le.value,"px")}},[D("div",{ref:m,class:"".concat($t,"-range-arrow"),style:mt},null),Lt()]),sn;Kl&&(sn=D("span",{class:"".concat($t,"-suffix")},[Kl]));var ii;Ls&&(Kn(I.value,0)&&!c.value[0]||Kn(I.value,1)&&!c.value[1])&&(ii=D("span",{onMousedown:function(Qn){Qn.preventDefault(),Qn.stopPropagation()},onMouseup:function(Qn){Qn.preventDefault(),Qn.stopPropagation();var qn=I.value;c.value[0]||(qn=tr(qn,null,0)),c.value[1]||(qn=tr(qn,null,1)),Be(qn,null),ke(!1,u.value)},class:"".concat($t,"-clear")},[oa||D("span",{class:"".concat($t,"-clear-btn")},null)]));var _n={size:V3(fl,N.value[0],Rl)},Dn=0,ni=0;b.value&&Z.value&&p.value&&(u.value===0?ni=b.value.offsetWidth:(Dn=ae.value,ni=Z.value.offsetWidth));var Fi=ja==="rtl"?{right:"".concat(Dn,"px")}:{left:"".concat(Dn,"px")};return D(O3,{visible:pe.value,popupStyle:Ul,prefixCls:$t,dropdownClassName:Xl,dropdownAlign:ll,getPopupContainer:Na,transitionName:El,range:!0,direction:ja},{default:function(){return[D("div",P({ref:f,class:_e($t,"".concat($t,"-range"),i.class,(_t={},ce(_t,"".concat($t,"-disabled"),c.value[0]&&c.value[1]),ce(_t,"".concat($t,"-focused"),u.value===0?Dt.value:Bt.value),ce(_t,"".concat($t,"-rtl"),ja==="rtl"),_t)),style:i.style,onClick:oi,onMouseenter:Un,onMouseleave:sr,onMousedown:gi,onMouseup:Jo},z3(e)),[D("div",{class:_e("".concat($t,"-input"),(Rt={},ce(Rt,"".concat($t,"-input-active"),u.value===0),ce(Rt,"".concat($t,"-input-placeholder"),!!Ut.value),Rt)),ref:b},[D("input",P(P(P({id:si,disabled:c.value[0],readonly:no||typeof N.value[0]=="function"||!ht.value,value:Ut.value||ie.value,onInput:function(qn){Oe(qn.target.value)},autofocus:hl,placeholder:Kn(Tl,0)||"",ref:y},tl.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-range-separator"),ref:p},[xl]),D("div",{class:_e("".concat($t,"-input"),(zt={},ce(zt,"".concat($t,"-input-active"),u.value===1),ce(zt,"".concat($t,"-input-placeholder"),!!Ln.value),zt)),ref:Z},[D("input",P(P(P({disabled:c.value[1],readonly:no||typeof N.value[0]=="function"||!Nn.value,value:Ln.value||Ae.value,onInput:function(qn){ct(qn.target.value)},placeholder:Kn(Tl,1)||"",ref:X},nt.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-active-bar"),style:P(P({},Fi),{},{width:"".concat(ni,"px"),position:"absolute"})},null),sn,ii,o()])]},popupElement:function(){return Jn}})}}})}var nee=tee();const iee=nee;var lee=["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"],aee={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:We.any,required:Boolean};const E3=He({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:pn(aee,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o=Ne(e.checked===void 0?e.defaultChecked:e.checked),r=Ne();rt(function(){return e.checked},function(){o.value=e.checked}),l({focus:function(){var p;(p=r.value)===null||p===void 0||p.focus()},blur:function(){var p;(p=r.value)===null||p===void 0||p.blur()}});var f=Ne(),v=function(p){if(!e.disabled){e.checked===void 0&&(o.value=p.target.checked),p.shiftKey=f.value;var y={target:P(P({},e),{},{checked:p.target.checked}),stopPropagation:function(){p.stopPropagation()},preventDefault:function(){p.preventDefault()},nativeEvent:p};e.checked!==void 0&&(r.value.checked=!!e.checked),a("change",y),f.value=!1}},b=function(p){a("click",p),f.value=p.shiftKey};return function(){var Z,p=e.prefixCls,y=e.name,X=e.id,m=e.type,N=e.disabled,G=e.readonly,d=e.tabindex,u=e.autofocus,s=e.value,h=e.required,c=jt(e,lee),W=i.class,M=i.onFocus,I=i.onBlur,w=i.onKeydown,C=i.onKeypress,x=i.onKeyup,R=P(P({},c),i),g=Object.keys(R).reduce(function(V,Y){return(Y.substr(0,5)==="aria-"||Y.substr(0,5)==="data-"||Y==="role")&&(V[Y]=R[Y]),V},{}),S=_e(p,W,(Z={},ce(Z,"".concat(p,"-checked"),o.value),ce(Z,"".concat(p,"-disabled"),N),Z)),L=P(P({name:y,id:X,type:m,readonly:G,disabled:N,tabindex:d,class:"".concat(p,"-input"),checked:!!o.value,autofocus:u,value:s},g),{},{onChange:v,onClick:b,onFocus:M,onBlur:I,onKeydown:w,onKeypress:C,onKeyup:x,required:h});return D("span",{class:S},[D("input",P({ref:r},L),null),D("span",{class:"".concat(p,"-inner")},null)])}}});var ree=["prefixCls","id"],K3=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},isGroup:{type:Boolean,default:void 0},value:We.any,name:String,id:String,autofocus:{type:Boolean,default:void 0},onChange:Function,onFocus:Function,onBlur:Function,onClick:Function,"onUpdate:checked":Function,"onUpdate:value":Function}};const ta=He({compatConfig:{MODE:3},name:"ARadio",props:K3(),setup:function(e,t){var i=t.emit,a=t.expose,l=t.slots,o=Hi(),r=Ne(),f=un("radioGroupContext",void 0),v=Nt("radio",e),b=v.prefixCls,Z=v.direction,p=function(){r.value.focus()},y=function(){r.value.blur()};a({focus:p,blur:y});var X=function(G){var d=G.target.checked;i("update:checked",d),i("update:value",d),i("change",G),o.onFieldChange()},m=function(G){i("change",G),f&&f.onRadioChange&&f.onRadioChange(G)};return function(){var N,G=f;e.prefixCls;var d=e.id,u=d===void 0?o.id.value:d,s=jt(e,ree),h=P({prefixCls:b.value,id:u},dn(s,["onUpdate:checked","onUpdate:value"]));G?(h.name=G.props.name,h.onChange=m,h.checked=e.value===G.stateValue.value,h.disabled=e.disabled||G.props.disabled):h.onChange=X;var c=_e((N={},ce(N,"".concat(b.value,"-wrapper"),!0),ce(N,"".concat(b.value,"-wrapper-checked"),h.checked),ce(N,"".concat(b.value,"-wrapper-disabled"),h.disabled),ce(N,"".concat(b.value,"-wrapper-rtl"),Z.value==="rtl"),N));return D("label",{class:c},[D(E3,P(P({},h),{},{type:"radio",ref:r}),null),l.default&&D("span",null,[l.default()])])}}});var oee=pi("large","default","small"),see=function(){return{prefixCls:String,value:We.any,size:We.oneOf(oee),options:{type:Array},disabled:{type:Boolean,default:void 0},name:String,buttonStyle:{type:String,default:"outline"},id:String,optionType:{type:String,default:"default"},onChange:Function,"onUpdate:value":Function}};const g1=He({compatConfig:{MODE:3},name:"ARadioGroup",props:see(),setup:function(e,t){var i=t.slots,a=t.emit,l=Hi(),o=Nt("radio",e),r=o.prefixCls,f=o.direction,v=o.size,b=Ne(e.value),Z=Ne(!1);rt(function(){return e.value},function(y){b.value=y,Z.value=!1});var p=function(X){var m=b.value,N=X.target.value;"value"in e||(b.value=N),!Z.value&&N!==m&&(Z.value=!0,a("update:value",N),a("change",X),l.onFieldChange()),cn(function(){Z.value=!1})};return hn("radioGroupContext",{onRadioChange:p,stateValue:b,props:e}),function(){var y,X=e.options,m=e.optionType,N=e.buttonStyle,G=e.id,d=G===void 0?l.id.value:G,u="".concat(r.value,"-group"),s=_e(u,"".concat(u,"-").concat(N),(y={},ce(y,"".concat(u,"-").concat(v.value),v.value),ce(y,"".concat(u,"-rtl"),f.value==="rtl"),y)),h=null;if(X&&X.length>0){var c=m==="button"?"".concat(r.value,"-button"):r.value;h=X.map(function(M){if(typeof M=="string"||typeof M=="number")return D(ta,{key:M,prefixCls:c,disabled:e.disabled,value:M,checked:b.value===M},{default:function(){return[M]}});var I=M.value,w=M.disabled,C=M.label;return D(ta,{key:"radio-group-value-options-".concat(I),prefixCls:c,disabled:w||e.disabled,value:I,checked:b.value===I},{default:function(){return[C]}})})}else{var W;h=(W=i.default)===null||W===void 0?void 0:W.call(i)}return D("div",{class:s,id:d},[h])}}}),_m=He({compatConfig:{MODE:3},name:"ARadioButton",props:K3(),setup:function(e,t){var i=t.slots,a=Nt("radio-button",e),l=a.prefixCls,o=un("radioGroupContext",void 0);return function(){var r,f=P(P({},e),{},{prefixCls:l.value});return o&&(f.onChange=o.onRadioChange,f.checked=f.value===o.stateValue.value,f.disabled=f.disabled||o.props.disabled),D(ta,f,{default:function(){return[(r=i.default)===null||r===void 0?void 0:r.call(i)]}})}}});ta.Group=g1;ta.Button=_m;ta.install=function(n){return n.component(ta.name,ta),n.component(ta.Group.name,ta.Group),n.component(ta.Button.name,ta.Button),n};var cee=10,uee=20;function H3(n){var e=n.fullscreen,t=n.validRange,i=n.generateConfig,a=n.locale,l=n.prefixCls,o=n.value,r=n.onChange,f=n.divRef,v=i.getYear(o||i.getNow()),b=v-cee,Z=b+uee;t&&(b=i.getYear(t[0]),Z=i.getYear(t[1])+1);for(var p=a&&a.year==="年"?"年":"",y=[],X=b;Xi.getMonth(s)&&(G=i.setMonth(G,i.getMonth(s))),h===i.getYear(u)&&cY?(L=g,c.value="x"):(L=S,c.value="y"),e(-L,-L)&&R.preventDefault()}var M=Ne({onTouchStart:u,onTouchMove:s,onTouchEnd:h,onWheel:W});function I(R){M.value.onTouchStart(R)}function w(R){M.value.onTouchMove(R)}function C(R){M.value.onTouchEnd(R)}function x(R){M.value.onWheel(R)}Kt(function(){var R,g;document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("touchend",C,{passive:!1}),(R=n.value)===null||R===void 0||R.addEventListener("touchstart",I,{passive:!1}),(g=n.value)===null||g===void 0||g.addEventListener("wheel",x,{passive:!1})}),fn(function(){document.removeEventListener("touchmove",w),document.removeEventListener("touchend",C)})}function dw(n,e){var t=Ne(n);function i(a){var l=typeof a=="function"?a(t.value):a;l!==t.value&&e(l,t.value),t.value=l}return[t,i]}var Nee=function(){var e=Ne(new Map),t=function(a){return function(l){e.value.set(a,l)}};return xW(function(){e.value=new Map}),[t,e]};const V1=Nee;var Mee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Iee=/^\w*$/;function L1(n,e){if(or(n))return!1;var t=typeof n;return t=="number"||t=="symbol"||t=="boolean"||n==null||np(n)?!0:Iee.test(n)||!Mee.test(n)||e!=null&&n in Object(e)}var Yee="Expected a function";function R1(n,e){if(typeof n!="function"||e!=null&&typeof e!="function")throw new TypeError(Yee);var t=function(){var i=arguments,a=e?e.apply(this,i):i[0],l=t.cache;if(l.has(a))return l.get(a);var o=n.apply(this,i);return t.cache=l.set(a,o)||l,o};return t.cache=new(R1.Cache||ko),t}R1.Cache=ko;var wee=500;function gee(n){var e=R1(n,function(i){return t.size===wee&&t.clear(),i}),t=e.cache;return e}var Vee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Lee=/\\(\\)?/g,Ree=gee(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(Vee,function(t,i,a,l){e.push(a?l.replace(Lee,"$1"):i||t)}),e});const Tee=Ree;function _u(n,e){return or(n)?n:L1(n,e)?[n]:Tee(s1(n))}var xee=1/0;function $u(n){if(typeof n=="string"||np(n))return n;var e=n+"";return e=="0"&&1/n==-xee?"-0":e}function op(n,e){e=_u(e,n);for(var t=0,i=e.length;n!=null&&t0&&t(r)?e>1?tC(r,e-1,t,i,a):wG(a,r):i||(a[a.length]=r)}return a}function Uee(n){var e=n==null?0:n.length;return e?tC(n,1):[]}function Eee(n,e,t){switch(t.length){case 0:return n.call(e);case 1:return n.call(e,t[0]);case 2:return n.call(e,t[0],t[1]);case 3:return n.call(e,t[0],t[1],t[2])}return n.apply(e,t)}var fw=Math.max;function nC(n,e,t){return e=fw(e===void 0?n.length-1:e,0),function(){for(var i=arguments,a=-1,l=fw(i.length-e,0),o=Array(l);++a0){if(++e>=Qee)return arguments[0]}else e=0;return n.apply(void 0,arguments)}}var $ee=_ee(Pee);const iC=$ee;function lC(n){return iC(nC(n,void 0,Uee),n+"")}var qee=lC(function(n,e){return n==null?{}:Oee(n,e)});const aC=qee;var bw={width:0,height:0,left:0,top:0,right:0},ete=function(){return{id:{type:String},tabPosition:{type:String},activeKey:{type:[String,Number]},rtl:{type:Boolean},animated:{type:Object,default:void 0},editable:{type:Object},moreIcon:We.any,moreTransitionName:{type:String},mobile:{type:Boolean},tabBarGutter:{type:Number},renderTabBar:{type:Function},locale:{type:Object,default:void 0},onTabClick:{type:Function},onTabScroll:{type:Function}}};const mw=He({compatConfig:{MODE:3},name:"TabNavList",inheritAttrs:!1,props:ete(),slots:["moreIcon","leftExtra","rightExtra","tabBarExtraContent"],emits:["tabClick","tabScroll"],setup:function(e,t){var i=t.attrs,a=t.slots,l=$3(),o=l.tabs,r=l.prefixCls,f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=V1(),y=ft(p,2),X=y[0],m=y[1],N=de(function(){return e.tabPosition==="top"||e.tabPosition==="bottom"}),G=dw(0,function(Ue,qe){N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"left":"right"})}),d=ft(G,2),u=d[0],s=d[1],h=dw(0,function(Ue,qe){!N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"top":"bottom"})}),c=ft(h,2),W=c[0],M=c[1],I=di(0),w=ft(I,2),C=w[0],x=w[1],R=di(0),g=ft(R,2),S=g[0],L=g[1],V=di(null),Y=ft(V,2),T=Y[0],J=Y[1],U=di(null),K=ft(U,2),H=K[0],k=K[1],F=di(0),O=ft(F,2),Q=O[0],oe=O[1],se=di(0),he=ft(se,2),pe=he[0],re=he[1],_=pee(new Map),E=ft(_,2),$=E[0],ae=E[1],le=Zee(o,$),ee=de(function(){return"".concat(r.value,"-nav-operations-hidden")}),te=Ne(0),be=Ne(0);qt(function(){N.value?e.rtl?(te.value=0,be.value=Math.max(0,C.value-T.value)):(te.value=Math.min(0,T.value-C.value),be.value=0):(te.value=Math.min(0,H.value-S.value),be.value=0)});var ne=function(qe){return qebe.value?be.value:qe},B=Ne(),q=di(),ue=ft(q,2),ve=ue[0],Ge=ue[1],Je=function(){Ge(Date.now())},xe=function(){clearTimeout(B.value)},ke=function(qe,ie){qe(function(Oe){var Ke=ne(Oe+ie);return Ke})};Xee(f,function(Ue,qe){if(N.value){if(T.value>=C.value)return!1;ke(s,Ue)}else{if(H.value>=S.value)return!1;ke(M,qe)}return xe(),Je(),!0}),rt(ve,function(){xe(),ve.value&&(B.value=setTimeout(function(){Ge(0)},100))});var Pe=function(){var qe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activeKey,ie=le.value.get(qe)||{width:0,height:0,left:0,right:0,top:0};if(N.value){var Oe=u.value;e.rtl?ie.rightu.value+T.value&&(Oe=ie.right+ie.width-T.value):ie.left<-u.value?Oe=-ie.left:ie.left+ie.width>-u.value+T.value&&(Oe=-(ie.left+ie.width-T.value)),M(0),s(ne(Oe))}else{var Ke=W.value;ie.top<-W.value?Ke=-ie.top:ie.top+ie.height>-W.value+H.value&&(Ke=-(ie.top+ie.height-H.value)),s(0),M(ne(Ke))}},Be=Ne(0),Te=Ne(0);qt(function(){var Ue,qe,ie,Oe,Ke,Xe,Re,Ae=le.value;["top","bottom"].includes(e.tabPosition)?(qe="width",Ke=T.value,Xe=C.value,Re=Q.value,ie=e.rtl?"right":"left",Oe=Math.abs(u.value)):(qe="height",Ke=H.value,Xe=C.value,Re=pe.value,ie="top",Oe=-W.value);var ct=Ke;Xe+Re>Ke&&XeOe+ct){Mt=xt-1;break}}for(var Zt=0,Tt=wt-1;Tt>=0;Tt-=1){var Ct=Ae.get(lt[Tt].key)||bw;if(Ct[ie]0,Zt=u.value+T.value0?"".concat(y[0]/-2,"px"):void 0,N=y[1]>0?"".concat(y[1]/-2,"px"):void 0;return m&&(X.marginLeft=m,X.marginRight=m),v.value?X.rowGap="".concat(y[1],"px"):N&&(X.marginTop=N,X.marginBottom=N),X});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}});const z1=bte;function mte(n){return typeof n=="number"?"".concat(n," ").concat(n," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(n)?"0 0 ".concat(n):n}var pte=function(){return{span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},xxxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}};const sp=He({compatConfig:{MODE:3},name:"ACol",props:pte(),setup:function(e,t){var i=t.slots,a=hte(),l=a.gutter,o=a.supportFlexGap,r=a.wrap,f=Nt("col",e),v=f.prefixCls,b=f.direction,Z=de(function(){var y,X=e.span,m=e.order,N=e.offset,G=e.push,d=e.pull,u=v.value,s={};return["xs","sm","md","lg","xl","xxl","xxxl"].forEach(function(h){var c,W={},M=e[h];typeof M=="number"?W.span=M:Yt(M)==="object"&&(W=M||{}),s=P(P({},s),{},(c={},ce(c,"".concat(u,"-").concat(h,"-").concat(W.span),W.span!==void 0),ce(c,"".concat(u,"-").concat(h,"-order-").concat(W.order),W.order||W.order===0),ce(c,"".concat(u,"-").concat(h,"-offset-").concat(W.offset),W.offset||W.offset===0),ce(c,"".concat(u,"-").concat(h,"-push-").concat(W.push),W.push||W.push===0),ce(c,"".concat(u,"-").concat(h,"-pull-").concat(W.pull),W.pull||W.pull===0),ce(c,"".concat(u,"-rtl"),b.value==="rtl"),c))}),_e(u,(y={},ce(y,"".concat(u,"-").concat(X),X!==void 0),ce(y,"".concat(u,"-order-").concat(m),m),ce(y,"".concat(u,"-offset-").concat(N),N),ce(y,"".concat(u,"-push-").concat(G),G),ce(y,"".concat(u,"-pull-").concat(d),d),y),s)}),p=de(function(){var y=e.flex,X=l.value,m={};if(X&&X[0]>0){var N="".concat(X[0]/2,"px");m.paddingLeft=N,m.paddingRight=N}if(X&&X[1]>0&&!o.value){var G="".concat(X[1]/2,"px");m.paddingTop=G,m.paddingBottom=G}return y&&(m.flex=mte(y),r.value===!1&&!m.minWidth&&(m.minWidth=0)),m});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}}),yte={useBreakpoint:Bu},ru=wi(z1),mr=wi(sp);var Zte=mc.TabPane,vte=function(){return{prefixCls:String,title:We.any,extra:We.any,bordered:{type:Boolean,default:!0},bodyStyle:{type:Object,default:void 0},headStyle:{type:Object,default:void 0},loading:{type:Boolean,default:!1},hoverable:{type:Boolean,default:!1},type:{type:String},size:{type:String},actions:We.any,tabList:{type:Array},tabBarExtraContent:We.any,activeTabKey:String,defaultActiveTabKey:String,cover:We.any,onTabChange:{type:Function}}},Wte=He({compatConfig:{MODE:3},name:"ACard",props:vte(),slots:["title","extra","tabBarExtraContent","actions","cover","customTab"],setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls,o=a.direction,r=a.size,f=function(p){var y=p.map(function(X,m){return yl(X)&&!xh(X)||!yl(X)?D("li",{style:{width:"".concat(100/p.length,"%")},key:"action-".concat(m)},[D("span",null,[X])]):null});return y},v=function(p){var y;(y=e.onTabChange)===null||y===void 0||y.call(e,p)},b=function(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],y;return p.forEach(function(X){X&&UW(X.type)&&X.type.__ANT_CARD_GRID&&(y=!0)}),y};return function(){var Z,p,y,X,m,N,G,d,u=e.headStyle,s=u===void 0?{}:u,h=e.bodyStyle,c=h===void 0?{}:h,W=e.loading,M=e.bordered,I=M===void 0?!0:M,w=e.type,C=e.tabList,x=e.hoverable,R=e.activeTabKey,g=e.defaultActiveTabKey,S=e.tabBarExtraContent,L=S===void 0?vd((Z=i.tabBarExtraContent)===null||Z===void 0?void 0:Z.call(i)):S,V=e.title,Y=V===void 0?vd((p=i.title)===null||p===void 0?void 0:p.call(i)):V,T=e.extra,J=T===void 0?vd((y=i.extra)===null||y===void 0?void 0:y.call(i)):T,U=e.actions,K=U===void 0?vd((X=i.actions)===null||X===void 0?void 0:X.call(i)):U,H=e.cover,k=H===void 0?vd((m=i.cover)===null||m===void 0?void 0:m.call(i)):H,F=ti((N=i.default)===null||N===void 0?void 0:N.call(i)),O=l.value,Q=(G={},ce(G,"".concat(O),!0),ce(G,"".concat(O,"-loading"),W),ce(G,"".concat(O,"-bordered"),I),ce(G,"".concat(O,"-hoverable"),!!x),ce(G,"".concat(O,"-contain-grid"),b(F)),ce(G,"".concat(O,"-contain-tabs"),C&&C.length),ce(G,"".concat(O,"-").concat(r.value),r.value),ce(G,"".concat(O,"-type-").concat(w),!!w),ce(G,"".concat(O,"-rtl"),o.value==="rtl"),G),oe=c.padding===0||c.padding==="0px"?{padding:"24px"}:void 0,se=D("div",{class:"".concat(O,"-loading-block")},null),he=D("div",{class:"".concat(O,"-loading-content"),style:oe},[D(ru,{gutter:8},{default:function(){return[D(mr,{span:22},{default:function(){return[se]}})]}}),D(ru,{gutter:8},{default:function(){return[D(mr,{span:8},{default:function(){return[se]}}),D(mr,{span:15},{default:function(){return[se]}})]}}),D(ru,{gutter:8},{default:function(){return[D(mr,{span:6},{default:function(){return[se]}}),D(mr,{span:18},{default:function(){return[se]}})]}}),D(ru,{gutter:8},{default:function(){return[D(mr,{span:13},{default:function(){return[se]}}),D(mr,{span:9},{default:function(){return[se]}})]}}),D(ru,{gutter:8},{default:function(){return[D(mr,{span:4},{default:function(){return[se]}}),D(mr,{span:3},{default:function(){return[se]}}),D(mr,{span:16},{default:function(){return[se]}})]}})]),pe=R!==void 0,re=(d={size:"large"},ce(d,pe?"activeKey":"defaultActiveKey",pe?R:g),ce(d,"onChange",v),ce(d,"class","".concat(O,"-head-tabs")),d),_,E=C&&C.length?D(mc,re,{default:function(){return[C.map(function(te){var be=te.tab,ne=te.slots,B=ne==null?void 0:ne.tab;jn(!ne,"Card","tabList slots is deprecated, Please use `customTab` instead.");var q=be!==void 0?be:i[B]?i[B](te):null;return q=x0(i,"customTab",te,function(){return[q]}),D(Zte,{tab:q,key:te.key,disabled:te.disabled},null)})]},rightExtra:L?function(){return L}:null}):null;(Y||J||E)&&(_=D("div",{class:"".concat(O,"-head"),style:s},[D("div",{class:"".concat(O,"-head-wrapper")},[Y&&D("div",{class:"".concat(O,"-head-title")},[Y]),J&&D("div",{class:"".concat(O,"-extra")},[J])]),E]));var $=k?D("div",{class:"".concat(O,"-cover")},[k]):null,ae=D("div",{class:"".concat(O,"-body"),style:c},[W?he:F]),le=K&&K.length?D("ul",{class:"".concat(O,"-actions")},[f(K)]):null;return D("div",{class:Q,ref:"cardContainerRef"},[_,$,F&&F.length?ae:null,le])}}});const Xu=Wte;var Gte=function(){return{prefixCls:String,title:We.any,description:We.any,avatar:We.any}};const e0=He({compatConfig:{MODE:3},name:"ACardMeta",props:Gte(),slots:["title","description","avatar"],setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls;return function(){var o=ce({},"".concat(l.value,"-meta"),!0),r=ui(i,e,"avatar"),f=ui(i,e,"title"),v=ui(i,e,"description"),b=r?D("div",{class:"".concat(l.value,"-meta-avatar")},[r]):null,Z=f?D("div",{class:"".concat(l.value,"-meta-title")},[f]):null,p=v?D("div",{class:"".concat(l.value,"-meta-description")},[v]):null,y=Z||p?D("div",{class:"".concat(l.value,"-meta-detail")},[Z,p]):null;return D("div",{class:o},[b,y])}}});var Xte=function(){return{prefixCls:String,hoverable:{type:Boolean,default:!0}}};const t0=He({compatConfig:{MODE:3},name:"ACardGrid",__ANT_CARD_GRID:!0,props:Xte(),setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls,o=de(function(){var r;return r={},ce(r,"".concat(l.value,"-grid"),!0),ce(r,"".concat(l.value,"-grid-hoverable"),e.hoverable),r});return function(){var r;return D("div",{class:o.value},[(r=i.default)===null||r===void 0?void 0:r.call(i)])}}});Xu.Meta=e0;Xu.Grid=t0;Xu.install=function(n){return n.component(Xu.name,Xu),n.component(e0.name,e0),n.component(t0.name,t0),n};var Nte=function(){return{prefixCls:String,activeKey:{type:[Array,Number,String]},defaultActiveKey:{type:[Array,Number,String]},accordion:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},expandIcon:Function,openAnimation:We.object,expandIconPosition:We.oneOf(pi("left","right")),collapsible:{type:String},ghost:{type:Boolean,default:void 0},onChange:Function,"onUpdate:activeKey":Function}},dC=function(){return{openAnimation:We.object,prefixCls:String,header:We.any,headerClass:String,showArrow:{type:Boolean,default:void 0},isActive:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},accordion:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},expandIcon:Function,extra:We.any,panelKey:We.oneOfType([We.string,We.number]),collapsible:{type:String},role:String,onItemClick:{type:Function}}};function Zw(n){var e=n;if(!Array.isArray(e)){var t=Yt(e);e=t==="number"||t==="string"?[e]:[]}return e.map(function(i){return String(i)})}const _d=He({compatConfig:{MODE:3},name:"ACollapse",inheritAttrs:!1,props:pn(Nte(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,openAnimation:Dh("ant-motion-collapse",!1),expandIconPosition:"left"}),slots:["expandIcon"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=Ne(Zw(Om([e.activeKey,e.defaultActiveKey])));rt(function(){return e.activeKey},function(){o.value=Zw(e.activeKey)},{deep:!0});var r=Nt("collapse",e),f=r.prefixCls,v=r.direction,b=de(function(){var N=e.expandIconPosition;return N!==void 0?N:v.value==="rtl"?"right":"left"}),Z=function(G){var d=e.expandIcon,u=d===void 0?a.expandIcon:d,s=u?u(G):D(xo,{rotate:G.isActive?90:void 0},null);return D("div",null,[Si(Array.isArray(u)?s[0]:s)?wn(s,{class:"".concat(f.value,"-arrow")},!1):s])},p=function(G){e.activeKey===void 0&&(o.value=G);var d=e.accordion?G[0]:G;l("update:activeKey",d),l("change",d)},y=function(G){var d=o.value;if(e.accordion)d=d[0]===G?[]:[G];else{d=yt(d);var u=d.indexOf(G),s=u>-1;s?d.splice(u,1):d.push(G)}p(d)},X=function(G,d){var u,s,h;if(!xh(G)){var c=o.value,W=e.accordion,M=e.destroyInactivePanel,I=e.collapsible,w=e.openAnimation,C=String((u=G.key)!==null&&u!==void 0?u:d),x=G.props||{},R=x.header,g=R===void 0?(s=G.children)===null||s===void 0||(h=s.header)===null||h===void 0?void 0:h.call(s):R,S=x.headerClass,L=x.collapsible,V=x.disabled,Y=!1;W?Y=c[0]===C:Y=c.indexOf(C)>-1;var T=L??I;(V||V==="")&&(T="disabled");var J={key:C,panelKey:C,header:g,headerClass:S,isActive:Y,prefixCls:f.value,destroyInactivePanel:M,openAnimation:w,accordion:W,onItemClick:T==="disabled"?null:y,expandIcon:Z,collapsible:T};return wn(G,J)}},m=function(){var G;return ti((G=a.default)===null||G===void 0?void 0:G.call(a)).map(X)};return function(){var N,G=e.accordion,d=e.bordered,u=e.ghost,s=_e((N={},ce(N,f.value,!0),ce(N,"".concat(f.value,"-borderless"),!d),ce(N,"".concat(f.value,"-icon-position-").concat(b.value),!0),ce(N,"".concat(f.value,"-rtl"),v.value==="rtl"),ce(N,"".concat(f.value,"-ghost"),!!u),ce(N,i.class,!!i.class),N));return D("div",P(P({class:s},LE(i)),{},{style:i.style,role:G?"tablist":null}),[m()])}}}),Mte=He({compatConfig:{MODE:3},name:"PanelContent",props:dC(),setup:function(e,t){var i=t.slots,a=Ne(!1);return qt(function(){(e.isActive||e.forceRender)&&(a.value=!0)}),function(){var l,o;if(!a.value)return null;var r=e.prefixCls,f=e.isActive,v=e.role;return D("div",{ref:Ne,class:_e("".concat(r,"-content"),(l={},ce(l,"".concat(r,"-content-active"),f),ce(l,"".concat(r,"-content-inactive"),!f),l)),role:v},[D("div",{class:"".concat(r,"-content-box")},[(o=i.default)===null||o===void 0?void 0:o.call(i)])])}}}),n0=He({compatConfig:{MODE:3},name:"ACollapsePanel",inheritAttrs:!1,props:pn(dC(),{showArrow:!0,isActive:!1,onItemClick:function(){},headerClass:"",forceRender:!1}),slots:["expandIcon","extra","header"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs;jn(e.disabled===void 0,"Collapse.Panel",'`disabled` is deprecated. Please use `collapsible="disabled"` instead.');var o=Nt("collapse",e),r=o.prefixCls,f=function(){a("itemClick",e.panelKey)},v=function(Z){(Z.key==="Enter"||Z.keyCode===13||Z.which===13)&&f()};return function(){var b,Z,p,y,X=e.header,m=X===void 0?(b=i.header)===null||b===void 0?void 0:b.call(i):X,N=e.headerClass,G=e.isActive,d=e.showArrow,u=e.destroyInactivePanel,s=e.accordion,h=e.forceRender,c=e.openAnimation,W=e.expandIcon,M=W===void 0?i.expandIcon:W,I=e.extra,w=I===void 0?(Z=i.extra)===null||Z===void 0?void 0:Z.call(i):I,C=e.collapsible,x=C==="disabled",R=r.value,g=_e("".concat(R,"-header"),(p={},ce(p,N,N),ce(p,"".concat(R,"-header-collapsible-only"),C==="header"),p)),S=_e((y={},ce(y,"".concat(R,"-item"),!0),ce(y,"".concat(R,"-item-active"),G),ce(y,"".concat(R,"-item-disabled"),x),ce(y,"".concat(R,"-no-arrow"),!d),ce(y,"".concat(l.class),!!l.class),y)),L=D("i",{class:"arrow"},null);d&&typeof M=="function"&&(L=M(e));var V=vl(D(Mte,{prefixCls:R,isActive:G,forceRender:h,role:s?"tabpanel":null},{default:i.default}),[[gr,G]]),Y=P({appear:!1,css:!1},c);return D("div",P(P({},l),{},{class:S}),[D("div",{class:g,onClick:function(){return C!=="header"&&f()},role:s?"tab":"button",tabindex:x?-1:0,"aria-expanded":G,onKeypress:v},[d&&L,C==="header"?D("span",{onClick:f,class:"".concat(R,"-header-text")},[m]):m,w&&D("div",{class:"".concat(R,"-extra")},[w])]),D(aa,Y,{default:function(){return[!u||G?V:null]}})])}}});_d.Panel=n0;_d.install=function(n){return n.component(_d.name,_d),n.component(n0.name,n0),n};var Ite=function(e){return e.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()}).toLowerCase()},Yte=function(e){var t=/[height|width]$/;return t.test(e)},vw=function(e){var t="",i=Object.keys(e);return i.forEach(function(a,l){var o=e[a];a=Ite(a),Yte(a)&&typeof o=="number"&&(o=o+"px"),o===!0?t+=a:o===!1?t+="not "+a:t+="("+a+": "+o+")",l=e||W<0||Z&&M>=l}function G(){var c=bZ();if(N(c))return d(c);r=setTimeout(G,m(c))}function d(c){return r=void 0,p&&i?y(c):(i=a=void 0,o)}function u(){r!==void 0&&clearTimeout(r),v=0,i=f=a=r=void 0}function s(){return r===void 0?o:d(bZ())}function h(){var c=bZ(),W=N(c);if(i=arguments,a=this,f=c,W){if(r===void 0)return X(f);if(Z)return clearTimeout(r),r=setTimeout(G,e),y(f)}return r===void 0&&(r=setTimeout(G,e)),o}return h.cancel=u,h.flush=s,h}var Rte={accessibility:{type:Boolean,default:!0},adaptiveHeight:{type:Boolean,default:!1},afterChange:We.any.def(null),arrows:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},autoplaySpeed:We.number.def(3e3),beforeChange:We.any.def(null),centerMode:{type:Boolean,default:!1},centerPadding:We.string.def("50px"),cssEase:We.string.def("ease"),dots:{type:Boolean,default:!1},dotsClass:We.string.def("slick-dots"),draggable:{type:Boolean,default:!0},unslick:{type:Boolean,default:!1},easing:We.string.def("linear"),edgeFriction:We.number.def(.35),fade:{type:Boolean,default:!1},focusOnSelect:{type:Boolean,default:!1},infinite:{type:Boolean,default:!0},initialSlide:We.number.def(0),lazyLoad:We.any.def(null),verticalSwiping:{type:Boolean,default:!1},asNavFor:We.any.def(null),pauseOnDotsHover:{type:Boolean,default:!1},pauseOnFocus:{type:Boolean,default:!1},pauseOnHover:{type:Boolean,default:!0},responsive:We.array,rows:We.number.def(1),rtl:{type:Boolean,default:!1},slide:We.string.def("div"),slidesPerRow:We.number.def(1),slidesToScroll:We.number.def(1),slidesToShow:We.number.def(1),speed:We.number.def(500),swipe:{type:Boolean,default:!0},swipeEvent:We.any.def(null),swipeToSlide:{type:Boolean,default:!1},touchMove:{type:Boolean,default:!0},touchThreshold:We.number.def(5),useCSS:{type:Boolean,default:!0},useTransform:{type:Boolean,default:!0},variableWidth:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},waitForAnimate:{type:Boolean,default:!0},children:We.array,__propsSymbol__:We.any};const hC=Rte;var Tte={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0};const xte=Tte;function Zv(n,e,t){return Math.max(e,Math.min(n,t))}var Nu=function(e){var t=["touchstart","touchmove","wheel"];t.includes(e.type)||e.preventDefault()},i0=function(e){for(var t=[],i=fC(e),a=bC(e),l=i;l0?1:0):0},Ste=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow},vv=function(e){return e&&e.offsetWidth||0},k1=function(e){return e&&e.offsetHeight||0},mC=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i,a=e.startX-e.curX,l=e.startY-e.curY,o=Math.atan2(l,a);return i=Math.round(o*180/Math.PI),i<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":t===!0?i>=35&&i<=135?"up":"down":"vertical"},up=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t},mZ=function(e,t){var i={};return t.forEach(function(a){return i[a]=e[a]}),i},zte=function(e){var t=e.children.length,i=e.listRef,a=Math.ceil(vv(i)),l=e.trackRef,o=Math.ceil(vv(l)),r;if(e.vertical)r=a;else{var f=e.centerMode&&parseInt(e.centerPadding)*2;typeof e.centerPadding=="string"&&e.centerPadding.slice(-1)==="%"&&(f*=a/100),r=Math.ceil((a-f)/e.slidesToShow)}var v=i&&k1(i.querySelector('[data-index="0"]')),b=v*e.slidesToShow,Z=e.currentSlide===void 0?e.initialSlide:e.currentSlide;e.rtl&&e.currentSlide===void 0&&(Z=t-1-e.initialSlide);var p=e.lazyLoadedList||[],y=i0(P(P({},e),{},{currentSlide:Z,lazyLoadedList:p}));p=p.concat(y);var X={slideCount:t,slideWidth:r,listWidth:a,trackWidth:o,currentSlide:Z,slideHeight:v,listHeight:b,lazyLoadedList:p};return e.autoplaying===null&&e.autoplay&&(X.autoplaying="playing"),X},kte=function(e){var t=e.waitForAnimate,i=e.animating,a=e.fade,l=e.infinite,o=e.index,r=e.slideCount,f=e.lazyLoad,v=e.currentSlide,b=e.centerMode,Z=e.slidesToScroll,p=e.slidesToShow,y=e.useCSS,X=e.lazyLoadedList;if(t&&i)return{};var m=o,N,G,d,u={},s={},h=l?o:Zv(o,0,r-1);if(a){if(!l&&(o<0||o>=r))return{};o<0?m=o+r:o>=r&&(m=o-r),f&&X.indexOf(m)<0&&(X=X.concat(m)),u={animating:!0,currentSlide:m,lazyLoadedList:X,targetSlide:m},s={animating:!1,targetSlide:m}}else N=m,m<0?(N=m+r,l?r%Z!==0&&(N=r-r%Z):N=0):!up(e)&&m>v?m=N=v:b&&m>=r?(m=l?r:r-1,N=l?0:r-1):m>=r&&(N=m-r,l?r%Z!==0&&(N=0):N=r-p),!l&&m+p>=r&&(N=r-p),G=Yh(P(P({},e),{},{slideIndex:m})),d=Yh(P(P({},e),{},{slideIndex:N})),l||(G===d&&(m=N),G=d),f&&(X=X.concat(i0(P(P({},e),{},{currentSlide:m})))),y?(u={animating:!0,currentSlide:N,trackStyle:pC(P(P({},e),{},{left:G})),lazyLoadedList:X,targetSlide:h},s={animating:!1,currentSlide:N,trackStyle:Ih(P(P({},e),{},{left:d})),swipeLeft:null,targetSlide:h}):u={currentSlide:N,trackStyle:Ih(P(P({},e),{},{left:d})),lazyLoadedList:X,targetSlide:h};return{state:u,nextState:s}},Fte=function(e,t){var i,a,l,o=e.slidesToScroll,r=e.slidesToShow,f=e.slideCount,v=e.currentSlide,b=e.targetSlide,Z=e.lazyLoad,p=e.infinite,y=f%o!==0,X=y?0:(f-v)%o;if(t.message==="previous")a=X===0?o:r-X,l=v-a,Z&&!p&&(i=v-a,l=i===-1?f-1:i),p||(l=b-o);else if(t.message==="next")a=X===0?o:X,l=v+a,Z&&!p&&(l=(v+o)%f+X),p||(l=b+o);else if(t.message==="dots")l=t.index*t.slidesToScroll;else if(t.message==="children"){if(l=t.index,p){var m=Kte(P(P({},e),{},{targetSlide:l}));l>t.currentSlide&&m==="left"?l=l-f:l10)return{scrolling:!0};r&&(d.swipeLength=I);var w=(f?-1:1)*(d.curX>d.startX?1:-1);r&&(w=d.curY>d.startY?1:-1);var C=Math.ceil(m/N),x=mC(t.touchObject,r),R=d.swipeLength;return G||(v===0&&(x==="right"||x==="down")||v+1>=C&&(x==="left"||x==="up")||!up(t)&&(x==="left"||x==="up"))&&(R=d.swipeLength*b,Z===!1&&p&&(p(x),W.edgeDragged=!0)),!y&&u&&(u(x),W.swiped=!0),l?c=M+R*(s/h)*w:f?c=M-R*w:c=M+R*w,r&&(c=M+R*w),W=P(P({},W),{},{touchObject:d,swipeLeft:c,trackStyle:Ih(P(P({},t),{},{left:c}))}),Math.abs(d.curX-d.startX)10&&(W.swiping=!0,Nu(e)),W}},jte=function(e,t){var i=t.dragging,a=t.swipe,l=t.touchObject,o=t.listWidth,r=t.touchThreshold,f=t.verticalSwiping,v=t.listHeight,b=t.swipeToSlide,Z=t.scrolling,p=t.onSwipe,y=t.targetSlide,X=t.currentSlide,m=t.infinite;if(!i)return a&&Nu(e),{};var N=f?v/r:o/r,G=mC(l,f),d={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(Z||!l.swipeLength)return d;if(l.swipeLength>N){Nu(e),p&&p(G);var u,s,h=m?X:y;switch(G){case"left":case"up":s=h+Gw(t),u=b?Ww(t,s):s,d.currentDirection=0;break;case"right":case"down":s=h-Gw(t),u=b?Ww(t,s):s,d.currentDirection=1;break;default:u=h}d.triggerSlideHandler=u}else{var c=Yh(t);d.trackStyle=pC(P(P({},t),{},{left:c}))}return d},Ute=function(e){for(var t=e.infinite?e.slideCount*2:e.slideCount,i=e.infinite?e.slidesToShow*-1:0,a=e.infinite?e.slidesToShow*-1:0,l=[];ii[i.length-1])t=i[i.length-1];else for(var l in i){if(te.swipeLeft*-1)return i=f,!1}else if(f.offsetLeft-t+vv(f)/2>e.swipeLeft*-1)return i=f,!1;return!0}),!i)return 0;var o=e.rtl===!0?e.slideCount-e.currentSlide:e.currentSlide,r=Math.abs(i.dataset.index-o)||1;return r}else return e.slidesToScroll},F1=function(e,t){return t.reduce(function(i,a){return i&&e.hasOwnProperty(a)},!0)?null:console.error("Keys Missing:",e)},Ih=function(e){F1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var t,i,a=e.slideCount+2*e.slidesToShow;e.vertical?i=a*e.slideHeight:t=Ete(e)*e.slideWidth;var l={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",r=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",f=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";l=P(P({},l),{},{WebkitTransform:o,transform:r,msTransform:f})}else e.vertical?l.top=e.left:l.left=e.left;return e.fade&&(l={opacity:1}),t&&(l.width=t+"px"),i&&(l.height=i+"px"),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?l.marginTop=e.left+"px":l.marginLeft=e.left+"px"),l},pC=function(e){F1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=Ih(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t},Yh=function(e){if(e.unslick)return 0;F1(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t=e.slideIndex,i=e.trackRef,a=e.infinite,l=e.centerMode,o=e.slideCount,r=e.slidesToShow,f=e.slidesToScroll,v=e.slideWidth,b=e.listWidth,Z=e.variableWidth,p=e.slideHeight,y=e.fade,X=e.vertical,m=0,N,G,d=0;if(y||e.slideCount===1)return 0;var u=0;if(a?(u=-Vo(e),o%f!==0&&t+f>o&&(u=-(t>o?r-(t-o):o%f)),l&&(u+=parseInt(r/2))):(o%f!==0&&t+f>o&&(u=r-o%f),l&&(u=parseInt(r/2))),m=u*v,d=u*p,X?N=t*p*-1+d:N=t*v*-1+m,Z===!0){var s,h=i;if(s=t+Vo(e),G=h&&h.childNodes[s],N=G?G.offsetLeft*-1:0,l===!0){s=a?t+Vo(e):t,G=h&&h.children[s],N=0;for(var c=0;ce.currentSlide?e.targetSlide>e.currentSlide+Hte(e)?"left":"right":e.targetSlide0&&(o+=1),a&&t%2===0&&(o+=1),o}return a?0:t-1},Pte=function(e){var t=e.slidesToShow,i=e.centerMode,a=e.rtl,l=e.centerPadding;if(i){var o=(t-1)/2+1;return parseInt(l)>0&&(o+=1),!a&&t%2===0&&(o+=1),o}return a?t-1:0},Xw=function(){return!!(typeof window<"u"&&window.document&&window.document.createElement)},pZ=function(e){var t,i,a,l;e.rtl?l=e.slideCount-1-e.index:l=e.index;var o=l<0||l>=e.slideCount;e.centerMode?(a=Math.floor(e.slidesToShow/2),i=(l-e.currentSlide)%e.slideCount===0,l>e.currentSlide-a-1&&l<=e.currentSlide+a&&(t=!0)):t=e.currentSlide<=l&&l=e.slideCount?r=e.targetSlide-e.slideCount:r=e.targetSlide;var f=l===r;return{"slick-slide":!0,"slick-active":t,"slick-center":i,"slick-cloned":o,"slick-current":f}},Qte=function(e){var t={};return(e.variableWidth===void 0||e.variableWidth===!1)&&(t.width=e.slideWidth+(typeof e.slideWidth=="number"?"px":"")),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight)+"px":t.left=-e.index*parseInt(e.slideWidth)+"px",t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t},yZ=function(e,t){return e.key+"-"+t},Bte=function(e,t){var i,a=[],l=[],o=[],r=t.length,f=fC(e),v=bC(e);return t.forEach(function(b,Z){var p,y={message:"children",index:Z,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(Z)>=0?p=b:p=D("div");var X=Qte(P(P({},e),{},{index:Z})),m=p.props.class||"",N=pZ(P(P({},e),{},{index:Z}));if(a.push(wn(p,{key:"original"+yZ(p,Z),tabindex:"-1","data-index":Z,"aria-hidden":!N["slick-active"],class:_e(N,m),style:P(P({outline:"none"},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}})),e.infinite&&e.fade===!1){var G=r-Z;G<=Vo(e)&&r!==e.slidesToShow&&(i=-G,i>=f&&(p=b),N=pZ(P(P({},e),{},{index:i})),l.push(wn(p,{key:"precloned"+yZ(p,i),class:_e(N,m),tabindex:"-1","data-index":i,"aria-hidden":!N["slick-active"],style:P(P({},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}}))),r!==e.slidesToShow&&(i=r+Z,i=w&&f<=M:f===w}),x={message:"dots",index:c,slidesToScroll:l,currentSlide:f};function R(g){g&&g.preventDefault(),Z(x)}d=d.concat(D("li",{key:c,class:C},[wn(b({i:c}),{onClick:R})]))},s=0;s=t.children.length&&e.changeSlide({message:"index",index:t.children.length-t.slidesToShow,currentSlide:e.currentSlide}),!e.preProps.autoplay&&t.autoplay?e.handleAutoPlay("playing"):t.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.preProps=P({},t)}},mounted:function(){var e=this;if(this.__emit("init"),this.lazyLoad){var t=i0(P(P({},this.$props),this.$data));t.length>0&&(this.setState(function(i){return{lazyLoadedList:i.lazyLoadedList.concat(t)}}),this.__emit("lazyLoad",t))}this.$nextTick(function(){var i=P({listRef:e.list,trackRef:e.track,children:e.children},e.$props);e.updateState(i,!0,function(){e.adaptHeight(),e.autoplay&&e.handleAutoPlay("playing")}),e.lazyLoad==="progressive"&&(e.lazyLoadTimer=setInterval(e.progressiveLazyLoad,1e3)),e.ro=new OW(function(){e.animating?(e.onWindowResized(!1),e.callbackTimers.push(setTimeout(function(){return e.onWindowResized()},e.speed))):e.onWindowResized()}),e.ro.observe(e.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),function(a){a.onfocus=e.$props.pauseOnFocus?e.onSlideFocus:null,a.onblur=e.$props.pauseOnFocus?e.onSlideBlur:null}),window.addEventListener?window.addEventListener("resize",e.onWindowResized):window.attachEvent("onresize",e.onWindowResized)})},beforeUnmount:function(){var e;this.animationEndCallback&&clearTimeout(this.animationEndCallback),this.lazyLoadTimer&&clearInterval(this.lazyLoadTimer),this.callbackTimers.length&&(this.callbackTimers.forEach(function(t){return clearTimeout(t)}),this.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",this.onWindowResized):window.detachEvent("onresize",this.onWindowResized),this.autoplayTimer&&clearInterval(this.autoplayTimer),(e=this.ro)===null||e===void 0||e.disconnect()},updated:function(){if(this.checkImagesLoad(),this.__emit("reInit"),this.lazyLoad){var e=i0(P(P({},this.$props),this.$data));e.length>0&&(this.setState(function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad"))}this.adaptHeight()},methods:{listRefHandler:function(e){this.list=e},trackRefHandler:function(e){this.track=e},adaptHeight:function(){if(this.adaptiveHeight&&this.list){var e=this.list.querySelector('[data-index="'.concat(this.currentSlide,'"]'));this.list.style.height=k1(e)+"px"}},onWindowResized:function(e){var t=this;this.debouncedResize&&this.debouncedResize.cancel(),this.debouncedResize=cp(function(){return t.resizeWindow(e)},50),this.debouncedResize()},resizeWindow:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,i=Boolean(this.track);if(i){var a=P(P({listRef:this.list,trackRef:this.track,children:this.children},this.$props),this.$data);this.updateState(a,t,function(){e.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.setState({animating:!1}),clearTimeout(this.animationEndCallback),delete this.animationEndCallback}},updateState:function(e,t,i){var a=zte(e);e=P(P(P({},e),a),{},{slideIndex:a.currentSlide});var l=Yh(e);e=P(P({},e),{},{left:l});var o=Ih(e);(t||this.children.length!==e.children.length)&&(a.trackStyle=o),this.setState(a,i)},ssrInit:function(){var e=this.children;if(this.variableWidth){var t=0,i=0,a=[],l=Vo(P(P(P({},this.$props),this.$data),{},{slideCount:e.length})),o=Eb(P(P(P({},this.$props),this.$data),{},{slideCount:e.length}));e.forEach(function(u){var s,h,c=((s=u.props.style)===null||s===void 0||(h=s.width)===null||h===void 0?void 0:h.split("px")[0])||0;a.push(c),t+=c});for(var r=0;r=i&&e.onWindowResized()};if(!l.onclick)l.onclick=function(){return l.parentNode.focus()};else{var r=l.onclick;l.onclick=function(){r(),l.parentNode.focus()}}l.onload||(e.$props.lazyLoad?l.onload=function(){e.adaptHeight(),e.callbackTimers.push(setTimeout(e.onWindowResized,e.speed))}:(l.onload=o,l.onerror=function(){o(),e.__emit("lazyLoadError")}))})},progressiveLazyLoad:function(){for(var e=[],t=P(P({},this.$props),this.$data),i=this.currentSlide;i=-Vo(t);a--)if(this.lazyLoadedList.indexOf(a)<0){e.push(a);break}e.length>0?(this.setState(function(l){return{lazyLoadedList:l.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad",e)):this.lazyLoadTimer&&(clearInterval(this.lazyLoadTimer),delete this.lazyLoadTimer)},slideHandler:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,a=this.$props,l=a.asNavFor,o=a.currentSlide,r=a.beforeChange,f=a.speed,v=a.afterChange,b=kte(P(P(P({index:e},this.$props),this.$data),{},{trackRef:this.track,useCSS:this.useCSS&&!i})),Z=b.state,p=b.nextState;if(Z){r&&r(o,Z.currentSlide);var y=Z.lazyLoadedList.filter(function(X){return t.lazyLoadedList.indexOf(X)<0});this.$attrs.onLazyLoad&&y.length>0&&this.__emit("lazyLoad",y),!this.$props.waitForAnimate&&this.animationEndCallback&&(clearTimeout(this.animationEndCallback),v&&v(o),delete this.animationEndCallback),this.setState(Z,function(){l&&t.asNavForIndex!==e&&(t.asNavForIndex=e,l.innerSlider.slideHandler(e)),p&&(t.animationEndCallback=setTimeout(function(){var X=p.animating,m=jt(p,qte);t.setState(m,function(){t.callbackTimers.push(setTimeout(function(){return t.setState({animating:X})},10)),v&&v(Z.currentSlide),delete t.animationEndCallback})},f))})}},changeSlide:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=P(P({},this.$props),this.$data),a=Fte(i,e);if(!(a!==0&&!a)&&(t===!0?this.slideHandler(a,t):this.slideHandler(a),this.$props.autoplay&&this.handleAutoPlay("update"),this.$props.focusOnSelect)){var l=this.list.querySelectorAll(".slick-current");l[0]&&l[0].focus()}},clickHandler:function(e){this.clickable===!1&&(e.stopPropagation(),e.preventDefault()),this.clickable=!0},keyHandler:function(e){var t=Jte(e,this.accessibility,this.rtl);t!==""&&this.changeSlide({message:t})},selectHandler:function(e){this.changeSlide(e)},disableBodyScroll:function(){var e=function(i){i=i||window.event,i.preventDefault&&i.preventDefault(),i.returnValue=!1};window.ontouchmove=e},enableBodyScroll:function(){window.ontouchmove=null},swipeStart:function(e){this.verticalSwiping&&this.disableBodyScroll();var t=Dte(e,this.swipe,this.draggable);t!==""&&this.setState(t)},swipeMove:function(e){var t=Ote(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));t&&(t.swiping&&(this.clickable=!1),this.setState(t))},swipeEnd:function(e){var t=jte(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));if(t){var i=t.triggerSlideHandler;delete t.triggerSlideHandler,this.setState(t),i!==void 0&&(this.slideHandler(i),this.$props.verticalSwiping&&this.enableBodyScroll())}},touchEnd:function(e){this.swipeEnd(e),this.clickable=!0},slickPrev:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"previous"})},0))},slickNext:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"next"})},0))},slickGoTo:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=Number(e),isNaN(e))return"";this.callbackTimers.push(setTimeout(function(){return t.changeSlide({message:"index",index:e,currentSlide:t.currentSlide},i)},0))},play:function(){var e;if(this.rtl)e=this.currentSlide-this.slidesToScroll;else if(up(P(P({},this.$props),this.$data)))e=this.currentSlide+this.slidesToScroll;else return!1;this.slideHandler(e)},handleAutoPlay:function(e){this.autoplayTimer&&clearInterval(this.autoplayTimer);var t=this.autoplaying;if(e==="update"){if(t==="hovered"||t==="focused"||t==="paused")return}else if(e==="leave"){if(t==="paused"||t==="focused")return}else if(e==="blur"&&(t==="paused"||t==="hovered"))return;this.autoplayTimer=setInterval(this.play,this.autoplaySpeed+50),this.setState({autoplaying:"playing"})},pause:function(e){this.autoplayTimer&&(clearInterval(this.autoplayTimer),this.autoplayTimer=null);var t=this.autoplaying;e==="paused"?this.setState({autoplaying:"paused"}):e==="focused"?(t==="hovered"||t==="playing")&&this.setState({autoplaying:"focused"}):t==="playing"&&this.setState({autoplaying:"hovered"})},onDotsOver:function(){this.autoplay&&this.pause("hovered")},onDotsLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onTrackOver:function(){this.autoplay&&this.pause("hovered")},onTrackLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onSlideFocus:function(){this.autoplay&&this.pause("focused")},onSlideBlur:function(){this.autoplay&&this.autoplaying==="focused"&&this.handleAutoPlay("blur")},customPaging:function(e){var t=e.i;return D("button",null,[t+1])},appendDots:function(e){var t=e.dots;return D("ul",{style:{display:"block"}},[t])}},render:function(){var e,t=this,i=_e("slick-slider",this.$attrs.class,{"slick-vertical":this.vertical,"slick-initialized":!0}),a=P(P({},this.$props),this.$data),l=mZ(a,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),o=this.$props.pauseOnHover;l=P(P({},l),{},{focusOnSelect:this.focusOnSelect&&this.clickable?this.selectHandler:null,ref:this.trackRefHandler,onMouseleave:o?this.onTrackLeave:Ra,onMouseover:o?this.onTrackOver:Ra});var r;if(this.dots===!0&&this.slideCount>=this.slidesToShow){var f=mZ(a,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","infinite","appendDots"]);f.customPaging=this.customPaging,f.appendDots=this.appendDots;var v=this.$slots,b=v.customPaging,Z=v.appendDots;b&&(f.customPaging=b),Z&&(f.appendDots=Z);var p=this.$props.pauseOnDotsHover;f=P(P({},f),{},{clickHandler:this.changeSlide,onMouseover:p?this.onDotsOver:Ra,onMouseleave:p?this.onDotsLeave:Ra}),r=D($te,f,null)}var y,X,m=mZ(a,["infinite","centerMode","currentSlide","slideCount","slidesToShow"]);m.clickHandler=this.changeSlide;var N=this.$slots,G=N.prevArrow,d=N.nextArrow;G&&(m.prevArrow=G),d&&(m.nextArrow=d),this.arrows&&(y=D(GC,m,null),X=D(XC,m,null));var u=null;this.vertical&&(u={height:typeof this.listHeight=="number"?"".concat(this.listHeight,"px"):this.listHeight});var s=null;this.vertical===!1?this.centerMode===!0&&(s={padding:"0px "+this.centerPadding}):this.centerMode===!0&&(s={padding:this.centerPadding+" 0px"});var h=P(P({},u),s),c=this.touchMove,W=(e={ref:this.listRefHandler,class:"slick-list",style:h,onClick:this.clickHandler,onMousedown:c?this.swipeStart:Ra,onMousemove:this.dragging&&c?this.swipeMove:Ra,onMouseup:c?this.swipeEnd:Ra,onMouseleave:this.dragging&&c?this.swipeEnd:Ra},ce(e,Ui?"onTouchstartPassive":"onTouchstart",c?this.swipeStart:Ra),ce(e,Ui?"onTouchmovePassive":"onTouchmove",this.dragging&&c?this.swipeMove:Ra),ce(e,"onTouchend",c?this.touchEnd:Ra),ce(e,"onTouchcancel",this.dragging&&c?this.swipeEnd:Ra),ce(e,"onKeydown",this.accessibility?this.keyHandler:Ra),e),M={class:i,dir:"ltr",style:this.$attrs.style};return this.unslick&&(W={class:"slick-list",ref:this.listRefHandler},M={class:i}),D("div",M,[this.unslick?"":y,D("div",W,[D(Ate,l,{default:function(){return[t.children]}})]),this.unslick?"":X,this.unslick?"":r])}},tne=He({name:"Slider",mixins:[Lc],inheritAttrs:!1,props:P({},hC),data:function(){return this._responsiveMediaHandlers=[],{breakpoint:null}},mounted:function(){var e=this;if(this.responsive){var t=this.responsive.map(function(a){return a.breakpoint});t.sort(function(a,l){return a-l}),t.forEach(function(a,l){var o;l===0?o=fZ({minWidth:0,maxWidth:a}):o=fZ({minWidth:t[l-1]+1,maxWidth:a}),Xw()&&e.media(o,function(){e.setState({breakpoint:a})})});var i=fZ({minWidth:t.slice(-1)[0]});Xw()&&this.media(i,function(){e.setState({breakpoint:null})})}},beforeUnmount:function(){this._responsiveMediaHandlers.forEach(function(e){e.mql.removeListener(e.listener)})},methods:{innerSliderRefHandler:function(e){this.innerSlider=e},media:function(e,t){var i=window.matchMedia(e),a=function(o){var r=o.matches;r&&t()};i.addListener(a),a(i),this._responsiveMediaHandlers.push({mql:i,query:e,listener:a})},slickPrev:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickPrev()},slickNext:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickNext()},slickGoTo:function(e){var t,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(t=this.innerSlider)===null||t===void 0||t.slickGoTo(e,i)},slickPause:function(){var e;(e=this.innerSlider)===null||e===void 0||e.pause("paused")},slickPlay:function(){var e;(e=this.innerSlider)===null||e===void 0||e.handleAutoPlay("play")}},render:function(){var e=this,t,i;this.breakpoint?(i=this.responsive.filter(function(m){return m.breakpoint===e.breakpoint}),t=i[0].settings==="unslick"?"unslick":P(P({},this.$props),i[0].settings)):t=P({},this.$props),t.centerMode&&(t.slidesToScroll>1,t.slidesToScroll=1),t.fade&&(t.slidesToShow>1,t.slidesToScroll>1,t.slidesToShow=1,t.slidesToScroll=1);var a=Th(this)||[];a=a.filter(function(m){return typeof m=="string"?!!m.trim():!!m}),t.variableWidth&&(t.rows>1||t.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),t.variableWidth=!1);for(var l=[],o=null,r=0;r=a.length)break;b.push(wn(a[Z],{key:100*r+10*v+Z,tabindex:-1,style:{width:"".concat(100/t.slidesPerRow,"%"),display:"inline-block"}}))}f.push(D("div",{key:10*r+v},[b]))}t.variableWidth?l.push(D("div",{key:r,style:{width:o}},[f])):l.push(D("div",{key:r},[f]))}if(t==="unslick"){var y="regular slider "+(this.className||"");return D("div",{class:y},[a])}else l.length<=t.slidesToShow&&(t.unslick=!0);var X=P(P(P({},this.$attrs),t),{},{children:l,ref:this.innerSliderRefHandler});return D(ene,P(P({},X),{},{__propsSymbol__:[]}),this.$slots)}});var nne=["class","style"],ine=function(){return{effect:String,dots:{type:Boolean,default:!0},vertical:{type:Boolean,default:void 0},autoplay:{type:Boolean,default:void 0},easing:String,beforeChange:Function,afterChange:Function,prefixCls:String,accessibility:{type:Boolean,default:void 0},nextArrow:We.any,prevArrow:We.any,pauseOnHover:{type:Boolean,default:void 0},adaptiveHeight:{type:Boolean,default:void 0},arrows:{type:Boolean,default:!1},autoplaySpeed:Number,centerMode:{type:Boolean,default:void 0},centerPadding:String,cssEase:String,dotsClass:String,draggable:{type:Boolean,default:!1},fade:{type:Boolean,default:void 0},focusOnSelect:{type:Boolean,default:void 0},infinite:{type:Boolean,default:void 0},initialSlide:Number,lazyLoad:String,rtl:{type:Boolean,default:void 0},slide:String,slidesToShow:Number,slidesToScroll:Number,speed:Number,swipe:{type:Boolean,default:void 0},swipeToSlide:{type:Boolean,default:void 0},swipeEvent:Function,touchMove:{type:Boolean,default:void 0},touchThreshold:Number,variableWidth:{type:Boolean,default:void 0},useCSS:{type:Boolean,default:void 0},slickGoTo:Number,responsive:Array,dotPosition:{type:String,default:void 0},verticalSwiping:{type:Boolean,default:!1}}},lne=He({compatConfig:{MODE:3},name:"ACarousel",inheritAttrs:!1,props:ine(),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=Ne(),r=function(m){var N,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(N=o.value)===null||N===void 0||N.slickGoTo(m,G)};l({goTo:r,autoplay:function(m){var N,G;(N=o.value)===null||N===void 0||(G=N.innerSlider)===null||G===void 0||G.handleAutoPlay(m)},prev:function(){var m;(m=o.value)===null||m===void 0||m.slickPrev()},next:function(){var m;(m=o.value)===null||m===void 0||m.slickNext()},innerSlider:de(function(){var X;return(X=o.value)===null||X===void 0?void 0:X.innerSlider})}),qt(function(){Ci(e.vertical===void 0,"Carousel","`vertical` is deprecated, please use `dotPosition` instead.")});var f=Nt("carousel",e),v=f.prefixCls,b=f.direction,Z=de(function(){return e.dotPosition?e.dotPosition:e.vertical!==void 0&&e.vertical?"right":"bottom"}),p=de(function(){return Z.value==="left"||Z.value==="right"}),y=de(function(){var X,m="slick-dots";return _e((X={},ce(X,m,!0),ce(X,"".concat(m,"-").concat(Z.value),!0),ce(X,"".concat(e.dotsClass),!!e.dotsClass),X))});return function(){var X,m=e.dots,N=e.arrows,G=e.draggable,d=e.effect,u=a.class,s=a.style,h=jt(a,nne),c=d==="fade"?!0:e.fade,W=_e(v.value,(X={},ce(X,"".concat(v.value,"-rtl"),b.value==="rtl"),ce(X,"".concat(v.value,"-vertical"),p.value),ce(X,"".concat(u),!!u),X));return D("div",{class:W,style:s},[D(tne,P(P(P({ref:o},e),h),{},{dots:!!m,dotsClass:y.value,arrows:N,draggable:G,fade:c,vertical:p.value}),i)])}}});const ane=wi(lne);var J1="__RC_CASCADER_SPLIT__",rne="SHOW_PARENT",one="SHOW_CHILD";function Zs(n){return n.join(J1)}function uu(n){return n.map(Zs)}function sne(n){return n.split(J1)}function cne(n){var e=n||{},t=e.label,i=e.value,a=e.children,l=i||"value";return{label:t||"label",value:l,key:l,children:a||"children"}}function xd(n,e){var t,i;return(t=n.isLeaf)!==null&&t!==void 0?t:!((i=n[e.children])!==null&&i!==void 0&&i.length)}function une(n){var e=n.parentElement;if(e){var t=n.offsetTop-e.offsetTop;t-e.scrollTop<0?e.scrollTo({top:t}):t+n.offsetHeight-e.scrollTop>e.offsetHeight&&e.scrollTo({top:t+n.offsetHeight-e.offsetHeight})}}var NC=Symbol("TreeContextKey"),dne=He({compatConfig:{MODE:3},name:"TreeContext",props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(NC,de(function(){return e.value})),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}}),D1=function(){return un(NC,de(function(){return{}}))},MC=Symbol("KeysStateKey"),hne=function(e){hn(MC,e)},IC=function(){return un(MC,{expandedKeys:Gn([]),selectedKeys:Gn([]),loadedKeys:Gn([]),loadingKeys:Gn([]),checkedKeys:Gn([]),halfCheckedKeys:Gn([]),expandedKeysSet:de(function(){return new Set}),selectedKeysSet:de(function(){return new Set}),loadedKeysSet:de(function(){return new Set}),loadingKeysSet:de(function(){return new Set}),checkedKeysSet:de(function(){return new Set}),halfCheckedKeysSet:de(function(){return new Set}),flattenNodes:Gn([])})},fne=function(e){for(var t=e.prefixCls,i=e.level,a=e.isStart,l=e.isEnd,o="".concat(t,"-indent-unit"),r=[],f=0;f=0&&t.splice(i,1),t}function is(n,e){var t=(n||[]).slice();return t.indexOf(e)===-1&&t.push(e),t}function j1(n){return n.split("-")}function wC(n,e){return"".concat(n,"-").concat(e)}function Zne(n){return n&&n.type&&n.type.isTreeNode}function vne(n,e){var t=[],i=e[n];function a(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];l.forEach(function(o){var r=o.key,f=o.children;t.push(r),a(f)})}return a(i.children),t}function Wne(n){if(n.parent){var e=j1(n.pos);return Number(e[e.length-1])===n.parent.children.length-1}return!1}function Gne(n){var e=j1(n.pos);return Number(e[e.length-1])===0}function Iw(n,e,t,i,a,l,o,r,f,v){var b,Z=n.clientX,p=n.clientY,y=n.target.getBoundingClientRect(),X=y.top,m=y.height,N=(v==="rtl"?-1:1)*(((a==null?void 0:a.x)||0)-Z),G=(N-12)/i,d=r[t.eventKey];if(p-1.5?l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:l({dragNode:x,dropNode:R,dropPosition:0})?I=0:l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1,{dropPosition:I,dropLevelOffset:w,dropTargetKey:d.key,dropTargetPos:d.pos,dragOverNodeKey:M,dropContainerKey:I===0?null:((b=d.parent)===null||b===void 0?void 0:b.key)||null,dropAllowed:g}}function Yw(n,e){if(n){var t=e.multiple;return t?n.slice():n.length?[n[0]]:n}}function ZZ(n){if(!n)return null;var e;if(Array.isArray(n))e={checkedKeys:n,halfCheckedKeys:void 0};else if(Yt(n)==="object")e={checkedKeys:n.checked||void 0,halfCheckedKeys:n.halfChecked||void 0};else return null;return e}function Gv(n,e){var t=new Set;function i(a){if(!t.has(a)){var l=e[a];if(l){t.add(a);var o=l.parent,r=l.node;r.disabled||o&&i(o.key)}}}return(n||[]).forEach(function(a){i(a)}),yt(t)}var Xne=["title","icon","switcherIcon"];function Uh(n,e){return n??e}function dp(n){var e=n||{},t=e.title,i=e._title,a=e.key,l=e.children,o=t||"title";return{title:o,_title:i||[o],key:a||"key",children:l||"children"}}function Xv(n){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],i=Ri(t);return i.map(function(a){var l,o,r,f;if(!Zne(a))return null;for(var v=a.children||{},b=a.key,Z={},p=0,y=Object.entries(a.props);p1&&arguments[1]!==void 0?arguments[1]:null;return b.map(function(p,y){for(var X=wC(Z?Z.pos:"0",y),m=Uh(p[l],X),N,G=0;G1&&arguments[1]!==void 0?arguments[1]:{},t=e.initWrapper,i=e.processEntity,a=e.onProcessFinished,l=e.externalGetKey,o=e.childrenPropName,r=e.fieldNames,f=arguments.length>2?arguments[2]:void 0,v=l||f,b={},Z={},p={posEntities:b,keyEntities:Z};return t&&(p=t(p)||p),Mne(n,function(y){var X=y.node,m=y.index,N=y.pos,G=y.key,d=y.parentPos,u=y.level,s=y.nodes,h={node:X,nodes:s,index:m,key:G,pos:N,level:u},c=Uh(G,N);b[N]=h,Z[c]=h,h.parent=b[d],h.parent&&(h.parent.children=h.parent.children||[],h.parent.children.push(h)),i&&i(h,p)},{externalGetKey:v,childrenPropName:o,fieldNames:r}),a&&a(p),p}function Nv(n,e){var t=e.expandedKeysSet,i=e.selectedKeysSet,a=e.loadedKeysSet,l=e.loadingKeysSet,o=e.checkedKeysSet,r=e.halfCheckedKeysSet,f=e.dragOverNodeKey,v=e.dropPosition,b=e.keyEntities,Z=b[n],p={eventKey:n,expanded:t.has(n),selected:i.has(n),loaded:a.has(n),loading:l.has(n),checked:o.has(n),halfChecked:r.has(n),pos:String(Z?Z.pos:""),parent:Z.parent,dragOver:f===n&&v===0,dragOverGapTop:f===n&&v===-1,dragOverGapBottom:f===n&&v===1};return p}function Mv(n){var e=n.data,t=n.expanded,i=n.selected,a=n.checked,l=n.loaded,o=n.loading,r=n.halfChecked,f=n.dragOver,v=n.dragOverGapTop,b=n.dragOverGapBottom,Z=n.pos,p=n.active,y=n.eventKey,X=P(P({dataRef:e},e),{},{expanded:t,selected:i,checked:a,loaded:l,loading:o,halfChecked:r,dragOver:f,dragOverGapTop:v,dragOverGapBottom:b,pos:Z,active:p,eventKey:y,key:y});return"props"in X||Object.defineProperty(X,"props",{get:function(){return n}}),X}const Ine=function(n,e){var t=de(function(){return Eh(n.value,{fieldNames:e.value,initWrapper:function(a){return P(P({},a),{},{pathKeyEntities:{}})},processEntity:function(a,l){var o=a.nodes.map(function(r){return r[e.value.value]}).join(J1);l.pathKeyEntities[o]=a,a.key=o}}).pathKeyEntities});return t};function Yne(n){var e=Ne(!1),t=Ne({});return qt(function(){if(!n.value){e.value=!1,t.value={};return}var i={matchInputWidth:!0,limit:50};n.value&&Yt(n.value)==="object"&&(i=P(P({},i),n.value)),i.limit<=0&&delete i.limit,e.value=!0,t.value=i}),{showSearch:e,searchConfig:t}}var $d="__rc_cascader_search_mark__",wne=function(e,t,i){var a=i.label;return t.some(function(l){return String(l[a]).toLowerCase().includes(e.toLowerCase())})},gne=function(e){var t=e.path,i=e.fieldNames;return t.map(function(a){return a[i.label]}).join(" / ")};const Vne=function(n,e,t,i,a,l){return de(function(){var o=a.value,r=o.filter,f=r===void 0?wne:r,v=o.render,b=v===void 0?gne:v,Z=o.limit,p=Z===void 0?50:Z,y=o.sort,X=[];if(!n.value)return[];function m(N,G){N.forEach(function(d){if(!(!y&&p>0&&X.length>=p)){var u=[].concat(yt(G),[d]),s=d[t.value.children];if((!s||s.length===0||l.value)&&f(n.value,u,{label:t.value.label})){var h;X.push(P(P({},d),{},(h={},ce(h,t.value.label,b({inputValue:n.value,path:u,prefixCls:i.value,fieldNames:t.value})),ce(h,$d,u),h)))}s&&m(d[t.value.children],u)}})}return m(e.value,[]),y&&X.sort(function(N,G){return y(N[$d],G[$d],n.value,t.value)}),p>0?X.slice(0,p):X})};function ww(n,e,t){var i=new Set(n);return n.filter(function(a){var l=e[a],o=l?l.parent:null,r=l?l.children:null;return t===one?!(r&&r.some(function(f){return f.key&&i.has(f.key)})):!(o&&!o.node.disabled&&i.has(o.key))})}function wh(n,e,t){for(var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=e,l=[],o=function(v){var b,Z,p,y=n[v],X=(b=a)===null||b===void 0?void 0:b.findIndex(function(N){var G=N[t.value];return i?String(G)===String(y):G===y}),m=X!==-1?(Z=a)===null||Z===void 0?void 0:Z[X]:null;l.push({value:(p=m==null?void 0:m[t.value])!==null&&p!==void 0?p:y,index:X,option:m}),a=m==null?void 0:m[t.children]},r=0;r=0;v-=1){var b=e.get(v)||new Set;b.forEach(function(Z){var p=Z.parent,y=Z.node;if(!(i(y)||!Z.parent||f.has(Z.parent.key))){if(i(Z.parent.node)){f.add(p.key);return}var X=!0,m=!1;(p.children||[]).filter(function(N){return!i(N.node)}).forEach(function(N){var G=N.key,d=a.has(G);X&&!d&&(X=!1),!m&&(d||l.has(G))&&(m=!0)}),X&&a.add(p.key),m&&l.add(p.key),f.add(p.key)}})}return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(gC(l,a))}}function xne(n,e,t,i,a){for(var l=new Set(n),o=new Set(e),r=0;r<=i;r+=1){var f=t.get(r)||new Set;f.forEach(function(p){var y=p.key,X=p.node,m=p.children,N=m===void 0?[]:m;!l.has(y)&&!o.has(y)&&!a(X)&&N.filter(function(G){return!a(G.node)}).forEach(function(G){l.delete(G.key)})})}o=new Set;for(var v=new Set,b=i;b>=0;b-=1){var Z=t.get(b)||new Set;Z.forEach(function(p){var y=p.parent,X=p.node;if(!(a(X)||!p.parent||v.has(p.parent.key))){if(a(p.parent.node)){v.add(y.key);return}var m=!0,N=!1;(y.children||[]).filter(function(G){return!a(G.node)}).forEach(function(G){var d=G.key,u=l.has(d);m&&!u&&(m=!1),!N&&(u||o.has(d))&&(N=!0)}),m||l.delete(y.key),N&&o.add(y.key),v.add(y.key)}})}return{checkedKeys:Array.from(l),halfCheckedKeys:Array.from(gC(o,l))}}function ir(n,e,t,i,a,l){var o;l?o=l:o=Rne;var r=new Set(n.filter(function(v){var b=!!t[v];return b})),f;return e===!0?f=Tne(r,a,i,o):f=xne(r,e.halfCheckedKeys,a,i,o),f}const Cne=function(n,e,t,i,a){return de(function(){var l=a.value||function(o){var r=o.labels,f=i.value?r.slice(-1):r,v=" / ";return f.every(function(b){return["string","number"].includes(Yt(b))})?f.join(v):f.reduce(function(b,Z,p){var y=Si(Z)?wn(Z,{key:p}):Z;return p===0?[y]:[].concat(yt(b),[v,y])},[])};return n.value.map(function(o){var r=wh(o,e.value,t.value),f=l({labels:r.map(function(b){var Z,p=b.option,y=b.value;return(Z=p==null?void 0:p[t.value.label])!==null&&Z!==void 0?Z:y}),selectedOptions:r.map(function(b){var Z=b.option;return Z})}),v=Zs(o);return{label:f,value:v,key:v,valueCells:o}})})};var VC=Symbol("CascaderContextKey"),Sne=function(e){hn(VC,e)},hp=function(){return un(VC)};const zne=function(){var n=Fh(),e=hp(),t=e.values,i=di([]),a=ft(i,2),l=a[0],o=a[1];return rt(function(){return n.open},function(){if(n.open&&!n.multiple){var r=t.value[0];o(r||[])}},{immediate:!0}),[l,o]},kne=function(n,e,t,i,a,l){var o=Fh(),r=de(function(){return o.direction==="rtl"}),f=[Ne([]),Ne(),Ne([])],v=f[0],b=f[1],Z=f[2];qt(function(){for(var N=-1,G=e.value,d=[],u=[],s=i.value.length,h=function(x){var R=G.findIndex(function(g){return g[t.value.value]===i.value[x]});if(R===-1)return"break";N=R,d.push(N),u.push(i.value[x]),G=G[N][t.value.children]},c=0;c1){var G=v.value.slice(0,-1);p(G)}else o.toggleOpen(!1)},m=function(){var G,d=((G=Z.value[b.value])===null||G===void 0?void 0:G[t.value.children])||[],u=d.find(function(h){return!h.disabled});if(u){var s=[].concat(yt(v.value),[u[t.value.value]]);p(s)}};n.expose({onKeydown:function(G){var d=G.which;switch(d){case bt.UP:case bt.DOWN:{var u=0;d===bt.UP?u=-1:d===bt.DOWN&&(u=1),u!==0&&y(u);break}case bt.LEFT:{r.value?m():X();break}case bt.RIGHT:{r.value?X():m();break}case bt.BACKSPACE:{o.searchValue||X();break}case bt.ENTER:{if(v.value.length){var s=Z.value[b.value],h=(s==null?void 0:s[$d])||[];h.length?l(h.map(function(c){return c[t.value.value]}),h[h.length-1]):l(v.value,s)}break}case bt.ESC:o.toggleOpen(!1),open&&G.stopPropagation()}},onKeyup:function(){}})};function fp(n){var e,t=n.prefixCls,i=n.checked,a=n.halfChecked,l=n.disabled,o=n.onClick,r=hp(),f=r.customSlots,v=r.checkable,b=v.value!==!1?f.value.checkable:v.value,Z=typeof b=="function"?b():typeof b=="boolean"?null:b;return D("span",{class:(e={},ce(e,t,!0),ce(e,"".concat(t,"-checked"),i),ce(e,"".concat(t,"-indeterminate"),!i&&a),ce(e,"".concat(t,"-disabled"),l),e),onClick:o},[Z])}fp.props=["prefixCls","checked","halfChecked","disabled","onClick"];fp.displayName="Checkbox";fp.inheritAttrs=!1;var LC="__cascader_fix_label__";function bp(n){var e,t,i,a,l,o,r=n.prefixCls,f=n.multiple,v=n.options,b=n.activeValue,Z=n.prevValuePath,p=n.onToggleOpen,y=n.onSelect,X=n.onActive,m=n.checkedSet,N=n.halfCheckedSet,G=n.loadingKeys,d=n.isSelectable,u="".concat(r,"-menu"),s="".concat(r,"-menu-item"),h=hp(),c=h.fieldNames,W=h.changeOnSelect,M=h.expandTrigger,I=h.expandIcon,w=h.loadingIcon,C=h.dropdownMenuColumnStyle,x=h.customSlots,R=(e=I.value)!==null&&e!==void 0?e:(t=(i=x.value).expandIcon)===null||t===void 0?void 0:t.call(i),g=(a=w.value)!==null&&a!==void 0?a:(l=(o=x.value).loadingIcon)===null||l===void 0?void 0:l.call(o),S=M.value==="hover";return D("ul",{class:u,role:"menu"},[v.map(function(L){var V,Y,T=L.disabled,J=L[$d],U=(V=L[LC])!==null&&V!==void 0?V:L[c.value.label],K=L[c.value.value],H=xd(L,c.value),k=J?J.map(function(re){return re[c.value.value]}):[].concat(yt(Z),[K]),F=Zs(k),O=G.includes(F),Q=m.has(F),oe=N.has(F),se=function(){!T&&(!S||!H)&&X(k)},he=function(){d(L)&&y(k,H)},pe;return typeof L.title=="string"?pe=L.title:typeof U=="string"&&(pe=U),D("li",{key:F,class:[s,(Y={},ce(Y,"".concat(s,"-expand"),!H),ce(Y,"".concat(s,"-active"),b===K),ce(Y,"".concat(s,"-disabled"),T),ce(Y,"".concat(s,"-loading"),O),Y)],style:C.value,role:"menuitemcheckbox",title:pe,"aria-checked":Q,"data-path-key":F,onClick:function(){se(),(!f||H)&&he()},onDblclick:function(){W.value&&p(!1)},onMouseenter:function(){S&&se()},onMousedown:function(_){_.preventDefault()}},[f&&D(fp,{prefixCls:"".concat(r,"-checkbox"),checked:Q,halfChecked:oe,disabled:T,onClick:function(_){_.stopPropagation(),he()}},null),D("div",{class:"".concat(s,"-content")},[U]),!O&&R&&!H&&D("div",{class:"".concat(s,"-expand-icon")},[R]),O&&g&&D("div",{class:"".concat(s,"-loading-icon")},[g])])})])}bp.props=["prefixCls","multiple","options","activeValue","prevValuePath","onToggleOpen","onSelect","onActive","checkedSet","halfCheckedSet","loadingKeys","isSelectable"];bp.displayName="Column";bp.inheritAttrs=!1;const Fne=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,a=t.slots,l=Fh(),o=Ne(),r=de(function(){return l.direction==="rtl"}),f=hp(),v=f.options,b=f.values,Z=f.halfValues,p=f.fieldNames,y=f.changeOnSelect,X=f.onSelect,m=f.searchOptions,N=f.dropdownPrefixCls,G=f.loadData,d=f.expandTrigger,u=f.customSlots,s=de(function(){return N.value||l.prefixCls}),h=Gn([]),c=function(U){if(!(!G.value||l.searchValue)){var K=wh(U,v.value,p.value),H=K.map(function(O){var Q=O.option;return Q}),k=H[H.length-1];if(k&&!xd(k,p.value)){var F=Zs(U);h.value=[].concat(yt(h.value),[F]),G.value(H)}}};qt(function(){h.value.length&&h.value.forEach(function(J){var U=sne(J),K=wh(U,v.value,p.value,!0).map(function(k){var F=k.option;return F}),H=K[K.length-1];(!H||H[p.value.children]||xd(H,p.value))&&(h.value=h.value.filter(function(k){return k!==J}))})});var W=de(function(){return new Set(uu(b.value))}),M=de(function(){return new Set(uu(Z.value))}),I=zne(),w=ft(I,2),C=w[0],x=w[1],R=function(U){x(U),c(U)},g=function(U){var K=U.disabled,H=xd(U,p.value);return!K&&(H||y.value||l.multiple)},S=function(U,K){var H=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;X(U),!l.multiple&&(K||y.value&&(d.value==="hover"||H))&&l.toggleOpen(!1)},L=de(function(){return l.searchValue?m.value:v.value}),V=de(function(){for(var J=[{options:L.value}],U=L.value,K=function(O){var Q=C.value[O],oe=U.find(function(he){return he[p.value.value]===Q}),se=oe==null?void 0:oe[p.value.children];if(!(se!=null&&se.length))return"break";U=se,J.push({options:se})},H=0;H"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Hb(n,e,t){return vle()?Hb=Reflect.construct.bind():Hb=function(a,l,o){var r=[null];r.push.apply(r,l);var f=Function.bind.apply(a,r),v=new f;return o&&gh(v,o.prototype),v},Hb.apply(null,arguments)}function Wle(n){return Function.toString.call(n).indexOf("[native code]")!==-1}function Yv(n){var e=typeof Map=="function"?new Map:void 0;return Yv=function(i){if(i===null||!Wle(i))return i;if(typeof i!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(i))return e.get(i);e.set(i,a)}function a(){return Hb(i,arguments,Iv(this).constructor)}return a.prototype=Object.create(i.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),gh(a,i)},Yv(n)}var Gle=/%[sdj%]/g,Xle=function(){};typeof process<"u"&&process.env;function wv(n){if(!n||!n.length)return null;var e={};return n.forEach(function(t){var i=t.field;e[i]=e[i]||[],e[i].push(t)}),e}function ka(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i=l)return r;switch(r){case"%s":return String(t[a++]);case"%d":return Number(t[a++]);case"%j":try{return JSON.stringify(t[a++])}catch{return"[Circular]"}break;default:return r}});return o}return n}function Nle(n){return n==="string"||n==="url"||n==="hex"||n==="email"||n==="date"||n==="pattern"}function sl(n,e){return!!(n==null||e==="array"&&Array.isArray(n)&&!n.length||Nle(e)&&typeof n=="string"&&!n)}function Mle(n,e,t){var i=[],a=0,l=n.length;function o(r){i.push.apply(i,r||[]),a++,a===l&&t(i)}n.forEach(function(r){e(r,o)})}function Fw(n,e,t){var i=0,a=n.length;function l(o){if(o&&o.length){t(o);return}var r=i;i=i+1,r=0)){var W=function(I){if(!(I.target.tagName==="INPUT"||zY(I.target))){u(c);var w=getComputedStyle(c).getPropertyValue("border-top-color")||getComputedStyle(c).getPropertyValue("border-color")||getComputedStyle(c).getPropertyValue("background-color");b=setTimeout(function(){return d(c,w)},0),At.cancel(Z),p=!0,Z=At(function(){p=!1},10)}};return c.addEventListener("click",W,!0),{cancel:function(){c.removeEventListener("click",W,!0)}}}};return Kt(function(){cn(function(){var h=ds(l);h.nodeType===1&&(v=s(h))})}),fn(function(){v&&v.cancel(),clearTimeout(b),X=!0}),function(){var h;return(h=i.default)===null||h===void 0?void 0:h.call(i)[0]}}});function Km(n){return n==="danger"?{danger:!0}:{type:n}}var b8=function(){return{prefixCls:String,type:String,htmlType:{type:String,default:"button"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:function(){return!1}},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:We.any,href:String,target:String,title:String,onClick:{type:Function},onMousedown:{type:Function}}};const Px=b8;var kY=function(e){e&&(e.style.width="0px",e.style.opacity="0",e.style.transform="scale(0)")},FY=function(e){cn(function(){e&&(e.style.width="".concat(e.scrollWidth,"px"),e.style.opacity="1",e.style.transform="scale(1)")})},JY=function(e){e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)};const m8=He({compatConfig:{MODE:3},name:"LoadingIcon",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup:function(e){return function(){var t=e.existIcon,i=e.prefixCls,a=e.loading;if(t)return D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]);var l=!!a;return D(aa,{name:"".concat(i,"-loading-icon-motion"),onBeforeEnter:kY,onEnter:FY,onAfterEnter:JY,onBeforeLeave:FY,onLeave:function(r){setTimeout(function(){kY(r)})},onAfterLeave:JY},{default:function(){return[l?D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]):null]}})}}});var DY=/^[\u4e00-\u9fa5]{2}$/,OY=DY.test.bind(DY);function ob(n){return n==="text"||n==="link"}const qi=He({compatConfig:{MODE:3},name:"AButton",inheritAttrs:!1,__ANT_BUTTON:!0,props:pn(Px(),{type:"default"}),slots:["icon"],setup:function(e,t){var i=t.slots,a=t.attrs,l=t.emit,o=Nt("btn",e),r=o.prefixCls,f=o.autoInsertSpaceInButton,v=o.direction,b=o.size,Z=Ne(null),p=Ne(void 0),y=!1,X=Ne(!1),m=Ne(!1),N=de(function(){return f.value!==!1}),G=de(function(){return Yt(e.loading)==="object"&&e.loading.delay?e.loading.delay||!0:!!e.loading});rt(G,function(c){clearTimeout(p.value),typeof G.value=="number"?p.value=setTimeout(function(){X.value=c},G.value):X.value=c},{immediate:!0});var d=de(function(){var c,W=e.type,M=e.shape,I=M===void 0?"default":M,w=e.ghost,C=e.block,x=e.danger,R=r.value,g={large:"lg",small:"sm",middle:void 0},S=b.value,L=S&&g[S]||"";return c={},ce(c,"".concat(R),!0),ce(c,"".concat(R,"-").concat(W),W),ce(c,"".concat(R,"-").concat(I),I!=="default"&&I),ce(c,"".concat(R,"-").concat(L),L),ce(c,"".concat(R,"-loading"),X.value),ce(c,"".concat(R,"-background-ghost"),w&&!ob(W)),ce(c,"".concat(R,"-two-chinese-chars"),m.value&&N.value),ce(c,"".concat(R,"-block"),C),ce(c,"".concat(R,"-dangerous"),!!x),ce(c,"".concat(R,"-rtl"),v.value==="rtl"),c}),u=function(){var W=Z.value;if(!(!W||f.value===!1)){var M=W.textContent;y&&OY(M)?m.value||(m.value=!0):m.value&&(m.value=!1)}},s=function(W){if(X.value||e.disabled){W.preventDefault();return}l("click",W)},h=function(W,M){var I=M?" ":"";if(W.type===Ms){var w=W.children.trim();return OY(w)&&(w=w.split("").join(I)),D("span",null,[w])}return W};return qt(function(){jn(!(e.ghost&&ob(e.type)),"Button","`link` or `text` button can't be a `ghost` button.")}),Kt(u),Dl(u),fn(function(){p.value&&clearTimeout(p.value)}),function(){var c,W,M=e.icon,I=M===void 0?(c=i.icon)===null||c===void 0?void 0:c.call(i):M,w=ti((W=i.default)===null||W===void 0?void 0:W.call(i));y=w.length===1&&!I&&!ob(e.type);var C=e.type,x=e.htmlType,R=e.disabled,g=e.href,S=e.title,L=e.target,V=e.onMousedown,Y=X.value?"loading":I,T=P(P({},a),{},{title:S,disabled:R,class:[d.value,a.class,ce({},"".concat(r.value,"-icon-only"),w.length===0&&!!Y)],onClick:s,onMousedown:V});R||delete T.disabled;var J=I&&!X.value?I:D(m8,{existIcon:!!I,prefixCls:r.value,loading:!!X.value},null),U=w.map(function(H){return h(H,y&&N.value)});if(g!==void 0)return D("a",P(P({},T),{},{href:g,target:L,ref:Z}),[J,U]);var K=D("button",P(P({},T),{},{ref:Z,type:x}),[J,U]);return ob(C)?K:D(qG,{ref:"wave",disabled:!!X.value},{default:function(){return[K]}})}}});function jY(n,e){for(var t=0;t=0?"".concat(f.value,"-slide-down"):"".concat(f.value,"-slide-up")}),p=function(){var N,G,d,u=e.overlay||((N=i.overlay)===null||N===void 0?void 0:N.call(i)),s=Array.isArray(u)?u[0]:u;if(!s)return null;var h=s.props||{};jn(!h.mode||h.mode==="vertical","Dropdown",'mode="'.concat(h.mode,`" is not supported for Dropdown's Menu.`));var c=h.selectable,W=c===void 0?!1:c,M=h.expandIcon,I=M===void 0?(G=s.children)===null||G===void 0||(d=G.expandIcon)===null||d===void 0?void 0:d.call(G):M,w=typeof I<"u"&&Si(I)?I:D("span",{class:"".concat(r.value,"-menu-submenu-arrow")},[D(xo,{class:"".concat(r.value,"-menu-submenu-arrow-icon")},null)]),C=Si(s)?wn(s,{mode:"vertical",selectable:W,expandIcon:function(){return w}}):s;return C},y=de(function(){var m=e.placement;if(!m)return v.value==="rtl"?"bottomRight":"bottomLeft";if(m.includes("Center")){var N=m.slice(0,m.indexOf("Center"));return jn(!m.includes("Center"),"Dropdown","You are using '".concat(m,"' placement in Dropdown, which is deprecated. Try to use '").concat(N,"' instead.")),N}return m}),X=function(N){l("update:visible",N),l("visibleChange",N)};return function(){var m,N,G=e.arrow,d=e.trigger,u=e.disabled,s=e.overlayClassName,h=(m=i.default)===null||m===void 0?void 0:m.call(i)[0],c=wn(h,Xn({class:_e(h==null||(N=h.props)===null||N===void 0?void 0:N.class,ce({},"".concat(r.value,"-rtl"),v.value==="rtl"),"".concat(r.value,"-trigger"))},u?{disabled:u}:{})),W=_e(s,ce({},"".concat(r.value,"-rtl"),v.value==="rtl")),M=u?[]:d,I;M&&M.indexOf("contextmenu")!==-1&&(I=!0);var w=Ox({arrowPointAtCenter:Yt(G)==="object"&&G.pointAtCenter,autoAdjustOverflow:!0}),C=dn(P(P(P({},e),a),{},{builtinPlacements:w,overlayClassName:W,arrow:G,alignPoint:I,prefixCls:r.value,getPopupContainer:b.value,transitionName:Z.value,trigger:M,onVisibleChange:X,placement:y.value}),["overlay","onUpdate:visible"]);return D(Hx,C,{default:function(){return[c]},overlay:p})}}});Bx.Button=Mh;const Pr=Bx;var w8=["class","style"],g8=function(){return{prefixCls:String,href:String,separator:We.any,overlay:We.any,onClick:Function}};const Ih=He({compatConfig:{MODE:3},name:"ABreadcrumbItem",inheritAttrs:!1,__ANT_BREADCRUMB_ITEM:!0,props:g8(),slots:["separator","overlay"],setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("breadcrumb",e),o=l.prefixCls,r=function(v,b){var Z=ui(i,e,"overlay");return Z?D(Pr,{overlay:Z,placement:"bottom"},{default:function(){return[D("span",{class:"".concat(b,"-overlay-link")},[v,D(Dh,null,null)])]}}):v};return function(){var f,v=(f=ui(i,e,"separator"))!==null&&f!==void 0?f:"/",b=ui(i,e),Z=a.class,p=a.style,y=jt(a,w8),X;return e.href!==void 0?X=D("a",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]):X=D("span",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]),X=r(X,o.value),b?D("span",{class:Z,style:p},[X,v&&D("span",{class:"".concat(o.value,"-separator")},[v])]):null}}});function V8(n,e,t,i){var a=t?t.call(i,n,e):void 0;if(a!==void 0)return!!a;if(n===e)return!0;if(Yt(n)!=="object"||!n||Yt(e)!=="object"||!e)return!1;var l=Object.keys(n),o=Object.keys(e);if(l.length!==o.length)return!1;for(var r=Object.prototype.hasOwnProperty.bind(e),f=0;f-1}function l3(n,e,t){for(var i=-1,a=n==null?0:n.length;++i=D8){var v=e?null:J8(n);if(v)return gG(v);o=!1,a=Cm,f=new Ru}else f=e?[]:r;e:for(;++i"u"?pe=I&&he?se:"":oe===!1&&(pe="");var re={title:pe};!s.value&&!u.value&&(re.title=null,re.visible=!1);var _={};e.role==="option"&&(_["aria-selected"]=g.value);var E=ui(i,e,"icon");return D(Xr,P(P({},re),{},{placement:d.value?"left":"right",overlayClassName:"".concat(X.value,"-inline-collapsed-tooltip")}),{default:function(){return[D(Wu.Item,P(P(P({component:"li"},l),{},{id:e.id,style:P(P({},l.style||{}),H.value),class:[S.value,(Q={},ce(Q,"".concat(l.class),!!l.class),ce(Q,"".concat(X.value,"-item-only-child"),(E?he+1:he)===1),Q)],role:e.role||"menuitem",tabindex:e.disabled?null:-1,"data-menu-id":f,"aria-disabled":e.disabled},_),{},{onMouseenter:Y,onMouseleave:T,onClick:V,onKeydown:J,onFocus:U,title:typeof oe=="string"?oe:void 0}),{default:function(){return[wn(E,{class:"".concat(X.value,"-item-icon")},!1),K(E,se)]}})]}})}}});var fs={adjustX:1,adjustY:1},H8={topLeft:{points:["bl","tl"],overflow:fs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:fs,offset:[0,7]},leftTop:{points:["tr","tl"],overflow:fs,offset:[-4,0]},rightTop:{points:["tl","tr"],overflow:fs,offset:[4,0]}},P8={topLeft:{points:["bl","tl"],overflow:fs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:fs,offset:[0,7]},rightTop:{points:["tr","tl"],overflow:fs,offset:[-4,0]},leftTop:{points:["tl","tr"],overflow:fs,offset:[4,0]}},Q8={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"};const HY=He({compatConfig:{MODE:3},name:"PopupTrigger",inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:["popup"],emits:["visibleChange"],setup:function(e,t){var i=t.slots,a=t.emit,l=Ne(!1),o=gs(),r=o.getPopupContainer,f=o.rtl,v=o.subMenuOpenDelay,b=o.subMenuCloseDelay,Z=o.builtinPlacements,p=o.triggerSubMenuAction,y=o.isRootMenu,X=o.forceSubMenuRender,m=o.motion,N=o.defaultMotions,G=qx(),d=de(function(){return f.value?P(P({},P8),Z.value):P(P({},H8),Z.value)}),u=de(function(){return Q8[e.mode]}),s=Ne();rt(function(){return e.visible},function(W){At.cancel(s.value),s.value=At(function(){l.value=W})},{immediate:!0}),fn(function(){At.cancel(s.value)});var h=function(M){a("visibleChange",M)},c=de(function(){var W,M,I=m.value||((W=N.value)===null||W===void 0?void 0:W[e.mode])||((M=N.value)===null||M===void 0?void 0:M.other),w=typeof I=="function"?I():I;return w?Ys(w.name,{css:!0}):void 0});return function(){var W=e.prefixCls,M=e.popupClassName,I=e.mode,w=e.popupOffset,C=e.disabled;return D(Qu,{prefixCls:W,popupClassName:_e("".concat(W,"-popup"),ce({},"".concat(W,"-rtl"),f.value),M),stretch:I==="horizontal"?"minWidth":null,getPopupContainer:y.value?r.value:function(x){return x.parentNode},builtinPlacements:d.value,popupPlacement:u.value,popupVisible:l.value,popupAlign:w&&{offset:w},action:C?[]:[p.value],mouseEnterDelay:v.value,mouseLeaveDelay:b.value,onPopupVisibleChange:h,forceRender:G||X.value,popupAnimation:c.value},{popup:i.popup,default:i.default})}}});var u3=function(e,t){var i,a=t.slots,l=t.attrs,o=gs(),r=o.prefixCls,f=o.mode;return D("ul",P(P({},l),{},{class:_e(r.value,"".concat(r.value,"-sub"),"".concat(r.value,"-").concat(f.value==="inline"?"inline":"vertical")),"data-menu-list":!0}),[(i=a.default)===null||i===void 0?void 0:i.call(a)])};u3.displayName="SubMenuList";const d3=u3,B8=He({compatConfig:{MODE:3},name:"InlineSubMenuList",inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup:function(e,t){var i=t.slots,a=de(function(){return"inline"}),l=gs(),o=l.motion,r=l.mode,f=l.defaultMotions,v=de(function(){return r.value===a.value}),b=Ne(!v.value),Z=de(function(){return v.value?e.open:!1});rt(r,function(){v.value&&(b.value=!1)},{flush:"post"});var p=de(function(){var y,X,m=o.value||((y=f.value)===null||y===void 0?void 0:y[a.value])||((X=f.value)===null||X===void 0?void 0:X.other),N=typeof m=="function"?m():m;return P(P({},N),{},{appear:e.keyPath.length<=1})});return function(){var y;return b.value?null:D(Pm,{mode:a.value},{default:function(){return[D(aa,p.value,{default:function(){return[cl(D(d3,{id:e.id},{default:function(){return[(y=i.default)===null||y===void 0?void 0:y.call(i)]}}),[[gr,Z.value]])]}})]}})}}});var PY=0,A8=function(){return{icon:We.any,title:We.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function}};const Cu=He({compatConfig:{MODE:3},name:"ASubMenu",inheritAttrs:!1,props:A8(),slots:["icon","title","expandIcon"],setup:function(e,t){var i,a,l=t.slots,o=t.attrs,r=t.emit;t3(!1);var f=l1(),v=Wl(),b=Yt(v.vnode.key)==="symbol"?String(v.vnode.key):v.vnode.key;jn(Yt(v.vnode.key)!=="symbol","SubMenu",'SubMenu `:key="'.concat(String(b),'"` not support Symbol type'));var Z=Y2(b)?b:"sub_menu_".concat(++PY,"_$$_not_set_key"),p=(i=e.eventKey)!==null&&i!==void 0?i:Y2(b)?"sub_menu_".concat(++PY,"_$$_").concat(b):Z,y=i1(),X=y.parentEventKeys,m=y.parentInfo,N=y.parentKeys,G=de(function(){return[].concat(yt(N.value),[Z])}),d=Ne([]),u={eventKey:p,key:Z,parentEventKeys:X,childrenEventKeys:d,parentKeys:N};(a=m.childrenEventKeys)===null||a===void 0||a.value.push(p),fn(function(){if(m.childrenEventKeys){var B;m.childrenEventKeys.value=(B=m.childrenEventKeys)===null||B===void 0?void 0:B.value.filter(function(q){return q!=p})}}),U8(p,Z,u);var s=gs(),h=s.prefixCls,c=s.activeKeys,W=s.disabled,M=s.changeActiveKeys,I=s.mode,w=s.inlineCollapsed,C=s.antdMenuTheme,x=s.openKeys,R=s.overflowDisabled,g=s.onOpenChange,S=s.registerMenuInfo,L=s.unRegisterMenuInfo,V=s.selectedSubMenuKeys,Y=s.expandIcon,T=b!=null,J=!f&&(qx()||!T);L8(J),(f&&T||!f&&!T||J)&&(S(p,u),fn(function(){L(p)}));var U=de(function(){return"".concat(h.value,"-submenu")}),K=de(function(){return W.value||e.disabled}),H=Ne(),k=Ne(),F=de(function(){return x.value.includes(Z)}),O=de(function(){return!R.value&&F.value}),Q=de(function(){return V.value.includes(Z)}),oe=Ne(!1);rt(c,function(){oe.value=!!c.value.find(function(B){return B===Z})},{immediate:!0});var se=function(q){K.value||(r("titleClick",q,Z),I.value==="inline"&&g(Z,!F.value))},he=function(q){K.value||(M(G.value),r("mouseenter",q))},pe=function(q){K.value||(M([]),r("mouseleave",q))},re=c3(de(function(){return G.value.length})),_=function(q){I.value!=="inline"&&g(Z,q)},E=function(){M(G.value)},$=p&&"".concat(p,"-popup"),ae=de(function(){return _e(h.value,"".concat(h.value,"-").concat(C.value),e.popupClassName)}),le=function(q,ue){if(!ue)return w.value&&!N.value.length&&q&&typeof q=="string"?D("div",{class:"".concat(h.value,"-inline-collapsed-noicon")},[q.charAt(0)]):D("span",{class:"".concat(h.value,"-title-content")},[q]);var ve=Si(q)&&q.type==="span";return D(ln,null,[wn(ue,{class:"".concat(h.value,"-item-icon")},!1),ve?q:D("span",{class:"".concat(h.value,"-title-content")},[q])])},ee=de(function(){return I.value!=="inline"&&G.value.length>1?"vertical":I.value}),te=de(function(){return I.value==="horizontal"?"vertical":I.value}),be=de(function(){return ee.value==="horizontal"?"vertical":ee.value}),ne=function(){var q=U.value,ue=ui(l,e,"icon"),ve=e.expandIcon||l.expandIcon||Y.value,Ge=le(ui(l,e,"title"),ue);return D("div",{style:re.value,class:"".concat(q,"-title"),tabindex:K.value?null:-1,ref:H,title:typeof Ge=="string"?Ge:null,"data-menu-id":Z,"aria-expanded":O.value,"aria-haspopup":!0,"aria-controls":$,"aria-disabled":K.value,onClick:se,onFocus:E},[Ge,I.value!=="horizontal"&&ve?ve(P(P({},e),{},{isOpen:O.value})):D("i",{class:"".concat(q,"-arrow")},null)])};return function(){var B;if(f){var q;return T?(q=l.default)===null||q===void 0?void 0:q.call(l):null}var ue=U.value,ve=function(){return null};return!R.value&&I.value!=="inline"?ve=function(){return D(HY,{mode:ee.value,prefixCls:ue,visible:!e.internalPopupClose&&O.value,popupClassName:ae.value,popupOffset:e.popupOffset,disabled:K.value,onVisibleChange:_},{default:function(){return[ne()]},popup:function(){return D(Pm,{mode:be.value,isRootMenu:!1},{default:function(){return[D(d3,{id:$,ref:k},{default:l.default})]}})}})}:ve=function(){return D(HY,null,{default:ne})},D(Pm,{mode:te.value},{default:function(){return[D(Wu.Item,P(P({component:"li"},o),{},{role:"none",class:_e(ue,"".concat(ue,"-").concat(I.value),o.class,(B={},ce(B,"".concat(ue,"-open"),O.value),ce(B,"".concat(ue,"-active"),oe.value),ce(B,"".concat(ue,"-selected"),Q.value),ce(B,"".concat(ue,"-disabled"),K.value),B)),onMouseenter:he,onMouseleave:pe,"data-submenu-id":Z}),{default:function(){return D(ln,null,[ve(),!R.value&&D(B8,{id:$,open:O.value,keyPath:G.value},{default:l.default})])}})]}})}}});function h3(n,e){if(n.classList)return n.classList.contains(e);var t=n.className;return" ".concat(t," ").indexOf(" ".concat(e," "))>-1}function QY(n,e){n.classList?n.classList.add(e):h3(n,e)||(n.className="".concat(n.className," ").concat(e))}function BY(n,e){if(n.classList)n.classList.remove(e);else if(h3(n,e)){var t=n.className;n.className=" ".concat(t," ").replace(" ".concat(e," ")," ")}}var _8=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:t,css:!0,onBeforeEnter:function(a){a.style.height="0px",a.style.opacity="0",QY(a,e)},onEnter:function(a){cn(function(){a.style.height="".concat(a.scrollHeight,"px"),a.style.opacity="1"})},onAfterEnter:function(a){a&&(BY(a,e),a.style.height=null,a.style.opacity=null)},onBeforeLeave:function(a){QY(a,e),a.style.height="".concat(a.offsetHeight,"px"),a.style.opacity=null},onLeave:function(a){setTimeout(function(){a.style.height="0px",a.style.opacity="0"})},onAfterLeave:function(a){a&&(BY(a,e),a.style&&(a.style.height=null,a.style.opacity=null))}}};const Oh=_8;var $8=function(){return{id:String,prefixCls:String,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},motion:Object,theme:{type:String,default:"light"},mode:{type:String,default:"vertical"},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:.1},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:"hover"},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,"onUpdate:openKeys":Function,"onUpdate:selectedKeys":Function,"onUpdate:activeKey":Function}},AY=[];const Yi=He({compatConfig:{MODE:3},name:"AMenu",inheritAttrs:!1,props:$8(),slots:["expandIcon","overflowedIndicator"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs,o=Nt("menu",e),r=o.prefixCls,f=o.direction,v=o.getPrefixCls,b=Ne({}),Z=un(a3,Ne(void 0)),p=de(function(){return Z.value!==void 0?Z.value:e.inlineCollapsed}),y=Ne(!1);Kt(function(){y.value=!0}),qt(function(){jn(!(e.inlineCollapsed===!0&&e.mode!=="inline"),"Menu","`inlineCollapsed` should only be used when `mode` is inline."),jn(!(Z.value!==void 0&&e.inlineCollapsed===!0),"Menu","`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.")});var X=Ne([]),m=Ne([]),N=Ne({});rt(b,function(){for(var k={},F=0,O=Object.values(b.value);F0&&arguments[0]!==void 0?arguments[0]:u.value;ru(u.value,k)||(u.value=k.slice())},{immediate:!0,deep:!0});var s,h=function(F){clearTimeout(s),s=setTimeout(function(){e.activeKey===void 0&&(X.value=F),a("update:activeKey",F[F.length-1])})},c=de(function(){return!!e.disabled}),W=de(function(){return f.value==="rtl"}),M=Ne("vertical"),I=Ne(!1);qt(function(){(e.mode==="inline"||e.mode==="vertical")&&p.value?(M.value="vertical",I.value=p.value):(M.value=e.mode,I.value=!1)});var w=de(function(){return M.value==="inline"}),C=function(F){u.value=F,a("update:openKeys",F),a("openChange",F)},x=Ne(u.value),R=Ne(!1);rt(u,function(){w.value&&(x.value=u.value)},{immediate:!0}),rt(w,function(){if(!R.value){R.value=!0;return}w.value?u.value=x.value:C(AY)},{immediate:!0});var g=de(function(){var k;return k={},ce(k,"".concat(r.value),!0),ce(k,"".concat(r.value,"-root"),!0),ce(k,"".concat(r.value,"-").concat(M.value),!0),ce(k,"".concat(r.value,"-inline-collapsed"),I.value),ce(k,"".concat(r.value,"-rtl"),W.value),ce(k,"".concat(r.value,"-").concat(e.theme),!0),k}),S=de(function(){return v()}),L=de(function(){return{horizontal:{name:"".concat(S.value,"-slide-up")},inline:Oh,other:{name:"".concat(S.value,"-zoom-big")}}});t3(!0);var V=function k(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],O=[],Q=b.value;return F.forEach(function(oe){var se=Q[oe],he=se.key,pe=se.childrenEventKeys;O.push.apply(O,[he].concat(yt(k(mi(pe)))))}),O},Y=function(F){a("click",F),d(F)},T=function(F,O){var Q,oe=((Q=N.value[F])===null||Q===void 0?void 0:Q.childrenEventKeys)||[],se=u.value.filter(function(pe){return pe!==F});if(O)se.push(F);else if(M.value!=="inline"){var he=V(mi(oe));se=hZ(se.filter(function(pe){return!he.includes(pe)}))}ru(u,se)||C(se)},J=function(F,O){b.value=P(P({},b.value),{},ce({},F,O))},U=function(F){delete b.value[F],b.value=P({},b.value)},K=Ne(0),H=de(function(){return e.expandIcon||i.expandIcon?function(k){var F=e.expandIcon||i.expandIcon;return F=typeof F=="function"?F(k):F,wn(F,{class:"".concat(r.value,"-submenu-expand-icon")},!1)}:null});return T8({store:b,prefixCls:r,activeKeys:X,openKeys:u,selectedKeys:m,changeActiveKeys:h,disabled:c,rtl:W,mode:M,inlineIndent:de(function(){return e.inlineIndent}),subMenuCloseDelay:de(function(){return e.subMenuCloseDelay}),subMenuOpenDelay:de(function(){return e.subMenuOpenDelay}),builtinPlacements:de(function(){return e.builtinPlacements}),triggerSubMenuAction:de(function(){return e.triggerSubMenuAction}),getPopupContainer:de(function(){return e.getPopupContainer}),inlineCollapsed:I,antdMenuTheme:de(function(){return e.theme}),siderCollapsed:Z,defaultMotions:de(function(){return y.value?L.value:null}),motion:de(function(){return y.value?e.motion:null}),overflowDisabled:Ne(void 0),onOpenChange:T,onItemClick:Y,registerMenuInfo:J,unRegisterMenuInfo:U,selectedSubMenuKeys:G,isRootMenu:Ne(!0),expandIcon:H,forceSubMenuRender:de(function(){return e.forceSubMenuRender})}),function(){var k,F,O=ti((k=i.default)===null||k===void 0?void 0:k.call(i)),Q=K.value>=O.length-1||M.value!=="horizontal"||e.disabledOverflow,oe=M.value!=="horizontal"||e.disabledOverflow?O:O.map(function(he,pe){return D(Pm,{key:he.key,overflowDisabled:pe>K.value},{default:function(){return he}})}),se=((F=i.overflowedIndicator)===null||F===void 0?void 0:F.call(i))||D(t1,null,null);return D(Wu,P(P({},l),{},{onMousedown:e.onMousedown,prefixCls:"".concat(r.value,"-overflow"),component:"ul",itemComponent:Ro,class:[g.value,l.class],role:"menu",id:e.id,data:oe,renderRawItem:function(pe){return pe},renderRawRest:function(pe){var re=pe.length,_=re?O.slice(-re):null;return D(ln,null,[D(Cu,{eventKey:sb,key:sb,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}}),D(KY,null,{default:function(){return[D(Cu,{eventKey:sb,key:sb,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}})]}})])},maxCount:M.value!=="horizontal"||e.disabledOverflow?Wu.INVALIDATE:Wu.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(pe){K.value=pe}}),{default:function(){return[D(DW,{to:"body"},{default:function(){return[D("div",{style:{display:"none"},"aria-hidden":!0},[D(KY,null,{default:function(){return[oe]}})])]}})]}})}}});var q8=function(){return{title:We.any}};const Qm=He({compatConfig:{MODE:3},name:"AMenuItemGroup",inheritAttrs:!1,props:q8(),slots:["title"],setup:function(e,t){var i=t.slots,a=t.attrs,l=gs(),o=l.prefixCls,r=de(function(){return"".concat(o.value,"-item-group")}),f=l1();return function(){var v,b;return f?(v=i.default)===null||v===void 0?void 0:v.call(i):D("li",P(P({},a),{},{onClick:function(p){return p.stopPropagation()},class:r.value}),[D("div",{title:typeof e.title=="string"?e.title:void 0,class:"".concat(r.value,"-title")},[ui(i,e,"title")]),D("ul",{class:"".concat(r.value,"-list")},[(b=i.default)===null||b===void 0?void 0:b.call(i)])])}}});var e$=function(){return{prefixCls:String,dashed:Boolean}};const Bm=He({compatConfig:{MODE:3},name:"AMenuDivider",props:e$(),setup:function(e){var t=Nt("menu",e),i=t.prefixCls,a=de(function(){var l;return l={},ce(l,"".concat(i.value,"-item-divider"),!0),ce(l,"".concat(i.value,"-item-divider-dashed"),!!e.dashed),l});return function(){return D("li",{class:a.value},null)}}});Yi.install=function(n){return n.component(Yi.name,Yi),n.component(Ro.name,Ro),n.component(Cu.name,Cu),n.component(Bm.name,Bm),n.component(Qm.name,Qm),n};Yi.Item=Ro;Yi.Divider=Bm;Yi.SubMenu=Cu;Yi.ItemGroup=Qm;var t$=function(){return{prefixCls:String,routes:{type:Array},params:We.any,separator:We.any,itemRender:{type:Function}}};function n$(n,e){if(!n.breadcrumbName)return null;var t=Object.keys(e).join("|"),i=n.breadcrumbName.replace(new RegExp(":(".concat(t,")"),"g"),function(a,l){return e[l]||a});return i}function _Y(n){var e=n.route,t=n.params,i=n.routes,a=n.paths,l=i.indexOf(e)===i.length-1,o=n$(e,t);return l?D("span",null,[o]):D("a",{href:"#/".concat(a.join("/"))},[o])}const bc=He({compatConfig:{MODE:3},name:"ABreadcrumb",props:t$(),slots:["separator","itemRender"],setup:function(e,t){var i=t.slots,a=Nt("breadcrumb",e),l=a.prefixCls,o=a.direction,r=function(Z,p){return Z=(Z||"").replace(/^\//,""),Object.keys(p).forEach(function(y){Z=Z.replace(":".concat(y),p[y])}),Z},f=function(Z,p,y){var X=yt(Z),m=r(p||"",y);return m&&X.push(m),X},v=function(Z){var p=Z.routes,y=p===void 0?[]:p,X=Z.params,m=X===void 0?{}:X,N=Z.separator,G=Z.itemRender,d=G===void 0?_Y:G,u=[];return y.map(function(s){var h=r(s.path,m);h&&u.push(h);var c=[].concat(u),W=null;return s.children&&s.children.length&&(W=D(Yi,null,{default:function(){return[s.children.map(function(I){return D(Yi.Item,{key:I.path||I.breadcrumbName},{default:function(){return[d({route:I,params:m,routes:y,paths:f(c,I.path,m)})]}})})]}})),D(Ih,{overlay:W,separator:N,key:h||s.breadcrumbName},{default:function(){return[d({route:s,params:m,routes:y,paths:c})]}})})};return function(){var b,Z,p,y=e.routes,X=e.params,m=X===void 0?{}:X,N=ti(ui(i,e)),G=(b=ui(i,e,"separator"))!==null&&b!==void 0?b:"/",d=e.itemRender||i.itemRender||_Y;y&&y.length>0?p=v({routes:y,params:m,separator:G,itemRender:d}):N.length&&(p=N.map(function(s,h){return Ci(Yt(s.type)==="object"&&(s.type.__ANT_BREADCRUMB_ITEM||s.type.__ANT_BREADCRUMB_SEPARATOR),"Breadcrumb","Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children"),Vl(s,{separator:G,key:h})}));var u=(Z={},ce(Z,l.value,!0),ce(Z,"".concat(l.value,"-rtl"),o.value==="rtl"),Z);return D("div",{class:u},[p])}}});var i$=["separator","class"],l$=function(){return{prefixCls:String}};const Am=He({compatConfig:{MODE:3},name:"ABreadcrumbSeparator",__ANT_BREADCRUMB_SEPARATOR:!0,inheritAttrs:!1,props:l$(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("breadcrumb",e),o=l.prefixCls;return function(){var r;a.separator;var f=a.class,v=jt(a,i$),b=ti((r=i.default)===null||r===void 0?void 0:r.call(i));return D("span",P({class:["".concat(o.value,"-separator"),f]},v),[b.length>0?b:"/"])}}});bc.Item=Ih;bc.Separator=Am;bc.install=function(n){return n.component(bc.name,bc),n.component(Ih.name,Ih),n.component(Am.name,Am),n};var tv={},a$={get exports(){return tv},set exports(n){tv=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t=1e3,i=6e4,a=36e5,l="millisecond",o="second",r="minute",f="hour",v="day",b="week",Z="month",p="quarter",y="year",X="date",m="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,G=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var g=["th","st","nd","rd"],S=R%100;return"["+R+(g[(S-20)%10]||g[S]||g[0])+"]"}},u=function(R,g,S){var L=String(R);return!L||L.length>=g?R:""+Array(g+1-L.length).join(S)+R},s={s:u,z:function(R){var g=-R.utcOffset(),S=Math.abs(g),L=Math.floor(S/60),V=S%60;return(g<=0?"+":"-")+u(L,2,"0")+":"+u(V,2,"0")},m:function R(g,S){if(g.date()1)return R(T[0])}else{var J=g.name;c[J]=g,V=J}return!L&&V&&(h=V),V||!L&&h},I=function(R,g){if(W(R))return R.clone();var S=typeof g=="object"?g:{};return S.date=R,S.args=arguments,new C(S)},w=s;w.l=M,w.i=W,w.w=function(R,g){return I(R,{locale:g.$L,utc:g.$u,x:g.$x,$offset:g.$offset})};var C=function(){function R(S){this.$L=M(S.locale,null,!0),this.parse(S)}var g=R.prototype;return g.parse=function(S){this.$d=function(L){var V=L.date,Y=L.utc;if(V===null)return new Date(NaN);if(w.u(V))return new Date;if(V instanceof Date)return new Date(V);if(typeof V=="string"&&!/Z$/i.test(V)){var T=V.match(N);if(T){var J=T[2]-1||0,U=(T[7]||"0").substring(0,3);return Y?new Date(Date.UTC(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)):new Date(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)}}return new Date(V)}(S),this.$x=S.x||{},this.init()},g.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},g.$utils=function(){return w},g.isValid=function(){return this.$d.toString()!==m},g.isSame=function(S,L){var V=I(S);return this.startOf(L)<=V&&V<=this.endOf(L)},g.isAfter=function(S,L){return I(S)25){var b=o(this).startOf(i).add(1,i).date(v),Z=o(this).endOf(t);if(b.isBefore(Z))return 1}var p=o(this).startOf(i).date(v).startOf(t).subtract(1,"millisecond"),y=this.diff(p,t,!0);return y<0?o(this).startOf("week").week():Math.ceil(y)},r.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}})})(u$);const d$=lv;var av={},h$={get exports(){return av},set exports(n){av=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){i.prototype.weekYear=function(){var a=this.month(),l=this.week(),o=this.year();return l===1&&a===11?o+1:a===0&&l>=52?o-1:o}}})})(h$);const f$=av;var rv={},b$={get exports(){return rv},set exports(n){rv=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){var a=i.prototype,l=a.format;a.format=function(o){var r=this,f=this.$locale();if(!this.isValid())return l.bind(this)(o);var v=this.$utils(),b=(o||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(Z){switch(Z){case"Q":return Math.ceil((r.$M+1)/3);case"Do":return f.ordinal(r.$D);case"gggg":return r.weekYear();case"GGGG":return r.isoWeekYear();case"wo":return f.ordinal(r.week(),"W");case"w":case"ww":return v.s(r.week(),Z==="w"?1:2,"0");case"W":case"WW":return v.s(r.isoWeek(),Z==="W"?1:2,"0");case"k":case"kk":return v.s(String(r.$H===0?24:r.$H),Z==="k"?1:2,"0");case"X":return Math.floor(r.$d.getTime()/1e3);case"x":return r.$d.getTime();case"z":return"["+r.offsetName()+"]";case"zzz":return"["+r.offsetName("long")+"]";default:return Z}});return l.bind(this)(b)}}})})(b$);const m$=rv;var ov={},p$={get exports(){return ov},set exports(n){ov=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,a=/\d\d/,l=/\d\d?/,o=/\d*[^-_:/,()\s\d]+/,r={},f=function(m){return(m=+m)+(m>68?1900:2e3)},v=function(m){return function(N){this[m]=+N}},b=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(N){if(!N||N==="Z")return 0;var G=N.match(/([+-]|\d\d)/g),d=60*G[1]+(+G[2]||0);return d===0?0:G[0]==="+"?-d:d}(m)}],Z=function(m){var N=r[m];return N&&(N.indexOf?N:N.s.concat(N.f))},p=function(m,N){var G,d=r.meridiem;if(d){for(var u=1;u<=24;u+=1)if(m.indexOf(d(u,0,N))>-1){G=u>12;break}}else G=m===(N?"pm":"PM");return G},y={A:[o,function(m){this.afternoon=p(m,!1)}],a:[o,function(m){this.afternoon=p(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[a,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[l,v("seconds")],ss:[l,v("seconds")],m:[l,v("minutes")],mm:[l,v("minutes")],H:[l,v("hours")],h:[l,v("hours")],HH:[l,v("hours")],hh:[l,v("hours")],D:[l,v("day")],DD:[a,v("day")],Do:[o,function(m){var N=r.ordinal,G=m.match(/\d+/);if(this.day=G[0],N)for(var d=1;d<=31;d+=1)N(d).replace(/\[|\]/g,"")===m&&(this.day=d)}],M:[l,v("month")],MM:[a,v("month")],MMM:[o,function(m){var N=Z("months"),G=(Z("monthsShort")||N.map(function(d){return d.slice(0,3)})).indexOf(m)+1;if(G<1)throw new Error;this.month=G%12||G}],MMMM:[o,function(m){var N=Z("months").indexOf(m)+1;if(N<1)throw new Error;this.month=N%12||N}],Y:[/[+-]?\d+/,v("year")],YY:[a,function(m){this.year=f(m)}],YYYY:[/\d{4}/,v("year")],Z:b,ZZ:b};function X(m){var N,G;N=m,G=r&&r.formats;for(var d=(m=N.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(I,w,C){var x=C&&C.toUpperCase();return w||G[C]||t[C]||G[x].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,g,S){return g||S.slice(1)})})).match(i),u=d.length,s=0;s-1)return new Date((V==="X"?1e3:1)*L);var T=X(V)(L),J=T.year,U=T.month,K=T.day,H=T.hours,k=T.minutes,F=T.seconds,O=T.milliseconds,Q=T.zone,oe=new Date,se=K||(J||U?1:oe.getDate()),he=J||oe.getFullYear(),pe=0;J&&!U||(pe=U>0?U-1:oe.getMonth());var re=H||0,_=k||0,E=F||0,$=O||0;return Q?new Date(Date.UTC(he,pe,se,re,_,E,$+60*Q.offset*1e3)):Y?new Date(Date.UTC(he,pe,se,re,_,E,$)):new Date(he,pe,se,re,_,E,$)}catch{return new Date("")}}(h,M,c),this.init(),x&&x!==!0&&(this.$L=this.locale(x).$L),C&&h!=this.format(M)&&(this.$d=new Date("")),r={}}else if(M instanceof Array)for(var R=M.length,g=1;g<=R;g+=1){W[1]=M[g-1];var S=G.apply(this,W);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}g===R&&(this.$d=new Date(""))}else u.call(this,s)}}})})(p$);const y$=ov;pl.extend(y$);pl.extend(m$);pl.extend(o$);pl.extend(c$);pl.extend(d$);pl.extend(f$);pl.extend(function(n,e){var t=e.prototype,i=t.format;t.format=function(l){var o=(l||"").replace("Wo","wo");return i.bind(this)(o)}});var Z$={bn_BD:"bn-bd",by_BY:"be",en_GB:"en-gb",en_US:"en",fr_BE:"fr",fr_CA:"fr-ca",hy_AM:"hy-am",kmr_IQ:"ku",nl_BE:"nl-be",pt_BR:"pt-br",zh_CN:"zh-cn",zh_HK:"zh-hk",zh_TW:"zh-tw"},Es=function(e){var t=Z$[e];return t||e.split("_")[0]},$Y=function(){nH(!1,"Not match any format. Please help to fire a issue about this.")},v$={getNow:function(){return pl()},getFixedDate:function(e){return pl(e,["YYYY-M-DD","YYYY-MM-DD"])},getEndDate:function(e){return e.endOf("month")},getWeekDay:function(e){var t=e.locale("en");return t.weekday()+t.localeData().firstDayOfWeek()},getYear:function(e){return e.year()},getMonth:function(e){return e.month()},getDate:function(e){return e.date()},getHour:function(e){return e.hour()},getMinute:function(e){return e.minute()},getSecond:function(e){return e.second()},addYear:function(e,t){return e.add(t,"year")},addMonth:function(e,t){return e.add(t,"month")},addDate:function(e,t){return e.add(t,"day")},setYear:function(e,t){return e.year(t)},setMonth:function(e,t){return e.month(t)},setDate:function(e,t){return e.date(t)},setHour:function(e,t){return e.hour(t)},setMinute:function(e,t){return e.minute(t)},setSecond:function(e,t){return e.second(t)},isAfter:function(e,t){return e.isAfter(t)},isValidate:function(e){return e.isValid()},locale:{getWeekFirstDay:function(e){return pl().locale(Es(e)).localeData().firstDayOfWeek()},getWeekFirstDate:function(e,t){return t.locale(Es(e)).weekday(0)},getWeek:function(e,t){return t.locale(Es(e)).week()},getShortWeekDays:function(e){return pl().locale(Es(e)).localeData().weekdaysMin()},getShortMonths:function(e){return pl().locale(Es(e)).localeData().monthsShort()},format:function(e,t,i){return t.locale(Es(e)).format(i)},parse:function(e,t,i){for(var a=Es(e),l=0;lW$)return t;do e%2&&(t+=n),e=G$(e/2),e&&(n+=n);while(e);return t}function lp(n,e){for(var t=-1,i=n==null?0:n.length,a=Array(i);++ta?0:a+e),t=t>a?a:t,t<0&&(t+=a),a=e>t?0:t-e>>>0,e>>>=0;for(var l=Array(a);++i=i?n:f3(n,e,t)}var I$="\\ud800-\\udfff",Y$="\\u0300-\\u036f",w$="\\ufe20-\\ufe2f",g$="\\u20d0-\\u20ff",V$=Y$+w$+g$,L$="\\ufe0e\\ufe0f",R$="\\u200d",T$=RegExp("["+R$+I$+V$+L$+"]");function o1(n){return T$.test(n)}function b3(n){return function(e){return e==null?void 0:e[n]}}var x$=b3("length");const C$=x$;var m3="\\ud800-\\udfff",S$="\\u0300-\\u036f",z$="\\ufe20-\\ufe2f",k$="\\u20d0-\\u20ff",F$=S$+z$+k$,J$="\\ufe0e\\ufe0f",D$="["+m3+"]",sv="["+F$+"]",cv="\\ud83c[\\udffb-\\udfff]",O$="(?:"+sv+"|"+cv+")",p3="[^"+m3+"]",y3="(?:\\ud83c[\\udde6-\\uddff]){2}",Z3="[\\ud800-\\udbff][\\udc00-\\udfff]",j$="\\u200d",v3=O$+"?",W3="["+J$+"]?",U$="(?:"+j$+"(?:"+[p3,y3,Z3].join("|")+")"+W3+v3+")*",E$=W3+v3+U$,K$="(?:"+[p3+sv+"?",sv,y3,Z3,D$].join("|")+")",nw=RegExp(cv+"(?="+cv+")|"+K$+E$,"g");function H$(n){for(var e=nw.lastIndex=0;nw.test(n);)++e;return e}function s1(n){return o1(n)?H$(n):C$(n)}function P$(n){return n.split("")}var G3="\\ud800-\\udfff",Q$="\\u0300-\\u036f",B$="\\ufe20-\\ufe2f",A$="\\u20d0-\\u20ff",_$=Q$+B$+A$,$$="\\ufe0e\\ufe0f",q$="["+G3+"]",uv="["+_$+"]",dv="\\ud83c[\\udffb-\\udfff]",eq="(?:"+uv+"|"+dv+")",X3="[^"+G3+"]",N3="(?:\\ud83c[\\udde6-\\uddff]){2}",M3="[\\ud800-\\udbff][\\udc00-\\udfff]",tq="\\u200d",I3=eq+"?",Y3="["+$$+"]?",nq="(?:"+tq+"(?:"+[X3,N3,M3].join("|")+")"+Y3+I3+")*",iq=Y3+I3+nq,lq="(?:"+[X3+uv+"?",uv,N3,M3,q$].join("|")+")",aq=RegExp(dv+"(?="+dv+")|"+lq+iq,"g");function rq(n){return n.match(aq)||[]}function oq(n){return o1(n)?rq(n):P$(n)}var sq=Math.ceil;function w3(n,e){e=e===void 0?" ":r1(e);var t=e.length;if(t<2)return t?qY(e,n):e;var i=qY(e,sq(n/s1(e)));return o1(e)?M$(oq(i),0,n).join(""):i.slice(0,n)}var cq=/\s/;function uq(n){for(var e=n.length;e--&&cq.test(n.charAt(e)););return e}var dq=/^\s+/;function hq(n){return n&&n.slice(0,uq(n)+1).replace(dq,"")}var iw=0/0,fq=/^[-+]0x[0-9a-f]+$/i,bq=/^0b[01]+$/i,mq=/^0o[0-7]+$/i,pq=parseInt;function hv(n){if(typeof n=="number")return n;if(ap(n))return iw;if(wr(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=wr(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=hq(n);var t=bq.test(n);return t||mq.test(n)?pq(n.slice(2),t?2:8):fq.test(n)?iw:+n}var lw=1/0,yq=17976931348623157e292;function Zq(n){if(!n)return n===0?n:0;if(n=hv(n),n===lw||n===-lw){var e=n<0?-1:1;return e*yq}return n===n?n:0}function c1(n){var e=Zq(n),t=e%1;return e===e?t?e-t:e:0}function u1(n){return n==null?"":r1(n)}function g3(n,e,t){n=u1(n),e=c1(e);var i=e?s1(n):0;return e&&i1&&(o=e.addDate(o,-7)),o}function _d(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(e){case"year":return t.addYear(n,i*10);case"quarter":case"month":return t.addYear(n,i);default:return t.addMonth(n,i)}}function wl(n,e){var t=e.generateConfig,i=e.locale,a=e.format;return typeof a=="function"?a(n):t.locale.format(i.locale,n,a)}function z3(n,e){var t=e.generateConfig,i=e.locale,a=e.formatList;return!n||typeof a[0]=="function"?null:t.locale.parse(i.locale,n,a)}function pv(n){var e=n.cellDate,t=n.mode,i=n.disabledDate,a=n.generateConfig;if(!i)return!1;var l=function(X,m,N){for(var G=m;G<=N;){var d=void 0;switch(X){case"date":{if(d=a.setDate(e,G),!i(d))return!1;break}case"month":{if(d=a.setMonth(e,G),!pv({cellDate:d,mode:"month",generateConfig:a,disabledDate:i}))return!1;break}case"year":{if(d=a.setYear(e,G),!pv({cellDate:d,mode:"year",generateConfig:a,disabledDate:i}))return!1;break}}G+=1}return!0};switch(t){case"date":case"week":return i(e);case"month":{var o=1,r=a.getDate(a.getEndDate(e));return l("date",o,r)}case"quarter":{var f=Math.floor(a.getMonth(e)/3)*3,v=f+2;return l("month",f,v)}case"year":return l("month",0,11);case"decade":{var b=a.getYear(e),Z=Math.floor(b/Zr)*Zr,p=Z+Zr-1;return l("year",Z,p)}}}function p1(n){var e=zi(n),t=_r(),i=t.hideHeader;if(i.value)return null;var a=e.prefixCls,l=e.generateConfig,o=e.locale,r=e.value,f=e.format,v="".concat(a,"-header");return D(Vs,{prefixCls:v},{default:function(){return[r?wl(r,{locale:o,format:f,generateConfig:l}):" "]}})}p1.displayName="TimeHeader";p1.inheritAttrs=!1;const fb=He({name:"TimeUnitColumn",props:["prefixCls","units","onSelect","value","active","hideDisabledOptions"],setup:function(e){var t=_r(),i=t.open,a=Ne(null),l=Ne(new Map),o=Ne();return rt(function(){return e.value},function(){var r=l.value.get(e.value);r&&i.value!==!1&&bv(a.value,r.offsetTop,120)}),fn(function(){var r;(r=o.value)===null||r===void 0||r.call(o)}),rt(i,function(){var r;(r=o.value)===null||r===void 0||r.call(o),cn(function(){if(i.value){var f=l.value.get(e.value);f&&(o.value=Gq(f,function(){bv(a.value,f.offsetTop,0)}))}})},{immediate:!0,flush:"post"}),function(){var r=e.prefixCls,f=e.units,v=e.onSelect,b=e.value,Z=e.active,p=e.hideDisabledOptions,y="".concat(r,"-cell");return D("ul",{class:_e("".concat(r,"-column"),ce({},"".concat(r,"-column-active"),Z)),ref:a,style:{position:"relative"}},[f.map(function(X){var m;return p&&X.disabled?null:D("li",{key:X.value,ref:function(G){l.value.set(X.value,G)},class:_e(y,(m={},ce(m,"".concat(y,"-disabled"),X.disabled),ce(m,"".concat(y,"-selected"),b===X.value),m)),onClick:function(){X.disabled||v(X.value)}},[D("div",{class:"".concat(y,"-inner")},[X.label])])})])}}});function k3(n,e){for(var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0",i=String(n);i.length=12:!1}),a=de(function(){return e.use12Hours?t.value%12:t.value}),l=de(function(){return e.value?e.generateConfig.getMinute(e.value):-1}),o=de(function(){return e.value?e.generateConfig.getSecond(e.value):-1}),r=Ne(e.generateConfig.getNow()),f=Ne(),v=Ne(),b=Ne();zW(function(){r.value=e.generateConfig.getNow()}),qt(function(){if(e.disabledTime){var G=e.disabledTime(r),d=[G.disabledHours,G.disabledMinutes,G.disabledSeconds];f.value=d[0],v.value=d[1],b.value=d[2]}else{var u=[e.disabledHours,e.disabledMinutes,e.disabledSeconds];f.value=u[0],v.value=u[1],b.value=u[2]}});var Z=function(d,u,s,h){var c=e.value||e.generateConfig.getNow(),W=Math.max(0,u),M=Math.max(0,s),I=Math.max(0,h);return c=L3(e.generateConfig,c,!e.use12Hours||!d?W:W+12,M,I),c},p=de(function(){var G;return fZ(0,23,(G=e.hourStep)!==null&&G!==void 0?G:1,f.value&&f.value())}),y=de(function(){if(!e.use12Hours)return[!1,!1];var G=[!0,!0];return p.value.forEach(function(d){var u=d.disabled,s=d.value;u||(s>=12?G[1]=!1:G[0]=!1)}),G}),X=de(function(){return e.use12Hours?p.value.filter(i.value?function(G){return G.value>=12}:function(G){return G.value<12}).map(function(G){var d=G.value%12,u=d===0?"12":k3(d,2);return P(P({},G),{},{label:u,value:d})}):p.value}),m=de(function(){var G;return fZ(0,59,(G=e.minuteStep)!==null&&G!==void 0?G:1,v.value&&v.value(t.value))}),N=de(function(){var G;return fZ(0,59,(G=e.secondStep)!==null&&G!==void 0?G:1,b.value&&b.value(t.value,l))});return function(){var G=e.prefixCls,d=e.operationRef,u=e.activeColumnIndex,s=e.showHour,h=e.showMinute,c=e.showSecond,W=e.use12Hours,M=e.hideDisabledOptions,I=e.onSelect,w=[],C="".concat(G,"-content"),x="".concat(G,"-time-panel");d.value={onUpDown:function(L){var V=w[u];if(V)for(var Y=V.units.findIndex(function(K){return K.value===V.value}),T=V.units.length,J=1;J2&&arguments[2]!==void 0?arguments[2]:!1,he=e.picker,pe=e.generateConfig,re=e.onSelect,_=e.onChange,E=e.disabledDate;(L.value===he||se)&&(W(Q),re&&re(Q),Z&&Z(Q,oe),_&&!Xu(pe,Q,c.value)&&!(E!=null&&E(Q))&&_(Q))},K=function(Q){return u.value&&u.value.onKeydown?([bt.LEFT,bt.RIGHT,bt.UP,bt.DOWN,bt.PAGE_UP,bt.PAGE_DOWN,bt.ENTER].includes(Q.which)&&Q.preventDefault(),u.value.onKeydown(Q)):!1},H=function(Q){u.value&&u.value.onBlur&&u.value.onBlur(Q)},k=function(){var Q=e.generateConfig,oe=e.hourStep,se=e.minuteStep,he=e.secondStep,pe=Q.getNow(),re=vq(Q.getHour(pe),Q.getMinute(pe),Q.getSecond(pe),l.value?oe:1,o.value?se:1,r.value?he:1),_=L3(Q,pe,re[0],re[1],re[2]);U(_,"submit")},F=de(function(){var O,Q=e.prefixCls,oe=e.direction;return _e("".concat(Q,"-panel"),(O={},ce(O,"".concat(Q,"-panel-has-range"),G&&G.value&&G.value[0]&&G.value[1]),ce(O,"".concat(Q,"-panel-has-range-hover"),d&&d.value&&d.value[0]&&d.value[1]),ce(O,"".concat(Q,"-panel-rtl"),oe==="rtl"),O))});return d1(P(P({},f),{},{mode:L,hideHeader:de(function(){var O;return e.hideHeader!==void 0?e.hideHeader:(O=f.hideHeader)===null||O===void 0?void 0:O.value}),hidePrevBtn:de(function(){return m.value&&N.value==="right"}),hideNextBtn:de(function(){return m.value&&N.value==="left"})})),rt(function(){return e.value},function(){e.value&&C(e.value)}),function(){var O=e.prefixCls,Q=O===void 0?"ant-picker":O,oe=e.locale,se=e.generateConfig,he=e.disabledDate,pe=e.picker,re=pe===void 0?"date":pe,_=e.tabindex,E=_===void 0?0:_,$=e.showNow,ae=e.showTime,le=e.showToday,ee=e.renderExtraFooter,te=e.onMousedown,be=e.onOk,ne=e.components;v&&N.value!=="right"&&(v.value={onKeydown:K,onClose:function(){u.value&&u.value.onClose&&u.value.onClose()}});var B,q=P(P(P({},i),e),{},{operationRef:u,prefixCls:Q,viewDate:w.value,value:c.value,onViewDateChange:x,sourceMode:Y.value,onPanelChange:J,disabledDate:he});switch(delete q.onChange,delete q.onSelect,L.value){case"decade":B=D(b1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"year":B=D(g1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"month":B=D(X1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"quarter":B=D(I1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"week":B=D(v1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"time":delete q.showTime,B=D(op,P(P(P({},q),Yt(ae)==="object"?ae:null),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;default:ae?B=D(Z1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null):B=D(Uh,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null)}var ue,ve;p!=null&&p.value||(ue=j3(Q,L.value,ee),ve=U3({prefixCls:Q,components:ne,needConfirmButton:a.value,okDisabled:!c.value||he&&he(c.value),locale:oe,showNow:$,onNow:a.value&&k,onOk:function(){c.value&&(U(c.value,"submit",!0),be&&be(c.value))}}));var Ge;if(le&&L.value==="date"&&re==="date"&&!ae){var Je=se.getNow(),xe="".concat(Q,"-today-btn"),ke=he&&he(Je);Ge=D("a",{class:_e(xe,ke&&"".concat(xe,"-disabled")),"aria-disabled":ke,onClick:function(){ke||U(Je,"mouse",!0)}},[oe.today])}return D("div",{tabindex:E,class:_e(F.value,i.class),style:i.style,onKeydown:K,onBlur:H,onMousedown:te,ref:b},[B,ue||ve||Ge?D("div",{class:"".concat(Q,"-footer")},[ue,ve,Ge]):null])}}})}var Uq=jq();const V1=function(n){return D(Uq,n)};var Eq={bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function E3(n,e){var t,i=e.slots,a=zi(n),l=a.prefixCls,o=a.popupStyle,r=a.visible,f=a.dropdownClassName,v=a.dropdownAlign,b=a.transitionName,Z=a.getPopupContainer,p=a.range,y=a.popupPlacement,X=a.direction,m="".concat(l,"-dropdown"),N=function(){return y!==void 0?y:X==="rtl"?"bottomRight":"bottomLeft"};return D(Qu,{showAction:[],hideAction:[],popupPlacement:N(),builtinPlacements:Eq,prefixCls:m,popupTransitionName:b,popupAlign:v,popupVisible:r,popupClassName:_e(f,(t={},ce(t,"".concat(m,"-range"),p),ce(t,"".concat(m,"-rtl"),X==="rtl"),t)),popupStyle:o,getPopupContainer:Z,tryPopPortal:!0},{default:i.default,popup:i.popupElement})}function Zv(n){var e=n.open,t=n.value,i=n.isClickOutside,a=n.triggerOpen,l=n.forwardKeydown,o=n.onKeydown,r=n.blurToCancel,f=n.onSubmit,v=n.onCancel,b=n.onFocus,Z=n.onBlur,p=Ne(!1),y=Ne(!1),X=Ne(!1),m=Ne(!1),N=Ne(!1),G=de(function(){return{onMousedown:function(){p.value=!0,a(!0)},onKeydown:function(s){var h=function(){N.value=!0};if(o(s,h),!N.value){switch(s.which){case bt.ENTER:{e.value?f()!==!1&&(p.value=!0):a(!0),s.preventDefault();return}case bt.TAB:{p.value&&e.value&&!s.shiftKey?(p.value=!1,s.preventDefault()):!p.value&&e.value&&!l(s)&&s.shiftKey&&(p.value=!0,s.preventDefault());return}case bt.ESC:{p.value=!0,v();return}}!e.value&&![bt.SHIFT].includes(s.which)?a(!0):p.value||l(s)}},onFocus:function(s){p.value=!0,y.value=!0,b&&b(s)},onBlur:function(s){if(X.value||!i(document.activeElement)){X.value=!1;return}r.value?setTimeout(function(){for(var h=document,c=h.activeElement;c&&c.shadowRoot;)c=c.shadowRoot.activeElement;i(c)&&v()},0):e.value&&(a(!1),m.value&&f()),y.value=!1,Z&&Z(s)}}});rt(e,function(){m.value=!1}),rt(t,function(){m.value=!0});var d=Ne();return Kt(function(){d.value=Xq(function(u){var s=Nq(u);if(e.value){var h=i(s);h?(!y.value||h)&&a(!1):(X.value=!0,At(function(){X.value=!1}))}})}),fn(function(){d.value&&d.value()}),[G,{focused:y,typing:p}]}function vv(n){var e=n.valueTexts,t=n.onTextChange,i=Ne("");function a(o){i.value=o,t(o)}function l(){i.value=e.value[0]}return rt(function(){return yt(e.value)},function(o){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];o.join("||")!==r.join("||")&&e.value.every(function(f){return f!==i.value})&&l()},{immediate:!0}),[i,a,l]}function _m(n,e){var t=e.formatList,i=e.generateConfig,a=e.locale,l=JG(function(){if(!n.value)return[[""],""];for(var f="",v=[],b=0;b1&&arguments[1]!==void 0?arguments[1]:!1;if(At.cancel(o),X){l.value=y;return}o=At(function(){l.value=y})}var f=_m(l,{formatList:t,generateConfig:i,locale:a}),v=ft(f,2),b=v[1];function Z(y){r(y)}function p(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;r(null,y)}return rt(n,function(){p(!0)}),fn(function(){At.cancel(o)}),[b,Z,p]}function Kq(){return He({name:"Picker",inheritAttrs:!1,props:["prefixCls","id","tabindex","dropdownClassName","dropdownAlign","popupStyle","transitionName","generateConfig","locale","inputReadOnly","allowClear","autofocus","showTime","showNow","showHour","showMinute","showSecond","picker","format","use12Hours","value","defaultValue","open","defaultOpen","defaultOpenValue","suffixIcon","clearIcon","disabled","disabledDate","placeholder","getPopupContainer","panelRender","inputRender","onChange","onOpenChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onContextmenu","onClick","onKeydown","onSelect","direction","autocomplete","showToday","renderExtraFooter","dateRender","minuteStep","hourStep","secondStep","hideDisabledOptions"],setup:function(e,t){var i=t.attrs,a=t.expose,l=Ne(null),o=de(function(){var _;return(_=e.picker)!==null&&_!==void 0?_:"date"}),r=de(function(){return o.value==="date"&&!!e.showTime||o.value==="time"}),f=de(function(){return F3(R3(e.format,o.value,e.showTime,e.use12Hours))}),v=Ne(null),b=Ne(null),Z=Ne(null),p=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue}),y=ft(p,2),X=y[0],m=y[1],N=Ne(X.value),G=function(E){N.value=E},d=Ne(null),u=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(E){return e.disabled?!1:E},onChange:function(E){e.onOpenChange&&e.onOpenChange(E),!E&&d.value&&d.value.onClose&&d.value.onClose()}}),s=ft(u,2),h=s[0],c=s[1],W=_m(N,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),M=ft(W,2),I=M[0],w=M[1],C=vv({valueTexts:I,onTextChange:function(E){var $=z3(E,{locale:e.locale,formatList:f.value,generateConfig:e.generateConfig});$&&(!e.disabledDate||!e.disabledDate($))&&G($)}}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=function(E){var $=e.onChange,ae=e.generateConfig,le=e.locale;G(E),m(E),$&&!Xu(ae,X.value,E)&&$(E,E?wl(E,{generateConfig:ae,locale:le,format:f.value[0]}):"")},V=function(E){e.disabled&&E||c(E)},Y=function(E){return h.value&&d.value&&d.value.onKeydown?d.value.onKeydown(E):!1},T=function(){e.onMouseup&&e.onMouseup.apply(e,arguments),l.value&&(l.value.focus(),V(!0))},J=Zv({blurToCancel:r,open:h,value:R,triggerOpen:V,forwardKeydown:Y,isClickOutside:function(E){return!x3([v.value,b.value,Z.value],E)},onSubmit:function(){return!N.value||e.disabledDate&&e.disabledDate(N.value)?!1:(L(N.value),V(!1),S(),!0)},onCancel:function(){V(!1),G(X.value),S()},onKeydown:function(E,$){var ae;(ae=e.onKeydown)===null||ae===void 0||ae.call(e,E,$)},onFocus:function(E){var $;($=e.onFocus)===null||$===void 0||$.call(e,E)},onBlur:function(E){var $;($=e.onBlur)===null||$===void 0||$.call(e,E)}}),U=ft(J,2),K=U[0],H=U[1],k=H.focused,F=H.typing;rt([h,I],function(){h.value||(G(X.value),!I.value.length||I.value[0]===""?g(""):w.value!==R.value&&S())}),rt(o,function(){h.value||S()}),rt(X,function(){G(X.value)});var O=Wv(R,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),Q=ft(O,3),oe=Q[0],se=Q[1],he=Q[2],pe=function(E,$){($==="submit"||$!=="key"&&!r.value)&&(L(E),V(!1))};d1({operationRef:d,hideHeader:de(function(){return o.value==="time"}),panelRef:v,onSelect:pe,open:h,defaultOpenValue:Ot(e,"defaultOpenValue"),onDateMouseenter:se,onDateMouseleave:he}),a({focus:function(){l.value&&l.value.focus()},blur:function(){l.value&&l.value.blur()}});var re=Gx();return function(){var _,E=e.prefixCls,$=E===void 0?"rc-picker":E,ae=e.id,le=e.tabindex,ee=e.dropdownClassName,te=e.dropdownAlign,be=e.popupStyle,ne=e.transitionName,B=e.generateConfig,q=e.locale,ue=e.inputReadOnly,ve=e.allowClear,Ge=e.autofocus,Je=e.picker,xe=Je===void 0?"date":Je;e.defaultOpenValue;var ke=e.suffixIcon,Pe=e.clearIcon,Be=e.disabled,Te=e.placeholder,we=e.getPopupContainer,Se=e.panelRender,De=e.onMousedown,me=e.onMouseenter,Ve=e.onMouseleave,Me=e.onContextmenu,Ie=e.onClick,Ze=e.onSelect,Ce=e.direction,ye=e.autocomplete,Ue=ye===void 0?"off":ye,qe=P(P(P({},e),i),{},{class:_e(ce({},"".concat($,"-panel-focused"),!F.value)),style:void 0,pickerValue:void 0,onPickerValueChange:void 0,onChange:null}),ie=D(V1,P(P({},qe),{},{generateConfig:B,value:N.value,locale:q,tabindex:-1,onSelect:function(ot){Ze==null||Ze(ot),G(ot)},direction:Ce,onPanelChange:function(ot,wt){var Mt=e.onPanelChange;he(!0),Mt==null||Mt(ot,wt)}}),null);Se&&(ie=Se(ie));var Oe=D("div",{class:"".concat($,"-panel-container"),onMousedown:function(ot){ot.preventDefault()}},[ie]),Ke;ke&&(Ke=D("span",{class:"".concat($,"-suffix")},[ke]));var Xe;ve&&X.value&&!Be&&(Xe=D("span",{onMousedown:function(ot){ot.preventDefault(),ot.stopPropagation()},onMouseup:function(ot){ot.preventDefault(),ot.stopPropagation(),L(null),V(!1)},class:"".concat($,"-clear"),role:"button"},[Pe||D("span",{class:"".concat($,"-clear-btn")},null)]));var Re=P(P(P({id:ae,tabindex:le,disabled:Be,readonly:ue||typeof f.value[0]=="function"||!F.value,value:oe.value||R.value,onInput:function(ot){g(ot.target.value)},autofocus:Ge,placeholder:Te,ref:l,title:R.value},K.value),{},{size:T3(xe,f.value[0],B)},J3(e)),{},{autocomplete:Ue}),Ae=e.inputRender?e.inputRender(Re):D("input",Re,null),ct=Ce==="rtl"?"bottomRight":"bottomLeft";return D(E3,{visible:h.value,popupStyle:be,prefixCls:$,dropdownClassName:ee,dropdownAlign:te,getPopupContainer:we,transitionName:ne,popupPlacement:ct,direction:Ce},{default:function(){return[D("div",{ref:Z,class:_e($,i.class,(_={},ce(_,"".concat($,"-disabled"),Be),ce(_,"".concat($,"-focused"),k.value),ce(_,"".concat($,"-rtl"),Ce==="rtl"),_)),style:i.style,onMousedown:De,onMouseup:T,onMouseenter:me,onMouseleave:Ve,onContextmenu:Me,onClick:Ie},[D("div",{class:_e("".concat($,"-input"),ce({},"".concat($,"-input-placeholder"),!!oe.value)),ref:b},[Ae,Ke,Xe]),re()])]},popupElement:function(){return Oe}})}}})}const Hq=Kq();function Pq(n,e){var t=n.picker,i=n.locale,a=n.selectedValue,l=n.disabledDate,o=n.disabled,r=n.generateConfig,f=de(function(){return Kn(a.value,0)}),v=de(function(){return Kn(a.value,1)});function b(m){return r.value.locale.getWeekFirstDate(i.value.locale,m)}function Z(m){var N=r.value.getYear(m),G=r.value.getMonth(m);return N*100+G}function p(m){var N=r.value.getYear(m),G=mv(r.value,m);return N*10+G}var y=function(N){var G;if(l&&l!==null&&l!==void 0&&(G=l.value)!==null&&G!==void 0&&G.call(l,N))return!0;if(o[1]&&v)return!go(r.value,N,v.value)&&r.value.isAfter(N,v.value);if(e.value[1]&&v.value)switch(t.value){case"quarter":return p(N)>p(v.value);case"month":return Z(N)>Z(v.value);case"week":return b(N)>b(v.value);default:return!go(r.value,N,v.value)&&r.value.isAfter(N,v.value)}return!1},X=function(N){var G;if((G=l.value)!==null&&G!==void 0&&G.call(l,N))return!0;if(o[0]&&f)return!go(r.value,N,v.value)&&r.value.isAfter(f.value,N);if(e.value[0]&&f.value)switch(t.value){case"quarter":return p(N)1&&arguments[1]!==void 0?arguments[1]:!0;Wl()?Kt(n):e?n():cn(n)}function eee(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=Ne(),i=function(){return t.value=Boolean(n())};return i(),qq(i,e),t}var bZ,mZ,H3=typeof window<"u";H3&&(!((bZ=window)===null||bZ===void 0||(mZ=bZ.navigator)===null||mZ===void 0)&&mZ.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);var tee=H3?window:void 0,nee=["window"];function iee(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.window,a=i===void 0?tee:i,l=jt(t,nee),o,r=eee(function(){return a&&"ResizeObserver"in a}),f=function(){o&&(o.disconnect(),o=void 0)},v=rt(function(){return K3(n)},function(Z){f(),r.value&&a&&Z&&(o=new ResizeObserver(e),o.observe(Z,l))},{immediate:!0,flush:"post"}),b=function(){f(),v()};return _q(b),{isSupported:r,stop:b}}function Md(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{width:0,height:0},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.box,a=i===void 0?"content-box":i,l=Ne(e.width),o=Ne(e.height);return iee(n,function(r){var f=ft(r,1),v=f[0],b=a==="border-box"?v.borderBoxSize:a==="content-box"?v.contentBoxSize:v.devicePixelContentBoxSize;b?(l.value=b.reduce(function(Z,p){var y=p.inlineSize;return Z+y},0),o.value=b.reduce(function(Z,p){var y=p.blockSize;return Z+y},0)):(l.value=v.contentRect.width,o.value=v.contentRect.height)},t),rt(function(){return K3(n)},function(r){l.value=r?e.width:0,o.value=r?e.height:0}),{width:l,height:o}}function sw(n,e){return n&&n[0]&&n[1]&&e.isAfter(n[0],n[1])?[n[1],n[0]]:n}function cw(n,e,t,i){return!!(n||i&&i[e]||t[(e+1)%2])}function lee(){return He({name:"RangerPicker",inheritAttrs:!1,props:["prefixCls","id","popupStyle","dropdownClassName","transitionName","dropdownAlign","getPopupContainer","generateConfig","locale","placeholder","autofocus","disabled","format","picker","showTime","showNow","showHour","showMinute","showSecond","use12Hours","separator","value","defaultValue","defaultPickerValue","open","defaultOpen","disabledDate","disabledTime","dateRender","panelRender","ranges","allowEmpty","allowClear","suffixIcon","clearIcon","pickerRef","inputReadOnly","mode","renderExtraFooter","onChange","onOpenChange","onPanelChange","onCalendarChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onClick","onOk","onKeydown","components","order","direction","activePickerIndex","autocomplete","minuteStep","hourStep","secondStep","hideDisabledOptions","disabledMinutes"],setup:function(e,t){var i=t.attrs,a=t.expose,l=de(function(){return e.picker==="date"&&!!e.showTime||e.picker==="time"}),o=Gx(),r=Ne({}),f=Ne(null),v=Ne(null),b=Ne(null),Z=Ne(null),p=Ne(null),y=Ne(null),X=Ne(null),m=Ne(null),N=de(function(){return F3(R3(e.format,e.picker,e.showTime,e.use12Hours))}),G=Wi(0,{value:Ot(e,"activePickerIndex")}),d=ft(G,2),u=d[0],s=d[1],h=Ne(null),c=de(function(){var _t=e.disabled;return Array.isArray(_t)?_t:[_t||!1,_t||!1]}),W=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue,postState:function(Rt){return e.picker==="time"&&!e.order?Rt:sw(Rt,e.generateConfig)}}),M=ft(W,2),I=M[0],w=M[1],C=Aq({values:I,picker:Ot(e,"picker"),defaultDates:e.defaultPickerValue,generateConfig:Ot(e,"generateConfig")}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=Wi(I.value,{postState:function(Rt){var zt=Rt;if(c.value[0]&&c.value[1])return zt;for(var Ht=0;Ht<2;Ht+=1)c[Ht]&&!Kn(zt,Ht)&&!Kn(e.allowEmpty,Ht)&&(zt=tr(zt,e.generateConfig.getNow(),Ht));return zt}}),V=ft(L,2),Y=V[0],T=V[1],J=Wi([e.picker,e.picker],{value:Ot(e,"mode")}),U=ft(J,2),K=U[0],H=U[1];rt(function(){return e.picker},function(){H([e.picker,e.picker])});var k=function(Rt,zt){var Ht;H(Rt),(Ht=e.onPanelChange)===null||Ht===void 0||Ht.call(e,zt,Rt)},F=Pq({picker:Ot(e,"picker"),selectedValue:Y,locale:Ot(e,"locale"),disabled:c,disabledDate:Ot(e,"disabledDate"),generateConfig:Ot(e,"generateConfig")},r),O=ft(F,2),Q=O[0],oe=O[1],se=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(Rt){return c.value[u.value]?!1:Rt},onChange:function(Rt){var zt;(zt=e.onOpenChange)===null||zt===void 0||zt.call(e,Rt),!Rt&&h.value&&h.value.onClose&&h.value.onClose()}}),he=ft(se,2),pe=he[0],re=he[1],_=de(function(){return pe.value&&u.value===0}),E=de(function(){return pe.value&&u.value===1}),$=Ne(0),ae=Ne(0),le=Ne(0),ee=Md(f),te=ee.width;rt([pe,te],function(){!pe.value&&f.value&&(le.value=te.value)});var be=Md(v),ne=be.width,B=Md(m),q=B.width,ue=Md(b),ve=ue.width,Ge=Md(p),Je=Ge.width;rt([u,pe,ne,q,ve,Je,function(){return e.direction}],function(){ae.value=0,pe.value&&u.value?b.value&&p.value&&v.value&&(ae.value=ve.value+Je.value,ne.value&&q.value&&ae.value>ne.value-q.value-(e.direction==="rtl"||m.value.offsetLeft>ae.value?0:m.value.offsetLeft)&&($.value=ae.value)):u.value===0&&($.value=0)},{immediate:!0});var xe=Ne();function ke(_t,Rt){if(_t)clearTimeout(xe.value),r.value[Rt]=!0,s(Rt),re(_t),pe.value||S(null,Rt);else if(u.value===Rt){re(_t);var zt=r.value;xe.value=setTimeout(function(){zt===r.value&&(r.value={})})}}function Pe(_t){ke(!0,_t),setTimeout(function(){var Rt=[y,X][_t];Rt.value&&Rt.value.focus()},0)}function Be(_t,Rt){var zt=_t,Ht=Kn(zt,0),$t=Kn(zt,1),si=e.generateConfig,Ul=e.locale,Xl=e.picker,El=e.order,ll=e.onCalendarChange,Na=e.allowEmpty,Rl=e.onChange,hl=e.showTime;Ht&&$t&&si.isAfter(Ht,$t)&&(Xl==="week"&&!S3(si,Ul.locale,Ht,$t)||Xl==="quarter"&&!C3(si,Ht,$t)||Xl!=="week"&&Xl!=="quarter"&&Xl!=="time"&&!(hl?Xu(si,Ht,$t):go(si,Ht,$t))?(Rt===0?(zt=[Ht,null],$t=null):(Ht=null,zt=[null,$t]),r.value=ce({},Rt,!0)):(Xl!=="time"||El!==!1)&&(zt=sw(zt,si))),T(zt);var Tl=zt&&zt[0]?wl(zt[0],{generateConfig:si,locale:Ul,format:N.value[0]}):"",fl=zt&&zt[1]?wl(zt[1],{generateConfig:si,locale:Ul,format:N.value[0]}):"";if(ll){var Nl={range:Rt===0?"start":"end"};ll(zt,[Tl,fl],Nl)}var bl=cw(Ht,0,c.value,Na),to=cw($t,1,c.value,Na),Ml=zt===null||bl&&to;Ml&&(w(zt),Rl&&(!Xu(si,Kn(I.value,0),Ht)||!Xu(si,Kn(I.value,1),$t))&&Rl(zt,[Tl,fl]));var xl=null;Rt===0&&!c.value[1]?xl=1:Rt===1&&!c.value[0]&&(xl=0),xl!==null&&xl!==u.value&&(!r.value[xl]||!Kn(zt,xl))&&Kn(zt,Rt)?Pe(xl):ke(!1,Rt)}var Te=function(Rt){return pe&&h.value&&h.value.onKeydown?h.value.onKeydown(Rt):!1},we={formatList:N,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")},Se=_m(de(function(){return Kn(Y.value,0)}),we),De=ft(Se,2),me=De[0],Ve=De[1],Me=_m(de(function(){return Kn(Y.value,1)}),we),Ie=ft(Me,2),Ze=Ie[0],Ce=Ie[1],ye=function(Rt,zt){var Ht=z3(Rt,{locale:e.locale,formatList:N.value,generateConfig:e.generateConfig}),$t=zt===0?Q:oe;Ht&&!$t(Ht)&&(T(tr(Y.value,Ht,zt)),S(Ht,zt))},Ue=vv({valueTexts:me,onTextChange:function(Rt){return ye(Rt,0)}}),qe=ft(Ue,3),ie=qe[0],Oe=qe[1],Ke=qe[2],Xe=vv({valueTexts:Ze,onTextChange:function(Rt){return ye(Rt,1)}}),Re=ft(Xe,3),Ae=Re[0],ct=Re[1],lt=Re[2],ot=di(null),wt=ft(ot,2),Mt=wt[0],xt=wt[1],Gt=di(null),Zt=ft(Gt,2),Tt=Zt[0],Ct=Zt[1],St=Wv(ie,we),Pt=ft(St,3),Ut=Pt[0],kt=Pt[1],en=Pt[2],nn=Wv(Ae,we),Ft=ft(nn,3),Ln=Ft[0],An=Ft[1],Gi=Ft[2],Pi=function(Rt){Ct(tr(Y.value,Rt,u.value)),u.value===0?kt(Rt):An(Rt)},Gl=function(){Ct(tr(Y.value,null,u.value)),u.value===0?en():Gi()},Fn=function(Rt,zt){return{forwardKeydown:Te,onBlur:function($t){var si;(si=e.onBlur)===null||si===void 0||si.call(e,$t)},isClickOutside:function($t){return!x3([v.value,b.value,Z.value,f.value],$t)},onFocus:function($t){var si;s(Rt),(si=e.onFocus)===null||si===void 0||si.call(e,$t)},triggerOpen:function($t){ke($t,Rt)},onSubmit:function(){if(!Y.value||e.disabledDate&&e.disabledDate(Y.value[Rt]))return!1;Be(Y.value,Rt),zt()},onCancel:function(){ke(!1,Rt),T(I.value),zt()}}},ul=Zv(P(P({},Fn(0,Ke)),{},{blurToCancel:l,open:_,value:ie,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),ki=ft(ul,2),tl=ki[0],nl=ki[1],Dt=nl.focused,ht=nl.typing,Fe=Zv(P(P({},Fn(1,lt)),{},{blurToCancel:l,open:E,value:Ae,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),tt=ft(Fe,2),nt=tt[0],Vt=tt[1],Bt=Vt.focused,Nn=Vt.typing,oi=function(Rt){var zt;(zt=e.onClick)===null||zt===void 0||zt.call(e,Rt),!pe.value&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&(c.value[0]?c.value[1]||Pe(1):Pe(0))},gi=function(Rt){var zt;(zt=e.onMousedown)===null||zt===void 0||zt.call(e,Rt),pe.value&&(Dt.value||Bt.value)&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&Rt.preventDefault()},Ll=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[0]?wl(I.value[0],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""}),il=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[1]?wl(I.value[1],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""});rt([pe,me,Ze],function(){pe.value||(T(I.value),!me.value.length||me.value[0]===""?Oe(""):Ve.value!==ie.value&&Ke(),!Ze.value.length||Ze.value[0]===""?ct(""):Ce.value!==Ae.value&<())}),rt([Ll,il],function(){T(I.value)}),a({focus:function(){y.value&&y.value.focus()},blur:function(){y.value&&y.value.blur(),X.value&&X.value.blur()}});var Lr=de(function(){return Object.keys(e.ranges||{}).map(function(_t){var Rt=e.ranges[_t],zt=typeof Rt=="function"?Rt():Rt;return{label:_t,onClick:function(){Be(zt,null),ke(!1,u.value)},onMouseenter:function(){xt(zt)},onMouseleave:function(){xt(null)}}})}),dl=de(function(){return pe.value&&Tt.value&&Tt.value[0]&&Tt.value[1]&&e.generateConfig.isAfter(Tt.value[1],Tt.value[0])?Tt.value:null});function Ol(){var _t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Rt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},zt=e.generateConfig,Ht=e.showTime,$t=e.dateRender,si=e.direction,Ul=e.disabledTime,Xl=e.prefixCls,El=e.locale,ll=Ht;if(Ht&&Yt(Ht)==="object"&&Ht.defaultValue){var Na=Ht.defaultValue;ll=P(P({},Ht),{},{defaultValue:Kn(Na,u.value)||void 0})}var Rl=null;return $t&&(Rl=function(Tl){var fl=Tl.current,Nl=Tl.today;return $t({current:fl,today:Nl,info:{range:u.value?"end":"start"}})}),D(kq,{value:{inRange:!0,panelPosition:_t,rangedValue:Mt.value||Y.value,hoverRangedValue:dl.value}},{default:function(){return[D(V1,P(P(P({},e),Rt),{},{dateRender:Rl,showTime:ll,mode:K.value[u.value],generateConfig:zt,style:void 0,direction:si,disabledDate:u.value===0?Q:oe,disabledTime:function(fl){return Ul?Ul(fl,u.value===0?"start":"end"):!1},class:_e(ce({},"".concat(Xl,"-panel-focused"),u.value===0?!ht.value:!Nn.value)),value:Kn(Y.value,u.value),locale:El,tabIndex:-1,onPanelChange:function(fl,Nl){u.value===0&&en(!0),u.value===1&&Gi(!0),k(tr(K.value,Nl,u.value),tr(Y.value,fl,u.value));var bl=fl;_t==="right"&&K.value[u.value]===Nl&&(bl=_d(bl,Nl,zt,-1)),S(bl,u.value)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:u.value===0?Kn(Y.value,1):Kn(Y.value,0)}),null)]}})}var jl=function(Rt,zt){var Ht=tr(Y.value,Rt,u.value);zt==="submit"||zt!=="key"&&!l.value?(Be(Ht,u.value),u.value===0?en():Gi()):T(Ht)};return d1({operationRef:h,hideHeader:de(function(){return e.picker==="time"}),onDateMouseenter:Pi,onDateMouseleave:Gl,hideRanges:de(function(){return!0}),onSelect:jl,open:pe}),function(){var _t,Rt,zt,Ht=e.prefixCls,$t=Ht===void 0?"rc-picker":Ht,si=e.id,Ul=e.popupStyle,Xl=e.dropdownClassName,El=e.transitionName,ll=e.dropdownAlign,Na=e.getPopupContainer,Rl=e.generateConfig,hl=e.locale,Tl=e.placeholder,fl=e.autofocus,Nl=e.picker,bl=Nl===void 0?"date":Nl,to=e.showTime,Ml=e.separator,xl=Ml===void 0?"~":Ml,Rr=e.disabledDate,ra=e.panelRender,Ls=e.allowClear,Kl=e.suffixIcon,oa=e.clearIcon,no=e.inputReadOnly,$n=e.renderExtraFooter,Un=e.onMouseenter,sr=e.onMouseleave,Jo=e.onMouseup,Do=e.onOk,Oo=e.components,ja=e.direction,je=e.autocomplete,et=je===void 0?"off":je,mt=ja==="rtl"?{right:"".concat(ae.value,"px")}:{left:"".concat(ae.value,"px")};function Lt(){var fi,Qn=j3($t,K.value[u.value],$n),qn=U3({prefixCls:$t,components:Oo,needConfirmButton:l.value,okDisabled:!Kn(Y.value,u.value)||Rr&&Rr(Y.value[u.value]),locale:hl,rangeList:Lr.value,onOk:function(){Kn(Y.value,u.value)&&(Be(Y.value,u.value),Do&&Do(Y.value))}});if(bl!=="time"&&!to){var Ti=u.value===0?R.value:g.value,yi=_d(Ti,bl,Rl),Hl=K.value[u.value],Zi=Hl===bl,io=Ol(Zi?"left":!1,{pickerValue:Ti,onPickerValueChange:function(ge){S(ge,u.value)}}),Pl=Ol("right",{pickerValue:yi,onPickerValueChange:function(ge){S(_d(ge,bl,Rl,-1),u.value)}});ja==="rtl"?fi=D(ln,null,[Pl,Zi&&io]):fi=D(ln,null,[io,Zi&&Pl])}else fi=Ol();var al=D(ln,null,[D("div",{class:"".concat($t,"-panels")},[fi]),(Qn||qn)&&D("div",{class:"".concat($t,"-footer")},[Qn,qn])]);return ra&&(al=ra(al)),D("div",{class:"".concat($t,"-panel-container"),style:{marginLeft:"".concat($.value,"px")},ref:v,onMousedown:function(ge){ge.preventDefault()}},[al])}var Jn=D("div",{class:_e("".concat($t,"-range-wrapper"),"".concat($t,"-").concat(bl,"-range-wrapper")),style:{minWidth:"".concat(le.value,"px")}},[D("div",{ref:m,class:"".concat($t,"-range-arrow"),style:mt},null),Lt()]),sn;Kl&&(sn=D("span",{class:"".concat($t,"-suffix")},[Kl]));var ii;Ls&&(Kn(I.value,0)&&!c.value[0]||Kn(I.value,1)&&!c.value[1])&&(ii=D("span",{onMousedown:function(Qn){Qn.preventDefault(),Qn.stopPropagation()},onMouseup:function(Qn){Qn.preventDefault(),Qn.stopPropagation();var qn=I.value;c.value[0]||(qn=tr(qn,null,0)),c.value[1]||(qn=tr(qn,null,1)),Be(qn,null),ke(!1,u.value)},class:"".concat($t,"-clear")},[oa||D("span",{class:"".concat($t,"-clear-btn")},null)]));var _n={size:T3(bl,N.value[0],Rl)},Dn=0,ni=0;b.value&&Z.value&&p.value&&(u.value===0?ni=b.value.offsetWidth:(Dn=ae.value,ni=Z.value.offsetWidth));var Fi=ja==="rtl"?{right:"".concat(Dn,"px")}:{left:"".concat(Dn,"px")};return D(E3,{visible:pe.value,popupStyle:Ul,prefixCls:$t,dropdownClassName:Xl,dropdownAlign:ll,getPopupContainer:Na,transitionName:El,range:!0,direction:ja},{default:function(){return[D("div",P({ref:f,class:_e($t,"".concat($t,"-range"),i.class,(_t={},ce(_t,"".concat($t,"-disabled"),c.value[0]&&c.value[1]),ce(_t,"".concat($t,"-focused"),u.value===0?Dt.value:Bt.value),ce(_t,"".concat($t,"-rtl"),ja==="rtl"),_t)),style:i.style,onClick:oi,onMouseenter:Un,onMouseleave:sr,onMousedown:gi,onMouseup:Jo},J3(e)),[D("div",{class:_e("".concat($t,"-input"),(Rt={},ce(Rt,"".concat($t,"-input-active"),u.value===0),ce(Rt,"".concat($t,"-input-placeholder"),!!Ut.value),Rt)),ref:b},[D("input",P(P(P({id:si,disabled:c.value[0],readonly:no||typeof N.value[0]=="function"||!ht.value,value:Ut.value||ie.value,onInput:function(qn){Oe(qn.target.value)},autofocus:fl,placeholder:Kn(Tl,0)||"",ref:y},tl.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-range-separator"),ref:p},[xl]),D("div",{class:_e("".concat($t,"-input"),(zt={},ce(zt,"".concat($t,"-input-active"),u.value===1),ce(zt,"".concat($t,"-input-placeholder"),!!Ln.value),zt)),ref:Z},[D("input",P(P(P({disabled:c.value[1],readonly:no||typeof N.value[0]=="function"||!Nn.value,value:Ln.value||Ae.value,onInput:function(qn){ct(qn.target.value)},placeholder:Kn(Tl,1)||"",ref:X},nt.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-active-bar"),style:P(P({},Fi),{},{width:"".concat(ni,"px"),position:"absolute"})},null),sn,ii,o()])]},popupElement:function(){return Jn}})}}})}var aee=lee();const ree=aee;var oee=["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"],see={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:We.any,required:Boolean};const P3=He({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:pn(see,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o=Ne(e.checked===void 0?e.defaultChecked:e.checked),r=Ne();rt(function(){return e.checked},function(){o.value=e.checked}),l({focus:function(){var p;(p=r.value)===null||p===void 0||p.focus()},blur:function(){var p;(p=r.value)===null||p===void 0||p.blur()}});var f=Ne(),v=function(p){if(!e.disabled){e.checked===void 0&&(o.value=p.target.checked),p.shiftKey=f.value;var y={target:P(P({},e),{},{checked:p.target.checked}),stopPropagation:function(){p.stopPropagation()},preventDefault:function(){p.preventDefault()},nativeEvent:p};e.checked!==void 0&&(r.value.checked=!!e.checked),a("change",y),f.value=!1}},b=function(p){a("click",p),f.value=p.shiftKey};return function(){var Z,p=e.prefixCls,y=e.name,X=e.id,m=e.type,N=e.disabled,G=e.readonly,d=e.tabindex,u=e.autofocus,s=e.value,h=e.required,c=jt(e,oee),W=i.class,M=i.onFocus,I=i.onBlur,w=i.onKeydown,C=i.onKeypress,x=i.onKeyup,R=P(P({},c),i),g=Object.keys(R).reduce(function(V,Y){return(Y.substr(0,5)==="aria-"||Y.substr(0,5)==="data-"||Y==="role")&&(V[Y]=R[Y]),V},{}),S=_e(p,W,(Z={},ce(Z,"".concat(p,"-checked"),o.value),ce(Z,"".concat(p,"-disabled"),N),Z)),L=P(P({name:y,id:X,type:m,readonly:G,disabled:N,tabindex:d,class:"".concat(p,"-input"),checked:!!o.value,autofocus:u,value:s},g),{},{onChange:v,onClick:b,onFocus:M,onBlur:I,onKeydown:w,onKeypress:C,onKeyup:x,required:h});return D("span",{class:S},[D("input",P({ref:r},L),null),D("span",{class:"".concat(p,"-inner")},null)])}}});var cee=["prefixCls","id"],Q3=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},isGroup:{type:Boolean,default:void 0},value:We.any,name:String,id:String,autofocus:{type:Boolean,default:void 0},onChange:Function,onFocus:Function,onBlur:Function,onClick:Function,"onUpdate:checked":Function,"onUpdate:value":Function}};const ta=He({compatConfig:{MODE:3},name:"ARadio",props:Q3(),setup:function(e,t){var i=t.emit,a=t.expose,l=t.slots,o=Hi(),r=Ne(),f=un("radioGroupContext",void 0),v=Nt("radio",e),b=v.prefixCls,Z=v.direction,p=function(){r.value.focus()},y=function(){r.value.blur()};a({focus:p,blur:y});var X=function(G){var d=G.target.checked;i("update:checked",d),i("update:value",d),i("change",G),o.onFieldChange()},m=function(G){i("change",G),f&&f.onRadioChange&&f.onRadioChange(G)};return function(){var N,G=f;e.prefixCls;var d=e.id,u=d===void 0?o.id.value:d,s=jt(e,cee),h=P({prefixCls:b.value,id:u},dn(s,["onUpdate:checked","onUpdate:value"]));G?(h.name=G.props.name,h.onChange=m,h.checked=e.value===G.stateValue.value,h.disabled=e.disabled||G.props.disabled):h.onChange=X;var c=_e((N={},ce(N,"".concat(b.value,"-wrapper"),!0),ce(N,"".concat(b.value,"-wrapper-checked"),h.checked),ce(N,"".concat(b.value,"-wrapper-disabled"),h.disabled),ce(N,"".concat(b.value,"-wrapper-rtl"),Z.value==="rtl"),N));return D("label",{class:c},[D(P3,P(P({},h),{},{type:"radio",ref:r}),null),l.default&&D("span",null,[l.default()])])}}});var uee=pi("large","default","small"),dee=function(){return{prefixCls:String,value:We.any,size:We.oneOf(uee),options:{type:Array},disabled:{type:Boolean,default:void 0},name:String,buttonStyle:{type:String,default:"outline"},id:String,optionType:{type:String,default:"default"},onChange:Function,"onUpdate:value":Function}};const L1=He({compatConfig:{MODE:3},name:"ARadioGroup",props:dee(),setup:function(e,t){var i=t.slots,a=t.emit,l=Hi(),o=Nt("radio",e),r=o.prefixCls,f=o.direction,v=o.size,b=Ne(e.value),Z=Ne(!1);rt(function(){return e.value},function(y){b.value=y,Z.value=!1});var p=function(X){var m=b.value,N=X.target.value;"value"in e||(b.value=N),!Z.value&&N!==m&&(Z.value=!0,a("update:value",N),a("change",X),l.onFieldChange()),cn(function(){Z.value=!1})};return hn("radioGroupContext",{onRadioChange:p,stateValue:b,props:e}),function(){var y,X=e.options,m=e.optionType,N=e.buttonStyle,G=e.id,d=G===void 0?l.id.value:G,u="".concat(r.value,"-group"),s=_e(u,"".concat(u,"-").concat(N),(y={},ce(y,"".concat(u,"-").concat(v.value),v.value),ce(y,"".concat(u,"-rtl"),f.value==="rtl"),y)),h=null;if(X&&X.length>0){var c=m==="button"?"".concat(r.value,"-button"):r.value;h=X.map(function(M){if(typeof M=="string"||typeof M=="number")return D(ta,{key:M,prefixCls:c,disabled:e.disabled,value:M,checked:b.value===M},{default:function(){return[M]}});var I=M.value,w=M.disabled,C=M.label;return D(ta,{key:"radio-group-value-options-".concat(I),prefixCls:c,disabled:w||e.disabled,value:I,checked:b.value===I},{default:function(){return[C]}})})}else{var W;h=(W=i.default)===null||W===void 0?void 0:W.call(i)}return D("div",{class:s,id:d},[h])}}}),$m=He({compatConfig:{MODE:3},name:"ARadioButton",props:Q3(),setup:function(e,t){var i=t.slots,a=Nt("radio-button",e),l=a.prefixCls,o=un("radioGroupContext",void 0);return function(){var r,f=P(P({},e),{},{prefixCls:l.value});return o&&(f.onChange=o.onRadioChange,f.checked=f.value===o.stateValue.value,f.disabled=f.disabled||o.props.disabled),D(ta,f,{default:function(){return[(r=i.default)===null||r===void 0?void 0:r.call(i)]}})}}});ta.Group=L1;ta.Button=$m;ta.install=function(n){return n.component(ta.name,ta),n.component(ta.Group.name,ta.Group),n.component(ta.Button.name,ta.Button),n};var hee=10,fee=20;function B3(n){var e=n.fullscreen,t=n.validRange,i=n.generateConfig,a=n.locale,l=n.prefixCls,o=n.value,r=n.onChange,f=n.divRef,v=i.getYear(o||i.getNow()),b=v-hee,Z=b+fee;t&&(b=i.getYear(t[0]),Z=i.getYear(t[1])+1);for(var p=a&&a.year==="年"?"年":"",y=[],X=b;Xi.getMonth(s)&&(G=i.setMonth(G,i.getMonth(s))),h===i.getYear(u)&&cY?(L=g,c.value="x"):(L=S,c.value="y"),e(-L,-L)&&R.preventDefault()}var M=Ne({onTouchStart:u,onTouchMove:s,onTouchEnd:h,onWheel:W});function I(R){M.value.onTouchStart(R)}function w(R){M.value.onTouchMove(R)}function C(R){M.value.onTouchEnd(R)}function x(R){M.value.onWheel(R)}Kt(function(){var R,g;document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("touchend",C,{passive:!1}),(R=n.value)===null||R===void 0||R.addEventListener("touchstart",I,{passive:!1}),(g=n.value)===null||g===void 0||g.addEventListener("wheel",x,{passive:!1})}),fn(function(){document.removeEventListener("touchmove",w),document.removeEventListener("touchend",C)})}function fw(n,e){var t=Ne(n);function i(a){var l=typeof a=="function"?a(t.value):a;l!==t.value&&e(l,t.value),t.value=l}return[t,i]}var Yee=function(){var e=Ne(new Map),t=function(a){return function(l){e.value.set(a,l)}};return zW(function(){e.value=new Map}),[t,e]};const R1=Yee;var wee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,gee=/^\w*$/;function T1(n,e){if(or(n))return!1;var t=typeof n;return t=="number"||t=="symbol"||t=="boolean"||n==null||ap(n)?!0:gee.test(n)||!wee.test(n)||e!=null&&n in Object(e)}var Vee="Expected a function";function x1(n,e){if(typeof n!="function"||e!=null&&typeof e!="function")throw new TypeError(Vee);var t=function(){var i=arguments,a=e?e.apply(this,i):i[0],l=t.cache;if(l.has(a))return l.get(a);var o=n.apply(this,i);return t.cache=l.set(a,o)||l,o};return t.cache=new(x1.Cache||ko),t}x1.Cache=ko;var Lee=500;function Ree(n){var e=x1(n,function(i){return t.size===Lee&&t.clear(),i}),t=e.cache;return e}var Tee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xee=/\\(\\)?/g,Cee=Ree(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(Tee,function(t,i,a,l){e.push(a?l.replace(xee,"$1"):i||t)}),e});const See=Cee;function $u(n,e){return or(n)?n:T1(n,e)?[n]:See(u1(n))}var zee=1/0;function qu(n){if(typeof n=="string"||ap(n))return n;var e=n+"";return e=="0"&&1/n==-zee?"-0":e}function up(n,e){e=$u(e,n);for(var t=0,i=e.length;n!=null&&t0&&t(r)?e>1?lC(r,e-1,t,i,a):VG(a,r):i||(a[a.length]=r)}return a}function Hee(n){var e=n==null?0:n.length;return e?lC(n,1):[]}function Pee(n,e,t){switch(t.length){case 0:return n.call(e);case 1:return n.call(e,t[0]);case 2:return n.call(e,t[0],t[1]);case 3:return n.call(e,t[0],t[1],t[2])}return n.apply(e,t)}var mw=Math.max;function aC(n,e,t){return e=mw(e===void 0?n.length-1:e,0),function(){for(var i=arguments,a=-1,l=mw(i.length-e,0),o=Array(l);++a0){if(++e>=_ee)return arguments[0]}else e=0;return n.apply(void 0,arguments)}}var tte=ete(Aee);const rC=tte;function oC(n){return rC(aC(n,void 0,Hee),n+"")}var nte=oC(function(n,e){return n==null?{}:Eee(n,e)});const sC=nte;var pw={width:0,height:0,left:0,top:0,right:0},ite=function(){return{id:{type:String},tabPosition:{type:String},activeKey:{type:[String,Number]},rtl:{type:Boolean},animated:{type:Object,default:void 0},editable:{type:Object},moreIcon:We.any,moreTransitionName:{type:String},mobile:{type:Boolean},tabBarGutter:{type:Number},renderTabBar:{type:Function},locale:{type:Object,default:void 0},onTabClick:{type:Function},onTabScroll:{type:Function}}};const yw=He({compatConfig:{MODE:3},name:"TabNavList",inheritAttrs:!1,props:ite(),slots:["moreIcon","leftExtra","rightExtra","tabBarExtraContent"],emits:["tabClick","tabScroll"],setup:function(e,t){var i=t.attrs,a=t.slots,l=tC(),o=l.tabs,r=l.prefixCls,f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=R1(),y=ft(p,2),X=y[0],m=y[1],N=de(function(){return e.tabPosition==="top"||e.tabPosition==="bottom"}),G=fw(0,function(Ue,qe){N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"left":"right"})}),d=ft(G,2),u=d[0],s=d[1],h=fw(0,function(Ue,qe){!N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"top":"bottom"})}),c=ft(h,2),W=c[0],M=c[1],I=di(0),w=ft(I,2),C=w[0],x=w[1],R=di(0),g=ft(R,2),S=g[0],L=g[1],V=di(null),Y=ft(V,2),T=Y[0],J=Y[1],U=di(null),K=ft(U,2),H=K[0],k=K[1],F=di(0),O=ft(F,2),Q=O[0],oe=O[1],se=di(0),he=ft(se,2),pe=he[0],re=he[1],_=vee(new Map),E=ft(_,2),$=E[0],ae=E[1],le=Gee(o,$),ee=de(function(){return"".concat(r.value,"-nav-operations-hidden")}),te=Ne(0),be=Ne(0);qt(function(){N.value?e.rtl?(te.value=0,be.value=Math.max(0,C.value-T.value)):(te.value=Math.min(0,T.value-C.value),be.value=0):(te.value=Math.min(0,H.value-S.value),be.value=0)});var ne=function(qe){return qebe.value?be.value:qe},B=Ne(),q=di(),ue=ft(q,2),ve=ue[0],Ge=ue[1],Je=function(){Ge(Date.now())},xe=function(){clearTimeout(B.value)},ke=function(qe,ie){qe(function(Oe){var Ke=ne(Oe+ie);return Ke})};Iee(f,function(Ue,qe){if(N.value){if(T.value>=C.value)return!1;ke(s,Ue)}else{if(H.value>=S.value)return!1;ke(M,qe)}return xe(),Je(),!0}),rt(ve,function(){xe(),ve.value&&(B.value=setTimeout(function(){Ge(0)},100))});var Pe=function(){var qe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activeKey,ie=le.value.get(qe)||{width:0,height:0,left:0,right:0,top:0};if(N.value){var Oe=u.value;e.rtl?ie.rightu.value+T.value&&(Oe=ie.right+ie.width-T.value):ie.left<-u.value?Oe=-ie.left:ie.left+ie.width>-u.value+T.value&&(Oe=-(ie.left+ie.width-T.value)),M(0),s(ne(Oe))}else{var Ke=W.value;ie.top<-W.value?Ke=-ie.top:ie.top+ie.height>-W.value+H.value&&(Ke=-(ie.top+ie.height-H.value)),s(0),M(ne(Ke))}},Be=Ne(0),Te=Ne(0);qt(function(){var Ue,qe,ie,Oe,Ke,Xe,Re,Ae=le.value;["top","bottom"].includes(e.tabPosition)?(qe="width",Ke=T.value,Xe=C.value,Re=Q.value,ie=e.rtl?"right":"left",Oe=Math.abs(u.value)):(qe="height",Ke=H.value,Xe=C.value,Re=pe.value,ie="top",Oe=-W.value);var ct=Ke;Xe+Re>Ke&&XeOe+ct){Mt=xt-1;break}}for(var Zt=0,Tt=wt-1;Tt>=0;Tt-=1){var Ct=Ae.get(lt[Tt].key)||pw;if(Ct[ie]0,Zt=u.value+T.value0?"".concat(y[0]/-2,"px"):void 0,N=y[1]>0?"".concat(y[1]/-2,"px"):void 0;return m&&(X.marginLeft=m,X.marginRight=m),v.value?X.rowGap="".concat(y[1],"px"):N&&(X.marginTop=N,X.marginBottom=N),X});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}});const F1=yte;function Zte(n){return typeof n=="number"?"".concat(n," ").concat(n," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(n)?"0 0 ".concat(n):n}var vte=function(){return{span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},xxxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}};const dp=He({compatConfig:{MODE:3},name:"ACol",props:vte(),setup:function(e,t){var i=t.slots,a=mte(),l=a.gutter,o=a.supportFlexGap,r=a.wrap,f=Nt("col",e),v=f.prefixCls,b=f.direction,Z=de(function(){var y,X=e.span,m=e.order,N=e.offset,G=e.push,d=e.pull,u=v.value,s={};return["xs","sm","md","lg","xl","xxl","xxxl"].forEach(function(h){var c,W={},M=e[h];typeof M=="number"?W.span=M:Yt(M)==="object"&&(W=M||{}),s=P(P({},s),{},(c={},ce(c,"".concat(u,"-").concat(h,"-").concat(W.span),W.span!==void 0),ce(c,"".concat(u,"-").concat(h,"-order-").concat(W.order),W.order||W.order===0),ce(c,"".concat(u,"-").concat(h,"-offset-").concat(W.offset),W.offset||W.offset===0),ce(c,"".concat(u,"-").concat(h,"-push-").concat(W.push),W.push||W.push===0),ce(c,"".concat(u,"-").concat(h,"-pull-").concat(W.pull),W.pull||W.pull===0),ce(c,"".concat(u,"-rtl"),b.value==="rtl"),c))}),_e(u,(y={},ce(y,"".concat(u,"-").concat(X),X!==void 0),ce(y,"".concat(u,"-order-").concat(m),m),ce(y,"".concat(u,"-offset-").concat(N),N),ce(y,"".concat(u,"-push-").concat(G),G),ce(y,"".concat(u,"-pull-").concat(d),d),y),s)}),p=de(function(){var y=e.flex,X=l.value,m={};if(X&&X[0]>0){var N="".concat(X[0]/2,"px");m.paddingLeft=N,m.paddingRight=N}if(X&&X[1]>0&&!o.value){var G="".concat(X[1]/2,"px");m.paddingTop=G,m.paddingBottom=G}return y&&(m.flex=Zte(y),r.value===!1&&!m.minWidth&&(m.minWidth=0)),m});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}}),Wte={useBreakpoint:Au},ou=wi(F1),mr=wi(dp);var Gte=mc.TabPane,Xte=function(){return{prefixCls:String,title:We.any,extra:We.any,bordered:{type:Boolean,default:!0},bodyStyle:{type:Object,default:void 0},headStyle:{type:Object,default:void 0},loading:{type:Boolean,default:!1},hoverable:{type:Boolean,default:!1},type:{type:String},size:{type:String},actions:We.any,tabList:{type:Array},tabBarExtraContent:We.any,activeTabKey:String,defaultActiveTabKey:String,cover:We.any,onTabChange:{type:Function}}},Nte=He({compatConfig:{MODE:3},name:"ACard",props:Xte(),slots:["title","extra","tabBarExtraContent","actions","cover","customTab"],setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls,o=a.direction,r=a.size,f=function(p){var y=p.map(function(X,m){return Zl(X)&&!Ch(X)||!Zl(X)?D("li",{style:{width:"".concat(100/p.length,"%")},key:"action-".concat(m)},[D("span",null,[X])]):null});return y},v=function(p){var y;(y=e.onTabChange)===null||y===void 0||y.call(e,p)},b=function(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],y;return p.forEach(function(X){X&&HW(X.type)&&X.type.__ANT_CARD_GRID&&(y=!0)}),y};return function(){var Z,p,y,X,m,N,G,d,u=e.headStyle,s=u===void 0?{}:u,h=e.bodyStyle,c=h===void 0?{}:h,W=e.loading,M=e.bordered,I=M===void 0?!0:M,w=e.type,C=e.tabList,x=e.hoverable,R=e.activeTabKey,g=e.defaultActiveTabKey,S=e.tabBarExtraContent,L=S===void 0?Wd((Z=i.tabBarExtraContent)===null||Z===void 0?void 0:Z.call(i)):S,V=e.title,Y=V===void 0?Wd((p=i.title)===null||p===void 0?void 0:p.call(i)):V,T=e.extra,J=T===void 0?Wd((y=i.extra)===null||y===void 0?void 0:y.call(i)):T,U=e.actions,K=U===void 0?Wd((X=i.actions)===null||X===void 0?void 0:X.call(i)):U,H=e.cover,k=H===void 0?Wd((m=i.cover)===null||m===void 0?void 0:m.call(i)):H,F=ti((N=i.default)===null||N===void 0?void 0:N.call(i)),O=l.value,Q=(G={},ce(G,"".concat(O),!0),ce(G,"".concat(O,"-loading"),W),ce(G,"".concat(O,"-bordered"),I),ce(G,"".concat(O,"-hoverable"),!!x),ce(G,"".concat(O,"-contain-grid"),b(F)),ce(G,"".concat(O,"-contain-tabs"),C&&C.length),ce(G,"".concat(O,"-").concat(r.value),r.value),ce(G,"".concat(O,"-type-").concat(w),!!w),ce(G,"".concat(O,"-rtl"),o.value==="rtl"),G),oe=c.padding===0||c.padding==="0px"?{padding:"24px"}:void 0,se=D("div",{class:"".concat(O,"-loading-block")},null),he=D("div",{class:"".concat(O,"-loading-content"),style:oe},[D(ou,{gutter:8},{default:function(){return[D(mr,{span:22},{default:function(){return[se]}})]}}),D(ou,{gutter:8},{default:function(){return[D(mr,{span:8},{default:function(){return[se]}}),D(mr,{span:15},{default:function(){return[se]}})]}}),D(ou,{gutter:8},{default:function(){return[D(mr,{span:6},{default:function(){return[se]}}),D(mr,{span:18},{default:function(){return[se]}})]}}),D(ou,{gutter:8},{default:function(){return[D(mr,{span:13},{default:function(){return[se]}}),D(mr,{span:9},{default:function(){return[se]}})]}}),D(ou,{gutter:8},{default:function(){return[D(mr,{span:4},{default:function(){return[se]}}),D(mr,{span:3},{default:function(){return[se]}}),D(mr,{span:16},{default:function(){return[se]}})]}})]),pe=R!==void 0,re=(d={size:"large"},ce(d,pe?"activeKey":"defaultActiveKey",pe?R:g),ce(d,"onChange",v),ce(d,"class","".concat(O,"-head-tabs")),d),_,E=C&&C.length?D(mc,re,{default:function(){return[C.map(function(te){var be=te.tab,ne=te.slots,B=ne==null?void 0:ne.tab;jn(!ne,"Card","tabList slots is deprecated, Please use `customTab` instead.");var q=be!==void 0?be:i[B]?i[B](te):null;return q=S0(i,"customTab",te,function(){return[q]}),D(Gte,{tab:q,key:te.key,disabled:te.disabled},null)})]},rightExtra:L?function(){return L}:null}):null;(Y||J||E)&&(_=D("div",{class:"".concat(O,"-head"),style:s},[D("div",{class:"".concat(O,"-head-wrapper")},[Y&&D("div",{class:"".concat(O,"-head-title")},[Y]),J&&D("div",{class:"".concat(O,"-extra")},[J])]),E]));var $=k?D("div",{class:"".concat(O,"-cover")},[k]):null,ae=D("div",{class:"".concat(O,"-body"),style:c},[W?he:F]),le=K&&K.length?D("ul",{class:"".concat(O,"-actions")},[f(K)]):null;return D("div",{class:Q,ref:"cardContainerRef"},[_,$,F&&F.length?ae:null,le])}}});const Nu=Nte;var Mte=function(){return{prefixCls:String,title:We.any,description:We.any,avatar:We.any}};const t0=He({compatConfig:{MODE:3},name:"ACardMeta",props:Mte(),slots:["title","description","avatar"],setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls;return function(){var o=ce({},"".concat(l.value,"-meta"),!0),r=ui(i,e,"avatar"),f=ui(i,e,"title"),v=ui(i,e,"description"),b=r?D("div",{class:"".concat(l.value,"-meta-avatar")},[r]):null,Z=f?D("div",{class:"".concat(l.value,"-meta-title")},[f]):null,p=v?D("div",{class:"".concat(l.value,"-meta-description")},[v]):null,y=Z||p?D("div",{class:"".concat(l.value,"-meta-detail")},[Z,p]):null;return D("div",{class:o},[b,y])}}});var Ite=function(){return{prefixCls:String,hoverable:{type:Boolean,default:!0}}};const n0=He({compatConfig:{MODE:3},name:"ACardGrid",__ANT_CARD_GRID:!0,props:Ite(),setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls,o=de(function(){var r;return r={},ce(r,"".concat(l.value,"-grid"),!0),ce(r,"".concat(l.value,"-grid-hoverable"),e.hoverable),r});return function(){var r;return D("div",{class:o.value},[(r=i.default)===null||r===void 0?void 0:r.call(i)])}}});Nu.Meta=t0;Nu.Grid=n0;Nu.install=function(n){return n.component(Nu.name,Nu),n.component(t0.name,t0),n.component(n0.name,n0),n};var Yte=function(){return{prefixCls:String,activeKey:{type:[Array,Number,String]},defaultActiveKey:{type:[Array,Number,String]},accordion:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},expandIcon:Function,openAnimation:We.object,expandIconPosition:We.oneOf(pi("left","right")),collapsible:{type:String},ghost:{type:Boolean,default:void 0},onChange:Function,"onUpdate:activeKey":Function}},bC=function(){return{openAnimation:We.object,prefixCls:String,header:We.any,headerClass:String,showArrow:{type:Boolean,default:void 0},isActive:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},accordion:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},expandIcon:Function,extra:We.any,panelKey:We.oneOfType([We.string,We.number]),collapsible:{type:String},role:String,onItemClick:{type:Function}}};function Ww(n){var e=n;if(!Array.isArray(e)){var t=Yt(e);e=t==="number"||t==="string"?[e]:[]}return e.map(function(i){return String(i)})}const $d=He({compatConfig:{MODE:3},name:"ACollapse",inheritAttrs:!1,props:pn(Yte(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,openAnimation:Oh("ant-motion-collapse",!1),expandIconPosition:"left"}),slots:["expandIcon"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=Ne(Ww(jm([e.activeKey,e.defaultActiveKey])));rt(function(){return e.activeKey},function(){o.value=Ww(e.activeKey)},{deep:!0});var r=Nt("collapse",e),f=r.prefixCls,v=r.direction,b=de(function(){var N=e.expandIconPosition;return N!==void 0?N:v.value==="rtl"?"right":"left"}),Z=function(G){var d=e.expandIcon,u=d===void 0?a.expandIcon:d,s=u?u(G):D(xo,{rotate:G.isActive?90:void 0},null);return D("div",null,[Si(Array.isArray(u)?s[0]:s)?wn(s,{class:"".concat(f.value,"-arrow")},!1):s])},p=function(G){e.activeKey===void 0&&(o.value=G);var d=e.accordion?G[0]:G;l("update:activeKey",d),l("change",d)},y=function(G){var d=o.value;if(e.accordion)d=d[0]===G?[]:[G];else{d=yt(d);var u=d.indexOf(G),s=u>-1;s?d.splice(u,1):d.push(G)}p(d)},X=function(G,d){var u,s,h;if(!Ch(G)){var c=o.value,W=e.accordion,M=e.destroyInactivePanel,I=e.collapsible,w=e.openAnimation,C=String((u=G.key)!==null&&u!==void 0?u:d),x=G.props||{},R=x.header,g=R===void 0?(s=G.children)===null||s===void 0||(h=s.header)===null||h===void 0?void 0:h.call(s):R,S=x.headerClass,L=x.collapsible,V=x.disabled,Y=!1;W?Y=c[0]===C:Y=c.indexOf(C)>-1;var T=L??I;(V||V==="")&&(T="disabled");var J={key:C,panelKey:C,header:g,headerClass:S,isActive:Y,prefixCls:f.value,destroyInactivePanel:M,openAnimation:w,accordion:W,onItemClick:T==="disabled"?null:y,expandIcon:Z,collapsible:T};return wn(G,J)}},m=function(){var G;return ti((G=a.default)===null||G===void 0?void 0:G.call(a)).map(X)};return function(){var N,G=e.accordion,d=e.bordered,u=e.ghost,s=_e((N={},ce(N,f.value,!0),ce(N,"".concat(f.value,"-borderless"),!d),ce(N,"".concat(f.value,"-icon-position-").concat(b.value),!0),ce(N,"".concat(f.value,"-rtl"),v.value==="rtl"),ce(N,"".concat(f.value,"-ghost"),!!u),ce(N,i.class,!!i.class),N));return D("div",P(P({class:s},xE(i)),{},{style:i.style,role:G?"tablist":null}),[m()])}}}),wte=He({compatConfig:{MODE:3},name:"PanelContent",props:bC(),setup:function(e,t){var i=t.slots,a=Ne(!1);return qt(function(){(e.isActive||e.forceRender)&&(a.value=!0)}),function(){var l,o;if(!a.value)return null;var r=e.prefixCls,f=e.isActive,v=e.role;return D("div",{ref:Ne,class:_e("".concat(r,"-content"),(l={},ce(l,"".concat(r,"-content-active"),f),ce(l,"".concat(r,"-content-inactive"),!f),l)),role:v},[D("div",{class:"".concat(r,"-content-box")},[(o=i.default)===null||o===void 0?void 0:o.call(i)])])}}}),i0=He({compatConfig:{MODE:3},name:"ACollapsePanel",inheritAttrs:!1,props:pn(bC(),{showArrow:!0,isActive:!1,onItemClick:function(){},headerClass:"",forceRender:!1}),slots:["expandIcon","extra","header"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs;jn(e.disabled===void 0,"Collapse.Panel",'`disabled` is deprecated. Please use `collapsible="disabled"` instead.');var o=Nt("collapse",e),r=o.prefixCls,f=function(){a("itemClick",e.panelKey)},v=function(Z){(Z.key==="Enter"||Z.keyCode===13||Z.which===13)&&f()};return function(){var b,Z,p,y,X=e.header,m=X===void 0?(b=i.header)===null||b===void 0?void 0:b.call(i):X,N=e.headerClass,G=e.isActive,d=e.showArrow,u=e.destroyInactivePanel,s=e.accordion,h=e.forceRender,c=e.openAnimation,W=e.expandIcon,M=W===void 0?i.expandIcon:W,I=e.extra,w=I===void 0?(Z=i.extra)===null||Z===void 0?void 0:Z.call(i):I,C=e.collapsible,x=C==="disabled",R=r.value,g=_e("".concat(R,"-header"),(p={},ce(p,N,N),ce(p,"".concat(R,"-header-collapsible-only"),C==="header"),p)),S=_e((y={},ce(y,"".concat(R,"-item"),!0),ce(y,"".concat(R,"-item-active"),G),ce(y,"".concat(R,"-item-disabled"),x),ce(y,"".concat(R,"-no-arrow"),!d),ce(y,"".concat(l.class),!!l.class),y)),L=D("i",{class:"arrow"},null);d&&typeof M=="function"&&(L=M(e));var V=cl(D(wte,{prefixCls:R,isActive:G,forceRender:h,role:s?"tabpanel":null},{default:i.default}),[[gr,G]]),Y=P({appear:!1,css:!1},c);return D("div",P(P({},l),{},{class:S}),[D("div",{class:g,onClick:function(){return C!=="header"&&f()},role:s?"tab":"button",tabindex:x?-1:0,"aria-expanded":G,onKeypress:v},[d&&L,C==="header"?D("span",{onClick:f,class:"".concat(R,"-header-text")},[m]):m,w&&D("div",{class:"".concat(R,"-extra")},[w])]),D(aa,Y,{default:function(){return[!u||G?V:null]}})])}}});$d.Panel=i0;$d.install=function(n){return n.component($d.name,$d),n.component(i0.name,i0),n};var gte=function(e){return e.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()}).toLowerCase()},Vte=function(e){var t=/[height|width]$/;return t.test(e)},Gw=function(e){var t="",i=Object.keys(e);return i.forEach(function(a,l){var o=e[a];a=gte(a),Vte(a)&&typeof o=="number"&&(o=o+"px"),o===!0?t+=a:o===!1?t+="not "+a:t+="("+a+": "+o+")",l=e||W<0||Z&&M>=l}function G(){var c=yZ();if(N(c))return d(c);r=setTimeout(G,m(c))}function d(c){return r=void 0,p&&i?y(c):(i=a=void 0,o)}function u(){r!==void 0&&clearTimeout(r),v=0,i=f=a=r=void 0}function s(){return r===void 0?o:d(yZ())}function h(){var c=yZ(),W=N(c);if(i=arguments,a=this,f=c,W){if(r===void 0)return X(f);if(Z)return clearTimeout(r),r=setTimeout(G,e),y(f)}return r===void 0&&(r=setTimeout(G,e)),o}return h.cancel=u,h.flush=s,h}var Cte={accessibility:{type:Boolean,default:!0},adaptiveHeight:{type:Boolean,default:!1},afterChange:We.any.def(null),arrows:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},autoplaySpeed:We.number.def(3e3),beforeChange:We.any.def(null),centerMode:{type:Boolean,default:!1},centerPadding:We.string.def("50px"),cssEase:We.string.def("ease"),dots:{type:Boolean,default:!1},dotsClass:We.string.def("slick-dots"),draggable:{type:Boolean,default:!0},unslick:{type:Boolean,default:!1},easing:We.string.def("linear"),edgeFriction:We.number.def(.35),fade:{type:Boolean,default:!1},focusOnSelect:{type:Boolean,default:!1},infinite:{type:Boolean,default:!0},initialSlide:We.number.def(0),lazyLoad:We.any.def(null),verticalSwiping:{type:Boolean,default:!1},asNavFor:We.any.def(null),pauseOnDotsHover:{type:Boolean,default:!1},pauseOnFocus:{type:Boolean,default:!1},pauseOnHover:{type:Boolean,default:!0},responsive:We.array,rows:We.number.def(1),rtl:{type:Boolean,default:!1},slide:We.string.def("div"),slidesPerRow:We.number.def(1),slidesToScroll:We.number.def(1),slidesToShow:We.number.def(1),speed:We.number.def(500),swipe:{type:Boolean,default:!0},swipeEvent:We.any.def(null),swipeToSlide:{type:Boolean,default:!1},touchMove:{type:Boolean,default:!0},touchThreshold:We.number.def(5),useCSS:{type:Boolean,default:!0},useTransform:{type:Boolean,default:!0},variableWidth:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},waitForAnimate:{type:Boolean,default:!0},children:We.array,__propsSymbol__:We.any};const mC=Cte;var Ste={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0};const zte=Ste;function Gv(n,e,t){return Math.max(e,Math.min(n,t))}var Mu=function(e){var t=["touchstart","touchmove","wheel"];t.includes(e.type)||e.preventDefault()},l0=function(e){for(var t=[],i=pC(e),a=yC(e),l=i;l0?1:0):0},Fte=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow},Xv=function(e){return e&&e.offsetWidth||0},J1=function(e){return e&&e.offsetHeight||0},ZC=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i,a=e.startX-e.curX,l=e.startY-e.curY,o=Math.atan2(l,a);return i=Math.round(o*180/Math.PI),i<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":t===!0?i>=35&&i<=135?"up":"down":"vertical"},fp=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t},ZZ=function(e,t){var i={};return t.forEach(function(a){return i[a]=e[a]}),i},Jte=function(e){var t=e.children.length,i=e.listRef,a=Math.ceil(Xv(i)),l=e.trackRef,o=Math.ceil(Xv(l)),r;if(e.vertical)r=a;else{var f=e.centerMode&&parseInt(e.centerPadding)*2;typeof e.centerPadding=="string"&&e.centerPadding.slice(-1)==="%"&&(f*=a/100),r=Math.ceil((a-f)/e.slidesToShow)}var v=i&&J1(i.querySelector('[data-index="0"]')),b=v*e.slidesToShow,Z=e.currentSlide===void 0?e.initialSlide:e.currentSlide;e.rtl&&e.currentSlide===void 0&&(Z=t-1-e.initialSlide);var p=e.lazyLoadedList||[],y=l0(P(P({},e),{},{currentSlide:Z,lazyLoadedList:p}));p=p.concat(y);var X={slideCount:t,slideWidth:r,listWidth:a,trackWidth:o,currentSlide:Z,slideHeight:v,listHeight:b,lazyLoadedList:p};return e.autoplaying===null&&e.autoplay&&(X.autoplaying="playing"),X},Dte=function(e){var t=e.waitForAnimate,i=e.animating,a=e.fade,l=e.infinite,o=e.index,r=e.slideCount,f=e.lazyLoad,v=e.currentSlide,b=e.centerMode,Z=e.slidesToScroll,p=e.slidesToShow,y=e.useCSS,X=e.lazyLoadedList;if(t&&i)return{};var m=o,N,G,d,u={},s={},h=l?o:Gv(o,0,r-1);if(a){if(!l&&(o<0||o>=r))return{};o<0?m=o+r:o>=r&&(m=o-r),f&&X.indexOf(m)<0&&(X=X.concat(m)),u={animating:!0,currentSlide:m,lazyLoadedList:X,targetSlide:m},s={animating:!1,targetSlide:m}}else N=m,m<0?(N=m+r,l?r%Z!==0&&(N=r-r%Z):N=0):!fp(e)&&m>v?m=N=v:b&&m>=r?(m=l?r:r-1,N=l?0:r-1):m>=r&&(N=m-r,l?r%Z!==0&&(N=0):N=r-p),!l&&m+p>=r&&(N=r-p),G=wh(P(P({},e),{},{slideIndex:m})),d=wh(P(P({},e),{},{slideIndex:N})),l||(G===d&&(m=N),G=d),f&&(X=X.concat(l0(P(P({},e),{},{currentSlide:m})))),y?(u={animating:!0,currentSlide:N,trackStyle:vC(P(P({},e),{},{left:G})),lazyLoadedList:X,targetSlide:h},s={animating:!1,currentSlide:N,trackStyle:Yh(P(P({},e),{},{left:d})),swipeLeft:null,targetSlide:h}):u={currentSlide:N,trackStyle:Yh(P(P({},e),{},{left:d})),lazyLoadedList:X,targetSlide:h};return{state:u,nextState:s}},Ote=function(e,t){var i,a,l,o=e.slidesToScroll,r=e.slidesToShow,f=e.slideCount,v=e.currentSlide,b=e.targetSlide,Z=e.lazyLoad,p=e.infinite,y=f%o!==0,X=y?0:(f-v)%o;if(t.message==="previous")a=X===0?o:r-X,l=v-a,Z&&!p&&(i=v-a,l=i===-1?f-1:i),p||(l=b-o);else if(t.message==="next")a=X===0?o:X,l=v+a,Z&&!p&&(l=(v+o)%f+X),p||(l=b+o);else if(t.message==="dots")l=t.index*t.slidesToScroll;else if(t.message==="children"){if(l=t.index,p){var m=Qte(P(P({},e),{},{targetSlide:l}));l>t.currentSlide&&m==="left"?l=l-f:l10)return{scrolling:!0};r&&(d.swipeLength=I);var w=(f?-1:1)*(d.curX>d.startX?1:-1);r&&(w=d.curY>d.startY?1:-1);var C=Math.ceil(m/N),x=ZC(t.touchObject,r),R=d.swipeLength;return G||(v===0&&(x==="right"||x==="down")||v+1>=C&&(x==="left"||x==="up")||!fp(t)&&(x==="left"||x==="up"))&&(R=d.swipeLength*b,Z===!1&&p&&(p(x),W.edgeDragged=!0)),!y&&u&&(u(x),W.swiped=!0),l?c=M+R*(s/h)*w:f?c=M-R*w:c=M+R*w,r&&(c=M+R*w),W=P(P({},W),{},{touchObject:d,swipeLeft:c,trackStyle:Yh(P(P({},t),{},{left:c}))}),Math.abs(d.curX-d.startX)10&&(W.swiping=!0,Mu(e)),W}},Kte=function(e,t){var i=t.dragging,a=t.swipe,l=t.touchObject,o=t.listWidth,r=t.touchThreshold,f=t.verticalSwiping,v=t.listHeight,b=t.swipeToSlide,Z=t.scrolling,p=t.onSwipe,y=t.targetSlide,X=t.currentSlide,m=t.infinite;if(!i)return a&&Mu(e),{};var N=f?v/r:o/r,G=ZC(l,f),d={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(Z||!l.swipeLength)return d;if(l.swipeLength>N){Mu(e),p&&p(G);var u,s,h=m?X:y;switch(G){case"left":case"up":s=h+Nw(t),u=b?Xw(t,s):s,d.currentDirection=0;break;case"right":case"down":s=h-Nw(t),u=b?Xw(t,s):s,d.currentDirection=1;break;default:u=h}d.triggerSlideHandler=u}else{var c=wh(t);d.trackStyle=vC(P(P({},t),{},{left:c}))}return d},Hte=function(e){for(var t=e.infinite?e.slideCount*2:e.slideCount,i=e.infinite?e.slidesToShow*-1:0,a=e.infinite?e.slidesToShow*-1:0,l=[];ii[i.length-1])t=i[i.length-1];else for(var l in i){if(te.swipeLeft*-1)return i=f,!1}else if(f.offsetLeft-t+Xv(f)/2>e.swipeLeft*-1)return i=f,!1;return!0}),!i)return 0;var o=e.rtl===!0?e.slideCount-e.currentSlide:e.currentSlide,r=Math.abs(i.dataset.index-o)||1;return r}else return e.slidesToScroll},D1=function(e,t){return t.reduce(function(i,a){return i&&e.hasOwnProperty(a)},!0)?null:console.error("Keys Missing:",e)},Yh=function(e){D1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var t,i,a=e.slideCount+2*e.slidesToShow;e.vertical?i=a*e.slideHeight:t=Pte(e)*e.slideWidth;var l={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",r=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",f=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";l=P(P({},l),{},{WebkitTransform:o,transform:r,msTransform:f})}else e.vertical?l.top=e.left:l.left=e.left;return e.fade&&(l={opacity:1}),t&&(l.width=t+"px"),i&&(l.height=i+"px"),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?l.marginTop=e.left+"px":l.marginLeft=e.left+"px"),l},vC=function(e){D1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=Yh(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t},wh=function(e){if(e.unslick)return 0;D1(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t=e.slideIndex,i=e.trackRef,a=e.infinite,l=e.centerMode,o=e.slideCount,r=e.slidesToShow,f=e.slidesToScroll,v=e.slideWidth,b=e.listWidth,Z=e.variableWidth,p=e.slideHeight,y=e.fade,X=e.vertical,m=0,N,G,d=0;if(y||e.slideCount===1)return 0;var u=0;if(a?(u=-Vo(e),o%f!==0&&t+f>o&&(u=-(t>o?r-(t-o):o%f)),l&&(u+=parseInt(r/2))):(o%f!==0&&t+f>o&&(u=r-o%f),l&&(u=parseInt(r/2))),m=u*v,d=u*p,X?N=t*p*-1+d:N=t*v*-1+m,Z===!0){var s,h=i;if(s=t+Vo(e),G=h&&h.childNodes[s],N=G?G.offsetLeft*-1:0,l===!0){s=a?t+Vo(e):t,G=h&&h.children[s],N=0;for(var c=0;ce.currentSlide?e.targetSlide>e.currentSlide+Bte(e)?"left":"right":e.targetSlide0&&(o+=1),a&&t%2===0&&(o+=1),o}return a?0:t-1},Ate=function(e){var t=e.slidesToShow,i=e.centerMode,a=e.rtl,l=e.centerPadding;if(i){var o=(t-1)/2+1;return parseInt(l)>0&&(o+=1),!a&&t%2===0&&(o+=1),o}return a?t-1:0},Mw=function(){return!!(typeof window<"u"&&window.document&&window.document.createElement)},vZ=function(e){var t,i,a,l;e.rtl?l=e.slideCount-1-e.index:l=e.index;var o=l<0||l>=e.slideCount;e.centerMode?(a=Math.floor(e.slidesToShow/2),i=(l-e.currentSlide)%e.slideCount===0,l>e.currentSlide-a-1&&l<=e.currentSlide+a&&(t=!0)):t=e.currentSlide<=l&&l=e.slideCount?r=e.targetSlide-e.slideCount:r=e.targetSlide;var f=l===r;return{"slick-slide":!0,"slick-active":t,"slick-center":i,"slick-cloned":o,"slick-current":f}},_te=function(e){var t={};return(e.variableWidth===void 0||e.variableWidth===!1)&&(t.width=e.slideWidth+(typeof e.slideWidth=="number"?"px":"")),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight)+"px":t.left=-e.index*parseInt(e.slideWidth)+"px",t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t},WZ=function(e,t){return e.key+"-"+t},$te=function(e,t){var i,a=[],l=[],o=[],r=t.length,f=pC(e),v=yC(e);return t.forEach(function(b,Z){var p,y={message:"children",index:Z,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(Z)>=0?p=b:p=D("div");var X=_te(P(P({},e),{},{index:Z})),m=p.props.class||"",N=vZ(P(P({},e),{},{index:Z}));if(a.push(wn(p,{key:"original"+WZ(p,Z),tabindex:"-1","data-index":Z,"aria-hidden":!N["slick-active"],class:_e(N,m),style:P(P({outline:"none"},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}})),e.infinite&&e.fade===!1){var G=r-Z;G<=Vo(e)&&r!==e.slidesToShow&&(i=-G,i>=f&&(p=b),N=vZ(P(P({},e),{},{index:i})),l.push(wn(p,{key:"precloned"+WZ(p,i),class:_e(N,m),tabindex:"-1","data-index":i,"aria-hidden":!N["slick-active"],style:P(P({},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}}))),r!==e.slidesToShow&&(i=r+Z,i=w&&f<=M:f===w}),x={message:"dots",index:c,slidesToScroll:l,currentSlide:f};function R(g){g&&g.preventDefault(),Z(x)}d=d.concat(D("li",{key:c,class:C},[wn(b({i:c}),{onClick:R})]))},s=0;s=t.children.length&&e.changeSlide({message:"index",index:t.children.length-t.slidesToShow,currentSlide:e.currentSlide}),!e.preProps.autoplay&&t.autoplay?e.handleAutoPlay("playing"):t.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.preProps=P({},t)}},mounted:function(){var e=this;if(this.__emit("init"),this.lazyLoad){var t=l0(P(P({},this.$props),this.$data));t.length>0&&(this.setState(function(i){return{lazyLoadedList:i.lazyLoadedList.concat(t)}}),this.__emit("lazyLoad",t))}this.$nextTick(function(){var i=P({listRef:e.list,trackRef:e.track,children:e.children},e.$props);e.updateState(i,!0,function(){e.adaptHeight(),e.autoplay&&e.handleAutoPlay("playing")}),e.lazyLoad==="progressive"&&(e.lazyLoadTimer=setInterval(e.progressiveLazyLoad,1e3)),e.ro=new EW(function(){e.animating?(e.onWindowResized(!1),e.callbackTimers.push(setTimeout(function(){return e.onWindowResized()},e.speed))):e.onWindowResized()}),e.ro.observe(e.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),function(a){a.onfocus=e.$props.pauseOnFocus?e.onSlideFocus:null,a.onblur=e.$props.pauseOnFocus?e.onSlideBlur:null}),window.addEventListener?window.addEventListener("resize",e.onWindowResized):window.attachEvent("onresize",e.onWindowResized)})},beforeUnmount:function(){var e;this.animationEndCallback&&clearTimeout(this.animationEndCallback),this.lazyLoadTimer&&clearInterval(this.lazyLoadTimer),this.callbackTimers.length&&(this.callbackTimers.forEach(function(t){return clearTimeout(t)}),this.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",this.onWindowResized):window.detachEvent("onresize",this.onWindowResized),this.autoplayTimer&&clearInterval(this.autoplayTimer),(e=this.ro)===null||e===void 0||e.disconnect()},updated:function(){if(this.checkImagesLoad(),this.__emit("reInit"),this.lazyLoad){var e=l0(P(P({},this.$props),this.$data));e.length>0&&(this.setState(function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad"))}this.adaptHeight()},methods:{listRefHandler:function(e){this.list=e},trackRefHandler:function(e){this.track=e},adaptHeight:function(){if(this.adaptiveHeight&&this.list){var e=this.list.querySelector('[data-index="'.concat(this.currentSlide,'"]'));this.list.style.height=J1(e)+"px"}},onWindowResized:function(e){var t=this;this.debouncedResize&&this.debouncedResize.cancel(),this.debouncedResize=hp(function(){return t.resizeWindow(e)},50),this.debouncedResize()},resizeWindow:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,i=Boolean(this.track);if(i){var a=P(P({listRef:this.list,trackRef:this.track,children:this.children},this.$props),this.$data);this.updateState(a,t,function(){e.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.setState({animating:!1}),clearTimeout(this.animationEndCallback),delete this.animationEndCallback}},updateState:function(e,t,i){var a=Jte(e);e=P(P(P({},e),a),{},{slideIndex:a.currentSlide});var l=wh(e);e=P(P({},e),{},{left:l});var o=Yh(e);(t||this.children.length!==e.children.length)&&(a.trackStyle=o),this.setState(a,i)},ssrInit:function(){var e=this.children;if(this.variableWidth){var t=0,i=0,a=[],l=Vo(P(P(P({},this.$props),this.$data),{},{slideCount:e.length})),o=Kb(P(P(P({},this.$props),this.$data),{},{slideCount:e.length}));e.forEach(function(u){var s,h,c=((s=u.props.style)===null||s===void 0||(h=s.width)===null||h===void 0?void 0:h.split("px")[0])||0;a.push(c),t+=c});for(var r=0;r=i&&e.onWindowResized()};if(!l.onclick)l.onclick=function(){return l.parentNode.focus()};else{var r=l.onclick;l.onclick=function(){r(),l.parentNode.focus()}}l.onload||(e.$props.lazyLoad?l.onload=function(){e.adaptHeight(),e.callbackTimers.push(setTimeout(e.onWindowResized,e.speed))}:(l.onload=o,l.onerror=function(){o(),e.__emit("lazyLoadError")}))})},progressiveLazyLoad:function(){for(var e=[],t=P(P({},this.$props),this.$data),i=this.currentSlide;i=-Vo(t);a--)if(this.lazyLoadedList.indexOf(a)<0){e.push(a);break}e.length>0?(this.setState(function(l){return{lazyLoadedList:l.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad",e)):this.lazyLoadTimer&&(clearInterval(this.lazyLoadTimer),delete this.lazyLoadTimer)},slideHandler:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,a=this.$props,l=a.asNavFor,o=a.currentSlide,r=a.beforeChange,f=a.speed,v=a.afterChange,b=Dte(P(P(P({index:e},this.$props),this.$data),{},{trackRef:this.track,useCSS:this.useCSS&&!i})),Z=b.state,p=b.nextState;if(Z){r&&r(o,Z.currentSlide);var y=Z.lazyLoadedList.filter(function(X){return t.lazyLoadedList.indexOf(X)<0});this.$attrs.onLazyLoad&&y.length>0&&this.__emit("lazyLoad",y),!this.$props.waitForAnimate&&this.animationEndCallback&&(clearTimeout(this.animationEndCallback),v&&v(o),delete this.animationEndCallback),this.setState(Z,function(){l&&t.asNavForIndex!==e&&(t.asNavForIndex=e,l.innerSlider.slideHandler(e)),p&&(t.animationEndCallback=setTimeout(function(){var X=p.animating,m=jt(p,nne);t.setState(m,function(){t.callbackTimers.push(setTimeout(function(){return t.setState({animating:X})},10)),v&&v(Z.currentSlide),delete t.animationEndCallback})},f))})}},changeSlide:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=P(P({},this.$props),this.$data),a=Ote(i,e);if(!(a!==0&&!a)&&(t===!0?this.slideHandler(a,t):this.slideHandler(a),this.$props.autoplay&&this.handleAutoPlay("update"),this.$props.focusOnSelect)){var l=this.list.querySelectorAll(".slick-current");l[0]&&l[0].focus()}},clickHandler:function(e){this.clickable===!1&&(e.stopPropagation(),e.preventDefault()),this.clickable=!0},keyHandler:function(e){var t=jte(e,this.accessibility,this.rtl);t!==""&&this.changeSlide({message:t})},selectHandler:function(e){this.changeSlide(e)},disableBodyScroll:function(){var e=function(i){i=i||window.event,i.preventDefault&&i.preventDefault(),i.returnValue=!1};window.ontouchmove=e},enableBodyScroll:function(){window.ontouchmove=null},swipeStart:function(e){this.verticalSwiping&&this.disableBodyScroll();var t=Ute(e,this.swipe,this.draggable);t!==""&&this.setState(t)},swipeMove:function(e){var t=Ete(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));t&&(t.swiping&&(this.clickable=!1),this.setState(t))},swipeEnd:function(e){var t=Kte(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));if(t){var i=t.triggerSlideHandler;delete t.triggerSlideHandler,this.setState(t),i!==void 0&&(this.slideHandler(i),this.$props.verticalSwiping&&this.enableBodyScroll())}},touchEnd:function(e){this.swipeEnd(e),this.clickable=!0},slickPrev:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"previous"})},0))},slickNext:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"next"})},0))},slickGoTo:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=Number(e),isNaN(e))return"";this.callbackTimers.push(setTimeout(function(){return t.changeSlide({message:"index",index:e,currentSlide:t.currentSlide},i)},0))},play:function(){var e;if(this.rtl)e=this.currentSlide-this.slidesToScroll;else if(fp(P(P({},this.$props),this.$data)))e=this.currentSlide+this.slidesToScroll;else return!1;this.slideHandler(e)},handleAutoPlay:function(e){this.autoplayTimer&&clearInterval(this.autoplayTimer);var t=this.autoplaying;if(e==="update"){if(t==="hovered"||t==="focused"||t==="paused")return}else if(e==="leave"){if(t==="paused"||t==="focused")return}else if(e==="blur"&&(t==="paused"||t==="hovered"))return;this.autoplayTimer=setInterval(this.play,this.autoplaySpeed+50),this.setState({autoplaying:"playing"})},pause:function(e){this.autoplayTimer&&(clearInterval(this.autoplayTimer),this.autoplayTimer=null);var t=this.autoplaying;e==="paused"?this.setState({autoplaying:"paused"}):e==="focused"?(t==="hovered"||t==="playing")&&this.setState({autoplaying:"focused"}):t==="playing"&&this.setState({autoplaying:"hovered"})},onDotsOver:function(){this.autoplay&&this.pause("hovered")},onDotsLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onTrackOver:function(){this.autoplay&&this.pause("hovered")},onTrackLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onSlideFocus:function(){this.autoplay&&this.pause("focused")},onSlideBlur:function(){this.autoplay&&this.autoplaying==="focused"&&this.handleAutoPlay("blur")},customPaging:function(e){var t=e.i;return D("button",null,[t+1])},appendDots:function(e){var t=e.dots;return D("ul",{style:{display:"block"}},[t])}},render:function(){var e,t=this,i=_e("slick-slider",this.$attrs.class,{"slick-vertical":this.vertical,"slick-initialized":!0}),a=P(P({},this.$props),this.$data),l=ZZ(a,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),o=this.$props.pauseOnHover;l=P(P({},l),{},{focusOnSelect:this.focusOnSelect&&this.clickable?this.selectHandler:null,ref:this.trackRefHandler,onMouseleave:o?this.onTrackLeave:Ra,onMouseover:o?this.onTrackOver:Ra});var r;if(this.dots===!0&&this.slideCount>=this.slidesToShow){var f=ZZ(a,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","infinite","appendDots"]);f.customPaging=this.customPaging,f.appendDots=this.appendDots;var v=this.$slots,b=v.customPaging,Z=v.appendDots;b&&(f.customPaging=b),Z&&(f.appendDots=Z);var p=this.$props.pauseOnDotsHover;f=P(P({},f),{},{clickHandler:this.changeSlide,onMouseover:p?this.onDotsOver:Ra,onMouseleave:p?this.onDotsLeave:Ra}),r=D(tne,f,null)}var y,X,m=ZZ(a,["infinite","centerMode","currentSlide","slideCount","slidesToShow"]);m.clickHandler=this.changeSlide;var N=this.$slots,G=N.prevArrow,d=N.nextArrow;G&&(m.prevArrow=G),d&&(m.nextArrow=d),this.arrows&&(y=D(MC,m,null),X=D(IC,m,null));var u=null;this.vertical&&(u={height:typeof this.listHeight=="number"?"".concat(this.listHeight,"px"):this.listHeight});var s=null;this.vertical===!1?this.centerMode===!0&&(s={padding:"0px "+this.centerPadding}):this.centerMode===!0&&(s={padding:this.centerPadding+" 0px"});var h=P(P({},u),s),c=this.touchMove,W=(e={ref:this.listRefHandler,class:"slick-list",style:h,onClick:this.clickHandler,onMousedown:c?this.swipeStart:Ra,onMousemove:this.dragging&&c?this.swipeMove:Ra,onMouseup:c?this.swipeEnd:Ra,onMouseleave:this.dragging&&c?this.swipeEnd:Ra},ce(e,Ui?"onTouchstartPassive":"onTouchstart",c?this.swipeStart:Ra),ce(e,Ui?"onTouchmovePassive":"onTouchmove",this.dragging&&c?this.swipeMove:Ra),ce(e,"onTouchend",c?this.touchEnd:Ra),ce(e,"onTouchcancel",this.dragging&&c?this.swipeEnd:Ra),ce(e,"onKeydown",this.accessibility?this.keyHandler:Ra),e),M={class:i,dir:"ltr",style:this.$attrs.style};return this.unslick&&(W={class:"slick-list",ref:this.listRefHandler},M={class:i}),D("div",M,[this.unslick?"":y,D("div",W,[D(qte,l,{default:function(){return[t.children]}})]),this.unslick?"":X,this.unslick?"":r])}},lne=He({name:"Slider",mixins:[Rc],inheritAttrs:!1,props:P({},mC),data:function(){return this._responsiveMediaHandlers=[],{breakpoint:null}},mounted:function(){var e=this;if(this.responsive){var t=this.responsive.map(function(a){return a.breakpoint});t.sort(function(a,l){return a-l}),t.forEach(function(a,l){var o;l===0?o=pZ({minWidth:0,maxWidth:a}):o=pZ({minWidth:t[l-1]+1,maxWidth:a}),Mw()&&e.media(o,function(){e.setState({breakpoint:a})})});var i=pZ({minWidth:t.slice(-1)[0]});Mw()&&this.media(i,function(){e.setState({breakpoint:null})})}},beforeUnmount:function(){this._responsiveMediaHandlers.forEach(function(e){e.mql.removeListener(e.listener)})},methods:{innerSliderRefHandler:function(e){this.innerSlider=e},media:function(e,t){var i=window.matchMedia(e),a=function(o){var r=o.matches;r&&t()};i.addListener(a),a(i),this._responsiveMediaHandlers.push({mql:i,query:e,listener:a})},slickPrev:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickPrev()},slickNext:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickNext()},slickGoTo:function(e){var t,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(t=this.innerSlider)===null||t===void 0||t.slickGoTo(e,i)},slickPause:function(){var e;(e=this.innerSlider)===null||e===void 0||e.pause("paused")},slickPlay:function(){var e;(e=this.innerSlider)===null||e===void 0||e.handleAutoPlay("play")}},render:function(){var e=this,t,i;this.breakpoint?(i=this.responsive.filter(function(m){return m.breakpoint===e.breakpoint}),t=i[0].settings==="unslick"?"unslick":P(P({},this.$props),i[0].settings)):t=P({},this.$props),t.centerMode&&(t.slidesToScroll>1,t.slidesToScroll=1),t.fade&&(t.slidesToShow>1,t.slidesToScroll>1,t.slidesToShow=1,t.slidesToScroll=1);var a=xh(this)||[];a=a.filter(function(m){return typeof m=="string"?!!m.trim():!!m}),t.variableWidth&&(t.rows>1||t.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),t.variableWidth=!1);for(var l=[],o=null,r=0;r=a.length)break;b.push(wn(a[Z],{key:100*r+10*v+Z,tabindex:-1,style:{width:"".concat(100/t.slidesPerRow,"%"),display:"inline-block"}}))}f.push(D("div",{key:10*r+v},[b]))}t.variableWidth?l.push(D("div",{key:r,style:{width:o}},[f])):l.push(D("div",{key:r},[f]))}if(t==="unslick"){var y="regular slider "+(this.className||"");return D("div",{class:y},[a])}else l.length<=t.slidesToShow&&(t.unslick=!0);var X=P(P(P({},this.$attrs),t),{},{children:l,ref:this.innerSliderRefHandler});return D(ine,P(P({},X),{},{__propsSymbol__:[]}),this.$slots)}});var ane=["class","style"],rne=function(){return{effect:String,dots:{type:Boolean,default:!0},vertical:{type:Boolean,default:void 0},autoplay:{type:Boolean,default:void 0},easing:String,beforeChange:Function,afterChange:Function,prefixCls:String,accessibility:{type:Boolean,default:void 0},nextArrow:We.any,prevArrow:We.any,pauseOnHover:{type:Boolean,default:void 0},adaptiveHeight:{type:Boolean,default:void 0},arrows:{type:Boolean,default:!1},autoplaySpeed:Number,centerMode:{type:Boolean,default:void 0},centerPadding:String,cssEase:String,dotsClass:String,draggable:{type:Boolean,default:!1},fade:{type:Boolean,default:void 0},focusOnSelect:{type:Boolean,default:void 0},infinite:{type:Boolean,default:void 0},initialSlide:Number,lazyLoad:String,rtl:{type:Boolean,default:void 0},slide:String,slidesToShow:Number,slidesToScroll:Number,speed:Number,swipe:{type:Boolean,default:void 0},swipeToSlide:{type:Boolean,default:void 0},swipeEvent:Function,touchMove:{type:Boolean,default:void 0},touchThreshold:Number,variableWidth:{type:Boolean,default:void 0},useCSS:{type:Boolean,default:void 0},slickGoTo:Number,responsive:Array,dotPosition:{type:String,default:void 0},verticalSwiping:{type:Boolean,default:!1}}},one=He({compatConfig:{MODE:3},name:"ACarousel",inheritAttrs:!1,props:rne(),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=Ne(),r=function(m){var N,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(N=o.value)===null||N===void 0||N.slickGoTo(m,G)};l({goTo:r,autoplay:function(m){var N,G;(N=o.value)===null||N===void 0||(G=N.innerSlider)===null||G===void 0||G.handleAutoPlay(m)},prev:function(){var m;(m=o.value)===null||m===void 0||m.slickPrev()},next:function(){var m;(m=o.value)===null||m===void 0||m.slickNext()},innerSlider:de(function(){var X;return(X=o.value)===null||X===void 0?void 0:X.innerSlider})}),qt(function(){Ci(e.vertical===void 0,"Carousel","`vertical` is deprecated, please use `dotPosition` instead.")});var f=Nt("carousel",e),v=f.prefixCls,b=f.direction,Z=de(function(){return e.dotPosition?e.dotPosition:e.vertical!==void 0&&e.vertical?"right":"bottom"}),p=de(function(){return Z.value==="left"||Z.value==="right"}),y=de(function(){var X,m="slick-dots";return _e((X={},ce(X,m,!0),ce(X,"".concat(m,"-").concat(Z.value),!0),ce(X,"".concat(e.dotsClass),!!e.dotsClass),X))});return function(){var X,m=e.dots,N=e.arrows,G=e.draggable,d=e.effect,u=a.class,s=a.style,h=jt(a,ane),c=d==="fade"?!0:e.fade,W=_e(v.value,(X={},ce(X,"".concat(v.value,"-rtl"),b.value==="rtl"),ce(X,"".concat(v.value,"-vertical"),p.value),ce(X,"".concat(u),!!u),X));return D("div",{class:W,style:s},[D(lne,P(P(P({ref:o},e),h),{},{dots:!!m,dotsClass:y.value,arrows:N,draggable:G,fade:c,vertical:p.value}),i)])}}});const sne=wi(one);var O1="__RC_CASCADER_SPLIT__",cne="SHOW_PARENT",une="SHOW_CHILD";function Zs(n){return n.join(O1)}function du(n){return n.map(Zs)}function dne(n){return n.split(O1)}function hne(n){var e=n||{},t=e.label,i=e.value,a=e.children,l=i||"value";return{label:t||"label",value:l,key:l,children:a||"children"}}function Cd(n,e){var t,i;return(t=n.isLeaf)!==null&&t!==void 0?t:!((i=n[e.children])!==null&&i!==void 0&&i.length)}function fne(n){var e=n.parentElement;if(e){var t=n.offsetTop-e.offsetTop;t-e.scrollTop<0?e.scrollTo({top:t}):t+n.offsetHeight-e.scrollTop>e.offsetHeight&&e.scrollTo({top:t+n.offsetHeight-e.offsetHeight})}}var YC=Symbol("TreeContextKey"),bne=He({compatConfig:{MODE:3},name:"TreeContext",props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(YC,de(function(){return e.value})),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}}),j1=function(){return un(YC,de(function(){return{}}))},wC=Symbol("KeysStateKey"),mne=function(e){hn(wC,e)},gC=function(){return un(wC,{expandedKeys:Gn([]),selectedKeys:Gn([]),loadedKeys:Gn([]),loadingKeys:Gn([]),checkedKeys:Gn([]),halfCheckedKeys:Gn([]),expandedKeysSet:de(function(){return new Set}),selectedKeysSet:de(function(){return new Set}),loadedKeysSet:de(function(){return new Set}),loadingKeysSet:de(function(){return new Set}),checkedKeysSet:de(function(){return new Set}),halfCheckedKeysSet:de(function(){return new Set}),flattenNodes:Gn([])})},pne=function(e){for(var t=e.prefixCls,i=e.level,a=e.isStart,l=e.isEnd,o="".concat(t,"-indent-unit"),r=[],f=0;f=0&&t.splice(i,1),t}function is(n,e){var t=(n||[]).slice();return t.indexOf(e)===-1&&t.push(e),t}function E1(n){return n.split("-")}function LC(n,e){return"".concat(n,"-").concat(e)}function Gne(n){return n&&n.type&&n.type.isTreeNode}function Xne(n,e){var t=[],i=e[n];function a(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];l.forEach(function(o){var r=o.key,f=o.children;t.push(r),a(f)})}return a(i.children),t}function Nne(n){if(n.parent){var e=E1(n.pos);return Number(e[e.length-1])===n.parent.children.length-1}return!1}function Mne(n){var e=E1(n.pos);return Number(e[e.length-1])===0}function ww(n,e,t,i,a,l,o,r,f,v){var b,Z=n.clientX,p=n.clientY,y=n.target.getBoundingClientRect(),X=y.top,m=y.height,N=(v==="rtl"?-1:1)*(((a==null?void 0:a.x)||0)-Z),G=(N-12)/i,d=r[t.eventKey];if(p-1.5?l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:l({dragNode:x,dropNode:R,dropPosition:0})?I=0:l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1,{dropPosition:I,dropLevelOffset:w,dropTargetKey:d.key,dropTargetPos:d.pos,dragOverNodeKey:M,dropContainerKey:I===0?null:((b=d.parent)===null||b===void 0?void 0:b.key)||null,dropAllowed:g}}function gw(n,e){if(n){var t=e.multiple;return t?n.slice():n.length?[n[0]]:n}}function GZ(n){if(!n)return null;var e;if(Array.isArray(n))e={checkedKeys:n,halfCheckedKeys:void 0};else if(Yt(n)==="object")e={checkedKeys:n.checked||void 0,halfCheckedKeys:n.halfChecked||void 0};else return null;return e}function Mv(n,e){var t=new Set;function i(a){if(!t.has(a)){var l=e[a];if(l){t.add(a);var o=l.parent,r=l.node;r.disabled||o&&i(o.key)}}}return(n||[]).forEach(function(a){i(a)}),yt(t)}var Ine=["title","icon","switcherIcon"];function Eh(n,e){return n??e}function bp(n){var e=n||{},t=e.title,i=e._title,a=e.key,l=e.children,o=t||"title";return{title:o,_title:i||[o],key:a||"key",children:l||"children"}}function Iv(n){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],i=Ri(t);return i.map(function(a){var l,o,r,f;if(!Gne(a))return null;for(var v=a.children||{},b=a.key,Z={},p=0,y=Object.entries(a.props);p1&&arguments[1]!==void 0?arguments[1]:null;return b.map(function(p,y){for(var X=LC(Z?Z.pos:"0",y),m=Eh(p[l],X),N,G=0;G1&&arguments[1]!==void 0?arguments[1]:{},t=e.initWrapper,i=e.processEntity,a=e.onProcessFinished,l=e.externalGetKey,o=e.childrenPropName,r=e.fieldNames,f=arguments.length>2?arguments[2]:void 0,v=l||f,b={},Z={},p={posEntities:b,keyEntities:Z};return t&&(p=t(p)||p),wne(n,function(y){var X=y.node,m=y.index,N=y.pos,G=y.key,d=y.parentPos,u=y.level,s=y.nodes,h={node:X,nodes:s,index:m,key:G,pos:N,level:u},c=Eh(G,N);b[N]=h,Z[c]=h,h.parent=b[d],h.parent&&(h.parent.children=h.parent.children||[],h.parent.children.push(h)),i&&i(h,p)},{externalGetKey:v,childrenPropName:o,fieldNames:r}),a&&a(p),p}function Yv(n,e){var t=e.expandedKeysSet,i=e.selectedKeysSet,a=e.loadedKeysSet,l=e.loadingKeysSet,o=e.checkedKeysSet,r=e.halfCheckedKeysSet,f=e.dragOverNodeKey,v=e.dropPosition,b=e.keyEntities,Z=b[n],p={eventKey:n,expanded:t.has(n),selected:i.has(n),loaded:a.has(n),loading:l.has(n),checked:o.has(n),halfChecked:r.has(n),pos:String(Z?Z.pos:""),parent:Z.parent,dragOver:f===n&&v===0,dragOverGapTop:f===n&&v===-1,dragOverGapBottom:f===n&&v===1};return p}function wv(n){var e=n.data,t=n.expanded,i=n.selected,a=n.checked,l=n.loaded,o=n.loading,r=n.halfChecked,f=n.dragOver,v=n.dragOverGapTop,b=n.dragOverGapBottom,Z=n.pos,p=n.active,y=n.eventKey,X=P(P({dataRef:e},e),{},{expanded:t,selected:i,checked:a,loaded:l,loading:o,halfChecked:r,dragOver:f,dragOverGapTop:v,dragOverGapBottom:b,pos:Z,active:p,eventKey:y,key:y});return"props"in X||Object.defineProperty(X,"props",{get:function(){return n}}),X}const gne=function(n,e){var t=de(function(){return Kh(n.value,{fieldNames:e.value,initWrapper:function(a){return P(P({},a),{},{pathKeyEntities:{}})},processEntity:function(a,l){var o=a.nodes.map(function(r){return r[e.value.value]}).join(O1);l.pathKeyEntities[o]=a,a.key=o}}).pathKeyEntities});return t};function Vne(n){var e=Ne(!1),t=Ne({});return qt(function(){if(!n.value){e.value=!1,t.value={};return}var i={matchInputWidth:!0,limit:50};n.value&&Yt(n.value)==="object"&&(i=P(P({},i),n.value)),i.limit<=0&&delete i.limit,e.value=!0,t.value=i}),{showSearch:e,searchConfig:t}}var qd="__rc_cascader_search_mark__",Lne=function(e,t,i){var a=i.label;return t.some(function(l){return String(l[a]).toLowerCase().includes(e.toLowerCase())})},Rne=function(e){var t=e.path,i=e.fieldNames;return t.map(function(a){return a[i.label]}).join(" / ")};const Tne=function(n,e,t,i,a,l){return de(function(){var o=a.value,r=o.filter,f=r===void 0?Lne:r,v=o.render,b=v===void 0?Rne:v,Z=o.limit,p=Z===void 0?50:Z,y=o.sort,X=[];if(!n.value)return[];function m(N,G){N.forEach(function(d){if(!(!y&&p>0&&X.length>=p)){var u=[].concat(yt(G),[d]),s=d[t.value.children];if((!s||s.length===0||l.value)&&f(n.value,u,{label:t.value.label})){var h;X.push(P(P({},d),{},(h={},ce(h,t.value.label,b({inputValue:n.value,path:u,prefixCls:i.value,fieldNames:t.value})),ce(h,qd,u),h)))}s&&m(d[t.value.children],u)}})}return m(e.value,[]),y&&X.sort(function(N,G){return y(N[qd],G[qd],n.value,t.value)}),p>0?X.slice(0,p):X})};function Vw(n,e,t){var i=new Set(n);return n.filter(function(a){var l=e[a],o=l?l.parent:null,r=l?l.children:null;return t===une?!(r&&r.some(function(f){return f.key&&i.has(f.key)})):!(o&&!o.node.disabled&&i.has(o.key))})}function gh(n,e,t){for(var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=e,l=[],o=function(v){var b,Z,p,y=n[v],X=(b=a)===null||b===void 0?void 0:b.findIndex(function(N){var G=N[t.value];return i?String(G)===String(y):G===y}),m=X!==-1?(Z=a)===null||Z===void 0?void 0:Z[X]:null;l.push({value:(p=m==null?void 0:m[t.value])!==null&&p!==void 0?p:y,index:X,option:m}),a=m==null?void 0:m[t.children]},r=0;r=0;v-=1){var b=e.get(v)||new Set;b.forEach(function(Z){var p=Z.parent,y=Z.node;if(!(i(y)||!Z.parent||f.has(Z.parent.key))){if(i(Z.parent.node)){f.add(p.key);return}var X=!0,m=!1;(p.children||[]).filter(function(N){return!i(N.node)}).forEach(function(N){var G=N.key,d=a.has(G);X&&!d&&(X=!1),!m&&(d||l.has(G))&&(m=!0)}),X&&a.add(p.key),m&&l.add(p.key),f.add(p.key)}})}return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(RC(l,a))}}function zne(n,e,t,i,a){for(var l=new Set(n),o=new Set(e),r=0;r<=i;r+=1){var f=t.get(r)||new Set;f.forEach(function(p){var y=p.key,X=p.node,m=p.children,N=m===void 0?[]:m;!l.has(y)&&!o.has(y)&&!a(X)&&N.filter(function(G){return!a(G.node)}).forEach(function(G){l.delete(G.key)})})}o=new Set;for(var v=new Set,b=i;b>=0;b-=1){var Z=t.get(b)||new Set;Z.forEach(function(p){var y=p.parent,X=p.node;if(!(a(X)||!p.parent||v.has(p.parent.key))){if(a(p.parent.node)){v.add(y.key);return}var m=!0,N=!1;(y.children||[]).filter(function(G){return!a(G.node)}).forEach(function(G){var d=G.key,u=l.has(d);m&&!u&&(m=!1),!N&&(u||o.has(d))&&(N=!0)}),m||l.delete(y.key),N&&o.add(y.key),v.add(y.key)}})}return{checkedKeys:Array.from(l),halfCheckedKeys:Array.from(RC(o,l))}}function ir(n,e,t,i,a,l){var o;l?o=l:o=Cne;var r=new Set(n.filter(function(v){var b=!!t[v];return b})),f;return e===!0?f=Sne(r,a,i,o):f=zne(r,e.halfCheckedKeys,a,i,o),f}const kne=function(n,e,t,i,a){return de(function(){var l=a.value||function(o){var r=o.labels,f=i.value?r.slice(-1):r,v=" / ";return f.every(function(b){return["string","number"].includes(Yt(b))})?f.join(v):f.reduce(function(b,Z,p){var y=Si(Z)?wn(Z,{key:p}):Z;return p===0?[y]:[].concat(yt(b),[v,y])},[])};return n.value.map(function(o){var r=gh(o,e.value,t.value),f=l({labels:r.map(function(b){var Z,p=b.option,y=b.value;return(Z=p==null?void 0:p[t.value.label])!==null&&Z!==void 0?Z:y}),selectedOptions:r.map(function(b){var Z=b.option;return Z})}),v=Zs(o);return{label:f,value:v,key:v,valueCells:o}})})};var TC=Symbol("CascaderContextKey"),Fne=function(e){hn(TC,e)},mp=function(){return un(TC)};const Jne=function(){var n=Jh(),e=mp(),t=e.values,i=di([]),a=ft(i,2),l=a[0],o=a[1];return rt(function(){return n.open},function(){if(n.open&&!n.multiple){var r=t.value[0];o(r||[])}},{immediate:!0}),[l,o]},Dne=function(n,e,t,i,a,l){var o=Jh(),r=de(function(){return o.direction==="rtl"}),f=[Ne([]),Ne(),Ne([])],v=f[0],b=f[1],Z=f[2];qt(function(){for(var N=-1,G=e.value,d=[],u=[],s=i.value.length,h=function(x){var R=G.findIndex(function(g){return g[t.value.value]===i.value[x]});if(R===-1)return"break";N=R,d.push(N),u.push(i.value[x]),G=G[N][t.value.children]},c=0;c1){var G=v.value.slice(0,-1);p(G)}else o.toggleOpen(!1)},m=function(){var G,d=((G=Z.value[b.value])===null||G===void 0?void 0:G[t.value.children])||[],u=d.find(function(h){return!h.disabled});if(u){var s=[].concat(yt(v.value),[u[t.value.value]]);p(s)}};n.expose({onKeydown:function(G){var d=G.which;switch(d){case bt.UP:case bt.DOWN:{var u=0;d===bt.UP?u=-1:d===bt.DOWN&&(u=1),u!==0&&y(u);break}case bt.LEFT:{r.value?m():X();break}case bt.RIGHT:{r.value?X():m();break}case bt.BACKSPACE:{o.searchValue||X();break}case bt.ENTER:{if(v.value.length){var s=Z.value[b.value],h=(s==null?void 0:s[qd])||[];h.length?l(h.map(function(c){return c[t.value.value]}),h[h.length-1]):l(v.value,s)}break}case bt.ESC:o.toggleOpen(!1),open&&G.stopPropagation()}},onKeyup:function(){}})};function pp(n){var e,t=n.prefixCls,i=n.checked,a=n.halfChecked,l=n.disabled,o=n.onClick,r=mp(),f=r.customSlots,v=r.checkable,b=v.value!==!1?f.value.checkable:v.value,Z=typeof b=="function"?b():typeof b=="boolean"?null:b;return D("span",{class:(e={},ce(e,t,!0),ce(e,"".concat(t,"-checked"),i),ce(e,"".concat(t,"-indeterminate"),!i&&a),ce(e,"".concat(t,"-disabled"),l),e),onClick:o},[Z])}pp.props=["prefixCls","checked","halfChecked","disabled","onClick"];pp.displayName="Checkbox";pp.inheritAttrs=!1;var xC="__cascader_fix_label__";function yp(n){var e,t,i,a,l,o,r=n.prefixCls,f=n.multiple,v=n.options,b=n.activeValue,Z=n.prevValuePath,p=n.onToggleOpen,y=n.onSelect,X=n.onActive,m=n.checkedSet,N=n.halfCheckedSet,G=n.loadingKeys,d=n.isSelectable,u="".concat(r,"-menu"),s="".concat(r,"-menu-item"),h=mp(),c=h.fieldNames,W=h.changeOnSelect,M=h.expandTrigger,I=h.expandIcon,w=h.loadingIcon,C=h.dropdownMenuColumnStyle,x=h.customSlots,R=(e=I.value)!==null&&e!==void 0?e:(t=(i=x.value).expandIcon)===null||t===void 0?void 0:t.call(i),g=(a=w.value)!==null&&a!==void 0?a:(l=(o=x.value).loadingIcon)===null||l===void 0?void 0:l.call(o),S=M.value==="hover";return D("ul",{class:u,role:"menu"},[v.map(function(L){var V,Y,T=L.disabled,J=L[qd],U=(V=L[xC])!==null&&V!==void 0?V:L[c.value.label],K=L[c.value.value],H=Cd(L,c.value),k=J?J.map(function(re){return re[c.value.value]}):[].concat(yt(Z),[K]),F=Zs(k),O=G.includes(F),Q=m.has(F),oe=N.has(F),se=function(){!T&&(!S||!H)&&X(k)},he=function(){d(L)&&y(k,H)},pe;return typeof L.title=="string"?pe=L.title:typeof U=="string"&&(pe=U),D("li",{key:F,class:[s,(Y={},ce(Y,"".concat(s,"-expand"),!H),ce(Y,"".concat(s,"-active"),b===K),ce(Y,"".concat(s,"-disabled"),T),ce(Y,"".concat(s,"-loading"),O),Y)],style:C.value,role:"menuitemcheckbox",title:pe,"aria-checked":Q,"data-path-key":F,onClick:function(){se(),(!f||H)&&he()},onDblclick:function(){W.value&&p(!1)},onMouseenter:function(){S&&se()},onMousedown:function(_){_.preventDefault()}},[f&&D(pp,{prefixCls:"".concat(r,"-checkbox"),checked:Q,halfChecked:oe,disabled:T,onClick:function(_){_.stopPropagation(),he()}},null),D("div",{class:"".concat(s,"-content")},[U]),!O&&R&&!H&&D("div",{class:"".concat(s,"-expand-icon")},[R]),O&&g&&D("div",{class:"".concat(s,"-loading-icon")},[g])])})])}yp.props=["prefixCls","multiple","options","activeValue","prevValuePath","onToggleOpen","onSelect","onActive","checkedSet","halfCheckedSet","loadingKeys","isSelectable"];yp.displayName="Column";yp.inheritAttrs=!1;const One=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,a=t.slots,l=Jh(),o=Ne(),r=de(function(){return l.direction==="rtl"}),f=mp(),v=f.options,b=f.values,Z=f.halfValues,p=f.fieldNames,y=f.changeOnSelect,X=f.onSelect,m=f.searchOptions,N=f.dropdownPrefixCls,G=f.loadData,d=f.expandTrigger,u=f.customSlots,s=de(function(){return N.value||l.prefixCls}),h=Gn([]),c=function(U){if(!(!G.value||l.searchValue)){var K=gh(U,v.value,p.value),H=K.map(function(O){var Q=O.option;return Q}),k=H[H.length-1];if(k&&!Cd(k,p.value)){var F=Zs(U);h.value=[].concat(yt(h.value),[F]),G.value(H)}}};qt(function(){h.value.length&&h.value.forEach(function(J){var U=dne(J),K=gh(U,v.value,p.value,!0).map(function(k){var F=k.option;return F}),H=K[K.length-1];(!H||H[p.value.children]||Cd(H,p.value))&&(h.value=h.value.filter(function(k){return k!==J}))})});var W=de(function(){return new Set(du(b.value))}),M=de(function(){return new Set(du(Z.value))}),I=Jne(),w=ft(I,2),C=w[0],x=w[1],R=function(U){x(U),c(U)},g=function(U){var K=U.disabled,H=Cd(U,p.value);return!K&&(H||y.value||l.multiple)},S=function(U,K){var H=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;X(U),!l.multiple&&(K||y.value&&(d.value==="hover"||H))&&l.toggleOpen(!1)},L=de(function(){return l.searchValue?m.value:v.value}),V=de(function(){for(var J=[{options:L.value}],U=L.value,K=function(O){var Q=C.value[O],oe=U.find(function(he){return he[p.value.value]===Q}),se=oe==null?void 0:oe[p.value.children];if(!(se!=null&&se.length))return"break";U=se,J.push({options:se})},H=0;H"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Pb(n,e,t){return Xle()?Pb=Reflect.construct.bind():Pb=function(a,l,o){var r=[null];r.push.apply(r,l);var f=Function.bind.apply(a,r),v=new f;return o&&Vh(v,o.prototype),v},Pb.apply(null,arguments)}function Nle(n){return Function.toString.call(n).indexOf("[native code]")!==-1}function Vv(n){var e=typeof Map=="function"?new Map:void 0;return Vv=function(i){if(i===null||!Nle(i))return i;if(typeof i!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(i))return e.get(i);e.set(i,a)}function a(){return Pb(i,arguments,gv(this).constructor)}return a.prototype=Object.create(i.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Vh(a,i)},Vv(n)}var Mle=/%[sdj%]/g,Ile=function(){};typeof process<"u"&&process.env;function Lv(n){if(!n||!n.length)return null;var e={};return n.forEach(function(t){var i=t.field;e[i]=e[i]||[],e[i].push(t)}),e}function ka(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i=l)return r;switch(r){case"%s":return String(t[a++]);case"%d":return Number(t[a++]);case"%j":try{return JSON.stringify(t[a++])}catch{return"[Circular]"}break;default:return r}});return o}return n}function Yle(n){return n==="string"||n==="url"||n==="hex"||n==="email"||n==="date"||n==="pattern"}function sl(n,e){return!!(n==null||e==="array"&&Array.isArray(n)&&!n.length||Yle(e)&&typeof n=="string"&&!n)}function wle(n,e,t){var i=[],a=0,l=n.length;function o(r){i.push.apply(i,r||[]),a++,a===l&&t(i)}n.forEach(function(r){e(r,o)})}function Dw(n,e,t){var i=0,a=n.length;function l(o){if(o&&o.length){t(o);return}var r=i;i=i+1,r()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Cd={integer:function(e){return Cd.number(e)&&parseInt(e,10)===e},float:function(e){return Cd.number(e)&&!Cd.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!Cd.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(jw.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(Lle())},hex:function(e){return typeof e=="string"&&!!e.match(jw.hex)}},Rle=function(e,t,i,a,l){if(e.required&&t===void 0){FC(e,t,i,a,l);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],r=e.type;o.indexOf(r)>-1?Cd[r](t)||a.push(ka(l.messages.types[r],e.fullField,e.type)):r&&typeof t!==e.type&&a.push(ka(l.messages.types[r],e.fullField,e.type))},Tle=function(e,t,i,a,l){var o=typeof e.len=="number",r=typeof e.min=="number",f=typeof e.max=="number",v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=t,Z=null,p=typeof t=="number",y=typeof t=="string",X=Array.isArray(t);if(p?Z="number":y?Z="string":X&&(Z="array"),!Z)return!1;X&&(b=t.length),y&&(b=t.replace(v,"_").length),o?b!==e.len&&a.push(ka(l.messages[Z].len,e.fullField,e.len)):r&&!f&&be.max?a.push(ka(l.messages[Z].max,e.fullField,e.max)):r&&f&&(be.max)&&a.push(ka(l.messages[Z].range,e.fullField,e.min,e.max))},Bc="enum",xle=function(e,t,i,a,l){e[Bc]=Array.isArray(e[Bc])?e[Bc]:[],e[Bc].indexOf(t)===-1&&a.push(ka(l.messages[Bc],e.fullField,e[Bc].join(", ")))},Cle=function(e,t,i,a,l){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||a.push(ka(l.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(t)||a.push(ka(l.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},Pn={required:FC,whitespace:Vle,type:Rle,range:Tle,enum:xle,pattern:Cle},Sle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,a,o,l,"string"),sl(t,"string")||(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l),Pn.pattern(e,t,a,o,l),e.whitespace===!0&&Pn.whitespace(e,t,a,o,l))}i(o)},zle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},kle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(t===""&&(t=void 0),sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Fle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},Jle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),sl(t)||Pn.type(e,t,a,o,l)}i(o)},Dle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Ole=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},jle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(t==null&&!e.required)return i();Pn.required(e,t,a,o,l,"array"),t!=null&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Ule=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},Ele="enum",Kle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn[Ele](e,t,a,o,l)}i(o)},Hle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,a,o,l),sl(t,"string")||Pn.pattern(e,t,a,o,l)}i(o)},Ple=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"date")&&!e.required)return i();if(Pn.required(e,t,a,o,l),!sl(t,"date")){var f;t instanceof Date?f=t:f=new Date(t),Pn.type(e,f,a,o,l),f&&Pn.range(e,f.getTime(),a,o,l)}}i(o)},Qle=function(e,t,i,a,l){var o=[],r=Array.isArray(t)?"array":typeof t;Pn.required(e,t,a,o,l,r),i(o)},vZ=function(e,t,i,a,l){var o=e.type,r=[],f=e.required||!e.required&&a.hasOwnProperty(e.field);if(f){if(sl(t,o)&&!e.required)return i();Pn.required(e,t,a,r,l,o),sl(t,o)||Pn.type(e,t,a,r,l)}i(r)},Ble=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l)}i(o)},eh={string:Sle,method:zle,number:kle,boolean:Fle,regexp:Jle,integer:Dle,float:Ole,array:jle,object:Ule,enum:Kle,pattern:Hle,date:Ple,url:vZ,hex:vZ,email:vZ,required:Qle,any:Ble};function gv(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Vv=gv(),Hh=function(){function n(t){this.rules=null,this._messages=Vv,this.define(t)}var e=n.prototype;return e.define=function(i){var a=this;if(!i)throw new Error("Cannot configure a schema with no rules");if(typeof i!="object"||Array.isArray(i))throw new Error("Rules must be an object");this.rules={},Object.keys(i).forEach(function(l){var o=i[l];a.rules[l]=Array.isArray(o)?o:[o]})},e.messages=function(i){return i&&(this._messages=Ow(gv(),i)),this._messages},e.validate=function(i,a,l){var o=this;a===void 0&&(a={}),l===void 0&&(l=function(){});var r=i,f=a,v=l;if(typeof f=="function"&&(v=f,f={}),!this.rules||Object.keys(this.rules).length===0)return v&&v(null,r),Promise.resolve(r);function b(m){var N=[],G={};function d(s){if(Array.isArray(s)){var h;N=(h=N).concat.apply(h,s)}else N.push(s)}for(var u=0;u3&&arguments[3]!==void 0?arguments[3]:!1;return e.length&&i&&t===void 0&&!JC(n,e.slice(0,-1))?n:DC(n,e,t,i)}function Lv(n){return vs(n)}function _le(n,e){var t=JC(n,e);return t}function $le(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=Ale(n,e,t,i);return a}function qle(n,e){return n&&n.some(function(t){return tae(t,e)})}function Uw(n){return Yt(n)==="object"&&n!==null&&Object.getPrototypeOf(n)===Object.prototype}function OC(n,e){var t=Array.isArray(n)?yt(n):P({},n);return e&&Object.keys(e).forEach(function(i){var a=t[i],l=e[i],o=Uw(a)&&Uw(l);t[i]=o?OC(a,l||{}):l}),t}function eae(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i-1?a[l?e[o]:o]:void 0}}var Zae=Math.max;function vae(n,e,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:o1(t);return a<0&&(a=Zae(i+a,0)),qx(n,H1(e),a)}var Wae=yae(vae);const Gae=Wae;var KC=Symbol("formContextKey"),HC=function(e){hn(KC,e)},P1=function(){return un(KC,{name:de(function(){}),labelAlign:de(function(){return"right"}),vertical:de(function(){return!1}),addField:function(t,i){},removeField:function(t){},model:de(function(){}),rules:de(function(){}),colon:de(function(){}),labelWrap:de(function(){}),labelCol:de(function(){}),requiredMark:de(function(){return!1}),validateTrigger:de(function(){}),onValidate:function(){},validateMessages:de(function(){return pp})})},PC=Symbol("formItemPrefixContextKey"),Xae=function(e){hn(PC,e)},Nae=function(){return un(PC,{prefixCls:de(function(){return""})})},Q1=function(e,t){var i,a,l,o,r=t.slots,f=t.emit,v=t.attrs,b=P(P({},e),v),Z=b.prefixCls,p=b.htmlFor,y=b.labelCol,X=b.labelAlign,m=b.colon,N=b.required,G=b.requiredMark,d=Br("Form"),u=ft(d,1),s=u[0],h=(i=e.label)!==null&&i!==void 0?i:(a=r.label)===null||a===void 0?void 0:a.call(r);if(!h)return null;var c=P1(),W=c.vertical,M=c.labelAlign,I=c.labelCol,w=c.labelWrap,C=c.colon,x=y||(I==null?void 0:I.value)||{},R=X||(M==null?void 0:M.value),g="".concat(Z,"-item-label"),S=_e(g,R==="left"&&"".concat(g,"-left"),x.class,ce({},"".concat(g,"-wrap"),!!w.value)),L=h,V=m===!0||(C==null?void 0:C.value)!==!1&&m!==!1,Y=V&&!W.value;if(Y&&typeof h=="string"&&h.trim()!==""&&(L=h.replace(/[:|:]\s*$/,"")),L=D(ln,null,[L,(l=r.tooltip)===null||l===void 0?void 0:l.call(r,{class:"".concat(Z,"-item-tooltip")})]),G==="optional"&&!N){var T,J;L=D(ln,null,[L,D("span",{class:"".concat(Z,"-item-optional")},[((T=s.value)===null||T===void 0?void 0:T.optional)||((J=Mr.Form)===null||J===void 0?void 0:J.optional)])])}var U=_e((o={},ce(o,"".concat(Z,"-item-required"),N),ce(o,"".concat(Z,"-item-required-mark-optional"),G==="optional"),ce(o,"".concat(Z,"-item-no-colon"),!V),o));return D(sp,P(P({},x),{},{class:S}),{default:function(){return[D("label",{for:p,class:U,title:typeof h=="string"?h:"",onClick:function(k){return f("click",k)}},[L])]}})};Q1.displayName="FormItemLabel";Q1.inheritAttrs=!1;const Mae=Q1,Iae=He({compatConfig:{MODE:3},name:"ErrorList",props:["errors","help","onDomErrorVisibleChange","helpStatus","warnings"],setup:function(e){var t=Nt("",e),i=t.prefixCls,a=Nae(),l=a.prefixCls,o=a.status,r=de(function(){return"".concat(l.value,"-item-explain")}),f=de(function(){return!!(e.errors&&e.errors.length)}),v=Ne(o.value);return rt([f,o],function(){f.value&&(v.value=o.value)}),function(){var b,Z,p=Dh("".concat(i.value,"-show-help-item")),y=BW("".concat(i.value,"-show-help-item"),p);return y.class=r.value,(b=e.errors)!==null&&b!==void 0&&b.length?D(JW,P(P({},y),{},{tag:"div"}),{default:function(){return[(Z=e.errors)===null||Z===void 0?void 0:Z.map(function(m,N){return D("div",{key:N,role:"alert",class:v.value?"".concat(r.value,"-").concat(v.value):""},[m])})]}}):null}}});var Yae={success:Sh,warning:Ch,error:So,validating:Yr},wae=He({compatConfig:{MODE:3},slots:["help","extra","errors"],inheritAttrs:!1,props:["prefixCls","errors","hasFeedback","onDomErrorVisibleChange","wrapperCol","help","extra","status"],setup:function(e,t){var i=t.slots,a=P1(),l=a.wrapperCol,o=P({},a);return delete o.labelCol,delete o.wrapperCol,HC(o),Xae({prefixCls:de(function(){return e.prefixCls}),status:de(function(){return e.status})}),function(){var r,f,v,b=e.prefixCls,Z=e.wrapperCol,p=e.help,y=p===void 0?(r=i.help)===null||r===void 0?void 0:r.call(i):p,X=e.errors,m=X===void 0?(f=i.errors)===null||f===void 0?void 0:f.call(i):X,N=e.hasFeedback,G=e.status,d=e.extra,u=d===void 0?(v=i.extra)===null||v===void 0?void 0:v.call(i):d,s="".concat(b,"-item"),h=Z||(l==null?void 0:l.value)||{},c=_e("".concat(s,"-control"),h.class),W=G&&Yae[G];return D(sp,P(P({},h),{},{class:c}),{default:function(){var I;return D(ln,null,[D("div",{class:"".concat(s,"-control-input")},[D("div",{class:"".concat(s,"-control-input-content")},[(I=i.default)===null||I===void 0?void 0:I.call(i)]),N&&W?D("span",{class:"".concat(s,"-children-icon")},[D(W,null,null)]):null]),D(Iae,{errors:m,help:y,class:"".concat(s,"-explain-connected")},null),u?D("div",{class:"".concat(s,"-extra")},[u]):null])}})}}});const gae=wae;function Vae(n){var e=Gn(n.value.slice()),t=null;return qt(function(){clearTimeout(t),t=setTimeout(function(){e.value=n.value},n.value.length?0:10)}),e}pi("success","warning","error","validating","");function WZ(n,e,t){var i=n,a=e,l=0;try{for(var o=a.length;l0&&arguments[0]!==void 0?arguments[0]:[];if(c.value==="validating"){var oe=Q.filter(function(se){return se&&se.errors.length});c.value=oe.length?"error":"success",Z.value=oe.map(function(se){return se.errors}),v.onValidate(b.value,!Z.value.length,Z.value.length?on(Z.value[0]):null)}}),O}},I=function(){M({triggerName:"blur"})},w=function(){if(p.value){p.value=!1;return}M({triggerName:"change"})},C=function(){c.value=e.validateStatus,p.value=!1,Z.value=[]},x=function(){c.value=e.validateStatus,p.value=!0,Z.value=[];var J=v.model.value||{},U=G.value,K=WZ(J,X.value,!0);Array.isArray(U)?K.o[K.k]=[].concat(d.value):K.o[K.k]=d.value,cn(function(){p.value=!1})},R=de(function(){return e.htmlFor===void 0?m.value:e.htmlFor}),g=function(){var J=R.value;if(!(!J||!y.value)){var U=y.value.$el.querySelector('[id="'.concat(J,'"]'));U&&U.focus&&U.focus()}};l({onFieldBlur:I,onFieldChange:w,clearValidate:C,resetField:x}),d6({id:m,onFieldBlur:function(){e.autoLink&&I()},onFieldChange:function(){e.autoLink&&w()},clearValidate:C},de(function(){return!!(e.autoLink&&v.model.value&&b.value)}));var S=!1;rt(b,function(T){T?S||(S=!0,v.addField(o,{fieldValue:G,fieldId:m,fieldName:b,resetField:x,clearValidate:C,namePath:X,validateRules:M,rules:s})):(S=!1,v.removeField(o))},{immediate:!0}),fn(function(){v.removeField(o)});var L=Vae(Z),V=de(function(){return e.validateStatus!==void 0?e.validateStatus:L.value.length?"error":c.value}),Y=de(function(){var T;return T={},ce(T,"".concat(f.value,"-item"),!0),ce(T,"".concat(f.value,"-item-has-feedback"),V.value&&e.hasFeedback),ce(T,"".concat(f.value,"-item-has-success"),V.value==="success"),ce(T,"".concat(f.value,"-item-has-warning"),V.value==="warning"),ce(T,"".concat(f.value,"-item-has-error"),V.value==="error"),ce(T,"".concat(f.value,"-item-is-validating"),V.value==="validating"),ce(T,"".concat(f.value,"-item-hidden"),e.hidden),T});return function(){var T,J;if(e.noStyle)return(T=i.default)===null||T===void 0?void 0:T.call(i);var U=(J=e.help)!==null&&J!==void 0?J:i.help?Ri(i.help()):null;return D(z1,P(P({},a),{},{class:[Y.value,U!=null||L.value.length?"".concat(f.value,"-item-with-help"):"",a.class],key:"row"}),{default:function(){var H,k,F,O;return D(ln,null,[D(Mae,P(P({},e),{},{htmlFor:R.value,required:h.value,requiredMark:v.requiredMark.value,prefixCls:f.value,onClick:g,label:(H=e.label)!==null&&H!==void 0?H:(k=i.label)===null||k===void 0?void 0:k.call(i)}),null),D(gae,P(P({},e),{},{errors:U!=null?vs(U):L.value,prefixCls:f.value,status:V.value,ref:y,help:U,extra:(F=e.extra)!==null&&F!==void 0?F:(O=i.extra)===null||O===void 0?void 0:O.call(i)}),{default:i.default})])}})}}});function BC(n){var e=!1,t=n.length,i=[];return n.length?new Promise(function(a,l){n.forEach(function(o,r){o.catch(function(f){return e=!0,f}).then(function(f){t-=1,i[r]=f,!(t>0)&&(e&&l(i),a(i))})})}):Promise.resolve([])}function Kw(n){return typeof n=="object"&&n!=null&&n.nodeType===1}function Hw(n,e){return(!e||n!=="hidden")&&n!=="visible"&&n!=="clip"}function GZ(n,e){if(n.clientHeighte||l>n&&o=e&&r>=t?l-n-i:o>e&&rt?o-e+a:0}var Pw=function(n,e){var t=window,i=e.scrollMode,a=e.block,l=e.inline,o=e.boundary,r=e.skipOverflowHiddenElements,f=typeof o=="function"?o:function(E){return E!==o};if(!Kw(n))throw new TypeError("Invalid target");for(var v,b,Z=document.scrollingElement||document.documentElement,p=[],y=n;Kw(y)&&f(y);){if((y=(b=(v=y).parentElement)==null?v.getRootNode().host||null:b)===Z){p.push(y);break}y!=null&&y===document.body&&GZ(y)&&!GZ(document.documentElement)||y!=null&&GZ(y,r)&&p.push(y)}for(var X=t.visualViewport?t.visualViewport.width:innerWidth,m=t.visualViewport?t.visualViewport.height:innerHeight,N=window.scrollX||pageXOffset,G=window.scrollY||pageYOffset,d=n.getBoundingClientRect(),u=d.height,s=d.width,h=d.top,c=d.right,W=d.bottom,M=d.left,I=a==="start"||a==="nearest"?h:a==="end"?W:h+u/2,w=l==="center"?M+s/2:l==="end"?c:M,C=[],x=0;x=0&&M>=0&&W<=m&&c<=X&&h>=V&&W<=T&&M>=J&&c<=Y)return C;var U=getComputedStyle(R),K=parseInt(U.borderLeftWidth,10),H=parseInt(U.borderTopWidth,10),k=parseInt(U.borderRightWidth,10),F=parseInt(U.borderBottomWidth,10),O=0,Q=0,oe="offsetWidth"in R?R.offsetWidth-R.clientWidth-K-k:0,se="offsetHeight"in R?R.offsetHeight-R.clientHeight-H-F:0,he="offsetWidth"in R?R.offsetWidth===0?0:L/R.offsetWidth:0,pe="offsetHeight"in R?R.offsetHeight===0?0:S/R.offsetHeight:0;if(Z===R)O=a==="start"?I:a==="end"?I-m:a==="nearest"?mb(G,G+m,m,H,F,G+I,G+I+u,u):I-m/2,Q=l==="start"?w:l==="center"?w-X/2:l==="end"?w-X:mb(N,N+X,X,K,k,N+w,N+w+s,s),O=Math.max(0,O+G),Q=Math.max(0,Q+N);else{O=a==="start"?I-V-H:a==="end"?I-T+F+se:a==="nearest"?mb(V,T,S,H,F+se,I,I+u,u):I-(V+S/2)+se/2,Q=l==="start"?w-J-K:l==="center"?w-(J+L/2)+oe/2:l==="end"?w-Y+k+oe:mb(J,Y,L,K,k+oe,w,w+s,s);var re=R.scrollLeft,_=R.scrollTop;I+=_-(O=Math.max(0,Math.min(_+O/pe,R.scrollHeight-S/pe+se))),w+=re-(Q=Math.max(0,Math.min(re+Q/he,R.scrollWidth-L/he+oe)))}C.push({el:R,top:O,left:Q})}return C};function AC(n){return n===Object(n)&&Object.keys(n).length!==0}function xae(n,e){e===void 0&&(e="auto");var t="scrollBehavior"in document.body.style;n.forEach(function(i){var a=i.el,l=i.top,o=i.left;a.scroll&&t?a.scroll({top:l,left:o,behavior:e}):(a.scrollTop=l,a.scrollLeft=o)})}function Cae(n){return n===!1?{block:"end",inline:"nearest"}:AC(n)?n:{block:"start",inline:"nearest"}}function Sae(n,e){var t=n.isConnected||n.ownerDocument.documentElement.contains(n);if(AC(e)&&typeof e.behavior=="function")return e.behavior(t?Pw(n,e):[]);if(t){var i=Cae(e);return xae(Pw(n,i),i.behavior)}}var zae=Math.min;function kae(n,e,t){for(var i=t?t3:e3,a=n[0].length,l=n.length,o=l,r=Array(l),f=1/0,v=[];o--;){var b=n[o];o&&e&&(b=tp(b,U0(e))),f=zae(b.length,f),r[o]=!t&&(e||a>=120&&b.length>=120)?new Lu(o&&b):void 0}b=n[0];var Z=-1,p=r[0];e:for(;++Z1),l}),Kh(n,CC(n),t),i&&(t=qd(t,Pae|Qae|Bae,Hae));for(var a=e.length;a--;)Kae(t,e[a]);return t});const _ae=Aae;function Qw(n){var e=!1;return n&&n.length&&n.every(function(t){return t.required?(e=!0,!1):!0}),e}function Bw(n){return n==null?[]:Array.isArray(n)?n:[n]}function XZ(n,e,t){var i=n;e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var a=e.split("."),l=0,o=a.length;l1&&arguments[1]!==void 0?arguments[1]:Ne({}),t=arguments.length>2?arguments[2]:void 0,i=Kb(mi(n)),a=zn({}),l=Gn([]),o=function(s){Xn(mi(n),P(P({},Kb(i)),s)),cn(function(){Object.keys(a).forEach(function(h){a[h]={autoLink:!1,required:Qw(mi(e)[h])}})})},r=function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],h=arguments.length>1?arguments[1]:void 0;return h.length?s.filter(function(c){var W=Bw(c.trigger||"change");return jae(W,h).length}):s},f=null,v=function(s){for(var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=arguments.length>2?arguments[2]:void 0,W=[],M={},I=function(S){var L=s[S],V=XZ(mi(n),L,c);if(!V.isValid)return"continue";M[L]=V.v;var Y=r(mi(e)[L],Bw(h&&h.trigger));Y.length&&W.push(b(L,V.v,Y,h||{}).then(function(){return{name:L,errors:[],warnings:[]}}).catch(function(T){var J=[],U=[];return T.forEach(function(K){var H=K.rule.warningOnly,k=K.errors;H?U.push.apply(U,yt(k)):J.push.apply(J,yt(k))}),J.length?Promise.reject({name:L,errors:J,warnings:U}):{name:L,errors:J,warnings:U}}))},w=0;w3&&arguments[3]!==void 0?arguments[3]:{},M=jC([s],h,c,P({validateMessages:pp},W),!!W.validateFirst);return a[s]?(a[s].validateStatus="validating",M.catch(function(I){return I}).then(function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(a[s].validateStatus==="validating"){var w,C=I.filter(function(x){return x&&x.errors.length});a[s].validateStatus=C.length?"error":"success",a[s].help=C.length?C.map(function(x){return x.errors}):null,t==null||(w=t.onValidate)===null||w===void 0||w.call(t,s,!C.length,C.length?on(a[s].help[0]):null)}}),M):M.catch(function(I){return I})},Z=function(s,h){var c=[],W=!0;s?Array.isArray(s)?c=s:c=[s]:(W=!1,c=l.value);var M=v(c,h||{},W);return M.catch(function(I){return I}),M},p=function(s){var h=[];s?Array.isArray(s)?h=s:h=[s]:h=l.value,h.forEach(function(c){a[c]&&Xn(a[c],{validateStatus:"",help:null})})},y=function(s){for(var h={autoLink:!1},c=[],W=Array.isArray(s)?s:[s],M=0;M-1}):Object.values(s)},M=function(Y){if(!e.model){Ci(!1,"Form","model is required for resetFields to work.");return}W(Y).forEach(function(T){T.resetField()})},I=function(Y){W(Y).forEach(function(T){T.clearValidate()})},w=function(Y){var T=e.scrollToFirstError;if(i("finishFailed",Y),T&&Y.errorFields.length){var J={};Yt(T)==="object"&&(J=T),x(Y.errorFields[0].name,J)}},C=function(){return S.apply(void 0,arguments)},x=function(Y){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},J=W(Y?[Y]:void 0);if(J.length){var U=J[0].fieldId.value,K=U?document.getElementById(U):null;K&&Sae(K,P({scrollMode:"if-needed",block:"nearest"},T))}},R=function(){var Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(Y===!0){var T=[];return Object.values(s).forEach(function(J){var U=J.namePath;T.push(U.value)}),Ew(e.model,T)}else return Ew(e.model,Y)},g=function(Y,T){if(Ci(!(Y instanceof Function),"Form","validateFields/validateField/validate not support callback, please use promise instead"),!e.model)return Ci(!1,"Form","model is required for validateFields to work."),Promise.reject("Form `model` is required for validateFields to work.");var J=!!Y,U=J?vs(Y).map(Lv):[],K=[];Object.values(s).forEach(function(F){var O;if(J||U.push(F.namePath.value),!!((O=F.rules)!==null&&O!==void 0&&O.value.length)){var Q=F.namePath.value;if(!J||qle(U,Q)){var oe=F.validateRules(P({validateMessages:G.value},T));K.push(oe.then(function(){return{name:Q,errors:[],warnings:[]}}).catch(function(se){var he=[],pe=[];return se.forEach(function(re){var _=re.rule.warningOnly,E=re.errors;_?pe.push.apply(pe,yt(E)):he.push.apply(he,yt(E))}),he.length?Promise.reject({name:Q,errors:he,warnings:pe}):{name:Q,errors:he,warnings:pe}}))}}});var H=BC(K);u.value=H;var k=H.then(function(){return u.value===H?Promise.resolve(R(U)):Promise.reject([])}).catch(function(F){var O=F.filter(function(Q){return Q&&Q.errors.length});return Promise.reject({values:R(U),errorFields:O,outOfDate:u.value!==H})});return k.catch(function(F){return F}),k},S=function(){return g.apply(void 0,arguments)},L=function(Y){if(Y.preventDefault(),Y.stopPropagation(),i("submit",Y),e.model){var T=g();T.then(function(J){i("finish",J)}).catch(function(J){w(J)})}};return l({resetFields:M,clearValidate:I,validateFields:g,getFieldsValue:R,validate:C,scrollToField:x}),HC({model:de(function(){return e.model}),name:de(function(){return e.name}),labelAlign:de(function(){return e.labelAlign}),labelCol:de(function(){return e.labelCol}),labelWrap:de(function(){return e.labelWrap}),wrapperCol:de(function(){return e.wrapperCol}),vertical:de(function(){return e.layout==="vertical"}),colon:X,requiredMark:y,validateTrigger:de(function(){return e.validateTrigger}),rules:de(function(){return e.rules}),addField:h,removeField:c,onValidate:function(Y,T,J){i("validate",Y,T,J)},validateMessages:G}),rt(function(){return e.rules},function(){e.validateOnRuleChange&&g()}),function(){var V;return D("form",P(P({},o),{},{onSubmit:L,class:[d.value,o.class]}),[(V=a.default)===null||V===void 0?void 0:V.call(a)])}}});const us=tre;us.useInjectFormItemContext=Hi;us.ItemRest=Dm;us.install=function(n){return n.component(us.name,us),n.component(us.Item.name,us.Item),n.component(Dm.name,Dm),n};var nre=["notFoundContent","expandIcon","multiple","bordered","allowClear","choiceTransitionName","transitionName","id"];function ire(n,e,t){var i=n.toLowerCase().split(e).reduce(function(o,r,f){return f===0?[r]:[].concat(yt(o),[e,r])},[]),a=[],l=0;return i.forEach(function(o,r){var f=l+o.length,v=n.slice(l,f);l=f,r%2===1&&(v=D("span",{class:"".concat(t,"-menu-item-keyword"),key:"seperator"},[v])),a.push(v)}),a}var lre=function(e){var t=e.inputValue,i=e.path,a=e.prefixCls,l=e.fieldNames,o=[],r=t.toLowerCase();return i.forEach(function(f,v){v!==0&&o.push(" / ");var b=f[l.label],Z=Yt(b);(Z==="string"||Z==="number")&&(b=ire(String(b),r,a)),o.push(b)}),o};function are(){return P(P({},dn(RC(),["customSlots","checkable","options"])),{},{multiple:{type:Boolean,default:void 0},size:String,bordered:{type:Boolean,default:void 0},placement:{type:String},suffixIcon:We.any,options:Array,"onUpdate:value":Function})}var rre=He({compatConfig:{MODE:3},name:"ACascader",inheritAttrs:!1,props:pn(are(),{bordered:!0,choiceTransitionName:"",allowClear:!0}),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=t.emit,r=Hi(),f=Nt("cascader",e),v=f.prefixCls,b=f.rootPrefixCls,Z=f.getPrefixCls,p=f.direction,y=f.getPopupContainer,X=f.renderEmpty,m=f.size,N=de(function(){return Z("select",e.prefixCls)}),G=de(function(){return p.value==="rtl"}),d=de(function(){if(!e.showSearch)return e.showSearch;var I={render:lre};return Yt(e.showSearch)==="object"&&(I=P(P({},I),e.showSearch)),I}),u=de(function(){return _e(e.dropdownClassName||e.popupClassName,"".concat(v.value,"-dropdown"),ce({},"".concat(v.value,"-dropdown-rtl"),G.value))}),s=Ne();a({focus:function(){var w;(w=s.value)===null||w===void 0||w.focus()},blur:function(){var w;(w=s.value)===null||w===void 0||w.blur()}});var h=function(){for(var w=arguments.length,C=new Array(w),x=0;x=n.length?{done:!0}:{done:!1,value:n[i++]}},e:function(v){throw v},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var l=!0,o=!1,r;return{s:function(){t=t.call(n)},n:function(){var v=t.next();return l=v.done,v},e:function(v){o=!0,r=v},f:function(){try{!l&&t.return!=null&&t.return()}finally{if(o)throw r}}}}const l0=He({compatConfig:{MODE:3},name:"ACheckboxGroup",props:cre(),setup:function(e,t){var i=t.slots,a=t.emit,l=t.expose,o=Hi(),r=Nt("checkbox",e),f=r.prefixCls,v=r.direction,b=Ne((e.value===void 0?e.defaultValue:e.value)||[]);rt(function(){return e.value},function(){b.value=e.value||[]});var Z=de(function(){return e.options.map(function(d){return typeof d=="string"||typeof d=="number"?{label:d,value:d}:d})}),p=Ne(Symbol()),y=Ne(new Map),X=function(u){y.value.delete(u),p.value=Symbol()},m=function(u,s){y.value.set(u,s),p.value=Symbol()},N=Ne(new Map);rt(p,function(){var d=new Map,u=bre(y.value.values()),s;try{for(u.s();!(s=u.n()).done;){var h=s.value;d.set(h,!0)}}catch(c){u.e(c)}finally{u.f()}N.value=d});var G=function(u){var s=b.value.indexOf(u.value),h=yt(b.value);s===-1?h.push(u.value):h.splice(s,1),e.value===void 0&&(b.value=h);var c=h.filter(function(W){return N.value.has(W)}).sort(function(W,M){var I=Z.value.findIndex(function(C){return C.value===W}),w=Z.value.findIndex(function(C){return C.value===M});return I-w});a("update:value",c),a("change",c),o.onFieldChange()};return hn(_C,{cancelValue:X,registerValue:m,toggleOption:G,mergedValue:b,name:de(function(){return e.name}),disabled:de(function(){return e.disabled})}),l({mergedValue:b}),function(){var d,u=e.id,s=u===void 0?o.id.value:u,h=null,c="".concat(f.value,"-group");return Z.value&&Z.value.length>0&&(h=Z.value.map(function(W){var M;return D(lr,{prefixCls:f.value,key:W.value.toString(),disabled:"disabled"in W?W.disabled:e.disabled,indeterminate:W.indeterminate,value:W.value,checked:b.value.indexOf(W.value)!==-1,onChange:W.onChange,class:"".concat(c,"-item")},{default:function(){return[W.label===void 0?(M=i.label)===null||M===void 0?void 0:M.call(i,W):W.label]}})})),D("div",{class:[c,ce({},"".concat(c,"-rtl"),v.value==="rtl")],id:s},[h||((d=i.default)===null||d===void 0?void 0:d.call(i))])}}});lr.Group=l0;lr.install=function(n){return n.component(lr.name,lr),n.component(l0.name,l0),n};var mre=function(){return{actions:Array,author:We.any,avatar:We.any,content:We.any,prefixCls:String,datetime:We.any}},pre=He({compatConfig:{MODE:3},name:"AComment",props:mre(),slots:["actions","author","avatar","content","datetime"],setup:function(e,t){var i=t.slots,a=Nt("comment",e),l=a.prefixCls,o=a.direction,r=function(b,Z){return D("div",{class:"".concat(b,"-nested")},[Z])},f=function(b){if(!b||!b.length)return null;var Z=b.map(function(p,y){return D("li",{key:"action-".concat(y)},[p])});return Z};return function(){var v,b,Z,p,y,X,m,N,G,d,u,s=l.value,h=(v=e.actions)!==null&&v!==void 0?v:(b=i.actions)===null||b===void 0?void 0:b.call(i),c=(Z=e.author)!==null&&Z!==void 0?Z:(p=i.author)===null||p===void 0?void 0:p.call(i),W=(y=e.avatar)!==null&&y!==void 0?y:(X=i.avatar)===null||X===void 0?void 0:X.call(i),M=(m=e.content)!==null&&m!==void 0?m:(N=i.content)===null||N===void 0?void 0:N.call(i),I=(G=e.datetime)!==null&&G!==void 0?G:(d=i.datetime)===null||d===void 0?void 0:d.call(i),w=D("div",{class:"".concat(s,"-avatar")},[typeof W=="string"?D("img",{src:W,alt:"comment-avatar"},null):W]),C=h?D("ul",{class:"".concat(s,"-actions")},[f(Array.isArray(h)?h:[h])]):null,x=D("div",{class:"".concat(s,"-content-author")},[c&&D("span",{class:"".concat(s,"-content-author-name")},[c]),I&&D("span",{class:"".concat(s,"-content-author-time")},[I])]),R=D("div",{class:"".concat(s,"-content")},[x,D("div",{class:"".concat(s,"-content-detail")},[M]),C]),g=D("div",{class:"".concat(s,"-inner")},[w,R]),S=ti((u=i.default)===null||u===void 0?void 0:u.call(i));return D("div",{class:[s,ce({},"".concat(s,"-rtl"),o.value==="rtl")]},[g,S&&S.length?r(s,S):null])}}});const yre=wi(pre);var Zre=function(e,t){var i=t.attrs,a=t.slots;return D(qi,P(P({size:"small",type:"primary"},e),i),a)};const vre=Zre;var Wre=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},"onUpdate:checked":Function}},Gre=He({compatConfig:{MODE:3},name:"ACheckableTag",props:Wre(),setup:function(e,t){var i=t.slots,a=t.emit,l=Nt("tag",e),o=l.prefixCls,r=function(b){var Z=e.checked;a("update:checked",!Z),a("change",!Z),a("click",b)},f=de(function(){var v;return _e(o.value,(v={},ce(v,"".concat(o.value,"-checkable"),!0),ce(v,"".concat(o.value,"-checkable-checked"),e.checked),v))});return function(){var v;return D("span",{class:f.value,onClick:r},[(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});const a0=Gre;var Xre=new RegExp("^(".concat(QG.join("|"),")(-inverse)?$")),Nre=new RegExp("^(".concat(C6.join("|"),")$")),Mre=function(){return{prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:We.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},"onUpdate:visible":Function,icon:We.any}},th=He({compatConfig:{MODE:3},name:"ATag",props:Mre(),slots:["closeIcon","icon"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs,o=Nt("tag",e),r=o.prefixCls,f=o.direction,v=Ne(!0);qt(function(){e.visible!==void 0&&(v.value=e.visible)});var b=function(X){X.stopPropagation(),a("update:visible",!1),a("close",X),!X.defaultPrevented&&e.visible===void 0&&(v.value=!1)},Z=de(function(){var y=e.color;return y?Xre.test(y)||Nre.test(y):!1}),p=de(function(){var y;return _e(r.value,(y={},ce(y,"".concat(r.value,"-").concat(e.color),Z.value),ce(y,"".concat(r.value,"-has-color"),e.color&&!Z.value),ce(y,"".concat(r.value,"-hidden"),!v.value),ce(y,"".concat(r.value,"-rtl"),f.value==="rtl"),y))});return function(){var y,X,m,N=e.icon,G=N===void 0?(y=i.icon)===null||y===void 0?void 0:y.call(i):N,d=e.color,u=e.closeIcon,s=u===void 0?(X=i.closeIcon)===null||X===void 0?void 0:X.call(i):u,h=e.closable,c=h===void 0?!1:h,W=function(){return c?s?D("span",{class:"".concat(r.value,"-close-icon"),onClick:b},[s]):D(Ar,{class:"".concat(r.value,"-close-icon"),onClick:b},null):null},M={backgroundColor:d&&!Z.value?d:void 0},I=G||null,w=(m=i.default)===null||m===void 0?void 0:m.call(i),C=I?D(ln,null,[I,D("span",null,[w])]):w,x="onClick"in l,R=D("span",{class:p.value,style:M},[C,W()]);return x?D(_G,null,{default:function(){return[R]}}):R}}});th.CheckableTag=a0;th.install=function(n){return n.component(th.name,th),n.component(a0.name,a0),n};const $C=th;function Ire(n,e){var t=e.slots,i=e.attrs;return D($C,P(P({color:"blue"},n),i),t)}var Yre={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"}}]},name:"calendar",theme:"outlined"};const wre=Yre;function Aw(n){for(var e=1;et)&&(i=wn(n,{span:t}),Ci(e===void 0,"Descriptions","Sum of column `span` in a line not match `column` of Descriptions.")),i}function _re(n,e){var t=ti(n),i=[],a=[],l=e;return t.forEach(function(o,r){var f,v=(f=o.props)===null||f===void 0?void 0:f.span,b=v||1;if(r===t.length-1){a.push(qw(o,v,l)),i.push(a);return}b0?"-"+e.orientation:e.orientation});return function(){var p,y=ti((p=i.default)===null||p===void 0?void 0:p.call(i));return D("div",{class:[v.value,y.length?"".concat(l.value,"-with-text ").concat(l.value,"-with-text").concat(Z.value):""],role:"separator"},[y.length?D("span",{class:"".concat(l.value,"-inner-text"),style:b.value},[y]):null])}}});const noe=wi(toe);Pr.Button=Nh;Pr.install=function(n){return n.component(Pr.name,Pr),n.component(Nh.name,Nh),n};var IZ;function Cu(n){if(typeof document>"u")return 0;if(n||IZ===void 0){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var t=document.createElement("div"),i=t.style;i.position="absolute",i.top="0",i.left="0",i.pointerEvents="none",i.visibility="hidden",i.width="200px",i.height="150px",i.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var a=e.offsetWidth;t.style.overflow="scroll";var l=e.offsetWidth;a===l&&(l=t.clientWidth),document.body.removeChild(t),IZ=a-l}return IZ}function eg(n){var e=n.match(/^(.*)px$/),t=Number(e==null?void 0:e[1]);return Number.isNaN(t)?Cu():t}function ioe(n){if(typeof document>"u"||!n||!(n instanceof Element))return{width:0,height:0};var e=getComputedStyle(n,"::-webkit-scrollbar"),t=e.width,i=e.height;return{width:eg(t),height:eg(i)}}var s9=function(){return{prefixCls:String,width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),style:{type:Object,default:void 0},class:String,placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:{type:Object,default:void 0},autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0}}},loe=function(){return P(P({},s9()),{},{forceRender:{type:Boolean,default:void 0},getContainer:We.oneOfType([We.string,We.func,We.object,We.looseBool])})},aoe=function(){return P(P({},s9()),{},{getContainer:Function,getOpenCount:Function,scrollLocker:We.any,switchScrollingEffect:Function})};function roe(n){return Array.isArray(n)?n:[n]}var c9={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},ooe=Object.keys(c9).filter(function(n){if(typeof document>"u")return!1;var e=document.getElementsByTagName("html")[0];return n in(e?e.style:{})})[0],tg=c9[ooe];function ng(n,e,t,i){n.addEventListener?n.addEventListener(e,t,i):n.attachEvent&&n.attachEvent("on".concat(e),t)}function ig(n,e,t,i){n.removeEventListener?n.removeEventListener(e,t,i):n.attachEvent&&n.detachEvent("on".concat(e),t)}function soe(n,e){var t=typeof n=="function"?n(e):n;return Array.isArray(t)?t.length===2?t:[t[0],t[1]]:[t]}var lg=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},YZ=!(typeof window<"u"&&window.document&&window.document.createElement),coe=function n(e,t,i,a){if(!t||t===document||t instanceof Document)return!1;if(t===e.parentNode)return!0;var l=Math.max(Math.abs(i),Math.abs(a))===Math.abs(a),o=Math.max(Math.abs(i),Math.abs(a))===Math.abs(i),r=t.scrollHeight-t.clientHeight,f=t.scrollWidth-t.clientWidth,v=document.defaultView.getComputedStyle(t),b=v.overflowY==="auto"||v.overflowY==="scroll",Z=v.overflowX==="auto"||v.overflowX==="scroll",p=r&&b,y=f&&Z;return l&&(!p||p&&(t.scrollTop>=r&&a<0||t.scrollTop<=0&&a>0))||o&&(!y||y&&(t.scrollLeft>=f&&i<0||t.scrollLeft<=0&&i>0))?n(e,t.parentNode,i,a):!1},uoe=["width","height","open","prefixCls","placement","level","levelMove","ease","duration","getContainer","onChange","afterVisibleChange","showMask","maskClosable","maskStyle","keyboard","getOpenCount","scrollLocker","contentWrapperStyle","style","class"],Md={},doe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:aoe(),emits:["close","handleClick","change"],setup:function(e,t){var i=t.emit,a=t.slots,l=zn({startPos:{x:null,y:null}}),o,r=Ne(),f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=[],y="drawer_id_".concat(Number((Date.now()+Math.random()).toString().replace(".",Math.round(Math.random()*9).toString())).toString(16)),X=!YZ&&Ui?{passive:!1}:!1;Kt(function(){cn(function(){var V=e.open,Y=e.getContainer,T=e.showMask,J=e.autofocus,U=Y==null?void 0:Y();if(g(e),V&&(U&&U.parentNode===document.body&&(Md[y]=V),W(),cn(function(){J&&m()}),T)){var K;(K=e.scrollLocker)===null||K===void 0||K.lock()}})}),rt(function(){return e.level},function(){g(e)},{flush:"post"}),rt(function(){return e.open},function(){var V=e.open,Y=e.getContainer,T=e.scrollLocker,J=e.showMask,U=e.autofocus,K=Y==null?void 0:Y();K&&K.parentNode===document.body&&(Md[y]=!!V),W(),V?(U&&m(),J&&(T==null||T.lock())):T==null||T.unLock()},{flush:"post"}),la(function(){var V,Y=e.open;delete Md[y],Y&&(M(!1),document.body.style.touchAction=""),(V=e.scrollLocker)===null||V===void 0||V.unLock()}),rt(function(){return e.placement},function(V){V&&(Z.value=null)});var m=function(){var Y,T;(Y=f.value)===null||Y===void 0||(T=Y.focus)===null||T===void 0||T.call(Y)},N=function(Y){Y.touches.length>1||(l.startPos={x:Y.touches[0].clientX,y:Y.touches[0].clientY})},G=function(Y){if(!(Y.changedTouches.length>1)){var T=Y.currentTarget,J=Y.changedTouches[0].clientX-l.startPos.x,U=Y.changedTouches[0].clientY-l.startPos.y;(T===v.value||T===b.value||T===Z.value&&coe(T,Y.target,J,U))&&Y.cancelable&&Y.preventDefault()}},d=function V(Y){var T=Y.target;ig(T,tg,V),T.style.transition=""},u=function(Y){i("close",Y)},s=function(Y){Y.keyCode===bt.ESC&&(Y.stopPropagation(),u(Y))},h=function(Y){var T=e.open,J=e.afterVisibleChange;Y.target===r.value&&Y.propertyName.match(/transform$/)&&(f.value.style.transition="",!T&&R()&&(document.body.style.overflowX="",v.value&&(v.value.style.left="",v.value.style.width="")),J&&J(!!T))},c=de(function(){var V=e.placement,Y=V==="left"||V==="right",T="translate".concat(Y?"X":"Y");return{isHorizontal:Y,placementName:T}}),W=function(){var Y=e.open,T=e.width,J=e.height,U=c.value,K=U.isHorizontal,H=U.placementName,k=Z.value?Z.value.getBoundingClientRect()[K?"width":"height"]:0,F=(K?T:J)||k;I(Y,H,F)},M=function(Y,T,J,U){var K=e.placement,H=e.levelMove,k=e.duration,F=e.ease,O=e.showMask;p.forEach(function(Q){Q.style.transition="transform ".concat(k," ").concat(F),ng(Q,tg,d);var oe=Y?J:0;if(H){var se=soe(H,{target:Q,open:Y});oe=Y?se[0]:se[1]||0}var he=typeof oe=="number"?"".concat(oe,"px"):oe,pe=K==="left"||K==="top"?he:"-".concat(he);pe=O&&K==="right"&&U?"calc(".concat(pe," + ").concat(U,"px)"):pe,Q.style.transform=oe?"".concat(T,"(").concat(pe,")"):""})},I=function(Y,T,J){if(!YZ){var U=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?Cu(!0):0;M(Y,T,J,U),w(U)}i("change",Y)},w=function(Y){var T=e.getContainer,J=e.showMask,U=e.open,K=T==null?void 0:T();if(K&&K.parentNode===document.body&&J){var H=["touchstart"],k=[document.body,v.value,b.value,Z.value];U&&document.body.style.overflow!=="hidden"?(Y&&C(Y),document.body.style.touchAction="none",k.forEach(function(F,O){F&&ng(F,H[O]||"touchmove",O?G:N,X)})):R()&&(document.body.style.touchAction="",Y&&x(Y),k.forEach(function(F,O){F&&ig(F,H[O]||"touchmove",O?G:N,X)}))}},C=function(Y){var T=e.placement,J=e.duration,U=e.ease,K="width ".concat(J," ").concat(U),H="transform ".concat(J," ").concat(U);switch(f.value.style.transition="none",T){case"right":f.value.style.transform="translateX(-".concat(Y,"px)");break;case"top":case"bottom":f.value.style.width="calc(100% - ".concat(Y,"px)"),f.value.style.transform="translateZ(0)";break}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(H,",").concat(K),f.value.style.width="",f.value.style.transform="")})},x=function(Y){var T=e.placement,J=e.duration,U=e.ease;f.value.style.transition="none";var K,H="width ".concat(J," ").concat(U),k="transform ".concat(J," ").concat(U);switch(T){case"left":{f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J);break}case"right":{f.value.style.transform="translateX(".concat(Y,"px)"),f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J),v.value&&(v.value.style.left="-".concat(Y,"px"),v.value.style.width="calc(100% + ".concat(Y,"px)"));break}case"top":case"bottom":{f.value.style.width="calc(100% + ".concat(Y,"px)"),f.value.style.height="100%",f.value.style.transform="translateZ(0)",K="height 0s ".concat(U," ").concat(J);break}}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(k,",").concat(K?"".concat(K,","):"").concat(H),f.value.style.transform="",f.value.style.width="",f.value.style.height="")})},R=function(){return!Object.keys(Md).some(function(Y){return Md[Y]})},g=function(Y){var T=Y.level,J=Y.getContainer;if(!YZ){var U=J==null?void 0:J(),K=U?U.parentNode:null;if(p=[],T==="all"){var H=K?Array.prototype.slice.call(K.children):[];H.forEach(function(k){k.nodeName!=="SCRIPT"&&k.nodeName!=="STYLE"&&k.nodeName!=="LINK"&&k!==U&&p.push(k)})}else T&&roe(T).forEach(function(k){document.querySelectorAll(k).forEach(function(F){p.push(F)})})}},S=function(Y){i("handleClick",Y)},L=Ne(!1);return rt(f,function(){cn(function(){L.value=!0})}),function(){var V,Y,T,J=e.width,U=e.height,K=e.open,H=e.prefixCls,k=e.placement;e.level,e.levelMove,e.ease,e.duration,e.getContainer,e.onChange,e.afterVisibleChange;var F=e.showMask,O=e.maskClosable,Q=e.maskStyle,oe=e.keyboard;e.getOpenCount,e.scrollLocker;var se=e.contentWrapperStyle,he=e.style,pe=e.class,re=jt(e,uoe),_=K&&L.value,E=_e(H,(V={},ce(V,"".concat(H,"-").concat(k),!0),ce(V,"".concat(H,"-open"),_),ce(V,pe,!!pe),ce(V,"no-mask",!F),V)),$=c.value.placementName,ae=k==="left"||k==="top"?"-100%":"100%",le=_?"":"".concat($,"(").concat(ae,")");return D("div",P(P({},dn(re,["switchScrollingEffect","autofocus"])),{},{tabindex:-1,class:E,style:he,ref:f,onKeydown:_&&oe?s:void 0,onTransitionend:h}),[F&&D("div",{class:"".concat(H,"-mask"),onClick:O?u:void 0,style:Q,ref:v},null),D("div",{class:"".concat(H,"-content-wrapper"),style:P({transform:le,msTransform:le,width:lg(J)?"".concat(J,"px"):J,height:lg(U)?"".concat(U,"px"):U},se),ref:r},[D("div",{class:"".concat(H,"-content"),ref:Z},[(Y=a.default)===null||Y===void 0?void 0:Y.call(a)]),a.handler?D("div",{onClick:S,ref:b},[(T=a.handler)===null||T===void 0?void 0:T.call(a)]):null])])}}});const ag=doe;function Su(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.element,i=t===void 0?document.body:t,a={},l=Object.keys(n);return l.forEach(function(o){a[o]=i.style[o]}),l.forEach(function(o){i.style[o]=n[o]}),a}function hoe(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}var wZ={};const rg=function(n){if(!(!hoe()&&!n)){var e="ant-scrolling-effect",t=new RegExp("".concat(e),"g"),i=document.body.className;if(n){if(!t.test(i))return;Su(wZ),wZ={},document.body.className=i.replace(t,"").trim();return}var a=Cu();if(a&&(wZ=Su({position:"relative",width:"calc(100% - ".concat(a,"px)")}),!t.test(i))){var l="".concat(i," ").concat(e);document.body.className=l.trim()}}};var qa=[],u9="ant-scrolling-effect",gZ=new RegExp("".concat(u9),"g"),foe=0,VZ=new Map,boe=q0(function n(e){var t=this;ep(this,n),ce(this,"getContainer",function(){var i;return(i=t.options)===null||i===void 0?void 0:i.container}),ce(this,"reLock",function(i){var a=qa.find(function(l){var o=l.target;return o===t.lockTarget});a&&t.unLock(),t.options=i,a&&(a.options=i,t.lock())}),ce(this,"lock",function(){var i;if(!qa.some(function(f){var v=f.target;return v===t.lockTarget})){if(qa.some(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)})){qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}]);return}var a=0,l=((i=t.options)===null||i===void 0?void 0:i.container)||document.body;(l===document.body&&window.innerWidth-document.documentElement.clientWidth>0||l.scrollHeight>l.clientHeight)&&(a=Cu());var o=l.className;if(qa.filter(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)}).length===0&&VZ.set(l,Su({width:a!==0?"calc(100% - ".concat(a,"px)"):void 0,overflow:"hidden",overflowX:"hidden",overflowY:"hidden"},{element:l})),!gZ.test(o)){var r="".concat(o," ").concat(u9);l.className=r.trim()}qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}])}}),ce(this,"unLock",function(){var i,a=qa.find(function(r){var f=r.target;return f===t.lockTarget});if(qa=qa.filter(function(r){var f=r.target;return f!==t.lockTarget}),!(!a||qa.some(function(r){var f,v=r.options;return(v==null?void 0:v.container)===((f=a.options)===null||f===void 0?void 0:f.container)}))){var l=((i=t.options)===null||i===void 0?void 0:i.container)||document.body,o=l.className;gZ.test(o)&&(Su(VZ.get(l),{element:l}),VZ.delete(l),l.className=l.className.replace(gZ,"").trim())}}),this.lockTarget=foe++,this.options=e}),mo=0,Sd=wc(),yb={},Ac=function(e){if(!Sd)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(Yt(e)==="object"&&e instanceof window.HTMLElement)return e}return document.body};const d9=He({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:We.any,visible:{type:Boolean,default:void 0}},setup:function(e,t){var i=t.slots,a=Ne(),l=Ne(),o=Ne(),r=new boe({container:Ac(e.getContainer)}),f=function(){var m,N;(m=a.value)===null||m===void 0||(N=m.parentNode)===null||N===void 0||N.removeChild(a.value)},v=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(m||a.value&&!a.value.parentNode){var N=Ac(e.getContainer);return N?(N.appendChild(a.value),!0):!1}return!0},b=function(){return Sd?(a.value||(a.value=document.createElement("div"),v(!0)),Z(),a.value):null},Z=function(){var m=e.wrapperClassName;a.value&&m&&m!==a.value.className&&(a.value.className=m)};Dl(function(){Z(),v()});var p=function(){mo===1&&!Object.keys(yb).length?(rg(),yb=Su({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"})):mo||(Su(yb),yb={},rg(!0))},y=Wl();return Kt(function(){var X=!1;rt([function(){return e.visible},function(){return e.getContainer}],function(m,N){var G=ft(m,2),d=G[0],u=G[1],s=ft(N,2),h=s[0],c=s[1];if(Sd&&Ac(e.getContainer)===document.body&&(d&&!h?mo+=1:X&&(mo-=1)),X){var W=typeof u=="function"&&typeof c=="function";(W?u.toString()!==c.toString():u!==c)&&f(),d&&d!==h&&Sd&&Ac(u)!==r.getContainer()&&r.reLock({container:Ac(u)})}X=!0},{immediate:!0,flush:"post"}),cn(function(){v()||(o.value=At(function(){y.update()}))})}),fn(function(){var X=e.visible,m=e.getContainer;Sd&&Ac(m)===document.body&&(mo=X&&mo?mo-1:mo),f(),At.cancel(o.value)}),function(){var X=e.forceRender,m=e.visible,N=null,G={getOpenCount:function(){return mo},getContainer:b,switchScrollingEffect:p,scrollLocker:r};return(X||m||l.value)&&(N=D(Q2,{getContainer:b,ref:l},{default:function(){var u;return(u=i.default)===null||u===void 0?void 0:u.call(i,G)}})),N}}});var moe=["afterVisibleChange","getContainer","wrapperClassName","forceRender"],poe=["visible","afterClose"],yoe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:pn(loe(),{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",afterVisibleChange:function(){},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:"",keyboard:!0,forceRender:!1,autofocus:!0}),emits:["handleClick","close"],slots:["handler"],setup:function(e,t){var i=t.emit,a=t.slots,l=Ne(null),o=function(v){i("handleClick",v)},r=function(v){i("close",v)};return function(){e.afterVisibleChange;var f=e.getContainer,v=e.wrapperClassName,b=e.forceRender,Z=jt(e,moe),p=null;if(!f)return D("div",{class:v,ref:l},[D(ag,P(P({},Z),{},{open:e.open,getContainer:function(){return l.value},onClose:r,onHandleClick:o}),a)]);var y=!!a.handler||b;return(y||e.open||l.value)&&(p=D(d9,{visible:e.open,forceRender:y,getContainer:f,wrapperClassName:v},{default:function(m){var N=m.visible,G=m.afterClose,d=jt(m,poe);return D(ag,P(P(P({ref:l},Z),d),{},{open:N!==void 0?N:e.open,afterVisibleChange:G!==void 0?G:e.afterVisibleChange,onClose:r,onHandleClick:o}),a)}})),p}}});const Zoe=yoe;var voe=["width","height","visible","placement","mask","wrapClassName","class"],Woe=pi("top","right","bottom","left");pi("default","large");var og={distance:180},Goe=function(){return{autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:We.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:We.any,maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},wrapStyle:{type:Object,default:void 0},style:{type:Object,default:void 0},class:We.any,wrapClassName:String,size:{type:String},drawerStyle:{type:Object,default:void 0},headerStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},contentWrapperStyle:{type:Object,default:void 0},title:We.any,visible:{type:Boolean,default:void 0},width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),zIndex:Number,prefixCls:String,push:We.oneOfType([We.looseBool,{type:Object}]),placement:We.oneOf(Woe),keyboard:{type:Boolean,default:void 0},extra:We.any,footer:We.any,footerStyle:{type:Object,default:void 0},level:We.any,levelMove:{type:[Number,Array,Function]},handle:We.any,afterVisibleChange:Function,onAfterVisibleChange:Function,"onUpdate:visible":Function,onClose:Function}},Xoe=He({compatConfig:{MODE:3},name:"ADrawer",inheritAttrs:!1,props:pn(Goe(),{closable:!0,placement:"right",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:og}),slots:["closeIcon","title","extra","footer","handle"],setup:function(e,t){var i=t.emit,a=t.slots,l=t.attrs,o=Ne(!1),r=Ne(!1),f=Ne(null),v=un("parentDrawerOpts",null),b=Nt("drawer",e),Z=b.prefixCls;jn(!e.afterVisibleChange,"Drawer","`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),jn(e.wrapStyle===void 0,"Drawer","`wrapStyle` prop is deprecated, please use `style` instead"),jn(e.wrapClassName===void 0,"Drawer","`wrapClassName` prop is deprecated, please use `class` instead");var p=function(){o.value=!0},y=function(){o.value=!1,cn(function(){X()})};hn("parentDrawerOpts",{setPush:p,setPull:y}),Kt(function(){var w=e.visible;w&&v&&v.setPush()}),la(function(){v&&v.setPull()}),rt(function(){return e.visible},function(w){v&&(w?v.setPush():v.setPull())},{flush:"post"});var X=function(){var C,x;(C=f.value)===null||C===void 0||(x=C.domFocus)===null||x===void 0||x.call(C)},m=function(C){i("update:visible",!1),i("close",C)},N=function(C){var x;(x=e.afterVisibleChange)===null||x===void 0||x.call(e,C),i("afterVisibleChange",C)},G=de(function(){return e.destroyOnClose&&!e.visible}),d=function(){var C=G.value;C&&(e.visible||(r.value=!0))},u=de(function(){var w=e.push,C=e.placement,x;return typeof w=="boolean"?x=w?og.distance:0:x=w.distance,x=parseFloat(String(x||0)),C==="left"||C==="right"?"translateX(".concat(C==="left"?x:-x,"px)"):C==="top"||C==="bottom"?"translateY(".concat(C==="top"?x:-x,"px)"):null}),s=de(function(){var w=e.visible,C=e.mask,x=e.placement,R=e.size,g=R===void 0?"default":R,S=e.width,L=e.height;if(!w&&!C)return{};var V={};if(x==="left"||x==="right"){var Y=g==="large"?736:378;V.width=typeof S>"u"?Y:S,V.width=typeof V.width=="string"?V.width:"".concat(V.width,"px")}else{var T=g==="large"?736:378;V.height=typeof L>"u"?T:L,V.height=typeof V.height=="string"?V.height:"".concat(V.height,"px")}return V}),h=de(function(){var w=e.zIndex,C=e.wrapStyle,x=e.mask,R=e.style,g=x?{}:s.value;return P(P(P({zIndex:w,transform:o.value?u.value:void 0},g),C),R)}),c=function(C){var x=e.closable,R=e.headerStyle,g=ui(a,e,"extra"),S=ui(a,e,"title");return!S&&!x?null:D("div",{class:_e("".concat(C,"-header"),ce({},"".concat(C,"-header-close-only"),x&&!S&&!g)),style:R},[D("div",{class:"".concat(C,"-header-title")},[W(C),S&&D("div",{class:"".concat(C,"-title")},[S])]),g&&D("div",{class:"".concat(C,"-extra")},[g])])},W=function(C){var x,R=e.closable,g=a.closeIcon?(x=a.closeIcon)===null||x===void 0?void 0:x.call(a):e.closeIcon;return R&&D("button",{key:"closer",onClick:m,"aria-label":"Close",class:"".concat(C,"-close")},[g===void 0?D(Ar,null,null):g])},M=function(C){var x;if(r.value&&!e.visible)return null;r.value=!1;var R=e.bodyStyle,g=e.drawerStyle,S={},L=G.value;return L&&(S.opacity=0,S.transition="opacity .3s"),D("div",{class:"".concat(C,"-wrapper-body"),style:P(P({},S),g),onTransitionend:d},[c(C),D("div",{key:"body",class:"".concat(C,"-body"),style:R},[(x=a.default)===null||x===void 0?void 0:x.call(a)]),I(C)])},I=function(C){var x=ui(a,e,"footer");if(!x)return null;var R="".concat(C,"-footer");return D("div",{class:R,style:e.footerStyle},[x])};return function(){var w;e.width,e.height;var C=e.visible,x=e.placement,R=e.mask,g=e.wrapClassName,S=e.class,L=jt(e,voe),V=R?s.value:{},Y=R?"":"no-mask",T=P(P(P(P({},l),dn(L,["size","closeIcon","closable","destroyOnClose","drawerStyle","headerStyle","bodyStyle","title","push","wrapStyle","onAfterVisibleChange","onClose","onUpdate:visible"])),V),{},{onClose:m,afterVisibleChange:N,handler:!1,prefixCls:Z.value,open:C,showMask:R,placement:x,class:_e((w={},ce(w,S,S),ce(w,g,!!g),ce(w,Y,!!Y),w)),style:h.value,ref:f});return D(Zoe,T,{handler:e.handle?function(){return e.handle}:a.handle,default:function(){return M(Z.value)}})}}});const Noe=wi(Xoe);var h9=function(){return{id:String,prefixCls:String,inputPrefixCls:String,defaultValue:We.oneOfType([We.string,We.number]),value:{type:[String,Number,Symbol],default:void 0},placeholder:{type:[String,Number]},autocomplete:String,type:{type:String,default:"text"},name:String,size:{type:String},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},addonBefore:We.any,addonAfter:We.any,prefix:We.any,suffix:We.any,autofocus:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,valueModifiers:Object,hidden:Boolean}};const $1=h9;var f9=function(){return P(P({},dn(h9(),["prefix","addonBefore","addonAfter","suffix"])),{},{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object})};function b9(n,e,t,i,a){var l;return _e(n,(l={},ce(l,"".concat(n,"-sm"),t==="small"),ce(l,"".concat(n,"-lg"),t==="large"),ce(l,"".concat(n,"-disabled"),i),ce(l,"".concat(n,"-rtl"),a==="rtl"),ce(l,"".concat(n,"-borderless"),!e),l))}var nh=function(e){return e!=null&&(Array.isArray(e)?Ri(e).length:!0)};function Moe(n){return nh(n.prefix)||nh(n.suffix)||nh(n.allowClear)}function LZ(n){return nh(n.addonBefore)||nh(n.addonAfter)}var Ioe=["text","input"];const m9=He({compatConfig:{MODE:3},name:"ClearableLabeledInput",inheritAttrs:!1,props:{prefixCls:String,inputType:We.oneOf(pi("text","input")),value:We.any,defaultValue:We.any,allowClear:{type:Boolean,default:void 0},element:We.any,handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:We.any,prefix:We.any,addonBefore:We.any,addonAfter:We.any,readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean},setup:function(e,t){var i=t.slots,a=t.attrs,l=Ne(),o=function(y){var X;if((X=l.value)!==null&&X!==void 0&&X.contains(y.target)){var m=e.triggerFocus;m==null||m()}},r=function(y){var X,m=e.allowClear,N=e.value,G=e.disabled,d=e.readonly,u=e.handleReset,s=e.suffix,h=s===void 0?i.suffix:s;if(!m)return null;var c=!G&&!d&&N,W="".concat(y,"-clear-icon");return D(So,{onClick:u,onMousedown:function(I){return I.preventDefault()},class:_e((X={},ce(X,"".concat(W,"-hidden"),!c),ce(X,"".concat(W,"-has-suffix"),!!h),X),W),role:"button"},null)},f=function(y){var X,m=e.suffix,N=m===void 0?(X=i.suffix)===null||X===void 0?void 0:X.call(i):m,G=e.allowClear;return N||G?D("span",{class:"".concat(y,"-suffix")},[r(y),N]):null},v=function(y,X){var m,N,G,d=e.focused,u=e.value,s=e.prefix,h=s===void 0?(m=i.prefix)===null||m===void 0?void 0:m.call(i):s,c=e.size,W=e.suffix,M=W===void 0?(N=i.suffix)===null||N===void 0?void 0:N.call(i):W,I=e.disabled,w=e.allowClear,C=e.direction,x=e.readonly,R=e.bordered,g=e.hidden,S=e.addonAfter,L=S===void 0?i.addonAfter:S,V=e.addonBefore,Y=V===void 0?i.addonBefore:V,T=f(y);if(!Moe({prefix:h,suffix:M,allowClear:w}))return wn(X,{value:u});var J=h?D("span",{class:"".concat(y,"-prefix")},[h]):null,U=_e("".concat(y,"-affix-wrapper"),(G={},ce(G,"".concat(y,"-affix-wrapper-focused"),d),ce(G,"".concat(y,"-affix-wrapper-disabled"),I),ce(G,"".concat(y,"-affix-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-affix-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-affix-wrapper-input-with-clear-btn"),M&&w&&u),ce(G,"".concat(y,"-affix-wrapper-rtl"),C==="rtl"),ce(G,"".concat(y,"-affix-wrapper-readonly"),x),ce(G,"".concat(y,"-affix-wrapper-borderless"),!R),ce(G,"".concat(a.class),!LZ({addonAfter:L,addonBefore:Y})&&a.class),G));return D("span",{ref:l,class:U,style:a.style,onMouseup:o,hidden:g},[J,wn(X,{style:null,value:u,class:b9(y,R,c,I)}),T])},b=function(y,X){var m,N,G,d=e.addonBefore,u=d===void 0?(m=i.addonBefore)===null||m===void 0?void 0:m.call(i):d,s=e.addonAfter,h=s===void 0?(N=i.addonAfter)===null||N===void 0?void 0:N.call(i):s,c=e.size,W=e.direction,M=e.hidden;if(!LZ({addonBefore:u,addonAfter:h}))return X;var I="".concat(y,"-group"),w="".concat(I,"-addon"),C=u?D("span",{class:w},[u]):null,x=h?D("span",{class:w},[h]):null,R=_e("".concat(y,"-wrapper"),I,ce({},"".concat(I,"-rtl"),W==="rtl")),g=_e("".concat(y,"-group-wrapper"),(G={},ce(G,"".concat(y,"-group-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-group-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-group-wrapper-rtl"),W==="rtl"),G),a.class);return D("span",{class:g,style:a.style,hidden:M},[D("span",{class:R},[C,wn(X,{style:null}),x])])},Z=function(y,X){var m,N=e.value,G=e.allowClear,d=e.direction,u=e.bordered,s=e.hidden,h=e.addonAfter,c=h===void 0?i.addonAfter:h,W=e.addonBefore,M=W===void 0?i.addonBefore:W;if(!G)return wn(X,{value:N});var I=_e("".concat(y,"-affix-wrapper"),"".concat(y,"-affix-wrapper-textarea-with-clear-btn"),(m={},ce(m,"".concat(y,"-affix-wrapper-rtl"),d==="rtl"),ce(m,"".concat(y,"-affix-wrapper-borderless"),!u),ce(m,"".concat(a.class),!LZ({addonAfter:c,addonBefore:M})&&a.class),m));return D("span",{class:I,style:a.style,hidden:s},[wn(X,{style:null,value:N}),r(y)])};return function(){var p,y=e.prefixCls,X=e.inputType,m=e.element,N=m===void 0?(p=i.element)===null||p===void 0?void 0:p.call(i):m;return X===Ioe[0]?Z(y,N):b(y,v(y,N))}}});function Sv(n){return typeof n>"u"||n===null?"":String(n)}function ih(n,e,t,i){if(t){var a=e;if(e.type==="click"){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0});var l=n.cloneNode(!0);a.target=l,a.currentTarget=l,l.value="",t(a);return}if(i!==void 0){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0}),a.target=n,a.currentTarget=n,n.value=i,t(a);return}t(a)}}function p9(n,e){if(n){n.focus(e);var t=e||{},i=t.cursor;if(i){var a=n.value.length;switch(i){case"start":n.setSelectionRange(0,0);break;case"end":n.setSelectionRange(a,a);break;default:n.setSelectionRange(0,a)}}}}const Ai=He({compatConfig:{MODE:3},name:"AInput",inheritAttrs:!1,props:$1(),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=t.emit,r=Ne(),f=Ne(),v,b=Hi(),Z=Nt("input",e),p=Z.direction,y=Z.prefixCls,X=Z.size,m=Z.autocomplete,N=Ne(e.value===void 0?e.defaultValue:e.value),G=Ne(!1);rt(function(){return e.value},function(){N.value=e.value}),rt(function(){return e.disabled},function(){e.value!==void 0&&(N.value=e.value),e.disabled&&(G.value=!1)});var d=function(){v=setTimeout(function(){var Y;((Y=r.value)===null||Y===void 0?void 0:Y.getAttribute("type"))==="password"&&r.value.hasAttribute("value")&&r.value.removeAttribute("value")})},u=function(Y){p9(r.value,Y)},s=function(){var Y;(Y=r.value)===null||Y===void 0||Y.blur()},h=function(Y,T,J){var U;(U=r.value)===null||U===void 0||U.setSelectionRange(Y,T,J)},c=function(){var Y;(Y=r.value)===null||Y===void 0||Y.select()};l({focus:u,blur:s,input:r,stateValue:N,setSelectionRange:h,select:c});var W=function(Y){var T=e.onFocus;G.value=!0,T==null||T(Y),cn(function(){d()})},M=function(Y){var T=e.onBlur;G.value=!1,T==null||T(Y),b.onFieldBlur(),cn(function(){d()})},I=function(Y){o("update:value",Y.target.value),o("change",Y),o("input",Y),b.onFieldChange()},w=Wl(),C=function(Y,T){N.value!==Y&&(e.value===void 0?N.value=Y:cn(function(){r.value.value!==N.value&&w.update()}),cn(function(){T&&T()}))},x=function(Y){ih(r.value,Y,I),C("",function(){u()})},R=function(Y){var T=Y.target,J=T.value,U=T.composing;if(!((Y.isComposing||U)&&e.lazy||N.value===J)){var K=Y.target.value;ih(r.value,Y,I),C(K,function(){d()})}},g=function(Y){Y.keyCode===13&&o("pressEnter",Y),o("keydown",Y)};Kt(function(){d()}),fn(function(){clearTimeout(v)});var S=function(){var Y,T=e.addonBefore,J=T===void 0?i.addonBefore:T,U=e.addonAfter,K=U===void 0?i.addonAfter:U,H=e.disabled,k=e.bordered,F=k===void 0?!0:k,O=e.valueModifiers,Q=O===void 0?{}:O,oe=e.htmlSize,se=dn(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","bordered","htmlSize","lazy","showCount","valueModifiers"]),he=P(P(P({},se),a),{},{autocomplete:m.value,onChange:R,onInput:R,onFocus:W,onBlur:M,onKeydown:g,class:_e(b9(y.value,F,X.value,H,p.value),ce({},a.class,a.class&&!J&&!K)),ref:r,key:"ant-input",size:oe,id:(Y=se.id)!==null&&Y!==void 0?Y:b.id.value});Q.lazy&&delete he.onInput,he.autofocus||delete he.autofocus;var pe=D("input",dn(he,["size"]),null);return vl(pe,[[Qu]])},L=function(){var Y,T=N.value,J=e.maxlength,U=e.suffix,K=U===void 0?(Y=i.suffix)===null||Y===void 0?void 0:Y.call(i):U,H=e.showCount,k=Number(J)>0;if(K||H){var F=yt(Sv(T)).length,O=null;return Yt(H)==="object"?O=H.formatter({count:F,maxlength:J}):O="".concat(F).concat(k?" / ".concat(J):""),D(ln,null,[!!H&&D("span",{class:_e("".concat(y.value,"-show-count-suffix"),ce({},"".concat(y.value,"-show-count-has-suffix"),!!K))},[O]),K])}return null};return function(){var V=P(P(P({},a),e),{},{prefixCls:y.value,inputType:"input",value:Sv(N.value),handleReset:x,focused:G.value&&!e.disabled});return D(m9,P(P({},dn(V,["element","valueModifiers","suffix","showCount"])),{},{ref:f}),P(P({},i),{},{element:S,suffix:L}))}}}),y9=He({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,t){var i=t.slots,a=Nt("input-group",e),l=a.prefixCls,o=a.direction,r=de(function(){var f,v=l.value;return f={},ce(f,"".concat(v),!0),ce(f,"".concat(v,"-lg"),e.size==="large"),ce(f,"".concat(v,"-sm"),e.size==="small"),ce(f,"".concat(v,"-compact"),e.compact),ce(f,"".concat(v,"-rtl"),o.value==="rtl"),f});return function(){var f;return D("span",{class:r.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(f=i.default)===null||f===void 0?void 0:f.call(i)])}}});var RZ=/iPhone/i,sg=/iPod/i,cg=/iPad/i,TZ=/\bAndroid(?:.+)Mobile\b/i,ug=/Android/i,_c=/\bAndroid(?:.+)SD4930UR\b/i,Zb=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,po=/Windows Phone/i,dg=/\bWindows(?:.+)ARM\b/i,hg=/BlackBerry/i,fg=/BB10/i,bg=/Opera Mini/i,mg=/\b(CriOS|Chrome)(?:.+)Mobile/i,pg=/Mobile(?:.+)Firefox\b/i;function In(n,e){return n.test(e)}function yg(n){var e=n||(typeof navigator<"u"?navigator.userAgent:""),t=e.split("[FBAN");if(typeof t[1]<"u"){var i=t,a=ft(i,1);e=a[0]}if(t=e.split("Twitter"),typeof t[1]<"u"){var l=t,o=ft(l,1);e=o[0]}var r={apple:{phone:In(RZ,e)&&!In(po,e),ipod:In(sg,e),tablet:!In(RZ,e)&&In(cg,e)&&!In(po,e),device:(In(RZ,e)||In(sg,e)||In(cg,e))&&!In(po,e)},amazon:{phone:In(_c,e),tablet:!In(_c,e)&&In(Zb,e),device:In(_c,e)||In(Zb,e)},android:{phone:!In(po,e)&&In(_c,e)||!In(po,e)&&In(TZ,e),tablet:!In(po,e)&&!In(_c,e)&&!In(TZ,e)&&(In(Zb,e)||In(ug,e)),device:!In(po,e)&&(In(_c,e)||In(Zb,e)||In(TZ,e)||In(ug,e))||In(/\bokhttp\b/i,e)},windows:{phone:In(po,e),tablet:In(dg,e),device:In(po,e)||In(dg,e)},other:{blackberry:In(hg,e),blackberry10:In(fg,e),opera:In(bg,e),firefox:In(pg,e),chrome:In(mg,e),device:In(hg,e)||In(fg,e)||In(bg,e)||In(pg,e)||In(mg,e)},any:null,phone:null,tablet:null};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}var Yoe=P(P({},yg()),{},{isMobile:yg});const woe=Yoe;var goe=["disabled","loading","addonAfter","suffix"];const Z9=He({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:P(P({},$1()),{},{inputPrefixCls:String,enterButton:We.any,onSearch:{type:Function}}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=t.emit,r=Ne(),f=function(){var s;(s=r.value)===null||s===void 0||s.focus()},v=function(){var s;(s=r.value)===null||s===void 0||s.blur()};l({focus:f,blur:v});var b=function(s){o("update:value",s.target.value),s&&s.target&&s.type==="click"&&o("search",s.target.value,s),o("change",s)},Z=function(s){var h;document.activeElement===((h=r.value)===null||h===void 0?void 0:h.input)&&s.preventDefault()},p=function(s){var h;o("search",(h=r.value)===null||h===void 0?void 0:h.stateValue,s),woe.tablet||r.value.focus()},y=Nt("input-search",e),X=y.prefixCls,m=y.getPrefixCls,N=y.direction,G=y.size,d=de(function(){return m("input",e.inputPrefixCls)});return function(){var u,s,h,c,W,M=e.disabled,I=e.loading,w=e.addonAfter,C=w===void 0?(u=i.addonAfter)===null||u===void 0?void 0:u.call(i):w,x=e.suffix,R=x===void 0?(s=i.suffix)===null||s===void 0?void 0:s.call(i):x,g=jt(e,goe),S=e.enterButton,L=S===void 0?(h=(c=i.enterButton)===null||c===void 0?void 0:c.call(i))!==null&&h!==void 0?h:!1:S;L=L||L==="";var V=typeof L=="boolean"?D($0,null,null):null,Y="".concat(X.value,"-button"),T=Array.isArray(L)?L[0]:L,J,U=T.type&&UW(T.type)&&T.type.__ANT_BUTTON;if(U||T.tagName==="button")J=wn(T,P({onMousedown:Z,onClick:p,key:"enterButton"},U?{class:Y,size:G.value}:{}),!1);else{var K=V&&!L;J=D(qi,{class:Y,type:L?"primary":void 0,size:G.value,disabled:M,key:"enterButton",onMousedown:Z,onClick:p,loading:I,icon:K?V:null},{default:function(){return[K?null:V||L]}})}C&&(J=[J,C]);var H=_e(X.value,(W={},ce(W,"".concat(X.value,"-rtl"),N.value==="rtl"),ce(W,"".concat(X.value,"-").concat(G.value),!!G.value),ce(W,"".concat(X.value,"-with-button"),!!L),W),a.class);return D(Ai,P(P(P({ref:r},dn(g,["onUpdate:value","onSearch","enterButton"])),a),{},{onPressEnter:p,size:G.value,prefixCls:d.value,addonAfter:J,suffix:R,onChange:b,class:H,disabled:M}),i)}}});var Voe=` +`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),l=new RegExp("(?:^"+t+"$)|(?:^"+a+"$)"),o=new RegExp("^"+t+"$"),r=new RegExp("^"+a+"$"),f=function(s){return s&&s.exact?l:new RegExp("(?:"+e(s)+t+e(s)+")|(?:"+e(s)+a+e(s)+")","g")};f.v4=function(u){return u&&u.exact?o:new RegExp(""+e(u)+t+e(u),"g")},f.v6=function(u){return u&&u.exact?r:new RegExp(""+e(u)+a+e(u),"g")};var v="(?:(?:[a-z]+:)?//)",b="(?:\\S+(?::\\S*)?@)?",Z=f.v4().source,p=f.v6().source,y="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",X="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",m="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",N="(?::\\d{2,5})?",G='(?:[/?#][^\\s"]*)?',d="(?:"+v+"|www\\.)"+b+"(?:localhost|"+Z+"|"+p+"|"+y+X+m+")"+N+G;return mb=new RegExp("(?:^"+d+"$)","i"),mb},Ew={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Sd={integer:function(e){return Sd.number(e)&&parseInt(e,10)===e},float:function(e){return Sd.number(e)&&!Sd.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!Sd.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(Ew.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(xle())},hex:function(e){return typeof e=="string"&&!!e.match(Ew.hex)}},Cle=function(e,t,i,a,l){if(e.required&&t===void 0){OC(e,t,i,a,l);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],r=e.type;o.indexOf(r)>-1?Sd[r](t)||a.push(ka(l.messages.types[r],e.fullField,e.type)):r&&typeof t!==e.type&&a.push(ka(l.messages.types[r],e.fullField,e.type))},Sle=function(e,t,i,a,l){var o=typeof e.len=="number",r=typeof e.min=="number",f=typeof e.max=="number",v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=t,Z=null,p=typeof t=="number",y=typeof t=="string",X=Array.isArray(t);if(p?Z="number":y?Z="string":X&&(Z="array"),!Z)return!1;X&&(b=t.length),y&&(b=t.replace(v,"_").length),o?b!==e.len&&a.push(ka(l.messages[Z].len,e.fullField,e.len)):r&&!f&&be.max?a.push(ka(l.messages[Z].max,e.fullField,e.max)):r&&f&&(be.max)&&a.push(ka(l.messages[Z].range,e.fullField,e.min,e.max))},Ac="enum",zle=function(e,t,i,a,l){e[Ac]=Array.isArray(e[Ac])?e[Ac]:[],e[Ac].indexOf(t)===-1&&a.push(ka(l.messages[Ac],e.fullField,e[Ac].join(", ")))},kle=function(e,t,i,a,l){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||a.push(ka(l.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(t)||a.push(ka(l.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},Pn={required:OC,whitespace:Tle,type:Cle,range:Sle,enum:zle,pattern:kle},Fle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,a,o,l,"string"),sl(t,"string")||(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l),Pn.pattern(e,t,a,o,l),e.whitespace===!0&&Pn.whitespace(e,t,a,o,l))}i(o)},Jle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},Dle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(t===""&&(t=void 0),sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Ole=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},jle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),sl(t)||Pn.type(e,t,a,o,l)}i(o)},Ule=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Ele=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Kle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(t==null&&!e.required)return i();Pn.required(e,t,a,o,l,"array"),t!=null&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Hle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},Ple="enum",Qle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn[Ple](e,t,a,o,l)}i(o)},Ble=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,a,o,l),sl(t,"string")||Pn.pattern(e,t,a,o,l)}i(o)},Ale=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"date")&&!e.required)return i();if(Pn.required(e,t,a,o,l),!sl(t,"date")){var f;t instanceof Date?f=t:f=new Date(t),Pn.type(e,f,a,o,l),f&&Pn.range(e,f.getTime(),a,o,l)}}i(o)},_le=function(e,t,i,a,l){var o=[],r=Array.isArray(t)?"array":typeof t;Pn.required(e,t,a,o,l,r),i(o)},XZ=function(e,t,i,a,l){var o=e.type,r=[],f=e.required||!e.required&&a.hasOwnProperty(e.field);if(f){if(sl(t,o)&&!e.required)return i();Pn.required(e,t,a,r,l,o),sl(t,o)||Pn.type(e,t,a,r,l)}i(r)},$le=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l)}i(o)},th={string:Fle,method:Jle,number:Dle,boolean:Ole,regexp:jle,integer:Ule,float:Ele,array:Kle,object:Hle,enum:Qle,pattern:Ble,date:Ale,url:XZ,hex:XZ,email:XZ,required:_le,any:$le};function Rv(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Tv=Rv(),Ph=function(){function n(t){this.rules=null,this._messages=Tv,this.define(t)}var e=n.prototype;return e.define=function(i){var a=this;if(!i)throw new Error("Cannot configure a schema with no rules");if(typeof i!="object"||Array.isArray(i))throw new Error("Rules must be an object");this.rules={},Object.keys(i).forEach(function(l){var o=i[l];a.rules[l]=Array.isArray(o)?o:[o]})},e.messages=function(i){return i&&(this._messages=Uw(Rv(),i)),this._messages},e.validate=function(i,a,l){var o=this;a===void 0&&(a={}),l===void 0&&(l=function(){});var r=i,f=a,v=l;if(typeof f=="function"&&(v=f,f={}),!this.rules||Object.keys(this.rules).length===0)return v&&v(null,r),Promise.resolve(r);function b(m){var N=[],G={};function d(s){if(Array.isArray(s)){var h;N=(h=N).concat.apply(h,s)}else N.push(s)}for(var u=0;u3&&arguments[3]!==void 0?arguments[3]:!1;return e.length&&i&&t===void 0&&!jC(n,e.slice(0,-1))?n:UC(n,e,t,i)}function xv(n){return vs(n)}function eae(n,e){var t=jC(n,e);return t}function tae(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=qle(n,e,t,i);return a}function nae(n,e){return n&&n.some(function(t){return lae(t,e)})}function Kw(n){return Yt(n)==="object"&&n!==null&&Object.getPrototypeOf(n)===Object.prototype}function EC(n,e){var t=Array.isArray(n)?yt(n):P({},n);return e&&Object.keys(e).forEach(function(i){var a=t[i],l=e[i],o=Kw(a)&&Kw(l);t[i]=o?EC(a,l||{}):l}),t}function iae(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i-1?a[l?e[o]:o]:void 0}}var Gae=Math.max;function Xae(n,e,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:c1(t);return a<0&&(a=Gae(i+a,0)),n3(n,Q1(e),a)}var Nae=Wae(Xae);const Mae=Nae;var QC=Symbol("formContextKey"),BC=function(e){hn(QC,e)},B1=function(){return un(QC,{name:de(function(){}),labelAlign:de(function(){return"right"}),vertical:de(function(){return!1}),addField:function(t,i){},removeField:function(t){},model:de(function(){}),rules:de(function(){}),colon:de(function(){}),labelWrap:de(function(){}),labelCol:de(function(){}),requiredMark:de(function(){return!1}),validateTrigger:de(function(){}),onValidate:function(){},validateMessages:de(function(){return vp})})},AC=Symbol("formItemPrefixContextKey"),Iae=function(e){hn(AC,e)},Yae=function(){return un(AC,{prefixCls:de(function(){return""})})},A1=function(e,t){var i,a,l,o,r=t.slots,f=t.emit,v=t.attrs,b=P(P({},e),v),Z=b.prefixCls,p=b.htmlFor,y=b.labelCol,X=b.labelAlign,m=b.colon,N=b.required,G=b.requiredMark,d=Br("Form"),u=ft(d,1),s=u[0],h=(i=e.label)!==null&&i!==void 0?i:(a=r.label)===null||a===void 0?void 0:a.call(r);if(!h)return null;var c=B1(),W=c.vertical,M=c.labelAlign,I=c.labelCol,w=c.labelWrap,C=c.colon,x=y||(I==null?void 0:I.value)||{},R=X||(M==null?void 0:M.value),g="".concat(Z,"-item-label"),S=_e(g,R==="left"&&"".concat(g,"-left"),x.class,ce({},"".concat(g,"-wrap"),!!w.value)),L=h,V=m===!0||(C==null?void 0:C.value)!==!1&&m!==!1,Y=V&&!W.value;if(Y&&typeof h=="string"&&h.trim()!==""&&(L=h.replace(/[:|:]\s*$/,"")),L=D(ln,null,[L,(l=r.tooltip)===null||l===void 0?void 0:l.call(r,{class:"".concat(Z,"-item-tooltip")})]),G==="optional"&&!N){var T,J;L=D(ln,null,[L,D("span",{class:"".concat(Z,"-item-optional")},[((T=s.value)===null||T===void 0?void 0:T.optional)||((J=Mr.Form)===null||J===void 0?void 0:J.optional)])])}var U=_e((o={},ce(o,"".concat(Z,"-item-required"),N),ce(o,"".concat(Z,"-item-required-mark-optional"),G==="optional"),ce(o,"".concat(Z,"-item-no-colon"),!V),o));return D(dp,P(P({},x),{},{class:S}),{default:function(){return[D("label",{for:p,class:U,title:typeof h=="string"?h:"",onClick:function(k){return f("click",k)}},[L])]}})};A1.displayName="FormItemLabel";A1.inheritAttrs=!1;const wae=A1,gae=He({compatConfig:{MODE:3},name:"ErrorList",props:["errors","help","onDomErrorVisibleChange","helpStatus","warnings"],setup:function(e){var t=Nt("",e),i=t.prefixCls,a=Yae(),l=a.prefixCls,o=a.status,r=de(function(){return"".concat(l.value,"-item-explain")}),f=de(function(){return!!(e.errors&&e.errors.length)}),v=Ne(o.value);return rt([f,o],function(){f.value&&(v.value=o.value)}),function(){var b,Z,p=Oh("".concat(i.value,"-show-help-item")),y=$W("".concat(i.value,"-show-help-item"),p);return y.class=r.value,(b=e.errors)!==null&&b!==void 0&&b.length?D(jW,P(P({},y),{},{tag:"div"}),{default:function(){return[(Z=e.errors)===null||Z===void 0?void 0:Z.map(function(m,N){return D("div",{key:N,role:"alert",class:v.value?"".concat(r.value,"-").concat(v.value):""},[m])})]}}):null}}});var Vae={success:zh,warning:Sh,error:So,validating:Yr},Lae=He({compatConfig:{MODE:3},slots:["help","extra","errors"],inheritAttrs:!1,props:["prefixCls","errors","hasFeedback","onDomErrorVisibleChange","wrapperCol","help","extra","status"],setup:function(e,t){var i=t.slots,a=B1(),l=a.wrapperCol,o=P({},a);return delete o.labelCol,delete o.wrapperCol,BC(o),Iae({prefixCls:de(function(){return e.prefixCls}),status:de(function(){return e.status})}),function(){var r,f,v,b=e.prefixCls,Z=e.wrapperCol,p=e.help,y=p===void 0?(r=i.help)===null||r===void 0?void 0:r.call(i):p,X=e.errors,m=X===void 0?(f=i.errors)===null||f===void 0?void 0:f.call(i):X,N=e.hasFeedback,G=e.status,d=e.extra,u=d===void 0?(v=i.extra)===null||v===void 0?void 0:v.call(i):d,s="".concat(b,"-item"),h=Z||(l==null?void 0:l.value)||{},c=_e("".concat(s,"-control"),h.class),W=G&&Vae[G];return D(dp,P(P({},h),{},{class:c}),{default:function(){var I;return D(ln,null,[D("div",{class:"".concat(s,"-control-input")},[D("div",{class:"".concat(s,"-control-input-content")},[(I=i.default)===null||I===void 0?void 0:I.call(i)]),N&&W?D("span",{class:"".concat(s,"-children-icon")},[D(W,null,null)]):null]),D(gae,{errors:m,help:y,class:"".concat(s,"-explain-connected")},null),u?D("div",{class:"".concat(s,"-extra")},[u]):null])}})}}});const Rae=Lae;function Tae(n){var e=Gn(n.value.slice()),t=null;return qt(function(){clearTimeout(t),t=setTimeout(function(){e.value=n.value},n.value.length?0:10)}),e}pi("success","warning","error","validating","");function NZ(n,e,t){var i=n,a=e,l=0;try{for(var o=a.length;l0&&arguments[0]!==void 0?arguments[0]:[];if(c.value==="validating"){var oe=Q.filter(function(se){return se&&se.errors.length});c.value=oe.length?"error":"success",Z.value=oe.map(function(se){return se.errors}),v.onValidate(b.value,!Z.value.length,Z.value.length?on(Z.value[0]):null)}}),O}},I=function(){M({triggerName:"blur"})},w=function(){if(p.value){p.value=!1;return}M({triggerName:"change"})},C=function(){c.value=e.validateStatus,p.value=!1,Z.value=[]},x=function(){c.value=e.validateStatus,p.value=!0,Z.value=[];var J=v.model.value||{},U=G.value,K=NZ(J,X.value,!0);Array.isArray(U)?K.o[K.k]=[].concat(d.value):K.o[K.k]=d.value,cn(function(){p.value=!1})},R=de(function(){return e.htmlFor===void 0?m.value:e.htmlFor}),g=function(){var J=R.value;if(!(!J||!y.value)){var U=y.value.$el.querySelector('[id="'.concat(J,'"]'));U&&U.focus&&U.focus()}};l({onFieldBlur:I,onFieldChange:w,clearValidate:C,resetField:x}),b6({id:m,onFieldBlur:function(){e.autoLink&&I()},onFieldChange:function(){e.autoLink&&w()},clearValidate:C},de(function(){return!!(e.autoLink&&v.model.value&&b.value)}));var S=!1;rt(b,function(T){T?S||(S=!0,v.addField(o,{fieldValue:G,fieldId:m,fieldName:b,resetField:x,clearValidate:C,namePath:X,validateRules:M,rules:s})):(S=!1,v.removeField(o))},{immediate:!0}),fn(function(){v.removeField(o)});var L=Tae(Z),V=de(function(){return e.validateStatus!==void 0?e.validateStatus:L.value.length?"error":c.value}),Y=de(function(){var T;return T={},ce(T,"".concat(f.value,"-item"),!0),ce(T,"".concat(f.value,"-item-has-feedback"),V.value&&e.hasFeedback),ce(T,"".concat(f.value,"-item-has-success"),V.value==="success"),ce(T,"".concat(f.value,"-item-has-warning"),V.value==="warning"),ce(T,"".concat(f.value,"-item-has-error"),V.value==="error"),ce(T,"".concat(f.value,"-item-is-validating"),V.value==="validating"),ce(T,"".concat(f.value,"-item-hidden"),e.hidden),T});return function(){var T,J;if(e.noStyle)return(T=i.default)===null||T===void 0?void 0:T.call(i);var U=(J=e.help)!==null&&J!==void 0?J:i.help?Ri(i.help()):null;return D(F1,P(P({},a),{},{class:[Y.value,U!=null||L.value.length?"".concat(f.value,"-item-with-help"):"",a.class],key:"row"}),{default:function(){var H,k,F,O;return D(ln,null,[D(wae,P(P({},e),{},{htmlFor:R.value,required:h.value,requiredMark:v.requiredMark.value,prefixCls:f.value,onClick:g,label:(H=e.label)!==null&&H!==void 0?H:(k=i.label)===null||k===void 0?void 0:k.call(i)}),null),D(Rae,P(P({},e),{},{errors:U!=null?vs(U):L.value,prefixCls:f.value,status:V.value,ref:y,help:U,extra:(F=e.extra)!==null&&F!==void 0?F:(O=i.extra)===null||O===void 0?void 0:O.call(i)}),{default:i.default})])}})}}});function $C(n){var e=!1,t=n.length,i=[];return n.length?new Promise(function(a,l){n.forEach(function(o,r){o.catch(function(f){return e=!0,f}).then(function(f){t-=1,i[r]=f,!(t>0)&&(e&&l(i),a(i))})})}):Promise.resolve([])}function Pw(n){return typeof n=="object"&&n!=null&&n.nodeType===1}function Qw(n,e){return(!e||n!=="hidden")&&n!=="visible"&&n!=="clip"}function MZ(n,e){if(n.clientHeighte||l>n&&o=e&&r>=t?l-n-i:o>e&&rt?o-e+a:0}var Bw=function(n,e){var t=window,i=e.scrollMode,a=e.block,l=e.inline,o=e.boundary,r=e.skipOverflowHiddenElements,f=typeof o=="function"?o:function(E){return E!==o};if(!Pw(n))throw new TypeError("Invalid target");for(var v,b,Z=document.scrollingElement||document.documentElement,p=[],y=n;Pw(y)&&f(y);){if((y=(b=(v=y).parentElement)==null?v.getRootNode().host||null:b)===Z){p.push(y);break}y!=null&&y===document.body&&MZ(y)&&!MZ(document.documentElement)||y!=null&&MZ(y,r)&&p.push(y)}for(var X=t.visualViewport?t.visualViewport.width:innerWidth,m=t.visualViewport?t.visualViewport.height:innerHeight,N=window.scrollX||pageXOffset,G=window.scrollY||pageYOffset,d=n.getBoundingClientRect(),u=d.height,s=d.width,h=d.top,c=d.right,W=d.bottom,M=d.left,I=a==="start"||a==="nearest"?h:a==="end"?W:h+u/2,w=l==="center"?M+s/2:l==="end"?c:M,C=[],x=0;x=0&&M>=0&&W<=m&&c<=X&&h>=V&&W<=T&&M>=J&&c<=Y)return C;var U=getComputedStyle(R),K=parseInt(U.borderLeftWidth,10),H=parseInt(U.borderTopWidth,10),k=parseInt(U.borderRightWidth,10),F=parseInt(U.borderBottomWidth,10),O=0,Q=0,oe="offsetWidth"in R?R.offsetWidth-R.clientWidth-K-k:0,se="offsetHeight"in R?R.offsetHeight-R.clientHeight-H-F:0,he="offsetWidth"in R?R.offsetWidth===0?0:L/R.offsetWidth:0,pe="offsetHeight"in R?R.offsetHeight===0?0:S/R.offsetHeight:0;if(Z===R)O=a==="start"?I:a==="end"?I-m:a==="nearest"?pb(G,G+m,m,H,F,G+I,G+I+u,u):I-m/2,Q=l==="start"?w:l==="center"?w-X/2:l==="end"?w-X:pb(N,N+X,X,K,k,N+w,N+w+s,s),O=Math.max(0,O+G),Q=Math.max(0,Q+N);else{O=a==="start"?I-V-H:a==="end"?I-T+F+se:a==="nearest"?pb(V,T,S,H,F+se,I,I+u,u):I-(V+S/2)+se/2,Q=l==="start"?w-J-K:l==="center"?w-(J+L/2)+oe/2:l==="end"?w-Y+k+oe:pb(J,Y,L,K,k+oe,w,w+s,s);var re=R.scrollLeft,_=R.scrollTop;I+=_-(O=Math.max(0,Math.min(_+O/pe,R.scrollHeight-S/pe+se))),w+=re-(Q=Math.max(0,Math.min(re+Q/he,R.scrollWidth-L/he+oe)))}C.push({el:R,top:O,left:Q})}return C};function qC(n){return n===Object(n)&&Object.keys(n).length!==0}function zae(n,e){e===void 0&&(e="auto");var t="scrollBehavior"in document.body.style;n.forEach(function(i){var a=i.el,l=i.top,o=i.left;a.scroll&&t?a.scroll({top:l,left:o,behavior:e}):(a.scrollTop=l,a.scrollLeft=o)})}function kae(n){return n===!1?{block:"end",inline:"nearest"}:qC(n)?n:{block:"start",inline:"nearest"}}function Fae(n,e){var t=n.isConnected||n.ownerDocument.documentElement.contains(n);if(qC(e)&&typeof e.behavior=="function")return e.behavior(t?Bw(n,e):[]);if(t){var i=kae(e);return zae(Bw(n,i),i.behavior)}}var Jae=Math.min;function Dae(n,e,t){for(var i=t?l3:i3,a=n[0].length,l=n.length,o=l,r=Array(l),f=1/0,v=[];o--;){var b=n[o];o&&e&&(b=lp(b,H0(e))),f=Jae(b.length,f),r[o]=!t&&(e||a>=120&&b.length>=120)?new Ru(o&&b):void 0}b=n[0];var Z=-1,p=r[0];e:for(;++Z1),l}),Hh(n,kC(n),t),i&&(t=eh(t,Aae|_ae|$ae,Bae));for(var a=e.length;a--;)Qae(t,e[a]);return t});const ere=qae;function Aw(n){var e=!1;return n&&n.length&&n.every(function(t){return t.required?(e=!0,!1):!0}),e}function _w(n){return n==null?[]:Array.isArray(n)?n:[n]}function IZ(n,e,t){var i=n;e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var a=e.split("."),l=0,o=a.length;l1&&arguments[1]!==void 0?arguments[1]:Ne({}),t=arguments.length>2?arguments[2]:void 0,i=Hb(mi(n)),a=zn({}),l=Gn([]),o=function(s){Xn(mi(n),P(P({},Hb(i)),s)),cn(function(){Object.keys(a).forEach(function(h){a[h]={autoLink:!1,required:Aw(mi(e)[h])}})})},r=function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],h=arguments.length>1?arguments[1]:void 0;return h.length?s.filter(function(c){var W=_w(c.trigger||"change");return Kae(W,h).length}):s},f=null,v=function(s){for(var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=arguments.length>2?arguments[2]:void 0,W=[],M={},I=function(S){var L=s[S],V=IZ(mi(n),L,c);if(!V.isValid)return"continue";M[L]=V.v;var Y=r(mi(e)[L],_w(h&&h.trigger));Y.length&&W.push(b(L,V.v,Y,h||{}).then(function(){return{name:L,errors:[],warnings:[]}}).catch(function(T){var J=[],U=[];return T.forEach(function(K){var H=K.rule.warningOnly,k=K.errors;H?U.push.apply(U,yt(k)):J.push.apply(J,yt(k))}),J.length?Promise.reject({name:L,errors:J,warnings:U}):{name:L,errors:J,warnings:U}}))},w=0;w3&&arguments[3]!==void 0?arguments[3]:{},M=KC([s],h,c,P({validateMessages:vp},W),!!W.validateFirst);return a[s]?(a[s].validateStatus="validating",M.catch(function(I){return I}).then(function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(a[s].validateStatus==="validating"){var w,C=I.filter(function(x){return x&&x.errors.length});a[s].validateStatus=C.length?"error":"success",a[s].help=C.length?C.map(function(x){return x.errors}):null,t==null||(w=t.onValidate)===null||w===void 0||w.call(t,s,!C.length,C.length?on(a[s].help[0]):null)}}),M):M.catch(function(I){return I})},Z=function(s,h){var c=[],W=!0;s?Array.isArray(s)?c=s:c=[s]:(W=!1,c=l.value);var M=v(c,h||{},W);return M.catch(function(I){return I}),M},p=function(s){var h=[];s?Array.isArray(s)?h=s:h=[s]:h=l.value,h.forEach(function(c){a[c]&&Xn(a[c],{validateStatus:"",help:null})})},y=function(s){for(var h={autoLink:!1},c=[],W=Array.isArray(s)?s:[s],M=0;M-1}):Object.values(s)},M=function(Y){if(!e.model){Ci(!1,"Form","model is required for resetFields to work.");return}W(Y).forEach(function(T){T.resetField()})},I=function(Y){W(Y).forEach(function(T){T.clearValidate()})},w=function(Y){var T=e.scrollToFirstError;if(i("finishFailed",Y),T&&Y.errorFields.length){var J={};Yt(T)==="object"&&(J=T),x(Y.errorFields[0].name,J)}},C=function(){return S.apply(void 0,arguments)},x=function(Y){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},J=W(Y?[Y]:void 0);if(J.length){var U=J[0].fieldId.value,K=U?document.getElementById(U):null;K&&Fae(K,P({scrollMode:"if-needed",block:"nearest"},T))}},R=function(){var Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(Y===!0){var T=[];return Object.values(s).forEach(function(J){var U=J.namePath;T.push(U.value)}),Hw(e.model,T)}else return Hw(e.model,Y)},g=function(Y,T){if(Ci(!(Y instanceof Function),"Form","validateFields/validateField/validate not support callback, please use promise instead"),!e.model)return Ci(!1,"Form","model is required for validateFields to work."),Promise.reject("Form `model` is required for validateFields to work.");var J=!!Y,U=J?vs(Y).map(xv):[],K=[];Object.values(s).forEach(function(F){var O;if(J||U.push(F.namePath.value),!!((O=F.rules)!==null&&O!==void 0&&O.value.length)){var Q=F.namePath.value;if(!J||nae(U,Q)){var oe=F.validateRules(P({validateMessages:G.value},T));K.push(oe.then(function(){return{name:Q,errors:[],warnings:[]}}).catch(function(se){var he=[],pe=[];return se.forEach(function(re){var _=re.rule.warningOnly,E=re.errors;_?pe.push.apply(pe,yt(E)):he.push.apply(he,yt(E))}),he.length?Promise.reject({name:Q,errors:he,warnings:pe}):{name:Q,errors:he,warnings:pe}}))}}});var H=$C(K);u.value=H;var k=H.then(function(){return u.value===H?Promise.resolve(R(U)):Promise.reject([])}).catch(function(F){var O=F.filter(function(Q){return Q&&Q.errors.length});return Promise.reject({values:R(U),errorFields:O,outOfDate:u.value!==H})});return k.catch(function(F){return F}),k},S=function(){return g.apply(void 0,arguments)},L=function(Y){if(Y.preventDefault(),Y.stopPropagation(),i("submit",Y),e.model){var T=g();T.then(function(J){i("finish",J)}).catch(function(J){w(J)})}};return l({resetFields:M,clearValidate:I,validateFields:g,getFieldsValue:R,validate:C,scrollToField:x}),BC({model:de(function(){return e.model}),name:de(function(){return e.name}),labelAlign:de(function(){return e.labelAlign}),labelCol:de(function(){return e.labelCol}),labelWrap:de(function(){return e.labelWrap}),wrapperCol:de(function(){return e.wrapperCol}),vertical:de(function(){return e.layout==="vertical"}),colon:X,requiredMark:y,validateTrigger:de(function(){return e.validateTrigger}),rules:de(function(){return e.rules}),addField:h,removeField:c,onValidate:function(Y,T,J){i("validate",Y,T,J)},validateMessages:G}),rt(function(){return e.rules},function(){e.validateOnRuleChange&&g()}),function(){var V;return D("form",P(P({},o),{},{onSubmit:L,class:[d.value,o.class]}),[(V=a.default)===null||V===void 0?void 0:V.call(a)])}}});const us=lre;us.useInjectFormItemContext=Hi;us.ItemRest=Om;us.install=function(n){return n.component(us.name,us),n.component(us.Item.name,us.Item),n.component(Om.name,Om),n};var are=["notFoundContent","expandIcon","multiple","bordered","allowClear","choiceTransitionName","transitionName","id"];function rre(n,e,t){var i=n.toLowerCase().split(e).reduce(function(o,r,f){return f===0?[r]:[].concat(yt(o),[e,r])},[]),a=[],l=0;return i.forEach(function(o,r){var f=l+o.length,v=n.slice(l,f);l=f,r%2===1&&(v=D("span",{class:"".concat(t,"-menu-item-keyword"),key:"seperator"},[v])),a.push(v)}),a}var ore=function(e){var t=e.inputValue,i=e.path,a=e.prefixCls,l=e.fieldNames,o=[],r=t.toLowerCase();return i.forEach(function(f,v){v!==0&&o.push(" / ");var b=f[l.label],Z=Yt(b);(Z==="string"||Z==="number")&&(b=rre(String(b),r,a)),o.push(b)}),o};function sre(){return P(P({},dn(CC(),["customSlots","checkable","options"])),{},{multiple:{type:Boolean,default:void 0},size:String,bordered:{type:Boolean,default:void 0},placement:{type:String},suffixIcon:We.any,options:Array,"onUpdate:value":Function})}var cre=He({compatConfig:{MODE:3},name:"ACascader",inheritAttrs:!1,props:pn(sre(),{bordered:!0,choiceTransitionName:"",allowClear:!0}),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=t.emit,r=Hi(),f=Nt("cascader",e),v=f.prefixCls,b=f.rootPrefixCls,Z=f.getPrefixCls,p=f.direction,y=f.getPopupContainer,X=f.renderEmpty,m=f.size,N=de(function(){return Z("select",e.prefixCls)}),G=de(function(){return p.value==="rtl"}),d=de(function(){if(!e.showSearch)return e.showSearch;var I={render:ore};return Yt(e.showSearch)==="object"&&(I=P(P({},I),e.showSearch)),I}),u=de(function(){return _e(e.dropdownClassName||e.popupClassName,"".concat(v.value,"-dropdown"),ce({},"".concat(v.value,"-dropdown-rtl"),G.value))}),s=Ne();a({focus:function(){var w;(w=s.value)===null||w===void 0||w.focus()},blur:function(){var w;(w=s.value)===null||w===void 0||w.blur()}});var h=function(){for(var w=arguments.length,C=new Array(w),x=0;x=n.length?{done:!0}:{done:!1,value:n[i++]}},e:function(v){throw v},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var l=!0,o=!1,r;return{s:function(){t=t.call(n)},n:function(){var v=t.next();return l=v.done,v},e:function(v){o=!0,r=v},f:function(){try{!l&&t.return!=null&&t.return()}finally{if(o)throw r}}}}const a0=He({compatConfig:{MODE:3},name:"ACheckboxGroup",props:hre(),setup:function(e,t){var i=t.slots,a=t.emit,l=t.expose,o=Hi(),r=Nt("checkbox",e),f=r.prefixCls,v=r.direction,b=Ne((e.value===void 0?e.defaultValue:e.value)||[]);rt(function(){return e.value},function(){b.value=e.value||[]});var Z=de(function(){return e.options.map(function(d){return typeof d=="string"||typeof d=="number"?{label:d,value:d}:d})}),p=Ne(Symbol()),y=Ne(new Map),X=function(u){y.value.delete(u),p.value=Symbol()},m=function(u,s){y.value.set(u,s),p.value=Symbol()},N=Ne(new Map);rt(p,function(){var d=new Map,u=yre(y.value.values()),s;try{for(u.s();!(s=u.n()).done;){var h=s.value;d.set(h,!0)}}catch(c){u.e(c)}finally{u.f()}N.value=d});var G=function(u){var s=b.value.indexOf(u.value),h=yt(b.value);s===-1?h.push(u.value):h.splice(s,1),e.value===void 0&&(b.value=h);var c=h.filter(function(W){return N.value.has(W)}).sort(function(W,M){var I=Z.value.findIndex(function(C){return C.value===W}),w=Z.value.findIndex(function(C){return C.value===M});return I-w});a("update:value",c),a("change",c),o.onFieldChange()};return hn(e9,{cancelValue:X,registerValue:m,toggleOption:G,mergedValue:b,name:de(function(){return e.name}),disabled:de(function(){return e.disabled})}),l({mergedValue:b}),function(){var d,u=e.id,s=u===void 0?o.id.value:u,h=null,c="".concat(f.value,"-group");return Z.value&&Z.value.length>0&&(h=Z.value.map(function(W){var M;return D(lr,{prefixCls:f.value,key:W.value.toString(),disabled:"disabled"in W?W.disabled:e.disabled,indeterminate:W.indeterminate,value:W.value,checked:b.value.indexOf(W.value)!==-1,onChange:W.onChange,class:"".concat(c,"-item")},{default:function(){return[W.label===void 0?(M=i.label)===null||M===void 0?void 0:M.call(i,W):W.label]}})})),D("div",{class:[c,ce({},"".concat(c,"-rtl"),v.value==="rtl")],id:s},[h||((d=i.default)===null||d===void 0?void 0:d.call(i))])}}});lr.Group=a0;lr.install=function(n){return n.component(lr.name,lr),n.component(a0.name,a0),n};var Zre=function(){return{actions:Array,author:We.any,avatar:We.any,content:We.any,prefixCls:String,datetime:We.any}},vre=He({compatConfig:{MODE:3},name:"AComment",props:Zre(),slots:["actions","author","avatar","content","datetime"],setup:function(e,t){var i=t.slots,a=Nt("comment",e),l=a.prefixCls,o=a.direction,r=function(b,Z){return D("div",{class:"".concat(b,"-nested")},[Z])},f=function(b){if(!b||!b.length)return null;var Z=b.map(function(p,y){return D("li",{key:"action-".concat(y)},[p])});return Z};return function(){var v,b,Z,p,y,X,m,N,G,d,u,s=l.value,h=(v=e.actions)!==null&&v!==void 0?v:(b=i.actions)===null||b===void 0?void 0:b.call(i),c=(Z=e.author)!==null&&Z!==void 0?Z:(p=i.author)===null||p===void 0?void 0:p.call(i),W=(y=e.avatar)!==null&&y!==void 0?y:(X=i.avatar)===null||X===void 0?void 0:X.call(i),M=(m=e.content)!==null&&m!==void 0?m:(N=i.content)===null||N===void 0?void 0:N.call(i),I=(G=e.datetime)!==null&&G!==void 0?G:(d=i.datetime)===null||d===void 0?void 0:d.call(i),w=D("div",{class:"".concat(s,"-avatar")},[typeof W=="string"?D("img",{src:W,alt:"comment-avatar"},null):W]),C=h?D("ul",{class:"".concat(s,"-actions")},[f(Array.isArray(h)?h:[h])]):null,x=D("div",{class:"".concat(s,"-content-author")},[c&&D("span",{class:"".concat(s,"-content-author-name")},[c]),I&&D("span",{class:"".concat(s,"-content-author-time")},[I])]),R=D("div",{class:"".concat(s,"-content")},[x,D("div",{class:"".concat(s,"-content-detail")},[M]),C]),g=D("div",{class:"".concat(s,"-inner")},[w,R]),S=ti((u=i.default)===null||u===void 0?void 0:u.call(i));return D("div",{class:[s,ce({},"".concat(s,"-rtl"),o.value==="rtl")]},[g,S&&S.length?r(s,S):null])}}});const Wre=wi(vre);var Gre=function(e,t){var i=t.attrs,a=t.slots;return D(qi,P(P({size:"small",type:"primary"},e),i),a)};const Xre=Gre;var Nre=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},"onUpdate:checked":Function}},Mre=He({compatConfig:{MODE:3},name:"ACheckableTag",props:Nre(),setup:function(e,t){var i=t.slots,a=t.emit,l=Nt("tag",e),o=l.prefixCls,r=function(b){var Z=e.checked;a("update:checked",!Z),a("change",!Z),a("click",b)},f=de(function(){var v;return _e(o.value,(v={},ce(v,"".concat(o.value,"-checkable"),!0),ce(v,"".concat(o.value,"-checkable-checked"),e.checked),v))});return function(){var v;return D("span",{class:f.value,onClick:r},[(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});const r0=Mre;var Ire=new RegExp("^(".concat(AG.join("|"),")(-inverse)?$")),Yre=new RegExp("^(".concat(k6.join("|"),")$")),wre=function(){return{prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:We.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},"onUpdate:visible":Function,icon:We.any}},nh=He({compatConfig:{MODE:3},name:"ATag",props:wre(),slots:["closeIcon","icon"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs,o=Nt("tag",e),r=o.prefixCls,f=o.direction,v=Ne(!0);qt(function(){e.visible!==void 0&&(v.value=e.visible)});var b=function(X){X.stopPropagation(),a("update:visible",!1),a("close",X),!X.defaultPrevented&&e.visible===void 0&&(v.value=!1)},Z=de(function(){var y=e.color;return y?Ire.test(y)||Yre.test(y):!1}),p=de(function(){var y;return _e(r.value,(y={},ce(y,"".concat(r.value,"-").concat(e.color),Z.value),ce(y,"".concat(r.value,"-has-color"),e.color&&!Z.value),ce(y,"".concat(r.value,"-hidden"),!v.value),ce(y,"".concat(r.value,"-rtl"),f.value==="rtl"),y))});return function(){var y,X,m,N=e.icon,G=N===void 0?(y=i.icon)===null||y===void 0?void 0:y.call(i):N,d=e.color,u=e.closeIcon,s=u===void 0?(X=i.closeIcon)===null||X===void 0?void 0:X.call(i):u,h=e.closable,c=h===void 0?!1:h,W=function(){return c?s?D("span",{class:"".concat(r.value,"-close-icon"),onClick:b},[s]):D(Ar,{class:"".concat(r.value,"-close-icon"),onClick:b},null):null},M={backgroundColor:d&&!Z.value?d:void 0},I=G||null,w=(m=i.default)===null||m===void 0?void 0:m.call(i),C=I?D(ln,null,[I,D("span",null,[w])]):w,x="onClick"in l,R=D("span",{class:p.value,style:M},[C,W()]);return x?D(qG,null,{default:function(){return[R]}}):R}}});nh.CheckableTag=r0;nh.install=function(n){return n.component(nh.name,nh),n.component(r0.name,r0),n};const t9=nh;function gre(n,e){var t=e.slots,i=e.attrs;return D(t9,P(P({color:"blue"},n),i),t)}var Vre={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"}}]},name:"calendar",theme:"outlined"};const Lre=Vre;function $w(n){for(var e=1;et)&&(i=wn(n,{span:t}),Ci(e===void 0,"Descriptions","Sum of column `span` in a line not match `column` of Descriptions.")),i}function eoe(n,e){var t=ti(n),i=[],a=[],l=e;return t.forEach(function(o,r){var f,v=(f=o.props)===null||f===void 0?void 0:f.span,b=v||1;if(r===t.length-1){a.push(tg(o,v,l)),i.push(a);return}b0?"-"+e.orientation:e.orientation});return function(){var p,y=ti((p=i.default)===null||p===void 0?void 0:p.call(i));return D("div",{class:[v.value,y.length?"".concat(l.value,"-with-text ").concat(l.value,"-with-text").concat(Z.value):""],role:"separator"},[y.length?D("span",{class:"".concat(l.value,"-inner-text"),style:b.value},[y]):null])}}});const aoe=wi(loe);Pr.Button=Mh;Pr.install=function(n){return n.component(Pr.name,Pr),n.component(Mh.name,Mh),n};var gZ;function Su(n){if(typeof document>"u")return 0;if(n||gZ===void 0){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var t=document.createElement("div"),i=t.style;i.position="absolute",i.top="0",i.left="0",i.pointerEvents="none",i.visibility="hidden",i.width="200px",i.height="150px",i.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var a=e.offsetWidth;t.style.overflow="scroll";var l=e.offsetWidth;a===l&&(l=t.clientWidth),document.body.removeChild(t),gZ=a-l}return gZ}function ng(n){var e=n.match(/^(.*)px$/),t=Number(e==null?void 0:e[1]);return Number.isNaN(t)?Su():t}function roe(n){if(typeof document>"u"||!n||!(n instanceof Element))return{width:0,height:0};var e=getComputedStyle(n,"::-webkit-scrollbar"),t=e.width,i=e.height;return{width:ng(t),height:ng(i)}}var d9=function(){return{prefixCls:String,width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),style:{type:Object,default:void 0},class:String,placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:{type:Object,default:void 0},autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0}}},ooe=function(){return P(P({},d9()),{},{forceRender:{type:Boolean,default:void 0},getContainer:We.oneOfType([We.string,We.func,We.object,We.looseBool])})},soe=function(){return P(P({},d9()),{},{getContainer:Function,getOpenCount:Function,scrollLocker:We.any,switchScrollingEffect:Function})};function coe(n){return Array.isArray(n)?n:[n]}var h9={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},uoe=Object.keys(h9).filter(function(n){if(typeof document>"u")return!1;var e=document.getElementsByTagName("html")[0];return n in(e?e.style:{})})[0],ig=h9[uoe];function lg(n,e,t,i){n.addEventListener?n.addEventListener(e,t,i):n.attachEvent&&n.attachEvent("on".concat(e),t)}function ag(n,e,t,i){n.removeEventListener?n.removeEventListener(e,t,i):n.attachEvent&&n.detachEvent("on".concat(e),t)}function doe(n,e){var t=typeof n=="function"?n(e):n;return Array.isArray(t)?t.length===2?t:[t[0],t[1]]:[t]}var rg=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},VZ=!(typeof window<"u"&&window.document&&window.document.createElement),hoe=function n(e,t,i,a){if(!t||t===document||t instanceof Document)return!1;if(t===e.parentNode)return!0;var l=Math.max(Math.abs(i),Math.abs(a))===Math.abs(a),o=Math.max(Math.abs(i),Math.abs(a))===Math.abs(i),r=t.scrollHeight-t.clientHeight,f=t.scrollWidth-t.clientWidth,v=document.defaultView.getComputedStyle(t),b=v.overflowY==="auto"||v.overflowY==="scroll",Z=v.overflowX==="auto"||v.overflowX==="scroll",p=r&&b,y=f&&Z;return l&&(!p||p&&(t.scrollTop>=r&&a<0||t.scrollTop<=0&&a>0))||o&&(!y||y&&(t.scrollLeft>=f&&i<0||t.scrollLeft<=0&&i>0))?n(e,t.parentNode,i,a):!1},foe=["width","height","open","prefixCls","placement","level","levelMove","ease","duration","getContainer","onChange","afterVisibleChange","showMask","maskClosable","maskStyle","keyboard","getOpenCount","scrollLocker","contentWrapperStyle","style","class"],Id={},boe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:soe(),emits:["close","handleClick","change"],setup:function(e,t){var i=t.emit,a=t.slots,l=zn({startPos:{x:null,y:null}}),o,r=Ne(),f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=[],y="drawer_id_".concat(Number((Date.now()+Math.random()).toString().replace(".",Math.round(Math.random()*9).toString())).toString(16)),X=!VZ&&Ui?{passive:!1}:!1;Kt(function(){cn(function(){var V=e.open,Y=e.getContainer,T=e.showMask,J=e.autofocus,U=Y==null?void 0:Y();if(g(e),V&&(U&&U.parentNode===document.body&&(Id[y]=V),W(),cn(function(){J&&m()}),T)){var K;(K=e.scrollLocker)===null||K===void 0||K.lock()}})}),rt(function(){return e.level},function(){g(e)},{flush:"post"}),rt(function(){return e.open},function(){var V=e.open,Y=e.getContainer,T=e.scrollLocker,J=e.showMask,U=e.autofocus,K=Y==null?void 0:Y();K&&K.parentNode===document.body&&(Id[y]=!!V),W(),V?(U&&m(),J&&(T==null||T.lock())):T==null||T.unLock()},{flush:"post"}),la(function(){var V,Y=e.open;delete Id[y],Y&&(M(!1),document.body.style.touchAction=""),(V=e.scrollLocker)===null||V===void 0||V.unLock()}),rt(function(){return e.placement},function(V){V&&(Z.value=null)});var m=function(){var Y,T;(Y=f.value)===null||Y===void 0||(T=Y.focus)===null||T===void 0||T.call(Y)},N=function(Y){Y.touches.length>1||(l.startPos={x:Y.touches[0].clientX,y:Y.touches[0].clientY})},G=function(Y){if(!(Y.changedTouches.length>1)){var T=Y.currentTarget,J=Y.changedTouches[0].clientX-l.startPos.x,U=Y.changedTouches[0].clientY-l.startPos.y;(T===v.value||T===b.value||T===Z.value&&hoe(T,Y.target,J,U))&&Y.cancelable&&Y.preventDefault()}},d=function V(Y){var T=Y.target;ag(T,ig,V),T.style.transition=""},u=function(Y){i("close",Y)},s=function(Y){Y.keyCode===bt.ESC&&(Y.stopPropagation(),u(Y))},h=function(Y){var T=e.open,J=e.afterVisibleChange;Y.target===r.value&&Y.propertyName.match(/transform$/)&&(f.value.style.transition="",!T&&R()&&(document.body.style.overflowX="",v.value&&(v.value.style.left="",v.value.style.width="")),J&&J(!!T))},c=de(function(){var V=e.placement,Y=V==="left"||V==="right",T="translate".concat(Y?"X":"Y");return{isHorizontal:Y,placementName:T}}),W=function(){var Y=e.open,T=e.width,J=e.height,U=c.value,K=U.isHorizontal,H=U.placementName,k=Z.value?Z.value.getBoundingClientRect()[K?"width":"height"]:0,F=(K?T:J)||k;I(Y,H,F)},M=function(Y,T,J,U){var K=e.placement,H=e.levelMove,k=e.duration,F=e.ease,O=e.showMask;p.forEach(function(Q){Q.style.transition="transform ".concat(k," ").concat(F),lg(Q,ig,d);var oe=Y?J:0;if(H){var se=doe(H,{target:Q,open:Y});oe=Y?se[0]:se[1]||0}var he=typeof oe=="number"?"".concat(oe,"px"):oe,pe=K==="left"||K==="top"?he:"-".concat(he);pe=O&&K==="right"&&U?"calc(".concat(pe," + ").concat(U,"px)"):pe,Q.style.transform=oe?"".concat(T,"(").concat(pe,")"):""})},I=function(Y,T,J){if(!VZ){var U=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?Su(!0):0;M(Y,T,J,U),w(U)}i("change",Y)},w=function(Y){var T=e.getContainer,J=e.showMask,U=e.open,K=T==null?void 0:T();if(K&&K.parentNode===document.body&&J){var H=["touchstart"],k=[document.body,v.value,b.value,Z.value];U&&document.body.style.overflow!=="hidden"?(Y&&C(Y),document.body.style.touchAction="none",k.forEach(function(F,O){F&&lg(F,H[O]||"touchmove",O?G:N,X)})):R()&&(document.body.style.touchAction="",Y&&x(Y),k.forEach(function(F,O){F&&ag(F,H[O]||"touchmove",O?G:N,X)}))}},C=function(Y){var T=e.placement,J=e.duration,U=e.ease,K="width ".concat(J," ").concat(U),H="transform ".concat(J," ").concat(U);switch(f.value.style.transition="none",T){case"right":f.value.style.transform="translateX(-".concat(Y,"px)");break;case"top":case"bottom":f.value.style.width="calc(100% - ".concat(Y,"px)"),f.value.style.transform="translateZ(0)";break}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(H,",").concat(K),f.value.style.width="",f.value.style.transform="")})},x=function(Y){var T=e.placement,J=e.duration,U=e.ease;f.value.style.transition="none";var K,H="width ".concat(J," ").concat(U),k="transform ".concat(J," ").concat(U);switch(T){case"left":{f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J);break}case"right":{f.value.style.transform="translateX(".concat(Y,"px)"),f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J),v.value&&(v.value.style.left="-".concat(Y,"px"),v.value.style.width="calc(100% + ".concat(Y,"px)"));break}case"top":case"bottom":{f.value.style.width="calc(100% + ".concat(Y,"px)"),f.value.style.height="100%",f.value.style.transform="translateZ(0)",K="height 0s ".concat(U," ").concat(J);break}}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(k,",").concat(K?"".concat(K,","):"").concat(H),f.value.style.transform="",f.value.style.width="",f.value.style.height="")})},R=function(){return!Object.keys(Id).some(function(Y){return Id[Y]})},g=function(Y){var T=Y.level,J=Y.getContainer;if(!VZ){var U=J==null?void 0:J(),K=U?U.parentNode:null;if(p=[],T==="all"){var H=K?Array.prototype.slice.call(K.children):[];H.forEach(function(k){k.nodeName!=="SCRIPT"&&k.nodeName!=="STYLE"&&k.nodeName!=="LINK"&&k!==U&&p.push(k)})}else T&&coe(T).forEach(function(k){document.querySelectorAll(k).forEach(function(F){p.push(F)})})}},S=function(Y){i("handleClick",Y)},L=Ne(!1);return rt(f,function(){cn(function(){L.value=!0})}),function(){var V,Y,T,J=e.width,U=e.height,K=e.open,H=e.prefixCls,k=e.placement;e.level,e.levelMove,e.ease,e.duration,e.getContainer,e.onChange,e.afterVisibleChange;var F=e.showMask,O=e.maskClosable,Q=e.maskStyle,oe=e.keyboard;e.getOpenCount,e.scrollLocker;var se=e.contentWrapperStyle,he=e.style,pe=e.class,re=jt(e,foe),_=K&&L.value,E=_e(H,(V={},ce(V,"".concat(H,"-").concat(k),!0),ce(V,"".concat(H,"-open"),_),ce(V,pe,!!pe),ce(V,"no-mask",!F),V)),$=c.value.placementName,ae=k==="left"||k==="top"?"-100%":"100%",le=_?"":"".concat($,"(").concat(ae,")");return D("div",P(P({},dn(re,["switchScrollingEffect","autofocus"])),{},{tabindex:-1,class:E,style:he,ref:f,onKeydown:_&&oe?s:void 0,onTransitionend:h}),[F&&D("div",{class:"".concat(H,"-mask"),onClick:O?u:void 0,style:Q,ref:v},null),D("div",{class:"".concat(H,"-content-wrapper"),style:P({transform:le,msTransform:le,width:rg(J)?"".concat(J,"px"):J,height:rg(U)?"".concat(U,"px"):U},se),ref:r},[D("div",{class:"".concat(H,"-content"),ref:Z},[(Y=a.default)===null||Y===void 0?void 0:Y.call(a)]),a.handler?D("div",{onClick:S,ref:b},[(T=a.handler)===null||T===void 0?void 0:T.call(a)]):null])])}}});const og=boe;function zu(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.element,i=t===void 0?document.body:t,a={},l=Object.keys(n);return l.forEach(function(o){a[o]=i.style[o]}),l.forEach(function(o){i.style[o]=n[o]}),a}function moe(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}var LZ={};const sg=function(n){if(!(!moe()&&!n)){var e="ant-scrolling-effect",t=new RegExp("".concat(e),"g"),i=document.body.className;if(n){if(!t.test(i))return;zu(LZ),LZ={},document.body.className=i.replace(t,"").trim();return}var a=Su();if(a&&(LZ=zu({position:"relative",width:"calc(100% - ".concat(a,"px)")}),!t.test(i))){var l="".concat(i," ").concat(e);document.body.className=l.trim()}}};var qa=[],f9="ant-scrolling-effect",RZ=new RegExp("".concat(f9),"g"),poe=0,TZ=new Map,yoe=np(function n(e){var t=this;ip(this,n),ce(this,"getContainer",function(){var i;return(i=t.options)===null||i===void 0?void 0:i.container}),ce(this,"reLock",function(i){var a=qa.find(function(l){var o=l.target;return o===t.lockTarget});a&&t.unLock(),t.options=i,a&&(a.options=i,t.lock())}),ce(this,"lock",function(){var i;if(!qa.some(function(f){var v=f.target;return v===t.lockTarget})){if(qa.some(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)})){qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}]);return}var a=0,l=((i=t.options)===null||i===void 0?void 0:i.container)||document.body;(l===document.body&&window.innerWidth-document.documentElement.clientWidth>0||l.scrollHeight>l.clientHeight)&&(a=Su());var o=l.className;if(qa.filter(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)}).length===0&&TZ.set(l,zu({width:a!==0?"calc(100% - ".concat(a,"px)"):void 0,overflow:"hidden",overflowX:"hidden",overflowY:"hidden"},{element:l})),!RZ.test(o)){var r="".concat(o," ").concat(f9);l.className=r.trim()}qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}])}}),ce(this,"unLock",function(){var i,a=qa.find(function(r){var f=r.target;return f===t.lockTarget});if(qa=qa.filter(function(r){var f=r.target;return f!==t.lockTarget}),!(!a||qa.some(function(r){var f,v=r.options;return(v==null?void 0:v.container)===((f=a.options)===null||f===void 0?void 0:f.container)}))){var l=((i=t.options)===null||i===void 0?void 0:i.container)||document.body,o=l.className;RZ.test(o)&&(zu(TZ.get(l),{element:l}),TZ.delete(l),l.className=l.className.replace(RZ,"").trim())}}),this.lockTarget=poe++,this.options=e}),mo=0,zd=gc(),Zb={},_c=function(e){if(!zd)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(Yt(e)==="object"&&e instanceof window.HTMLElement)return e}return document.body};const b9=He({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:We.any,visible:{type:Boolean,default:void 0}},setup:function(e,t){var i=t.slots,a=Ne(),l=Ne(),o=Ne(),r=new yoe({container:_c(e.getContainer)}),f=function(){var m,N;(m=a.value)===null||m===void 0||(N=m.parentNode)===null||N===void 0||N.removeChild(a.value)},v=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(m||a.value&&!a.value.parentNode){var N=_c(e.getContainer);return N?(N.appendChild(a.value),!0):!1}return!0},b=function(){return zd?(a.value||(a.value=document.createElement("div"),v(!0)),Z(),a.value):null},Z=function(){var m=e.wrapperClassName;a.value&&m&&m!==a.value.className&&(a.value.className=m)};Dl(function(){Z(),v()});var p=function(){mo===1&&!Object.keys(Zb).length?(sg(),Zb=zu({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"})):mo||(zu(Zb),Zb={},sg(!0))},y=Wl();return Kt(function(){var X=!1;rt([function(){return e.visible},function(){return e.getContainer}],function(m,N){var G=ft(m,2),d=G[0],u=G[1],s=ft(N,2),h=s[0],c=s[1];if(zd&&_c(e.getContainer)===document.body&&(d&&!h?mo+=1:X&&(mo-=1)),X){var W=typeof u=="function"&&typeof c=="function";(W?u.toString()!==c.toString():u!==c)&&f(),d&&d!==h&&zd&&_c(u)!==r.getContainer()&&r.reLock({container:_c(u)})}X=!0},{immediate:!0,flush:"post"}),cn(function(){v()||(o.value=At(function(){y.update()}))})}),fn(function(){var X=e.visible,m=e.getContainer;zd&&_c(m)===document.body&&(mo=X&&mo?mo-1:mo),f(),At.cancel(o.value)}),function(){var X=e.forceRender,m=e.visible,N=null,G={getOpenCount:function(){return mo},getContainer:b,switchScrollingEffect:p,scrollLocker:r};return(X||m||l.value)&&(N=D(_2,{getContainer:b,ref:l},{default:function(){var u;return(u=i.default)===null||u===void 0?void 0:u.call(i,G)}})),N}}});var Zoe=["afterVisibleChange","getContainer","wrapperClassName","forceRender"],voe=["visible","afterClose"],Woe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:pn(ooe(),{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",afterVisibleChange:function(){},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:"",keyboard:!0,forceRender:!1,autofocus:!0}),emits:["handleClick","close"],slots:["handler"],setup:function(e,t){var i=t.emit,a=t.slots,l=Ne(null),o=function(v){i("handleClick",v)},r=function(v){i("close",v)};return function(){e.afterVisibleChange;var f=e.getContainer,v=e.wrapperClassName,b=e.forceRender,Z=jt(e,Zoe),p=null;if(!f)return D("div",{class:v,ref:l},[D(og,P(P({},Z),{},{open:e.open,getContainer:function(){return l.value},onClose:r,onHandleClick:o}),a)]);var y=!!a.handler||b;return(y||e.open||l.value)&&(p=D(b9,{visible:e.open,forceRender:y,getContainer:f,wrapperClassName:v},{default:function(m){var N=m.visible,G=m.afterClose,d=jt(m,voe);return D(og,P(P(P({ref:l},Z),d),{},{open:N!==void 0?N:e.open,afterVisibleChange:G!==void 0?G:e.afterVisibleChange,onClose:r,onHandleClick:o}),a)}})),p}}});const Goe=Woe;var Xoe=["width","height","visible","placement","mask","wrapClassName","class"],Noe=pi("top","right","bottom","left");pi("default","large");var cg={distance:180},Moe=function(){return{autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:We.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:We.any,maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},wrapStyle:{type:Object,default:void 0},style:{type:Object,default:void 0},class:We.any,wrapClassName:String,size:{type:String},drawerStyle:{type:Object,default:void 0},headerStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},contentWrapperStyle:{type:Object,default:void 0},title:We.any,visible:{type:Boolean,default:void 0},width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),zIndex:Number,prefixCls:String,push:We.oneOfType([We.looseBool,{type:Object}]),placement:We.oneOf(Noe),keyboard:{type:Boolean,default:void 0},extra:We.any,footer:We.any,footerStyle:{type:Object,default:void 0},level:We.any,levelMove:{type:[Number,Array,Function]},handle:We.any,afterVisibleChange:Function,onAfterVisibleChange:Function,"onUpdate:visible":Function,onClose:Function}},Ioe=He({compatConfig:{MODE:3},name:"ADrawer",inheritAttrs:!1,props:pn(Moe(),{closable:!0,placement:"right",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:cg}),slots:["closeIcon","title","extra","footer","handle"],setup:function(e,t){var i=t.emit,a=t.slots,l=t.attrs,o=Ne(!1),r=Ne(!1),f=Ne(null),v=un("parentDrawerOpts",null),b=Nt("drawer",e),Z=b.prefixCls;jn(!e.afterVisibleChange,"Drawer","`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),jn(e.wrapStyle===void 0,"Drawer","`wrapStyle` prop is deprecated, please use `style` instead"),jn(e.wrapClassName===void 0,"Drawer","`wrapClassName` prop is deprecated, please use `class` instead");var p=function(){o.value=!0},y=function(){o.value=!1,cn(function(){X()})};hn("parentDrawerOpts",{setPush:p,setPull:y}),Kt(function(){var w=e.visible;w&&v&&v.setPush()}),la(function(){v&&v.setPull()}),rt(function(){return e.visible},function(w){v&&(w?v.setPush():v.setPull())},{flush:"post"});var X=function(){var C,x;(C=f.value)===null||C===void 0||(x=C.domFocus)===null||x===void 0||x.call(C)},m=function(C){i("update:visible",!1),i("close",C)},N=function(C){var x;(x=e.afterVisibleChange)===null||x===void 0||x.call(e,C),i("afterVisibleChange",C)},G=de(function(){return e.destroyOnClose&&!e.visible}),d=function(){var C=G.value;C&&(e.visible||(r.value=!0))},u=de(function(){var w=e.push,C=e.placement,x;return typeof w=="boolean"?x=w?cg.distance:0:x=w.distance,x=parseFloat(String(x||0)),C==="left"||C==="right"?"translateX(".concat(C==="left"?x:-x,"px)"):C==="top"||C==="bottom"?"translateY(".concat(C==="top"?x:-x,"px)"):null}),s=de(function(){var w=e.visible,C=e.mask,x=e.placement,R=e.size,g=R===void 0?"default":R,S=e.width,L=e.height;if(!w&&!C)return{};var V={};if(x==="left"||x==="right"){var Y=g==="large"?736:378;V.width=typeof S>"u"?Y:S,V.width=typeof V.width=="string"?V.width:"".concat(V.width,"px")}else{var T=g==="large"?736:378;V.height=typeof L>"u"?T:L,V.height=typeof V.height=="string"?V.height:"".concat(V.height,"px")}return V}),h=de(function(){var w=e.zIndex,C=e.wrapStyle,x=e.mask,R=e.style,g=x?{}:s.value;return P(P(P({zIndex:w,transform:o.value?u.value:void 0},g),C),R)}),c=function(C){var x=e.closable,R=e.headerStyle,g=ui(a,e,"extra"),S=ui(a,e,"title");return!S&&!x?null:D("div",{class:_e("".concat(C,"-header"),ce({},"".concat(C,"-header-close-only"),x&&!S&&!g)),style:R},[D("div",{class:"".concat(C,"-header-title")},[W(C),S&&D("div",{class:"".concat(C,"-title")},[S])]),g&&D("div",{class:"".concat(C,"-extra")},[g])])},W=function(C){var x,R=e.closable,g=a.closeIcon?(x=a.closeIcon)===null||x===void 0?void 0:x.call(a):e.closeIcon;return R&&D("button",{key:"closer",onClick:m,"aria-label":"Close",class:"".concat(C,"-close")},[g===void 0?D(Ar,null,null):g])},M=function(C){var x;if(r.value&&!e.visible)return null;r.value=!1;var R=e.bodyStyle,g=e.drawerStyle,S={},L=G.value;return L&&(S.opacity=0,S.transition="opacity .3s"),D("div",{class:"".concat(C,"-wrapper-body"),style:P(P({},S),g),onTransitionend:d},[c(C),D("div",{key:"body",class:"".concat(C,"-body"),style:R},[(x=a.default)===null||x===void 0?void 0:x.call(a)]),I(C)])},I=function(C){var x=ui(a,e,"footer");if(!x)return null;var R="".concat(C,"-footer");return D("div",{class:R,style:e.footerStyle},[x])};return function(){var w;e.width,e.height;var C=e.visible,x=e.placement,R=e.mask,g=e.wrapClassName,S=e.class,L=jt(e,Xoe),V=R?s.value:{},Y=R?"":"no-mask",T=P(P(P(P({},l),dn(L,["size","closeIcon","closable","destroyOnClose","drawerStyle","headerStyle","bodyStyle","title","push","wrapStyle","onAfterVisibleChange","onClose","onUpdate:visible"])),V),{},{onClose:m,afterVisibleChange:N,handler:!1,prefixCls:Z.value,open:C,showMask:R,placement:x,class:_e((w={},ce(w,S,S),ce(w,g,!!g),ce(w,Y,!!Y),w)),style:h.value,ref:f});return D(Goe,T,{handler:e.handle?function(){return e.handle}:a.handle,default:function(){return M(Z.value)}})}}});const Yoe=wi(Ioe);var m9=function(){return{id:String,prefixCls:String,inputPrefixCls:String,defaultValue:We.oneOfType([We.string,We.number]),value:{type:[String,Number,Symbol],default:void 0},placeholder:{type:[String,Number]},autocomplete:String,type:{type:String,default:"text"},name:String,size:{type:String},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},addonBefore:We.any,addonAfter:We.any,prefix:We.any,suffix:We.any,autofocus:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,valueModifiers:Object,hidden:Boolean}};const eX=m9;var p9=function(){return P(P({},dn(m9(),["prefix","addonBefore","addonAfter","suffix"])),{},{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object})};function y9(n,e,t,i,a){var l;return _e(n,(l={},ce(l,"".concat(n,"-sm"),t==="small"),ce(l,"".concat(n,"-lg"),t==="large"),ce(l,"".concat(n,"-disabled"),i),ce(l,"".concat(n,"-rtl"),a==="rtl"),ce(l,"".concat(n,"-borderless"),!e),l))}var ih=function(e){return e!=null&&(Array.isArray(e)?Ri(e).length:!0)};function woe(n){return ih(n.prefix)||ih(n.suffix)||ih(n.allowClear)}function xZ(n){return ih(n.addonBefore)||ih(n.addonAfter)}var goe=["text","input"];const Z9=He({compatConfig:{MODE:3},name:"ClearableLabeledInput",inheritAttrs:!1,props:{prefixCls:String,inputType:We.oneOf(pi("text","input")),value:We.any,defaultValue:We.any,allowClear:{type:Boolean,default:void 0},element:We.any,handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:We.any,prefix:We.any,addonBefore:We.any,addonAfter:We.any,readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean},setup:function(e,t){var i=t.slots,a=t.attrs,l=Ne(),o=function(y){var X;if((X=l.value)!==null&&X!==void 0&&X.contains(y.target)){var m=e.triggerFocus;m==null||m()}},r=function(y){var X,m=e.allowClear,N=e.value,G=e.disabled,d=e.readonly,u=e.handleReset,s=e.suffix,h=s===void 0?i.suffix:s;if(!m)return null;var c=!G&&!d&&N,W="".concat(y,"-clear-icon");return D(So,{onClick:u,onMousedown:function(I){return I.preventDefault()},class:_e((X={},ce(X,"".concat(W,"-hidden"),!c),ce(X,"".concat(W,"-has-suffix"),!!h),X),W),role:"button"},null)},f=function(y){var X,m=e.suffix,N=m===void 0?(X=i.suffix)===null||X===void 0?void 0:X.call(i):m,G=e.allowClear;return N||G?D("span",{class:"".concat(y,"-suffix")},[r(y),N]):null},v=function(y,X){var m,N,G,d=e.focused,u=e.value,s=e.prefix,h=s===void 0?(m=i.prefix)===null||m===void 0?void 0:m.call(i):s,c=e.size,W=e.suffix,M=W===void 0?(N=i.suffix)===null||N===void 0?void 0:N.call(i):W,I=e.disabled,w=e.allowClear,C=e.direction,x=e.readonly,R=e.bordered,g=e.hidden,S=e.addonAfter,L=S===void 0?i.addonAfter:S,V=e.addonBefore,Y=V===void 0?i.addonBefore:V,T=f(y);if(!woe({prefix:h,suffix:M,allowClear:w}))return wn(X,{value:u});var J=h?D("span",{class:"".concat(y,"-prefix")},[h]):null,U=_e("".concat(y,"-affix-wrapper"),(G={},ce(G,"".concat(y,"-affix-wrapper-focused"),d),ce(G,"".concat(y,"-affix-wrapper-disabled"),I),ce(G,"".concat(y,"-affix-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-affix-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-affix-wrapper-input-with-clear-btn"),M&&w&&u),ce(G,"".concat(y,"-affix-wrapper-rtl"),C==="rtl"),ce(G,"".concat(y,"-affix-wrapper-readonly"),x),ce(G,"".concat(y,"-affix-wrapper-borderless"),!R),ce(G,"".concat(a.class),!xZ({addonAfter:L,addonBefore:Y})&&a.class),G));return D("span",{ref:l,class:U,style:a.style,onMouseup:o,hidden:g},[J,wn(X,{style:null,value:u,class:y9(y,R,c,I)}),T])},b=function(y,X){var m,N,G,d=e.addonBefore,u=d===void 0?(m=i.addonBefore)===null||m===void 0?void 0:m.call(i):d,s=e.addonAfter,h=s===void 0?(N=i.addonAfter)===null||N===void 0?void 0:N.call(i):s,c=e.size,W=e.direction,M=e.hidden;if(!xZ({addonBefore:u,addonAfter:h}))return X;var I="".concat(y,"-group"),w="".concat(I,"-addon"),C=u?D("span",{class:w},[u]):null,x=h?D("span",{class:w},[h]):null,R=_e("".concat(y,"-wrapper"),I,ce({},"".concat(I,"-rtl"),W==="rtl")),g=_e("".concat(y,"-group-wrapper"),(G={},ce(G,"".concat(y,"-group-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-group-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-group-wrapper-rtl"),W==="rtl"),G),a.class);return D("span",{class:g,style:a.style,hidden:M},[D("span",{class:R},[C,wn(X,{style:null}),x])])},Z=function(y,X){var m,N=e.value,G=e.allowClear,d=e.direction,u=e.bordered,s=e.hidden,h=e.addonAfter,c=h===void 0?i.addonAfter:h,W=e.addonBefore,M=W===void 0?i.addonBefore:W;if(!G)return wn(X,{value:N});var I=_e("".concat(y,"-affix-wrapper"),"".concat(y,"-affix-wrapper-textarea-with-clear-btn"),(m={},ce(m,"".concat(y,"-affix-wrapper-rtl"),d==="rtl"),ce(m,"".concat(y,"-affix-wrapper-borderless"),!u),ce(m,"".concat(a.class),!xZ({addonAfter:c,addonBefore:M})&&a.class),m));return D("span",{class:I,style:a.style,hidden:s},[wn(X,{style:null,value:N}),r(y)])};return function(){var p,y=e.prefixCls,X=e.inputType,m=e.element,N=m===void 0?(p=i.element)===null||p===void 0?void 0:p.call(i):m;return X===goe[0]?Z(y,N):b(y,v(y,N))}}});function Fv(n){return typeof n>"u"||n===null?"":String(n)}function lh(n,e,t,i){if(t){var a=e;if(e.type==="click"){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0});var l=n.cloneNode(!0);a.target=l,a.currentTarget=l,l.value="",t(a);return}if(i!==void 0){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0}),a.target=n,a.currentTarget=n,n.value=i,t(a);return}t(a)}}function v9(n,e){if(n){n.focus(e);var t=e||{},i=t.cursor;if(i){var a=n.value.length;switch(i){case"start":n.setSelectionRange(0,0);break;case"end":n.setSelectionRange(a,a);break;default:n.setSelectionRange(0,a)}}}}const Ai=He({compatConfig:{MODE:3},name:"AInput",inheritAttrs:!1,props:eX(),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=t.emit,r=Ne(),f=Ne(),v,b=Hi(),Z=Nt("input",e),p=Z.direction,y=Z.prefixCls,X=Z.size,m=Z.autocomplete,N=Ne(e.value===void 0?e.defaultValue:e.value),G=Ne(!1);rt(function(){return e.value},function(){N.value=e.value}),rt(function(){return e.disabled},function(){e.value!==void 0&&(N.value=e.value),e.disabled&&(G.value=!1)});var d=function(){v=setTimeout(function(){var Y;((Y=r.value)===null||Y===void 0?void 0:Y.getAttribute("type"))==="password"&&r.value.hasAttribute("value")&&r.value.removeAttribute("value")})},u=function(Y){v9(r.value,Y)},s=function(){var Y;(Y=r.value)===null||Y===void 0||Y.blur()},h=function(Y,T,J){var U;(U=r.value)===null||U===void 0||U.setSelectionRange(Y,T,J)},c=function(){var Y;(Y=r.value)===null||Y===void 0||Y.select()};l({focus:u,blur:s,input:r,stateValue:N,setSelectionRange:h,select:c});var W=function(Y){var T=e.onFocus;G.value=!0,T==null||T(Y),cn(function(){d()})},M=function(Y){var T=e.onBlur;G.value=!1,T==null||T(Y),b.onFieldBlur(),cn(function(){d()})},I=function(Y){o("update:value",Y.target.value),o("change",Y),o("input",Y),b.onFieldChange()},w=Wl(),C=function(Y,T){N.value!==Y&&(e.value===void 0?N.value=Y:cn(function(){r.value.value!==N.value&&w.update()}),cn(function(){T&&T()}))},x=function(Y){lh(r.value,Y,I),C("",function(){u()})},R=function(Y){var T=Y.target,J=T.value,U=T.composing;if(!((Y.isComposing||U)&&e.lazy||N.value===J)){var K=Y.target.value;lh(r.value,Y,I),C(K,function(){d()})}},g=function(Y){Y.keyCode===13&&o("pressEnter",Y),o("keydown",Y)};Kt(function(){d()}),fn(function(){clearTimeout(v)});var S=function(){var Y,T=e.addonBefore,J=T===void 0?i.addonBefore:T,U=e.addonAfter,K=U===void 0?i.addonAfter:U,H=e.disabled,k=e.bordered,F=k===void 0?!0:k,O=e.valueModifiers,Q=O===void 0?{}:O,oe=e.htmlSize,se=dn(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","bordered","htmlSize","lazy","showCount","valueModifiers"]),he=P(P(P({},se),a),{},{autocomplete:m.value,onChange:R,onInput:R,onFocus:W,onBlur:M,onKeydown:g,class:_e(y9(y.value,F,X.value,H,p.value),ce({},a.class,a.class&&!J&&!K)),ref:r,key:"ant-input",size:oe,id:(Y=se.id)!==null&&Y!==void 0?Y:b.id.value});Q.lazy&&delete he.onInput,he.autofocus||delete he.autofocus;var pe=D("input",dn(he,["size"]),null);return cl(pe,[[Bu]])},L=function(){var Y,T=N.value,J=e.maxlength,U=e.suffix,K=U===void 0?(Y=i.suffix)===null||Y===void 0?void 0:Y.call(i):U,H=e.showCount,k=Number(J)>0;if(K||H){var F=yt(Fv(T)).length,O=null;return Yt(H)==="object"?O=H.formatter({count:F,maxlength:J}):O="".concat(F).concat(k?" / ".concat(J):""),D(ln,null,[!!H&&D("span",{class:_e("".concat(y.value,"-show-count-suffix"),ce({},"".concat(y.value,"-show-count-has-suffix"),!!K))},[O]),K])}return null};return function(){var V=P(P(P({},a),e),{},{prefixCls:y.value,inputType:"input",value:Fv(N.value),handleReset:x,focused:G.value&&!e.disabled});return D(Z9,P(P({},dn(V,["element","valueModifiers","suffix","showCount"])),{},{ref:f}),P(P({},i),{},{element:S,suffix:L}))}}}),W9=He({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,t){var i=t.slots,a=Nt("input-group",e),l=a.prefixCls,o=a.direction,r=de(function(){var f,v=l.value;return f={},ce(f,"".concat(v),!0),ce(f,"".concat(v,"-lg"),e.size==="large"),ce(f,"".concat(v,"-sm"),e.size==="small"),ce(f,"".concat(v,"-compact"),e.compact),ce(f,"".concat(v,"-rtl"),o.value==="rtl"),f});return function(){var f;return D("span",{class:r.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(f=i.default)===null||f===void 0?void 0:f.call(i)])}}});var CZ=/iPhone/i,ug=/iPod/i,dg=/iPad/i,SZ=/\bAndroid(?:.+)Mobile\b/i,hg=/Android/i,$c=/\bAndroid(?:.+)SD4930UR\b/i,vb=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,po=/Windows Phone/i,fg=/\bWindows(?:.+)ARM\b/i,bg=/BlackBerry/i,mg=/BB10/i,pg=/Opera Mini/i,yg=/\b(CriOS|Chrome)(?:.+)Mobile/i,Zg=/Mobile(?:.+)Firefox\b/i;function In(n,e){return n.test(e)}function vg(n){var e=n||(typeof navigator<"u"?navigator.userAgent:""),t=e.split("[FBAN");if(typeof t[1]<"u"){var i=t,a=ft(i,1);e=a[0]}if(t=e.split("Twitter"),typeof t[1]<"u"){var l=t,o=ft(l,1);e=o[0]}var r={apple:{phone:In(CZ,e)&&!In(po,e),ipod:In(ug,e),tablet:!In(CZ,e)&&In(dg,e)&&!In(po,e),device:(In(CZ,e)||In(ug,e)||In(dg,e))&&!In(po,e)},amazon:{phone:In($c,e),tablet:!In($c,e)&&In(vb,e),device:In($c,e)||In(vb,e)},android:{phone:!In(po,e)&&In($c,e)||!In(po,e)&&In(SZ,e),tablet:!In(po,e)&&!In($c,e)&&!In(SZ,e)&&(In(vb,e)||In(hg,e)),device:!In(po,e)&&(In($c,e)||In(vb,e)||In(SZ,e)||In(hg,e))||In(/\bokhttp\b/i,e)},windows:{phone:In(po,e),tablet:In(fg,e),device:In(po,e)||In(fg,e)},other:{blackberry:In(bg,e),blackberry10:In(mg,e),opera:In(pg,e),firefox:In(Zg,e),chrome:In(yg,e),device:In(bg,e)||In(mg,e)||In(pg,e)||In(Zg,e)||In(yg,e)},any:null,phone:null,tablet:null};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}var Voe=P(P({},vg()),{},{isMobile:vg});const Loe=Voe;var Roe=["disabled","loading","addonAfter","suffix"];const G9=He({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:P(P({},eX()),{},{inputPrefixCls:String,enterButton:We.any,onSearch:{type:Function}}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=t.emit,r=Ne(),f=function(){var s;(s=r.value)===null||s===void 0||s.focus()},v=function(){var s;(s=r.value)===null||s===void 0||s.blur()};l({focus:f,blur:v});var b=function(s){o("update:value",s.target.value),s&&s.target&&s.type==="click"&&o("search",s.target.value,s),o("change",s)},Z=function(s){var h;document.activeElement===((h=r.value)===null||h===void 0?void 0:h.input)&&s.preventDefault()},p=function(s){var h;o("search",(h=r.value)===null||h===void 0?void 0:h.stateValue,s),Loe.tablet||r.value.focus()},y=Nt("input-search",e),X=y.prefixCls,m=y.getPrefixCls,N=y.direction,G=y.size,d=de(function(){return m("input",e.inputPrefixCls)});return function(){var u,s,h,c,W,M=e.disabled,I=e.loading,w=e.addonAfter,C=w===void 0?(u=i.addonAfter)===null||u===void 0?void 0:u.call(i):w,x=e.suffix,R=x===void 0?(s=i.suffix)===null||s===void 0?void 0:s.call(i):x,g=jt(e,Roe),S=e.enterButton,L=S===void 0?(h=(c=i.enterButton)===null||c===void 0?void 0:c.call(i))!==null&&h!==void 0?h:!1:S;L=L||L==="";var V=typeof L=="boolean"?D(tp,null,null):null,Y="".concat(X.value,"-button"),T=Array.isArray(L)?L[0]:L,J,U=T.type&&HW(T.type)&&T.type.__ANT_BUTTON;if(U||T.tagName==="button")J=wn(T,P({onMousedown:Z,onClick:p,key:"enterButton"},U?{class:Y,size:G.value}:{}),!1);else{var K=V&&!L;J=D(qi,{class:Y,type:L?"primary":void 0,size:G.value,disabled:M,key:"enterButton",onMousedown:Z,onClick:p,loading:I,icon:K?V:null},{default:function(){return[K?null:V||L]}})}C&&(J=[J,C]);var H=_e(X.value,(W={},ce(W,"".concat(X.value,"-rtl"),N.value==="rtl"),ce(W,"".concat(X.value,"-").concat(G.value),!!G.value),ce(W,"".concat(X.value,"-with-button"),!!L),W),a.class);return D(Ai,P(P(P({ref:r},dn(g,["onUpdate:value","onSearch","enterButton"])),a),{},{onPressEnter:p,size:G.value,prefixCls:d.value,addonAfter:J,suffix:R,onChange:b,class:H,disabled:M}),i)}}});var Toe=` min-height:0 !important; max-height:none !important; height:0 !important; @@ -112,9 +112,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho z-index:-1000 !important; top:0 !important; right:0 !important -`,Loe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],xZ={},er;function Roe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=n.getAttribute("id")||n.getAttribute("data-reactid")||n.getAttribute("name");if(e&&xZ[t])return xZ[t];var i=window.getComputedStyle(n),a=i.getPropertyValue("box-sizing")||i.getPropertyValue("-moz-box-sizing")||i.getPropertyValue("-webkit-box-sizing"),l=parseFloat(i.getPropertyValue("padding-bottom"))+parseFloat(i.getPropertyValue("padding-top")),o=parseFloat(i.getPropertyValue("border-bottom-width"))+parseFloat(i.getPropertyValue("border-top-width")),r=Loe.map(function(v){return"".concat(v,":").concat(i.getPropertyValue(v))}).join(";"),f={sizingStyle:r,paddingSize:l,borderSize:o,boxSizing:a};return e&&t&&(xZ[t]=f),f}function Toe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;er||(er=document.createElement("textarea"),er.setAttribute("tab-index","-1"),er.setAttribute("aria-hidden","true"),document.body.appendChild(er)),n.getAttribute("wrap")?er.setAttribute("wrap",n.getAttribute("wrap")):er.removeAttribute("wrap");var a=Roe(n,e),l=a.paddingSize,o=a.borderSize,r=a.boxSizing,f=a.sizingStyle;er.setAttribute("style","".concat(f,";").concat(Voe)),er.value=n.value||n.placeholder||"";var v=Number.MIN_SAFE_INTEGER,b=Number.MAX_SAFE_INTEGER,Z=er.scrollHeight,p;if(r==="border-box"?Z+=o:r==="content-box"&&(Z-=l),t!==null||i!==null){er.value=" ";var y=er.scrollHeight-l;t!==null&&(v=y*t,r==="border-box"&&(v=v+l+o),Z=Math.max(v,Z)),i!==null&&(b=y*i,r==="border-box"&&(b=b+l+o),p=Z>b?"":"hidden",Z=Math.min(b,Z))}return{height:"".concat(Z,"px"),minHeight:"".concat(v,"px"),maxHeight:"".concat(b,"px"),overflowY:p,resize:"none"}}var CZ=0,Zg=1,xoe=2,Coe=He({compatConfig:{MODE:3},name:"ResizableTextArea",inheritAttrs:!1,props:f9(),setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o,r,f=Ne(),v=Ne({}),b=Ne(CZ);fn(function(){At.cancel(o),At.cancel(r)});var Z=function(){try{if(document.activeElement===f.value){var d=f.value.selectionStart,u=f.value.selectionEnd;f.value.setSelectionRange(d,u)}}catch{}},p=function(){var d=e.autoSize||e.autosize;if(!(!d||!f.value)){var u=d.minRows,s=d.maxRows;v.value=Toe(f.value,!1,u,s),b.value=Zg,At.cancel(r),r=At(function(){b.value=xoe,r=At(function(){b.value=CZ,Z()})})}},y=function(){At.cancel(o),o=At(p)},X=function(d){if(b.value===CZ){a("resize",d);var u=e.autoSize||e.autosize;u&&y()}};Ci(e.autosize===void 0,"Input.TextArea","autosize is deprecated, please use autoSize instead.");var m=function(){var d=e.prefixCls,u=e.autoSize,s=e.autosize,h=e.disabled,c=dn(e,["prefixCls","onPressEnter","autoSize","autosize","defaultValue","allowClear","type","lazy","maxlength","valueModifiers"]),W=_e(d,i.class,ce({},"".concat(d,"-disabled"),h)),M=[i.style,v.value,b.value===Zg?{overflowX:"hidden",overflowY:"hidden"}:null],I=P(P(P({},c),i),{},{style:M,class:W});return I.autofocus||delete I.autofocus,I.rows===0&&delete I.rows,D(rr,{onResize:X,disabled:!(u||s)},{default:function(){return[vl(D("textarea",P(P({},I),{},{ref:f}),null),[[Qu]])]}})};rt(function(){return e.value},function(){cn(function(){p()})}),Kt(function(){cn(function(){p()})});var N=Wl();return l({resizeTextarea:p,textArea:f,instance:N}),function(){return m()}}});const Soe=Coe;function v9(n,e){return yt(n||"").slice(0,e).join("")}function vg(n,e,t,i){var a=t;return n?a=v9(t,i):yt(e||"").lengthi&&(a=e),a}const q1=He({compatConfig:{MODE:3},name:"ATextarea",inheritAttrs:!1,props:f9(),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.emit,o=Hi(),r=Ne(e.value===void 0?e.defaultValue:e.value),f=Ne(),v=Ne(""),b=Nt("input",e),Z=b.prefixCls,p=b.size,y=b.direction,X=de(function(){return e.showCount===""||e.showCount||!1}),m=de(function(){return Number(e.maxlength)>0}),N=Ne(!1),G=Ne(),d=Ne(0),u=function(L){N.value=!0,G.value=v.value,d.value=L.currentTarget.selectionStart,l("compositionstart",L)},s=function(L){N.value=!1;var V=L.currentTarget.value;if(m.value){var Y,T=d.value>=e.maxlength+1||d.value===((Y=G.value)===null||Y===void 0?void 0:Y.length);V=vg(T,G.value,V,e.maxlength)}V!==v.value&&(M(V),ih(L.currentTarget,L,C,V)),l("compositionend",L)},h=Wl();rt(function(){return e.value},function(){"value"in h.vnode.props;var S;r.value=(S=e.value)!==null&&S!==void 0?S:""});var c=function(L){var V;p9((V=f.value)===null||V===void 0?void 0:V.textArea,L)},W=function(){var L,V;(L=f.value)===null||L===void 0||(V=L.textArea)===null||V===void 0||V.blur()},M=function(L,V){r.value!==L&&(e.value===void 0?r.value=L:cn(function(){if(f.value.textArea.value!==v.value){var Y,T,J;(Y=f.value)===null||Y===void 0||(T=(J=Y.instance).update)===null||T===void 0||T.call(J)}}),cn(function(){V&&V()}))},I=function(L){L.keyCode===13&&l("pressEnter",L),l("keydown",L)},w=function(L){var V=e.onBlur;V==null||V(L),o.onFieldBlur()},C=function(L){l("update:value",L.target.value),l("change",L),l("input",L),o.onFieldChange()},x=function(L){ih(f.value.textArea,L,C),M("",function(){c()})},R=function(L){var V=L.target.composing,Y=L.target.value;if(N.value=!!(L.isComposing||V),!(N.value&&e.lazy||r.value===Y)){if(m.value){var T=L.target,J=T.selectionStart>=e.maxlength+1||T.selectionStart===Y.length||!T.selectionStart;Y=vg(J,v.value,Y,e.maxlength)}ih(L.currentTarget,L,C,Y),M(Y)}},g=function(){var L,V,Y,T=i.style,J=i.class,U=e.bordered,K=U===void 0?!0:U,H=P(P(P({},dn(e,["allowClear"])),i),{},{style:X.value?{}:T,class:(L={},ce(L,"".concat(Z.value,"-borderless"),!K),ce(L,"".concat(J),J&&!X.value),ce(L,"".concat(Z.value,"-sm"),p.value==="small"),ce(L,"".concat(Z.value,"-lg"),p.value==="large"),L),showCount:null,prefixCls:Z.value,onInput:R,onChange:R,onBlur:w,onKeydown:I,onCompositionstart:u,onCompositionend:s});return(V=e.valueModifiers)!==null&&V!==void 0&&V.lazy&&delete H.onInput,D(Soe,P(P({},H),{},{id:(Y=H.id)!==null&&Y!==void 0?Y:o.id.value,ref:f,maxlength:e.maxlength}),null)};return a({focus:c,blur:W,resizableTextArea:f}),qt(function(){var S=Sv(r.value);!N.value&&m.value&&(e.value===null||e.value===void 0)&&(S=v9(S,e.maxlength)),v.value=S}),function(){var S=e.maxlength,L=e.bordered,V=L===void 0?!0:L,Y=e.hidden,T=i.style,J=i.class,U=P(P(P({},e),i),{},{prefixCls:Z.value,inputType:"text",handleReset:x,direction:y.value,bordered:V,style:X.value?void 0:T}),K=D(m9,P(P({},U),{},{value:v.value}),{element:g});if(X.value){var H=yt(v.value).length,k="";Yt(X.value)==="object"?k=X.value.formatter({count:H,maxlength:S}):k="".concat(H).concat(m.value?" / ".concat(S):""),K=D("div",{hidden:Y,class:_e("".concat(Z.value,"-textarea"),ce({},"".concat(Z.value,"-textarea-rtl"),y.value==="rtl"),"".concat(Z.value,"-textarea-show-count"),J),style:T,"data-count":Yt(k)!=="object"?k:void 0},[K])}return K}}});var zoe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"};const koe=zoe;function Wg(n){for(var e=1;ei){if(e>0)return ce({},n,l);if(e<0&&ai)return ce({},n,e<0?l:-l);return{}}function nse(n,e,t,i){var a=Qoe(),l=a.width,o=a.height,r=null;return n<=l&&e<=o?r={x:0,y:0}:(n>l||e>o)&&(r=P(P({},wg("x",t,n,l)),wg("y",i,e,o))),r}var gg=Symbol("previewGroupContext"),iX={provide:function(e){hn(gg,e)},inject:function(){return un(gg,{isPreviewGroup:Ne(!1),previewUrls:de(function(){return new Map}),setPreviewUrls:function(){},current:Ne(null),setCurrent:function(){},setShowPreview:function(){},setMousePosition:function(){},registerImage:null,rootClassName:""})}},ise=He({compatConfig:{MODE:3},name:"PreviewGroup",inheritAttrs:!1,props:{previewPrefixCls:String,preview:{type:[Boolean,Object],default:!0},icons:{type:Object,default:function(){return{}}}},setup:function(e,t){var i=t.slots,a=de(function(){var M={visible:void 0,onVisibleChange:function(){},getContainer:void 0,current:0};return Yt(e.preview)==="object"?I9(e.preview,M):M}),l=zn(new Map),o=Ne(),r=de(function(){return a.value.visible}),f=de(function(){return a.value.getContainer}),v=function(I,w){var C,x;(C=(x=a.value).onVisibleChange)===null||C===void 0||C.call(x,I,w)},b=Wi(!!r.value,{value:r,onChange:v}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne(null),m=de(function(){return r.value!==void 0}),N=de(function(){return Array.from(l.keys())}),G=de(function(){return N.value[a.value.current]}),d=de(function(){return new Map(Array.from(l).filter(function(M){var I=ft(M,2),w=I[1].canPreview;return!!w}).map(function(M){var I=ft(M,2),w=I[0],C=I[1].url;return[w,C]}))}),u=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;l.set(I,{url:w,canPreview:C})},s=function(I){o.value=I},h=function(I){X.value=I},c=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,x=function(){l.delete(I)};return l.set(I,{url:w,canPreview:C}),x},W=function(I){I==null||I.stopPropagation(),y(!1),h(null)};return rt(G,function(M){s(M)},{immediate:!0,flush:"post"}),qt(function(){p.value&&m.value&&s(G.value)},{flush:"post"}),iX.provide({isPreviewGroup:Ne(!0),previewUrls:d,setPreviewUrls:u,current:o,setCurrent:s,setShowPreview:y,setMousePosition:h,registerImage:c}),function(){var M=Xn({},(Zp(a.value),a.value));return D(ln,null,[i.default&&i.default(),D(N9,P(P({},M),{},{"ria-hidden":!p.value,visible:p.value,prefixCls:e.previewPrefixCls,onClose:W,mousePosition:X.value,src:d.value.get(o.value),icons:e.icons,getContainer:f.value}),null)])}}});const X9=ise;var Ks={x:0,y:0},lse=P(P({},yp()),{},{src:String,alt:String,rootClassName:String,icons:{type:Object,default:function(){return{}}}}),ase=He({compatConfig:{MODE:3},name:"Preview",inheritAttrs:!1,props:lse,emits:["close","afterClose"],setup:function(e,t){var i=t.emit,a=t.attrs,l=zn(e.icons),o=l.rotateLeft,r=l.rotateRight,f=l.zoomIn,v=l.zoomOut,b=l.close,Z=l.left,p=l.right,y=Ne(1),X=Ne(0),m=tse(Ks),N=ft(m,2),G=N[0],d=N[1],u=function(){return i("close")},s=Ne(),h=zn({originX:0,originY:0,deltaX:0,deltaY:0}),c=Ne(!1),W=iX.inject(),M=W.previewUrls,I=W.current,w=W.isPreviewGroup,C=W.setCurrent,x=de(function(){return M.value.size}),R=de(function(){return Array.from(M.value.keys())}),g=de(function(){return R.value.indexOf(I.value)}),S=de(function(){return w.value?M.value.get(I.value):e.src}),L=de(function(){return w.value&&x.value>1}),V=Ne({wheelDirection:0}),Y=function(){y.value=1,X.value=0,d(Ks),i("afterClose")},T=function(){y.value++,d(Ks)},J=function(){y.value>1&&y.value--,d(Ks)},U=function(){X.value+=90},K=function(){X.value-=90},H=function(le){le.preventDefault(),le.stopPropagation(),g.value>0&&C(R.value[g.value-1])},k=function(le){le.preventDefault(),le.stopPropagation(),g.value0&&C(R.value[g.value-1]):le.keyCode===bt.RIGHT&&g.value0?J():ae<0&&T()})}),la(function(){$()}),function(){var ae=e.visible,le=e.prefixCls,ee=e.rootClassName;return D(G9,P(P({},a),{},{transitionName:"zoom",maskTransitionName:"fade",closable:!1,keyboard:!0,prefixCls:le,onClose:u,afterClose:Y,visible:ae,wrapClassName:F,rootClassName:ee,getContainer:e.getContainer}),{default:function(){return[D("ul",{class:"".concat(e.prefixCls,"-operations")},[oe.map(function(be){var ne=be.icon,B=be.onClick,q=be.type,ue=be.disabled;return D("li",{class:_e(O,ce({},"".concat(e.prefixCls,"-operations-operation-disabled"),ue&&(ue==null?void 0:ue.value))),onClick:B,key:q},[Vl(ne,{class:Q})])})]),D("div",{class:"".concat(e.prefixCls,"-img-wrapper"),style:{transform:"translate3d(".concat(G.x,"px, ").concat(G.y,"px, 0)")}},[D("img",{onMousedown:he,onDblclick:E,ref:s,class:"".concat(e.prefixCls,"-img"),src:S.value,alt:e.alt,style:{transform:"scale3d(".concat(y.value,", ").concat(y.value,", 1) rotate(").concat(X.value,"deg)")}},null)]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-left"),ce({},"".concat(e.prefixCls,"-switch-left-disabled"),g.value<=0)),onClick:H},[Z]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-right"),ce({},"".concat(e.prefixCls,"-switch-right-disabled"),g.value>=x.value-1)),onClick:k},[p])]}})}}});const N9=ase;var rse=["icons","maskClassName","src"],M9=function(){return{src:String,wrapperClassName:String,wrapperStyle:{type:Object,default:void 0},rootClassName:String,prefixCls:String,previewPrefixCls:String,previewMask:{type:[Boolean,Function],default:void 0},placeholder:We.any,fallback:String,preview:{type:[Boolean,Object],default:!0},onClick:{type:Function},onError:{type:Function}}},I9=function(e,t){var i=P({},e);return Object.keys(t).forEach(function(a){e[a]===void 0&&(i[a]=t[a])}),i},ose=0,Y9=He({compatConfig:{MODE:3},name:"Image",inheritAttrs:!1,props:M9(),emits:["click","error"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=de(function(){return e.prefixCls}),r=de(function(){return"".concat(o.value,"-preview")}),f=de(function(){var J={visible:void 0,onVisibleChange:function(){},getContainer:void 0};return Yt(e.preview)==="object"?I9(e.preview,J):J}),v=de(function(){return e.placeholder&&e.placeholder!==!0||a.placeholder}),b=de(function(){return f.value.visible}),Z=de(function(){return f.value.getContainer}),p=de(function(){return b.value!==void 0}),y=function(U,K){var H,k;(H=(k=f.value).onVisibleChange)===null||H===void 0||H.call(k,U,K)},X=Wi(!!b.value,{value:b,onChange:y}),m=ft(X,2),N=m[0],G=m[1];rt(N,function(J,U){y(J,U)});var d=Ne(v.value?"loading":"normal");rt(function(){return e.src},function(){d.value=v.value?"loading":"normal"});var u=Ne(null),s=de(function(){return d.value==="error"}),h=iX.inject(),c=h.isPreviewGroup,W=h.setCurrent,M=h.setShowPreview,I=h.setMousePosition,w=h.registerImage,C=Ne(ose++),x=de(function(){return e.preview&&!s.value}),R=function(){d.value="normal"},g=function(U){d.value="error",l("error",U)},S=function(U){if(!p.value){var K=s0(U.target),H=K.left,k=K.top;c.value?(W(C.value),I({x:H,y:k})):u.value={x:H,y:k}}c.value?M(!0):G(!0),l("click",U)},L=function(){G(!1),p.value||(u.value=null)},V=Ne(null);rt(function(){return V},function(){d.value==="loading"&&V.value.complete&&(V.value.naturalWidth||V.value.naturalHeight)&&R()});var Y=function(){};Kt(function(){rt([function(){return e.src},x],function(){if(Y(),!c.value)return function(){};Y=w(C.value,e.src,x.value),x.value||Y()},{flush:"post",immediate:!0})}),la(function(){Y()});var T=function(U){return Poe(U)?U+"px":U};return function(){var J=e.prefixCls,U=e.wrapperClassName,K=e.fallback,H=e.src,k=e.placeholder,F=e.wrapperStyle,O=e.rootClassName,Q=i.width,oe=i.height,se=i.crossorigin,he=i.decoding,pe=i.alt,re=i.sizes,_=i.srcset,E=i.usemap,$=i.class,ae=i.style,le=f.value,ee=le.icons,te=le.maskClassName,be=le.src,ne=jt(le,rse),B=_e(J,U,O,ce({},"".concat(J,"-error"),s.value)),q=s.value&&K?K:be??H,ue={crossorigin:se,decoding:he,alt:pe,sizes:re,srcset:_,usemap:E,class:_e("".concat(J,"-img"),ce({},"".concat(J,"-img-placeholder"),k===!0),$),style:P({height:oe},ae)};return D(ln,null,[D("div",{class:B,onClick:x.value?S:function(ve){l("click",ve)},style:P({width:T(Q),height:T(oe)},F)},[D("img",P(P(P({},ue),s.value&&K?{src:K}:{onLoad:R,onError:g,src:H}),{},{ref:V}),null),d.value==="loading"&&D("div",{"aria-hidden":"true",class:"".concat(J,"-placeholder")},[k||a.placeholder&&a.placeholder()]),a.previewMask&&x.value&&D("div",{class:["".concat(J,"-mask"),te]},[a.previewMask()])]),!c.value&&x.value&&D(N9,P(P({},ne),{},{"aria-hidden":!N.value,visible:N.value,prefixCls:r.value,onClose:L,mousePosition:u.value,src:q,alt:pe,getContainer:Z.value,icons:ee,rootClassName:O}),null)])}}});Y9.PreviewGroup=X9;const sse=Y9;var cse={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"};const use=cse;function Vg(n){for(var e=1;eNumber.MAX_SAFE_INTEGER)return String(zv()?BigInt(n).toString():Number.MAX_SAFE_INTEGER);if(nNumber.MAX_SAFE_INTEGER)return new n(Number.MAX_SAFE_INTEGER);if(a0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":uX(this.number):this.origin}}]),n}(),Tse=function(){function n(e){if(ep(this,n),ce(this,"origin",""),!e&&e!==0||!String(e).trim()){this.empty=!0;return}if(this.origin=String(e),e==="-"){this.nan=!0;return}var t=e;if(cX(t)&&(t=Number(t)),t=typeof t=="string"?t:uX(t),dX(t)){var i=lh(t);this.negative=i.negative;var a=i.trimStr.split(".");this.integer=BigInt(a[0]);var l=a[1]||"0";this.decimal=BigInt(l),this.decimalLen=l.length}else this.nan=!0}return q0(n,[{key:"getMark",value:function(){return this.negative?"-":""}},{key:"getIntegerStr",value:function(){return this.integer.toString()}},{key:"getDecimalStr",value:function(){return this.decimal.toString().padStart(this.decimalLen,"0")}},{key:"alignDecimal",value:function(t){var i="".concat(this.getMark()).concat(this.getIntegerStr()).concat(this.getDecimalStr().padEnd(t,"0"));return BigInt(i)}},{key:"negate",value:function(){var t=new n(this.toString());return t.negative=!t.negative,t}},{key:"add",value:function(t){if(this.isInvalidate())return new n(t);var i=new n(t);if(i.isInvalidate())return this;var a=Math.max(this.getDecimalStr().length,i.getDecimalStr().length),l=this.alignDecimal(a),o=i.alignDecimal(a),r=(l+o).toString(),f=lh(r),v=f.negativeStr,b=f.trimStr,Z="".concat(v).concat(b.padStart(a+1,"0"));return new n("".concat(Z.slice(0,-a),".").concat(Z.slice(-a)))}},{key:"isEmpty",value:function(){return this.empty}},{key:"isNaN",value:function(){return this.nan}},{key:"isInvalidate",value:function(){return this.isEmpty()||this.isNaN()}},{key:"equals",value:function(t){return this.toString()===(t==null?void 0:t.toString())}},{key:"lessEquals",value:function(t){return this.add(t.negate().toString()).toNumber()<=0}},{key:"toNumber",value:function(){return this.isNaN()?NaN:Number(this.toString())}},{key:"toString",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":lh("".concat(this.getMark()).concat(this.getIntegerStr(),".").concat(this.getDecimalStr())).fullStr:this.origin}}]),n}();function Dr(n){return zv()?new Tse(n):new Rse(n)}function kv(n,e,t){if(n==="")return"";var i=lh(n),a=i.negativeStr,l=i.integerStr,o=i.decimalStr,r="".concat(e).concat(o),f="".concat(a).concat(l);if(t>=0){var v=Number(o[t]);if(v>=5){var b=Dr(n).add("".concat(a,"0.").concat("0".repeat(t)).concat(10-v));return kv(b.toString(),e,t)}return t===0?f:"".concat(f).concat(e).concat(o.padEnd(t,"0").slice(0,t))}return r===".0"?f:"".concat(f).concat(r)}var xse=200,Cse=600;const Sse=He({compatConfig:{MODE:3},name:"StepHandler",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:{type:Function}},slots:["upNode","downNode"],setup:function(e,t){var i=t.slots,a=t.emit,l=Ne(),o=function(v,b){v.preventDefault(),a("step",b);function Z(){a("step",b),l.value=setTimeout(Z,xse)}l.value=setTimeout(Z,Cse)},r=function(){clearTimeout(l.value)};return fn(function(){r()}),function(){if(SG())return null;var f=e.prefixCls,v=e.upDisabled,b=e.downDisabled,Z="".concat(f,"-handler"),p=_e(Z,"".concat(Z,"-up"),ce({},"".concat(Z,"-up-disabled"),v)),y=_e(Z,"".concat(Z,"-down"),ce({},"".concat(Z,"-down-disabled"),b)),X={unselectable:"on",role:"button",onMouseup:r,onMouseleave:r},m=i.upNode,N=i.downNode;return D("div",{class:"".concat(Z,"-wrap")},[D("span",P(P({},X),{},{onMousedown:function(d){o(d,!0)},"aria-label":"Increase Value","aria-disabled":v,class:p}),[(m==null?void 0:m())||D("span",{unselectable:"on",class:"".concat(f,"-handler-up-inner")},null)]),D("span",P(P({},X),{},{onMousedown:function(d){o(d,!1)},"aria-label":"Decrease Value","aria-disabled":b,class:y}),[(N==null?void 0:N())||D("span",{unselectable:"on",class:"".concat(f,"-handler-down-inner")},null)])])}}});function zse(n,e){var t=Ne(null);function i(){try{var l=n.value,o=l.selectionStart,r=l.selectionEnd,f=l.value,v=f.substring(0,o),b=f.substring(r);t.value={start:o,end:r,value:f,beforeTxt:v,afterTxt:b}}catch{}}function a(){if(n.value&&t.value&&e.value)try{var l=n.value.value,o=t.value,r=o.beforeTxt,f=o.afterTxt,v=o.start,b=l.length;if(l.endsWith(f))b=l.length-t.value.afterTxt.length;else if(l.startsWith(r))b=r.length;else{var Z=r[v-1],p=l.indexOf(Z,v-1);p!==-1&&(b=p+1)}n.value.setSelectionRange(b,b)}catch(y){"Something warning of cursor restore. Please fire issue about this: ".concat(y.message)}}return[i,a]}const kse=function(){var n=Ne(0),e=function(){At.cancel(n.value)};return fn(function(){e()}),function(t){e(),n.value=At(function(){t()})}};var Fse=["prefixCls","min","max","step","defaultValue","value","disabled","readonly","keyboard","controls","autofocus","stringMode","parser","formatter","precision","decimalSeparator","onChange","onInput","onPressEnter","onStep","lazy","class","style"],Cg=function(e,t){return e||t.isEmpty()?t.toString():t.toNumber()},Sg=function(e){var t=Dr(e);return t.isInvalidate()?null:t},V9=function(){return{stringMode:{type:Boolean},defaultValue:{type:[String,Number]},value:{type:[String,Number]},prefixCls:{type:String},min:{type:[String,Number]},max:{type:[String,Number]},step:{type:[String,Number],default:1},tabindex:{type:Number},controls:{type:Boolean,default:!0},readonly:{type:Boolean},disabled:{type:Boolean},autofocus:{type:Boolean},keyboard:{type:Boolean,default:!0},parser:{type:Function},formatter:{type:Function},precision:{type:Number},decimalSeparator:{type:String},onInput:{type:Function},onChange:{type:Function},onPressEnter:{type:Function},onStep:{type:Function},onBlur:{type:Function},onFocus:{type:Function}}};const Jse=He({compatConfig:{MODE:3},name:"InnerInputNumber",inheritAttrs:!1,props:P(P({},V9()),{},{lazy:Boolean}),slots:["upHandler","downHandler"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=t.expose,r=Ne(),f=Ne(!1),v=Ne(!1),b=Ne(!1),Z=Ne(Dr(e.value));function p(k){e.value===void 0&&(Z.value=k)}var y=function(F,O){if(!O)return e.precision>=0?e.precision:Math.max(Vh(F),Vh(e.step))},X=function(F){var O=String(F);if(e.parser)return e.parser(O);var Q=O;return e.decimalSeparator&&(Q=Q.replace(e.decimalSeparator,".")),Q.replace(/[^\w.-]+/g,"")},m=Ne(""),N=function(F,O){if(e.formatter)return e.formatter(F,{userTyping:O,input:String(m.value)});var Q=typeof F=="number"?uX(F):F;if(!O){var oe=y(Q,O);if(dX(Q)&&(e.decimalSeparator||oe>=0)){var se=e.decimalSeparator||".";Q=kv(Q,se,oe)}}return Q},G=function(){var k=e.value;return Z.value.isInvalidate()&&["string","number"].includes(Yt(k))?Number.isNaN(k)?"":k:N(Z.value.toString(),!1)}();m.value=G;function d(k,F){m.value=N(k.isInvalidate()?k.toString(!1):k.toString(!F),F)}var u=de(function(){return Sg(e.max)}),s=de(function(){return Sg(e.min)}),h=de(function(){return!u.value||!Z.value||Z.value.isInvalidate()?!1:u.value.lessEquals(Z.value)}),c=de(function(){return!s.value||!Z.value||Z.value.isInvalidate()?!1:Z.value.lessEquals(s.value)}),W=zse(r,f),M=ft(W,2),I=M[0],w=M[1],C=function(F){return u.value&&!F.lessEquals(u.value)?u.value:s.value&&!s.value.lessEquals(F)?s.value:null},x=function(F){return!C(F)},R=function(F,O){var Q=F,oe=x(Q)||Q.isEmpty();if(!Q.isEmpty()&&!O&&(Q=C(Q)||Q,oe=!0),!e.readonly&&!e.disabled&&oe){var se=Q.toString(),he=y(se,O);if(he>=0&&(Q=Dr(kv(se,".",he))),!Q.equals(Z.value)){var pe;p(Q),(pe=e.onChange)===null||pe===void 0||pe.call(e,Q.isEmpty()?null:Cg(e.stringMode,Q)),e.value===void 0&&d(Q,O)}return Q}return Z.value},g=kse(),S=function k(F){var O;if(I(),m.value=F,!b.value){var Q=X(F),oe=Dr(Q);oe.isNaN()||R(oe,!0)}(O=e.onInput)===null||O===void 0||O.call(e,F),g(function(){var se=F;e.parser||(se=F.replace(/。/g,".")),se!==F&&k(se)})},L=function(){b.value=!0},V=function(){b.value=!1,S(r.value.value)},Y=function(F){S(F.target.value)},T=function(F){var O,Q;if(!(F&&h.value||!F&&c.value)){v.value=!1;var oe=Dr(e.step);F||(oe=oe.negate());var se=(Z.value||Dr(0)).add(oe.toString()),he=R(se,!1);(O=e.onStep)===null||O===void 0||O.call(e,Cg(e.stringMode,he),{offset:e.step,type:F?"up":"down"}),(Q=r.value)===null||Q===void 0||Q.focus()}},J=function(F){var O=Dr(X(m.value)),Q=O;O.isNaN()?Q=Z.value:Q=R(O,F),e.value!==void 0?d(Z.value,!1):Q.isNaN()||d(Q,!1)},U=function(F){var O=F.which;if(v.value=!0,O===bt.ENTER){var Q;b.value||(v.value=!1),J(!1),(Q=e.onPressEnter)===null||Q===void 0||Q.call(e,F)}e.keyboard!==!1&&!b.value&&[bt.UP,bt.DOWN].includes(O)&&(T(bt.UP===O),F.preventDefault())},K=function(){v.value=!1},H=function(F){J(!1),f.value=!1,v.value=!1,l("blur",F)};return rt(function(){return e.precision},function(){Z.value.isInvalidate()||d(Z.value,!1)},{flush:"post"}),rt(function(){return e.value},function(){var k=Dr(e.value);Z.value=k;var F=Dr(X(m.value));(!k.equals(F)||!v.value||e.formatter)&&d(k,v.value)},{flush:"post"}),rt(m,function(){e.formatter&&w()},{flush:"post"}),rt(function(){return e.disabled},function(k){k&&(f.value=!1)}),o({focus:function(){var F;(F=r.value)===null||F===void 0||F.focus()},blur:function(){var F;(F=r.value)===null||F===void 0||F.blur()}}),function(){var k,F=P(P({},i),e),O=F.prefixCls,Q=O===void 0?"rc-input-number":O,oe=F.min,se=F.max,he=F.step,pe=he===void 0?1:he;F.defaultValue,F.value;var re=F.disabled,_=F.readonly;F.keyboard;var E=F.controls,$=E===void 0?!0:E,ae=F.autofocus;F.stringMode,F.parser,F.formatter,F.precision,F.decimalSeparator,F.onChange,F.onInput,F.onPressEnter,F.onStep;var le=F.lazy,ee=F.class,te=F.style,be=jt(F,Fse),ne=a.upHandler,B=a.downHandler,q="".concat(Q,"-input"),ue={};return le?ue.onChange=Y:ue.onInput=Y,D("div",{class:_e(Q,ee,(k={},ce(k,"".concat(Q,"-focused"),f.value),ce(k,"".concat(Q,"-disabled"),re),ce(k,"".concat(Q,"-readonly"),_),ce(k,"".concat(Q,"-not-a-number"),Z.value.isNaN()),ce(k,"".concat(Q,"-out-of-range"),!Z.value.isInvalidate()&&!x(Z.value)),k)),style:te,onKeydown:U,onKeyup:K},[$&&D(Sse,{prefixCls:Q,upDisabled:h.value,downDisabled:c.value,onStep:T},{upNode:ne,downNode:B}),D("div",{class:"".concat(q,"-wrap")},[D("input",P(P(P({autofocus:ae,autocomplete:"off",role:"spinbutton","aria-valuemin":oe,"aria-valuemax":se,"aria-valuenow":Z.value.isInvalidate()?null:Z.value.toString(),step:pe},be),{},{ref:r,class:q,value:m.value,disabled:re,readonly:_,onFocus:function(Ge){f.value=!0,l("focus",Ge)}},ue),{},{onBlur:H,onCompositionstart:L,onCompositionend:V}),null)])])}}});function SZ(n){return n!=null}var Dse=["class","bordered","readonly","style","addonBefore","addonAfter","prefix","valueModifiers"],zg=V9(),Ose=function(){return P(P({},zg),{},{size:{type:String},bordered:{type:Boolean,default:!0},placeholder:String,name:String,id:String,type:String,addonBefore:We.any,addonAfter:We.any,prefix:We.any,"onUpdate:value":zg.onChange,valueModifiers:Object})},zZ=He({compatConfig:{MODE:3},name:"AInputNumber",inheritAttrs:!1,props:Ose(),slots:["addonBefore","addonAfter","prefix"],setup:function(e,t){var i=t.emit,a=t.expose,l=t.attrs,o=t.slots,r=Hi(),f=Nt("input-number",e),v=f.prefixCls,b=f.size,Z=f.direction,p=Ne(e.value===void 0?e.defaultValue:e.value),y=Ne(!1);rt(function(){return e.value},function(){p.value=e.value});var X=Ne(null),m=function(){var h;(h=X.value)===null||h===void 0||h.focus()},N=function(){var h;(h=X.value)===null||h===void 0||h.blur()};a({focus:m,blur:N});var G=function(h){e.value===void 0&&(p.value=h),i("update:value",h),i("change",h),r.onFieldChange()},d=function(h){y.value=!1,i("blur",h),r.onFieldBlur()},u=function(h){y.value=!0,i("focus",h)};return function(){var s,h,c,W,M=P(P({},l),e),I=M.class,w=M.bordered,C=M.readonly,x=M.style,R=M.addonBefore,g=R===void 0?(s=o.addonBefore)===null||s===void 0?void 0:s.call(o):R,S=M.addonAfter,L=S===void 0?(h=o.addonAfter)===null||h===void 0?void 0:h.call(o):S,V=M.prefix,Y=V===void 0?(c=o.prefix)===null||c===void 0?void 0:c.call(o):V,T=M.valueModifiers,J=T===void 0?{}:T,U=jt(M,Dse),K=v.value,H=b.value,k=_e((W={},ce(W,"".concat(K,"-lg"),H==="large"),ce(W,"".concat(K,"-sm"),H==="small"),ce(W,"".concat(K,"-rtl"),Z.value==="rtl"),ce(W,"".concat(K,"-readonly"),C),ce(W,"".concat(K,"-borderless"),!w),W),I),F=D(Jse,P(P({},dn(U,["size","defaultValue"])),{},{ref:X,lazy:!!J.lazy,value:p.value,class:k,prefixCls:K,readonly:C,onChange:G,onBlur:d,onFocus:u}),{upHandler:function(){return D(Lse,{class:"".concat(K,"-handler-up-inner")},null)},downHandler:function(){return D(Jh,{class:"".concat(K,"-handler-down-inner")},null)}}),O=SZ(g)||SZ(L);if(SZ(Y)){var Q,oe=_e("".concat(K,"-affix-wrapper"),(Q={},ce(Q,"".concat(K,"-affix-wrapper-focused"),y.value),ce(Q,"".concat(K,"-affix-wrapper-disabled"),e.disabled),ce(Q,"".concat(K,"-affix-wrapper-rtl"),Z.value==="rtl"),ce(Q,"".concat(K,"-affix-wrapper-readonly"),C),ce(Q,"".concat(K,"-affix-wrapper-borderless"),!w),ce(Q,"".concat(I),!O&&I),Q));F=D("div",{class:oe,style:x,onMouseup:function(){return X.value.focus()}},[D("span",{class:"".concat(K,"-prefix")},[Y]),F])}if(O){var se,he="".concat(K,"-group"),pe="".concat(he,"-addon"),re=g?D("div",{class:pe},[g]):null,_=L?D("div",{class:pe},[L]):null,E=_e("".concat(K,"-wrapper"),he,ce({},"".concat(he,"-rtl"),Z.value==="rtl")),$=_e("".concat(K,"-group-wrapper"),(se={},ce(se,"".concat(K,"-group-wrapper-sm"),H==="small"),ce(se,"".concat(K,"-group-wrapper-lg"),H==="large"),ce(se,"".concat(K,"-group-wrapper-rtl"),Z.value==="rtl"),se),I);F=D("div",{class:$,style:x},[D("div",{class:E},[re,F,_])])}return wn(F,{style:x})}}});const jse=Xn(zZ,{install:function(e){return e.component(zZ.name,zZ),e}});var hX=function(){return{prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String}};function vp(n){var e=n.suffixCls,t=n.tagName,i=n.name;return function(a){var l=He({compatConfig:{MODE:3},name:i,props:hX(),setup:function(r,f){var v=f.slots,b=Nt(e,r),Z=b.prefixCls;return function(){var p=P(P({},r),{},{prefixCls:Z.value,tagName:t});return D(a,p,v)}}});return l}}var fX=He({compatConfig:{MODE:3},props:hX(),setup:function(e,t){var i=t.slots;return function(){return D(e.tagName,{class:e.prefixCls},i)}}}),Use=He({compatConfig:{MODE:3},props:hX(),setup:function(e,t){var i=t.slots,a=Nt("",e),l=a.direction,o=Ne([]),r={addSider:function(b){o.value=[].concat(yt(o.value),[b])},removeSider:function(b){o.value=o.value.filter(function(Z){return Z!==b})}};hn(i3,r);var f=de(function(){var v,b=e.prefixCls,Z=e.hasSider;return v={},ce(v,"".concat(b),!0),ce(v,"".concat(b,"-has-sider"),typeof Z=="boolean"?Z:o.value.length>0),ce(v,"".concat(b,"-rtl"),l.value==="rtl"),v});return function(){var v=e.tagName;return D(v,{class:f.value},i)}}}),Ese=vp({suffixCls:"layout",tagName:"section",name:"ALayout"})(Use),_b=vp({suffixCls:"layout-header",tagName:"header",name:"ALayoutHeader"})(fX),$b=vp({suffixCls:"layout-footer",tagName:"footer",name:"ALayoutFooter"})(fX),qb=vp({suffixCls:"layout-content",tagName:"main",name:"ALayoutContent"})(fX);const kZ=Ese;var Kse={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"bars",theme:"outlined"};const Hse=Kse;function kg(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:"";return n+=1,"".concat(e).concat(n)}}();const em=He({compatConfig:{MODE:3},name:"ALayoutSider",inheritAttrs:!1,props:pn(Bse(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:["breakpoint","update:collapsed","collapse"],setup:function(e,t){var i=t.emit,a=t.attrs,l=t.slots,o=Nt("layout-sider",e),r=o.prefixCls,f=un(i3,void 0),v=Ne(!!(e.collapsed!==void 0?e.collapsed:e.defaultCollapsed)),b=Ne(!1);rt(function(){return e.collapsed},function(){v.value=!!e.collapsed}),hn(n3,v);var Z=function(d,u){e.collapsed===void 0&&(v.value=d),i("update:collapsed",d),i("collapse",d,u)},p=Ne(function(G){b.value=G.matches,i("breakpoint",G.matches),v.value!==G.matches&&Z(G.matches,"responsive")}),y;function X(G){return p.value(G)}var m=Ase("ant-sider-");f&&f.addSider(m),Kt(function(){rt(function(){return e.breakpoint},function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}if(typeof window<"u"){var u=window,s=u.matchMedia;if(s&&e.breakpoint&&e.breakpoint in Fg){y=s("(max-width: ".concat(Fg[e.breakpoint],")"));try{y.addEventListener("change",X)}catch{y.addListener(X)}X(y)}}},{immediate:!0})}),fn(function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}f&&f.removeSider(m)});var N=function(){Z(!v.value,"clickTrigger")};return function(){var G,d,u,s=r.value,h=e.collapsedWidth,c=e.width,W=e.reverseArrow,M=e.zeroWidthTriggerStyle,I=e.trigger,w=I===void 0?(G=l.trigger)===null||G===void 0?void 0:G.call(l):I,C=e.collapsible,x=e.theme,R=v.value?h:c,g=jx(R)?"".concat(R,"px"):String(R),S=parseFloat(String(h||0))===0?D("span",{onClick:N,class:_e("".concat(s,"-zero-width-trigger"),"".concat(s,"-zero-width-trigger-").concat(W?"right":"left")),style:M},[w||D(Qse,null,null)]):null,L={expanded:D(W?xo:Nc,null,null),collapsed:D(W?Nc:xo,null,null)},V=v.value?"collapsed":"expanded",Y=L[V],T=w!==null?S||D("div",{class:"".concat(s,"-trigger"),onClick:N,style:{width:g}},[w||Y]):null,J=[a.style,{flex:"0 0 ".concat(g),maxWidth:g,minWidth:g,width:g}],U=_e(s,"".concat(s,"-").concat(x),(d={},ce(d,"".concat(s,"-collapsed"),!!v.value),ce(d,"".concat(s,"-has-trigger"),C&&w!==null&&!S),ce(d,"".concat(s,"-below"),!!b.value),ce(d,"".concat(s,"-zero-width"),parseFloat(g)===0),d),a.class);return D("aside",P(P({},a),{},{class:U,style:J}),[D("div",{class:"".concat(s,"-children")},[(u=l.default)===null||u===void 0?void 0:u.call(l)]),C||b.value&&S?T:null])}}});var _se=_b,$se=$b,qse=em,ece=qb;const tce=Xn(kZ,{Header:_b,Footer:$b,Content:qb,Sider:em,install:function(e){return e.component(kZ.name,kZ),e.component(_b.name,_b),e.component($b.name,$b),e.component(em.name,em),e.component(qb.name,qb),e}});var nce=["class","style"],ice=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:We.any,delay:Number,indicator:We.any}},tm=null;function lce(n,e){return!!n&&!!e&&!isNaN(Number(e))}function ace(n){var e=n.indicator;tm=typeof e=="function"?e:function(){return D(e,null,null)}}const Ws=He({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:pn(ice(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:un("configProvider",fG)}},data:function(){var e=this.spinning,t=this.delay,i=lce(e,t);return{sSpinning:e&&!i}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var e=this;cn(function(){e.debouncifyUpdateSpinning(),e.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(e){var t=e||this.$props,i=t.delay;i&&(this.cancelExistingSpin(),this.updateSpinning=cp(this.originalUpdateSpinning,i))},updateSpinning:function(){var e=this.spinning,t=this.sSpinning;t!==e&&(this.sSpinning=e)},cancelExistingSpin:function(){var e=this.updateSpinning;e&&e.cancel&&e.cancel()},renderIndicator:function(e){var t="".concat(e,"-dot"),i=HW(this,"indicator");return i===null?null:(Array.isArray(i)&&(i=i.length===1?i[0]:i),yl(i)?Vl(i,{class:t}):tm&&yl(tm())?Vl(tm(),{class:t}):D("span",{class:"".concat(t," ").concat(e,"-dot-spin")},[D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null)]))}},render:function(){var e,t,i,a=this.$props,l=a.size,o=a.prefixCls,r=a.tip,f=r===void 0?(e=(t=this.$slots).tip)===null||e===void 0?void 0:e.call(t):r,v=a.wrapperClassName,b=this.$attrs,Z=b.class,p=b.style,y=jt(b,nce),X=this.configProvider,m=X.getPrefixCls,N=X.direction,G=m("spin",o),d=this.sSpinning,u=(i={},ce(i,G,!0),ce(i,"".concat(G,"-sm"),l==="small"),ce(i,"".concat(G,"-lg"),l==="large"),ce(i,"".concat(G,"-spinning"),d),ce(i,"".concat(G,"-show-text"),!!f),ce(i,"".concat(G,"-rtl"),N==="rtl"),ce(i,Z,!!Z),i),s=D("div",P(P({},y),{},{style:p,class:u}),[this.renderIndicator(G),f?D("div",{class:"".concat(G,"-text")},[f]):null]),h=Th(this);if(h&&h.length){var c,W=(c={},ce(c,"".concat(G,"-container"),!0),ce(c,"".concat(G,"-blur"),d),c);return D("div",{class:["".concat(G,"-nested-loading"),v]},[d&&D("div",{key:"loading"},[s]),D("div",{class:W,key:"container"},[h])])}return s}});Ws.setDefaultIndicator=ace;Ws.install=function(n){return n.component(Ws.name,Ws),n};var rce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"};const oce=rce;function Jg(n){for(var e=1;e=0||b.relatedTarget.className.indexOf("".concat(y,"-item"))>=0)){t.value="";return}else p(i.value),t.value=""},r=function(b){t.value!==""&&(b.keyCode===As.ENTER||b.type==="click")&&(e.quickGo(i.value),t.value="")},f=de(function(){var v=e.pageSize,b=e.pageSizeOptions;return b.some(function(Z){return Z.toString()===v.toString()})?b:b.concat([v.toString()]).sort(function(Z,p){var y=isNaN(Number(Z))?0:Number(Z),X=isNaN(Number(p))?0:Number(p);return y-X})});return function(){var v=e.rootPrefixCls,b=e.locale,Z=e.changeSize,p=e.quickGo,y=e.goButton,X=e.selectComponentClass,m=e.selectPrefixCls,N=e.pageSize,G=e.disabled,d="".concat(v,"-options"),u=null,s=null,h=null;if(!Z&&!p)return null;if(Z&&X){var c=e.buildOptionText||a,W=f.value.map(function(M,I){return D(X.Option,{key:I,value:M},{default:function(){return[c({value:M})]}})});u=D(X,{disabled:G,prefixCls:m,showSearch:!1,class:"".concat(d,"-size-changer"),optionLabelProp:"children",value:(N||f.value[0]).toString(),onChange:function(I){return Z(Number(I))},getPopupContainer:function(I){return I.parentNode}},{default:function(){return[W]}})}return p&&(y&&(h=typeof y=="boolean"?D("button",{type:"button",onClick:r,onKeyup:r,disabled:G,class:"".concat(d,"-quick-jumper-button")},[b.jump_to_confirm]):D("span",{onClick:r,onKeyup:r},[y])),s=D("div",{class:"".concat(d,"-quick-jumper")},[b.jump_to,vl(D("input",{disabled:G,type:"text",value:t.value,onInput:l,onChange:l,onKeyup:r,onBlur:o},null),[[Qu]]),b.page,h])),D("li",{class:"".concat(d)},[u,s])}}}),pce={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"};var yce=["class"];function Zce(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n}function vce(n){var e=n.originalElement;return e}function yo(n,e,t){var i=typeof n>"u"?e.statePageSize:n;return Math.floor((t.total-1)/i)+1}const Wce=He({compatConfig:{MODE:3},name:"Pagination",mixins:[Lc],inheritAttrs:!1,props:{disabled:{type:Boolean,default:void 0},prefixCls:We.string.def("rc-pagination"),selectPrefixCls:We.string.def("rc-select"),current:Number,defaultCurrent:We.number.def(1),total:We.number.def(0),pageSize:Number,defaultPageSize:We.number.def(10),hideOnSinglePage:{type:Boolean,default:!1},showSizeChanger:{type:Boolean,default:void 0},showLessItems:{type:Boolean,default:!1},selectComponentClass:We.any,showPrevNextJumpers:{type:Boolean,default:!0},showQuickJumper:We.oneOfType([We.looseBool,We.object]).def(!1),showTitle:{type:Boolean,default:!0},pageSizeOptions:We.arrayOf(We.oneOfType([We.number,We.string])),buildOptionText:Function,showTotal:Function,simple:{type:Boolean,default:void 0},locale:We.object.def(pce),itemRender:We.func.def(vce),prevIcon:We.any,nextIcon:We.any,jumpPrevIcon:We.any,jumpNextIcon:We.any,totalBoundaryShowSizeChanger:We.number.def(50)},data:function(){var e=this.$props,t=Om([this.current,this.defaultCurrent]),i=Om([this.pageSize,this.defaultPageSize]);return t=Math.min(t,yo(i,void 0,e)),{stateCurrent:t,stateCurrentInputValue:t,statePageSize:i}},watch:{current:function(e){this.setState({stateCurrent:e,stateCurrentInputValue:e})},pageSize:function(e){var t={},i=this.stateCurrent,a=yo(e,this.$data,this.$props);i=i>a?a:i,Mo(this,"current")||(t.stateCurrent=i,t.stateCurrentInputValue=i),t.statePageSize=e,this.setState(t)},stateCurrent:function(e,t){var i=this;this.$nextTick(function(){if(i.$refs.paginationNode){var a=i.$refs.paginationNode.querySelector(".".concat(i.prefixCls,"-item-").concat(t));a&&document.activeElement===a&&a.blur()}})},total:function(){var e={},t=yo(this.pageSize,this.$data,this.$props);if(Mo(this,"current")){var i=Math.min(this.current,t);e.stateCurrent=i,e.stateCurrentInputValue=i}else{var a=this.stateCurrent;a===0&&t>0?a=1:a=Math.min(this.stateCurrent,t),e.stateCurrent=a}this.setState(e)}},methods:{getJumpPrevPage:function(){return Math.max(1,this.stateCurrent-(this.showLessItems?3:5))},getJumpNextPage:function(){return Math.min(yo(void 0,this.$data,this.$props),this.stateCurrent+(this.showLessItems?3:5))},getItemIcon:function(e,t){var i=this.$props.prefixCls,a=HW(this,e,this.$props)||D("button",{type:"button","aria-label":t,class:"".concat(i,"-item-link")},null);return a},getValidValue:function(e){var t=e.target.value,i=yo(void 0,this.$data,this.$props),a=this.$data.stateCurrentInputValue,l;return t===""?l=t:isNaN(Number(t))?l=a:t>=i?l=i:l=Number(t),l},isValid:function(e){return Zce(e)&&e!==this.stateCurrent},shouldDisplayQuickJumper:function(){var e=this.$props,t=e.showQuickJumper,i=e.pageSize,a=e.total;return a<=i?!1:t},handleKeyDown:function(e){(e.keyCode===As.ARROW_UP||e.keyCode===As.ARROW_DOWN)&&e.preventDefault()},handleKeyUp:function(e){if(!(e.isComposing||e.target.composing)){var t=this.getValidValue(e),i=this.stateCurrentInputValue;t!==i&&this.setState({stateCurrentInputValue:t}),e.keyCode===As.ENTER?this.handleChange(t):e.keyCode===As.ARROW_UP?this.handleChange(t-1):e.keyCode===As.ARROW_DOWN&&this.handleChange(t+1)}},changePageSize:function(e){var t=this.stateCurrent,i=t,a=yo(e,this.$data,this.$props);t=t>a?a:t,a===0&&(t=this.stateCurrent),typeof e=="number"&&(Mo(this,"pageSize")||this.setState({statePageSize:e}),Mo(this,"current")||this.setState({stateCurrent:t,stateCurrentInputValue:t})),this.__emit("update:pageSize",e),t!==i&&this.__emit("update:current",t),this.__emit("showSizeChange",t,e),this.__emit("change",t,e)},handleChange:function(e){var t=this.$props.disabled,i=e;if(this.isValid(i)&&!t){var a=yo(void 0,this.$data,this.$props);return i>a?i=a:i<1&&(i=1),Mo(this,"current")||this.setState({stateCurrent:i,stateCurrentInputValue:i}),this.__emit("update:current",i),this.__emit("change",i,this.statePageSize),i}return this.stateCurrent},prev:function(){this.hasPrev()&&this.handleChange(this.stateCurrent-1)},next:function(){this.hasNext()&&this.handleChange(this.stateCurrent+1)},jumpPrev:function(){this.handleChange(this.getJumpPrevPage())},jumpNext:function(){this.handleChange(this.getJumpNextPage())},hasPrev:function(){return this.stateCurrent>1},hasNext:function(){return this.stateCurrenta},runIfEnter:function(e,t){if(e.key==="Enter"||e.charCode===13){for(var i=arguments.length,a=new Array(i>2?i-2:0),l=2;l0?s-1:0,T=s+1=V*2&&s!==1+2&&(w[0]=D(Hs,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:Q,page:Q,class:"".concat(i,"-item-after-jump-prev"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.unshift(C)),I-s>=V*2&&s!==I-2&&(w[w.length-1]=D(Hs,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:oe,page:oe,class:"".concat(i,"-item-before-jump-next"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.push(x)),Q!==1&&w.unshift(R),oe!==I&&w.push(g)}var pe=null;Z&&(pe=D("li",{class:"".concat(i,"-total-text")},[Z(o,[o===0?0:(s-1)*h+1,s*h>o?o:s*h])]));var re=!J||!I,_=!U||!I,E=this.buildOptionText||this.$slots.buildOptionText;return D("ul",P(P({unselectable:"on",ref:"paginationNode"},M),{},{class:_e((e={},ce(e,"".concat(i),!0),ce(e,"".concat(i,"-disabled"),a),e),W)}),[pe,D("li",{title:b?r.prev_page:null,onClick:this.prev,tabindex:re?null:0,onKeypress:this.runIfEnterPrev,class:_e("".concat(i,"-prev"),ce({},"".concat(i,"-disabled"),re)),"aria-disabled":re},[this.renderPrev(Y)]),w,D("li",{title:b?r.next_page:null,onClick:this.next,tabindex:_?null:0,onKeypress:this.runIfEnterNext,class:_e("".concat(i,"-next"),ce({},"".concat(i,"-disabled"),_)),"aria-disabled":_},[this.renderNext(T)]),D(mce,{disabled:a,locale:r,rootPrefixCls:i,selectComponentClass:G,selectPrefixCls:d,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:s,pageSize:h,pageSizeOptions:u,buildOptionText:E||null,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:L},null)])}});var Gce=["size","itemRender","buildOptionText","selectComponentClass","responsive"],Xce=function(){return{total:Number,defaultCurrent:Number,disabled:{type:Boolean,default:void 0},current:Number,defaultPageSize:Number,pageSize:Number,hideOnSinglePage:{type:Boolean,default:void 0},showSizeChanger:{type:Boolean,default:void 0},pageSizeOptions:Array,buildOptionText:Function,showQuickJumper:{type:[Boolean,Object],default:void 0},showTotal:Function,size:String,simple:{type:Boolean,default:void 0},locale:Object,prefixCls:String,selectPrefixCls:String,totalBoundaryShowSizeChanger:Number,selectComponentClass:String,itemRender:Function,role:String,responsive:Boolean,showLessItems:{type:Boolean,default:void 0},onChange:Function,onShowSizeChange:Function,"onUpdate:current":Function,"onUpdate:pageSize":Function}};const Nce=He({compatConfig:{MODE:3},name:"APagination",inheritAttrs:!1,props:Xce(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("pagination",e),o=l.prefixCls,r=l.configProvider,f=l.direction,v=de(function(){return r.getPrefixCls("select",e.selectPrefixCls)}),b=Bu(),Z=Br("Pagination",tT,Ot(e,"locale")),p=ft(Z,1),y=p[0],X=function(N){var G=D("span",{class:"".concat(N,"-item-ellipsis")},[Fl("•••")]),d=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(Nc,null,null)]),u=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(xo,null,null)]),s=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(cce,{class:"".concat(N,"-item-link-icon")},null),G])]),h=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(fce,{class:"".concat(N,"-item-link-icon")},null),G])]);if(f.value==="rtl"){var c=[u,d];d=c[0],u=c[1];var W=[h,s];s=W[0],h=W[1]}return{prevIcon:d,nextIcon:u,jumpPrevIcon:s,jumpNextIcon:h}};return function(){var m,N=e.size,G=e.itemRender,d=G===void 0?i.itemRender:G,u=e.buildOptionText,s=u===void 0?i.buildOptionText:u,h=e.selectComponentClass,c=e.responsive,W=jt(e,Gce),M=N==="small"||!!((m=b.value)!==null&&m!==void 0&&m.xs&&!N&&c),I=P(P(P(P({},W),X(o.value)),{},{prefixCls:o.value,selectPrefixCls:v.value,selectComponentClass:h||(M?bce:Ns),locale:y.value,buildOptionText:s},a),{},{class:_e(ce({mini:M},"".concat(o.value,"-rtl"),f.value==="rtl"),a.class),itemRender:d});return D(Wce,I,null)}}}),Wp=wi(Nce);var Mce=function(){return{avatar:We.any,description:We.any,prefixCls:String,title:We.any}};const L9=He({compatConfig:{MODE:3},name:"AListItemMeta",props:Mce(),displayName:"AListItemMeta",__ANT_LIST_ITEM_META:!0,slots:["avatar","description","title"],setup:function(e,t){var i=t.slots,a=Nt("list",e),l=a.prefixCls;return function(){var o,r,f,v,b,Z,p="".concat(l.value,"-item-meta"),y=(o=e.title)!==null&&o!==void 0?o:(r=i.title)===null||r===void 0?void 0:r.call(i),X=(f=e.description)!==null&&f!==void 0?f:(v=i.description)===null||v===void 0?void 0:v.call(i),m=(b=e.avatar)!==null&&b!==void 0?b:(Z=i.avatar)===null||Z===void 0?void 0:Z.call(i),N=D("div",{class:"".concat(l.value,"-item-meta-content")},[y&&D("h4",{class:"".concat(l.value,"-item-meta-title")},[y]),X&&D("div",{class:"".concat(l.value,"-item-meta-description")},[X])]);return D("div",{class:p},[m&&D("div",{class:"".concat(l.value,"-item-meta-avatar")},[m]),(y||X)&&N])}}});var R9=Symbol("ListContextKey"),Ice=["class"],Yce=function(){return{prefixCls:String,extra:We.any,actions:We.array,grid:Object,colStyle:{type:Object,default:void 0}}};const T9=He({compatConfig:{MODE:3},name:"AListItem",inheritAttrs:!1,Meta:L9,props:Yce(),slots:["actions","extra"],setup:function(e,t){var i=t.slots,a=t.attrs,l=un(R9,{grid:Ne(),itemLayout:Ne()}),o=l.itemLayout,r=l.grid,f=Nt("list",e),v=f.prefixCls,b=function(){var y,X=((y=i.default)===null||y===void 0?void 0:y.call(i))||[],m;return X.forEach(function(N){WK(N)&&!xh(N)&&(m=!0)}),m&&X.length>1},Z=function(){var y,X,m=(y=e.extra)!==null&&y!==void 0?y:(X=i.extra)===null||X===void 0?void 0:X.call(i);return o.value==="vertical"?!!m:!b()};return function(){var p,y,X,m,N,G=a.class,d=jt(a,Ice),u=v.value,s=(p=e.extra)!==null&&p!==void 0?p:(y=i.extra)===null||y===void 0?void 0:y.call(i),h=(X=i.default)===null||X===void 0?void 0:X.call(i),c=(m=e.actions)!==null&&m!==void 0?m:ti((N=i.actions)===null||N===void 0?void 0:N.call(i));c=c&&!Array.isArray(c)?[c]:c;var W=c&&c.length>0&&D("ul",{class:"".concat(u,"-item-action"),key:"actions"},[c.map(function(w,C){return D("li",{key:"".concat(u,"-item-action-").concat(C)},[w,C!==c.length-1&&D("em",{class:"".concat(u,"-item-action-split")},null)])})]),M=r.value?"div":"li",I=D(M,P(P({},d),{},{class:_e("".concat(u,"-item"),ce({},"".concat(u,"-item-no-flex"),!Z()),G)}),{default:function(){return[o.value==="vertical"&&s?[D("div",{class:"".concat(u,"-item-main"),key:"content"},[h,W]),D("div",{class:"".concat(u,"-item-extra"),key:"extra"},[s])]:[h,W,wn(s,{key:"extra"})]]}});return r.value?D(sp,{flex:1,style:e.colStyle},{default:function(){return[I]}}):I}}});var wce=function(){return{bordered:{type:Boolean,default:void 0},dataSource:We.array,extra:We.any,grid:{type:Object,default:void 0},itemLayout:String,loading:{type:[Boolean,Object],default:void 0},loadMore:We.any,pagination:{type:[Boolean,Object],default:void 0},prefixCls:String,rowKey:[String,Number,Function],renderItem:Function,size:String,split:{type:Boolean,default:void 0},header:We.any,footer:We.any,locale:{type:Object}}},ls=He({compatConfig:{MODE:3},name:"AList",Item:T9,props:pn(wce(),{dataSource:[],bordered:!1,split:!0,loading:!1,pagination:!1}),slots:["extra","loadMore","renderItem","header","footer"],setup:function(e,t){var i,a,l=t.slots;hn(R9,{grid:Ot(e,"grid"),itemLayout:Ot(e,"itemLayout")});var o={current:1,total:0},r=Nt("list",e),f=r.prefixCls,v=r.direction,b=r.renderEmpty,Z=de(function(){return e.pagination&&Yt(e.pagination)==="object"?e.pagination:{}}),p=Ne((i=Z.value.defaultCurrent)!==null&&i!==void 0?i:1),y=Ne((a=Z.value.defaultPageSize)!==null&&a!==void 0?a:10);rt(Z,function(){"current"in Z.value&&(p.value=Z.value.current),"pageSize"in Z.value&&(y.value=Z.value.pageSize)});var X=[],m=function(g){return function(S,L){p.value=S,y.value=L,Z.value[g]&&Z.value[g](S,L)}},N=m("onChange"),G=m("onShowSizeChange"),d=function(g){var S;return D("div",{class:"".concat(f.value,"-empty-text")},[((S=e.locale)===null||S===void 0?void 0:S.emptyText)||g("List")])},u=de(function(){return typeof e.loading=="boolean"?{spinning:e.loading}:e.loading}),s=de(function(){return u.value&&u.value.spinning}),h=de(function(){var R="";switch(e.size){case"large":R="lg";break;case"small":R="sm";break}return R}),c=de(function(){var R;return R={},ce(R,"".concat(f.value),!0),ce(R,"".concat(f.value,"-vertical"),e.itemLayout==="vertical"),ce(R,"".concat(f.value,"-").concat(h.value),h.value),ce(R,"".concat(f.value,"-split"),e.split),ce(R,"".concat(f.value,"-bordered"),e.bordered),ce(R,"".concat(f.value,"-loading"),s.value),ce(R,"".concat(f.value,"-grid"),!!e.grid),ce(R,"".concat(f.value,"-rtl"),v.value==="rtl"),R}),W=de(function(){var R=P(P({},o),{},{total:e.dataSource.length,current:p.value,pageSize:y.value},e.pagination||{}),g=Math.ceil(R.total/R.pageSize);return R.current>g&&(R.current=g),R}),M=de(function(){var R=yt(e.dataSource);return e.pagination&&e.dataSource.length>(W.value.current-1)*W.value.pageSize&&(R=yt(e.dataSource).splice((W.value.current-1)*W.value.pageSize,W.value.pageSize)),R}),I=Bu(),w=Sa(function(){for(var R=0;R0){X.length=0;var oe=M.value.map(function(pe,re){return x(pe,re)}),se=oe.map(function(pe,re){return D("div",{key:X[re],style:C.value},[pe])});Q=e.grid?D(z1,{gutter:e.grid.gutter},{default:function(){return[se]}}):D("ul",{class:"".concat(f.value,"-items")},[oe])}else!H.length&&!s.value&&(Q=d(b.value));var he=W.value.position||"bottom";return D("div",{class:F},[(he==="top"||he==="both")&&O,K&&D("div",{class:"".concat(f.value,"-header")},[K]),D(Ws,u.value,{default:function(){return[Q,H]}}),U&&D("div",{class:"".concat(f.value,"-footer")},[U]),J||(he==="bottom"||he==="both")&&O])}}});ls.install=function(n){return n.component(ls.name,ls),n.component(ls.Item.name,ls.Item),n.component(ls.Item.Meta.name,ls.Item.Meta),n};const gce=ls;function Vce(n){var e=n.selectionStart;return n.value.slice(0,e)}function Lce(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",t=Array.isArray(e)?e:[e];return t.reduce(function(i,a){var l=n.lastIndexOf(a);return l>i.location?{location:l,prefix:a}:i},{location:-1,prefix:""})}function Og(n){return(n||"").toLowerCase()}function Rce(n,e,t){var i=n[0];if(!i||i===t)return n;for(var a=n,l=e.length,o=0;o0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.prefix,a=i===void 0?"@":i,l=t.split,o=l===void 0?" ":l,r=Array.isArray(a)?a:[a];return e.split(o).map(function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",v=null;return r.some(function(b){var Z=f.slice(0,b.length);return Z===b?(v=b,!0):!1}),v!==null?{prefix:v,value:f.slice(v.length)}:null}).filter(function(f){return!!f&&!!f.value})},Bce=function(){return P(P({},C9),{},{loading:{type:Boolean,default:void 0},onFocus:{type:Function},onBlur:{type:Function},onSelect:{type:Function},onChange:{type:Function},onPressenter:{type:Function},"onUpdate:value":{type:Function},notFoundContent:We.any,defaultValue:String,id:String})},FZ=He({compatConfig:{MODE:3},name:"AMentions",inheritAttrs:!1,props:Bce(),slots:["notFoundContent","option"],setup:function(e,t){var i,a,l=t.slots,o=t.emit,r=t.attrs,f=t.expose,v=Nt("mentions",e),b=v.prefixCls,Z=v.renderEmpty,p=v.direction,y=Ne(!1),X=Ne(null),m=Ne((i=(a=e.value)!==null&&a!==void 0?a:e.defaultValue)!==null&&i!==void 0?i:""),N=Hi();rt(function(){return e.value},function(I){m.value=I});var G=function(w){y.value=!0,o("focus",w)},d=function(w){y.value=!1,o("blur",w),N.onFieldBlur()},u=function(){for(var w=arguments.length,C=new Array(w),x=0;x=Date.now()?f():v()},f=function(){if(!l.value){var y=DZ(e.value);l.value=setInterval(function(){o.value.$forceUpdate(),y>Date.now()&&i("change",y-Date.now()),r()},Mue)}},v=function(){var y=e.value;if(l.value){clearInterval(l.value),l.value=void 0;var X=DZ(y);X100?100:n}function u0(n){var e=n.success,t=n.successPercent,i=t;return e&&"progress"in e&&(jn(!1,"Progress","`success.progress` is deprecated. Please use `success.percent` instead."),i=e.progress),e&&"percent"in e&&(i=e.percent),i}var Que=["from","to","direction"],Bue=function(){return P(P({},Mp()),{},{prefixCls:String,direction:{type:String}})},Aue=function(e){var t=[];return Object.keys(e).forEach(function(i){var a=parseFloat(i.replace(/%/g,""));isNaN(a)||t.push({key:a,value:e[i]})}),t=t.sort(function(i,a){return i.key-a.key}),t.map(function(i){var a=i.key,l=i.value;return"".concat(l," ").concat(a,"%")}).join(", ")},_ue=function(e,t){var i=e.from,a=i===void 0?mu.blue:i,l=e.to,o=l===void 0?mu.blue:l,r=e.direction,f=r===void 0?t==="rtl"?"to left":"to right":r,v=jt(e,Que);if(Object.keys(v).length!==0){var b=Aue(v);return{backgroundImage:"linear-gradient(".concat(f,", ").concat(b,")")}}return{backgroundImage:"linear-gradient(".concat(f,", ").concat(a,", ").concat(o,")")}};const $ue=He({compatConfig:{MODE:3},name:"Line",props:Bue(),setup:function(e,t){var i=t.slots,a=de(function(){var v=e.strokeColor,b=e.direction;return v&&typeof v!="string"?_ue(v,b):{background:v}}),l=de(function(){return e.trailColor?{backgroundColor:e.trailColor}:void 0}),o=de(function(){var v=e.percent,b=e.strokeWidth,Z=e.strokeLinecap,p=e.size;return P({width:"".concat(pc(v),"%"),height:"".concat(b||(p==="small"?6:8),"px"),borderRadius:Z==="square"?0:""},a.value)}),r=de(function(){return u0(e)}),f=de(function(){var v=e.strokeWidth,b=e.size,Z=e.strokeLinecap,p=e.success;return{width:"".concat(pc(r.value),"%"),height:"".concat(v||(b==="small"?6:8),"px"),borderRadius:Z==="square"?0:"",backgroundColor:p==null?void 0:p.strokeColor}});return function(){var v;return D(ln,null,[D("div",{class:"".concat(e.prefixCls,"-outer")},[D("div",{class:"".concat(e.prefixCls,"-inner"),style:l.value},[D("div",{class:"".concat(e.prefixCls,"-bg"),style:o.value},null),r.value!==void 0?D("div",{class:"".concat(e.prefixCls,"-success-bg"),style:f.value},null):null])]),(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});var que={percent:0,prefixCls:"vc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1},ede=function(e){var t=Ne(null);return Dl(function(){var i=Date.now(),a=!1;e.value.forEach(function(l){var o=(l==null?void 0:l.$el)||l;if(o){a=!0;var r=o.style;r.transitionDuration=".3s, .3s, .3s, .06s",t.value&&i-t.value<100&&(r.transitionDuration="0s, 0s")}}),a&&(t.value=Date.now())}),e},tde={gapDegree:Number,gapPosition:{type:String},percent:{type:[Array,Number]},prefixCls:String,strokeColor:{type:[Object,String,Array]},strokeLinecap:{type:String},strokeWidth:Number,trailColor:String,trailWidth:Number,transition:String},nde=["prefixCls","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","strokeColor"],Hg=0;function Pg(n){return+n.replace("%","")}function Qg(n){return Array.isArray(n)?n:[n]}function Bg(n,e,t,i){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,l=arguments.length>5?arguments[5]:void 0,o=50-i/2,r=0,f=-o,v=0,b=-2*o;switch(l){case"left":r=-o,f=0,v=2*o,b=0;break;case"right":r=o,f=0,v=-2*o,b=0;break;case"bottom":f=o,b=2*o;break}var Z="M 50,50 m ".concat(r,",").concat(f,` +`,xoe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],zZ={},er;function Coe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=n.getAttribute("id")||n.getAttribute("data-reactid")||n.getAttribute("name");if(e&&zZ[t])return zZ[t];var i=window.getComputedStyle(n),a=i.getPropertyValue("box-sizing")||i.getPropertyValue("-moz-box-sizing")||i.getPropertyValue("-webkit-box-sizing"),l=parseFloat(i.getPropertyValue("padding-bottom"))+parseFloat(i.getPropertyValue("padding-top")),o=parseFloat(i.getPropertyValue("border-bottom-width"))+parseFloat(i.getPropertyValue("border-top-width")),r=xoe.map(function(v){return"".concat(v,":").concat(i.getPropertyValue(v))}).join(";"),f={sizingStyle:r,paddingSize:l,borderSize:o,boxSizing:a};return e&&t&&(zZ[t]=f),f}function Soe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;er||(er=document.createElement("textarea"),er.setAttribute("tab-index","-1"),er.setAttribute("aria-hidden","true"),document.body.appendChild(er)),n.getAttribute("wrap")?er.setAttribute("wrap",n.getAttribute("wrap")):er.removeAttribute("wrap");var a=Coe(n,e),l=a.paddingSize,o=a.borderSize,r=a.boxSizing,f=a.sizingStyle;er.setAttribute("style","".concat(f,";").concat(Toe)),er.value=n.value||n.placeholder||"";var v=Number.MIN_SAFE_INTEGER,b=Number.MAX_SAFE_INTEGER,Z=er.scrollHeight,p;if(r==="border-box"?Z+=o:r==="content-box"&&(Z-=l),t!==null||i!==null){er.value=" ";var y=er.scrollHeight-l;t!==null&&(v=y*t,r==="border-box"&&(v=v+l+o),Z=Math.max(v,Z)),i!==null&&(b=y*i,r==="border-box"&&(b=b+l+o),p=Z>b?"":"hidden",Z=Math.min(b,Z))}return{height:"".concat(Z,"px"),minHeight:"".concat(v,"px"),maxHeight:"".concat(b,"px"),overflowY:p,resize:"none"}}var kZ=0,Wg=1,zoe=2,koe=He({compatConfig:{MODE:3},name:"ResizableTextArea",inheritAttrs:!1,props:p9(),setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o,r,f=Ne(),v=Ne({}),b=Ne(kZ);fn(function(){At.cancel(o),At.cancel(r)});var Z=function(){try{if(document.activeElement===f.value){var d=f.value.selectionStart,u=f.value.selectionEnd;f.value.setSelectionRange(d,u)}}catch{}},p=function(){var d=e.autoSize||e.autosize;if(!(!d||!f.value)){var u=d.minRows,s=d.maxRows;v.value=Soe(f.value,!1,u,s),b.value=Wg,At.cancel(r),r=At(function(){b.value=zoe,r=At(function(){b.value=kZ,Z()})})}},y=function(){At.cancel(o),o=At(p)},X=function(d){if(b.value===kZ){a("resize",d);var u=e.autoSize||e.autosize;u&&y()}};Ci(e.autosize===void 0,"Input.TextArea","autosize is deprecated, please use autoSize instead.");var m=function(){var d=e.prefixCls,u=e.autoSize,s=e.autosize,h=e.disabled,c=dn(e,["prefixCls","onPressEnter","autoSize","autosize","defaultValue","allowClear","type","lazy","maxlength","valueModifiers"]),W=_e(d,i.class,ce({},"".concat(d,"-disabled"),h)),M=[i.style,v.value,b.value===Wg?{overflowX:"hidden",overflowY:"hidden"}:null],I=P(P(P({},c),i),{},{style:M,class:W});return I.autofocus||delete I.autofocus,I.rows===0&&delete I.rows,D(rr,{onResize:X,disabled:!(u||s)},{default:function(){return[cl(D("textarea",P(P({},I),{},{ref:f}),null),[[Bu]])]}})};rt(function(){return e.value},function(){cn(function(){p()})}),Kt(function(){cn(function(){p()})});var N=Wl();return l({resizeTextarea:p,textArea:f,instance:N}),function(){return m()}}});const Foe=koe;function X9(n,e){return yt(n||"").slice(0,e).join("")}function Gg(n,e,t,i){var a=t;return n?a=X9(t,i):yt(e||"").lengthi&&(a=e),a}const tX=He({compatConfig:{MODE:3},name:"ATextarea",inheritAttrs:!1,props:p9(),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.emit,o=Hi(),r=Ne(e.value===void 0?e.defaultValue:e.value),f=Ne(),v=Ne(""),b=Nt("input",e),Z=b.prefixCls,p=b.size,y=b.direction,X=de(function(){return e.showCount===""||e.showCount||!1}),m=de(function(){return Number(e.maxlength)>0}),N=Ne(!1),G=Ne(),d=Ne(0),u=function(L){N.value=!0,G.value=v.value,d.value=L.currentTarget.selectionStart,l("compositionstart",L)},s=function(L){N.value=!1;var V=L.currentTarget.value;if(m.value){var Y,T=d.value>=e.maxlength+1||d.value===((Y=G.value)===null||Y===void 0?void 0:Y.length);V=Gg(T,G.value,V,e.maxlength)}V!==v.value&&(M(V),lh(L.currentTarget,L,C,V)),l("compositionend",L)},h=Wl();rt(function(){return e.value},function(){"value"in h.vnode.props;var S;r.value=(S=e.value)!==null&&S!==void 0?S:""});var c=function(L){var V;v9((V=f.value)===null||V===void 0?void 0:V.textArea,L)},W=function(){var L,V;(L=f.value)===null||L===void 0||(V=L.textArea)===null||V===void 0||V.blur()},M=function(L,V){r.value!==L&&(e.value===void 0?r.value=L:cn(function(){if(f.value.textArea.value!==v.value){var Y,T,J;(Y=f.value)===null||Y===void 0||(T=(J=Y.instance).update)===null||T===void 0||T.call(J)}}),cn(function(){V&&V()}))},I=function(L){L.keyCode===13&&l("pressEnter",L),l("keydown",L)},w=function(L){var V=e.onBlur;V==null||V(L),o.onFieldBlur()},C=function(L){l("update:value",L.target.value),l("change",L),l("input",L),o.onFieldChange()},x=function(L){lh(f.value.textArea,L,C),M("",function(){c()})},R=function(L){var V=L.target.composing,Y=L.target.value;if(N.value=!!(L.isComposing||V),!(N.value&&e.lazy||r.value===Y)){if(m.value){var T=L.target,J=T.selectionStart>=e.maxlength+1||T.selectionStart===Y.length||!T.selectionStart;Y=Gg(J,v.value,Y,e.maxlength)}lh(L.currentTarget,L,C,Y),M(Y)}},g=function(){var L,V,Y,T=i.style,J=i.class,U=e.bordered,K=U===void 0?!0:U,H=P(P(P({},dn(e,["allowClear"])),i),{},{style:X.value?{}:T,class:(L={},ce(L,"".concat(Z.value,"-borderless"),!K),ce(L,"".concat(J),J&&!X.value),ce(L,"".concat(Z.value,"-sm"),p.value==="small"),ce(L,"".concat(Z.value,"-lg"),p.value==="large"),L),showCount:null,prefixCls:Z.value,onInput:R,onChange:R,onBlur:w,onKeydown:I,onCompositionstart:u,onCompositionend:s});return(V=e.valueModifiers)!==null&&V!==void 0&&V.lazy&&delete H.onInput,D(Foe,P(P({},H),{},{id:(Y=H.id)!==null&&Y!==void 0?Y:o.id.value,ref:f,maxlength:e.maxlength}),null)};return a({focus:c,blur:W,resizableTextArea:f}),qt(function(){var S=Fv(r.value);!N.value&&m.value&&(e.value===null||e.value===void 0)&&(S=X9(S,e.maxlength)),v.value=S}),function(){var S=e.maxlength,L=e.bordered,V=L===void 0?!0:L,Y=e.hidden,T=i.style,J=i.class,U=P(P(P({},e),i),{},{prefixCls:Z.value,inputType:"text",handleReset:x,direction:y.value,bordered:V,style:X.value?void 0:T}),K=D(Z9,P(P({},U),{},{value:v.value}),{element:g});if(X.value){var H=yt(v.value).length,k="";Yt(X.value)==="object"?k=X.value.formatter({count:H,maxlength:S}):k="".concat(H).concat(m.value?" / ".concat(S):""),K=D("div",{hidden:Y,class:_e("".concat(Z.value,"-textarea"),ce({},"".concat(Z.value,"-textarea-rtl"),y.value==="rtl"),"".concat(Z.value,"-textarea-show-count"),J),style:T,"data-count":Yt(k)!=="object"?k:void 0},[K])}return K}}});var Joe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"};const Doe=Joe;function Xg(n){for(var e=1;ei){if(e>0)return ce({},n,l);if(e<0&&ai)return ce({},n,e<0?l:-l);return{}}function ase(n,e,t,i){var a=_oe(),l=a.width,o=a.height,r=null;return n<=l&&e<=o?r={x:0,y:0}:(n>l||e>o)&&(r=P(P({},Vg("x",t,n,l)),Vg("y",i,e,o))),r}var Lg=Symbol("previewGroupContext"),aX={provide:function(e){hn(Lg,e)},inject:function(){return un(Lg,{isPreviewGroup:Ne(!1),previewUrls:de(function(){return new Map}),setPreviewUrls:function(){},current:Ne(null),setCurrent:function(){},setShowPreview:function(){},setMousePosition:function(){},registerImage:null,rootClassName:""})}},rse=He({compatConfig:{MODE:3},name:"PreviewGroup",inheritAttrs:!1,props:{previewPrefixCls:String,preview:{type:[Boolean,Object],default:!0},icons:{type:Object,default:function(){return{}}}},setup:function(e,t){var i=t.slots,a=de(function(){var M={visible:void 0,onVisibleChange:function(){},getContainer:void 0,current:0};return Yt(e.preview)==="object"?g9(e.preview,M):M}),l=zn(new Map),o=Ne(),r=de(function(){return a.value.visible}),f=de(function(){return a.value.getContainer}),v=function(I,w){var C,x;(C=(x=a.value).onVisibleChange)===null||C===void 0||C.call(x,I,w)},b=Wi(!!r.value,{value:r,onChange:v}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne(null),m=de(function(){return r.value!==void 0}),N=de(function(){return Array.from(l.keys())}),G=de(function(){return N.value[a.value.current]}),d=de(function(){return new Map(Array.from(l).filter(function(M){var I=ft(M,2),w=I[1].canPreview;return!!w}).map(function(M){var I=ft(M,2),w=I[0],C=I[1].url;return[w,C]}))}),u=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;l.set(I,{url:w,canPreview:C})},s=function(I){o.value=I},h=function(I){X.value=I},c=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,x=function(){l.delete(I)};return l.set(I,{url:w,canPreview:C}),x},W=function(I){I==null||I.stopPropagation(),y(!1),h(null)};return rt(G,function(M){s(M)},{immediate:!0,flush:"post"}),qt(function(){p.value&&m.value&&s(G.value)},{flush:"post"}),aX.provide({isPreviewGroup:Ne(!0),previewUrls:d,setPreviewUrls:u,current:o,setCurrent:s,setShowPreview:y,setMousePosition:h,registerImage:c}),function(){var M=Xn({},(Gp(a.value),a.value));return D(ln,null,[i.default&&i.default(),D(Y9,P(P({},M),{},{"ria-hidden":!p.value,visible:p.value,prefixCls:e.previewPrefixCls,onClose:W,mousePosition:X.value,src:d.value.get(o.value),icons:e.icons,getContainer:f.value}),null)])}}});const I9=rse;var Ks={x:0,y:0},ose=P(P({},Wp()),{},{src:String,alt:String,rootClassName:String,icons:{type:Object,default:function(){return{}}}}),sse=He({compatConfig:{MODE:3},name:"Preview",inheritAttrs:!1,props:ose,emits:["close","afterClose"],setup:function(e,t){var i=t.emit,a=t.attrs,l=zn(e.icons),o=l.rotateLeft,r=l.rotateRight,f=l.zoomIn,v=l.zoomOut,b=l.close,Z=l.left,p=l.right,y=Ne(1),X=Ne(0),m=lse(Ks),N=ft(m,2),G=N[0],d=N[1],u=function(){return i("close")},s=Ne(),h=zn({originX:0,originY:0,deltaX:0,deltaY:0}),c=Ne(!1),W=aX.inject(),M=W.previewUrls,I=W.current,w=W.isPreviewGroup,C=W.setCurrent,x=de(function(){return M.value.size}),R=de(function(){return Array.from(M.value.keys())}),g=de(function(){return R.value.indexOf(I.value)}),S=de(function(){return w.value?M.value.get(I.value):e.src}),L=de(function(){return w.value&&x.value>1}),V=Ne({wheelDirection:0}),Y=function(){y.value=1,X.value=0,d(Ks),i("afterClose")},T=function(){y.value++,d(Ks)},J=function(){y.value>1&&y.value--,d(Ks)},U=function(){X.value+=90},K=function(){X.value-=90},H=function(le){le.preventDefault(),le.stopPropagation(),g.value>0&&C(R.value[g.value-1])},k=function(le){le.preventDefault(),le.stopPropagation(),g.value0&&C(R.value[g.value-1]):le.keyCode===bt.RIGHT&&g.value0?J():ae<0&&T()})}),la(function(){$()}),function(){var ae=e.visible,le=e.prefixCls,ee=e.rootClassName;return D(M9,P(P({},a),{},{transitionName:"zoom",maskTransitionName:"fade",closable:!1,keyboard:!0,prefixCls:le,onClose:u,afterClose:Y,visible:ae,wrapClassName:F,rootClassName:ee,getContainer:e.getContainer}),{default:function(){return[D("ul",{class:"".concat(e.prefixCls,"-operations")},[oe.map(function(be){var ne=be.icon,B=be.onClick,q=be.type,ue=be.disabled;return D("li",{class:_e(O,ce({},"".concat(e.prefixCls,"-operations-operation-disabled"),ue&&(ue==null?void 0:ue.value))),onClick:B,key:q},[Vl(ne,{class:Q})])})]),D("div",{class:"".concat(e.prefixCls,"-img-wrapper"),style:{transform:"translate3d(".concat(G.x,"px, ").concat(G.y,"px, 0)")}},[D("img",{onMousedown:he,onDblclick:E,ref:s,class:"".concat(e.prefixCls,"-img"),src:S.value,alt:e.alt,style:{transform:"scale3d(".concat(y.value,", ").concat(y.value,", 1) rotate(").concat(X.value,"deg)")}},null)]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-left"),ce({},"".concat(e.prefixCls,"-switch-left-disabled"),g.value<=0)),onClick:H},[Z]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-right"),ce({},"".concat(e.prefixCls,"-switch-right-disabled"),g.value>=x.value-1)),onClick:k},[p])]}})}}});const Y9=sse;var cse=["icons","maskClassName","src"],w9=function(){return{src:String,wrapperClassName:String,wrapperStyle:{type:Object,default:void 0},rootClassName:String,prefixCls:String,previewPrefixCls:String,previewMask:{type:[Boolean,Function],default:void 0},placeholder:We.any,fallback:String,preview:{type:[Boolean,Object],default:!0},onClick:{type:Function},onError:{type:Function}}},g9=function(e,t){var i=P({},e);return Object.keys(t).forEach(function(a){e[a]===void 0&&(i[a]=t[a])}),i},use=0,V9=He({compatConfig:{MODE:3},name:"Image",inheritAttrs:!1,props:w9(),emits:["click","error"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=de(function(){return e.prefixCls}),r=de(function(){return"".concat(o.value,"-preview")}),f=de(function(){var J={visible:void 0,onVisibleChange:function(){},getContainer:void 0};return Yt(e.preview)==="object"?g9(e.preview,J):J}),v=de(function(){return e.placeholder&&e.placeholder!==!0||a.placeholder}),b=de(function(){return f.value.visible}),Z=de(function(){return f.value.getContainer}),p=de(function(){return b.value!==void 0}),y=function(U,K){var H,k;(H=(k=f.value).onVisibleChange)===null||H===void 0||H.call(k,U,K)},X=Wi(!!b.value,{value:b,onChange:y}),m=ft(X,2),N=m[0],G=m[1];rt(N,function(J,U){y(J,U)});var d=Ne(v.value?"loading":"normal");rt(function(){return e.src},function(){d.value=v.value?"loading":"normal"});var u=Ne(null),s=de(function(){return d.value==="error"}),h=aX.inject(),c=h.isPreviewGroup,W=h.setCurrent,M=h.setShowPreview,I=h.setMousePosition,w=h.registerImage,C=Ne(use++),x=de(function(){return e.preview&&!s.value}),R=function(){d.value="normal"},g=function(U){d.value="error",l("error",U)},S=function(U){if(!p.value){var K=c0(U.target),H=K.left,k=K.top;c.value?(W(C.value),I({x:H,y:k})):u.value={x:H,y:k}}c.value?M(!0):G(!0),l("click",U)},L=function(){G(!1),p.value||(u.value=null)},V=Ne(null);rt(function(){return V},function(){d.value==="loading"&&V.value.complete&&(V.value.naturalWidth||V.value.naturalHeight)&&R()});var Y=function(){};Kt(function(){rt([function(){return e.src},x],function(){if(Y(),!c.value)return function(){};Y=w(C.value,e.src,x.value),x.value||Y()},{flush:"post",immediate:!0})}),la(function(){Y()});var T=function(U){return Aoe(U)?U+"px":U};return function(){var J=e.prefixCls,U=e.wrapperClassName,K=e.fallback,H=e.src,k=e.placeholder,F=e.wrapperStyle,O=e.rootClassName,Q=i.width,oe=i.height,se=i.crossorigin,he=i.decoding,pe=i.alt,re=i.sizes,_=i.srcset,E=i.usemap,$=i.class,ae=i.style,le=f.value,ee=le.icons,te=le.maskClassName,be=le.src,ne=jt(le,cse),B=_e(J,U,O,ce({},"".concat(J,"-error"),s.value)),q=s.value&&K?K:be??H,ue={crossorigin:se,decoding:he,alt:pe,sizes:re,srcset:_,usemap:E,class:_e("".concat(J,"-img"),ce({},"".concat(J,"-img-placeholder"),k===!0),$),style:P({height:oe},ae)};return D(ln,null,[D("div",{class:B,onClick:x.value?S:function(ve){l("click",ve)},style:P({width:T(Q),height:T(oe)},F)},[D("img",P(P(P({},ue),s.value&&K?{src:K}:{onLoad:R,onError:g,src:H}),{},{ref:V}),null),d.value==="loading"&&D("div",{"aria-hidden":"true",class:"".concat(J,"-placeholder")},[k||a.placeholder&&a.placeholder()]),a.previewMask&&x.value&&D("div",{class:["".concat(J,"-mask"),te]},[a.previewMask()])]),!c.value&&x.value&&D(Y9,P(P({},ne),{},{"aria-hidden":!N.value,visible:N.value,prefixCls:r.value,onClose:L,mousePosition:u.value,src:q,alt:pe,getContainer:Z.value,icons:ee,rootClassName:O}),null)])}}});V9.PreviewGroup=I9;const dse=V9;var hse={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"};const fse=hse;function Rg(n){for(var e=1;eNumber.MAX_SAFE_INTEGER)return String(Jv()?BigInt(n).toString():Number.MAX_SAFE_INTEGER);if(nNumber.MAX_SAFE_INTEGER)return new n(Number.MAX_SAFE_INTEGER);if(a0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":hX(this.number):this.origin}}]),n}(),Sse=function(){function n(e){if(ip(this,n),ce(this,"origin",""),!e&&e!==0||!String(e).trim()){this.empty=!0;return}if(this.origin=String(e),e==="-"){this.nan=!0;return}var t=e;if(dX(t)&&(t=Number(t)),t=typeof t=="string"?t:hX(t),fX(t)){var i=ah(t);this.negative=i.negative;var a=i.trimStr.split(".");this.integer=BigInt(a[0]);var l=a[1]||"0";this.decimal=BigInt(l),this.decimalLen=l.length}else this.nan=!0}return np(n,[{key:"getMark",value:function(){return this.negative?"-":""}},{key:"getIntegerStr",value:function(){return this.integer.toString()}},{key:"getDecimalStr",value:function(){return this.decimal.toString().padStart(this.decimalLen,"0")}},{key:"alignDecimal",value:function(t){var i="".concat(this.getMark()).concat(this.getIntegerStr()).concat(this.getDecimalStr().padEnd(t,"0"));return BigInt(i)}},{key:"negate",value:function(){var t=new n(this.toString());return t.negative=!t.negative,t}},{key:"add",value:function(t){if(this.isInvalidate())return new n(t);var i=new n(t);if(i.isInvalidate())return this;var a=Math.max(this.getDecimalStr().length,i.getDecimalStr().length),l=this.alignDecimal(a),o=i.alignDecimal(a),r=(l+o).toString(),f=ah(r),v=f.negativeStr,b=f.trimStr,Z="".concat(v).concat(b.padStart(a+1,"0"));return new n("".concat(Z.slice(0,-a),".").concat(Z.slice(-a)))}},{key:"isEmpty",value:function(){return this.empty}},{key:"isNaN",value:function(){return this.nan}},{key:"isInvalidate",value:function(){return this.isEmpty()||this.isNaN()}},{key:"equals",value:function(t){return this.toString()===(t==null?void 0:t.toString())}},{key:"lessEquals",value:function(t){return this.add(t.negate().toString()).toNumber()<=0}},{key:"toNumber",value:function(){return this.isNaN()?NaN:Number(this.toString())}},{key:"toString",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":ah("".concat(this.getMark()).concat(this.getIntegerStr(),".").concat(this.getDecimalStr())).fullStr:this.origin}}]),n}();function Dr(n){return Jv()?new Sse(n):new Cse(n)}function Dv(n,e,t){if(n==="")return"";var i=ah(n),a=i.negativeStr,l=i.integerStr,o=i.decimalStr,r="".concat(e).concat(o),f="".concat(a).concat(l);if(t>=0){var v=Number(o[t]);if(v>=5){var b=Dr(n).add("".concat(a,"0.").concat("0".repeat(t)).concat(10-v));return Dv(b.toString(),e,t)}return t===0?f:"".concat(f).concat(e).concat(o.padEnd(t,"0").slice(0,t))}return r===".0"?f:"".concat(f).concat(r)}var zse=200,kse=600;const Fse=He({compatConfig:{MODE:3},name:"StepHandler",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:{type:Function}},slots:["upNode","downNode"],setup:function(e,t){var i=t.slots,a=t.emit,l=Ne(),o=function(v,b){v.preventDefault(),a("step",b);function Z(){a("step",b),l.value=setTimeout(Z,zse)}l.value=setTimeout(Z,kse)},r=function(){clearTimeout(l.value)};return fn(function(){r()}),function(){if(kG())return null;var f=e.prefixCls,v=e.upDisabled,b=e.downDisabled,Z="".concat(f,"-handler"),p=_e(Z,"".concat(Z,"-up"),ce({},"".concat(Z,"-up-disabled"),v)),y=_e(Z,"".concat(Z,"-down"),ce({},"".concat(Z,"-down-disabled"),b)),X={unselectable:"on",role:"button",onMouseup:r,onMouseleave:r},m=i.upNode,N=i.downNode;return D("div",{class:"".concat(Z,"-wrap")},[D("span",P(P({},X),{},{onMousedown:function(d){o(d,!0)},"aria-label":"Increase Value","aria-disabled":v,class:p}),[(m==null?void 0:m())||D("span",{unselectable:"on",class:"".concat(f,"-handler-up-inner")},null)]),D("span",P(P({},X),{},{onMousedown:function(d){o(d,!1)},"aria-label":"Decrease Value","aria-disabled":b,class:y}),[(N==null?void 0:N())||D("span",{unselectable:"on",class:"".concat(f,"-handler-down-inner")},null)])])}}});function Jse(n,e){var t=Ne(null);function i(){try{var l=n.value,o=l.selectionStart,r=l.selectionEnd,f=l.value,v=f.substring(0,o),b=f.substring(r);t.value={start:o,end:r,value:f,beforeTxt:v,afterTxt:b}}catch{}}function a(){if(n.value&&t.value&&e.value)try{var l=n.value.value,o=t.value,r=o.beforeTxt,f=o.afterTxt,v=o.start,b=l.length;if(l.endsWith(f))b=l.length-t.value.afterTxt.length;else if(l.startsWith(r))b=r.length;else{var Z=r[v-1],p=l.indexOf(Z,v-1);p!==-1&&(b=p+1)}n.value.setSelectionRange(b,b)}catch(y){"Something warning of cursor restore. Please fire issue about this: ".concat(y.message)}}return[i,a]}const Dse=function(){var n=Ne(0),e=function(){At.cancel(n.value)};return fn(function(){e()}),function(t){e(),n.value=At(function(){t()})}};var Ose=["prefixCls","min","max","step","defaultValue","value","disabled","readonly","keyboard","controls","autofocus","stringMode","parser","formatter","precision","decimalSeparator","onChange","onInput","onPressEnter","onStep","lazy","class","style"],zg=function(e,t){return e||t.isEmpty()?t.toString():t.toNumber()},kg=function(e){var t=Dr(e);return t.isInvalidate()?null:t},T9=function(){return{stringMode:{type:Boolean},defaultValue:{type:[String,Number]},value:{type:[String,Number]},prefixCls:{type:String},min:{type:[String,Number]},max:{type:[String,Number]},step:{type:[String,Number],default:1},tabindex:{type:Number},controls:{type:Boolean,default:!0},readonly:{type:Boolean},disabled:{type:Boolean},autofocus:{type:Boolean},keyboard:{type:Boolean,default:!0},parser:{type:Function},formatter:{type:Function},precision:{type:Number},decimalSeparator:{type:String},onInput:{type:Function},onChange:{type:Function},onPressEnter:{type:Function},onStep:{type:Function},onBlur:{type:Function},onFocus:{type:Function}}};const jse=He({compatConfig:{MODE:3},name:"InnerInputNumber",inheritAttrs:!1,props:P(P({},T9()),{},{lazy:Boolean}),slots:["upHandler","downHandler"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=t.expose,r=Ne(),f=Ne(!1),v=Ne(!1),b=Ne(!1),Z=Ne(Dr(e.value));function p(k){e.value===void 0&&(Z.value=k)}var y=function(F,O){if(!O)return e.precision>=0?e.precision:Math.max(Lh(F),Lh(e.step))},X=function(F){var O=String(F);if(e.parser)return e.parser(O);var Q=O;return e.decimalSeparator&&(Q=Q.replace(e.decimalSeparator,".")),Q.replace(/[^\w.-]+/g,"")},m=Ne(""),N=function(F,O){if(e.formatter)return e.formatter(F,{userTyping:O,input:String(m.value)});var Q=typeof F=="number"?hX(F):F;if(!O){var oe=y(Q,O);if(fX(Q)&&(e.decimalSeparator||oe>=0)){var se=e.decimalSeparator||".";Q=Dv(Q,se,oe)}}return Q},G=function(){var k=e.value;return Z.value.isInvalidate()&&["string","number"].includes(Yt(k))?Number.isNaN(k)?"":k:N(Z.value.toString(),!1)}();m.value=G;function d(k,F){m.value=N(k.isInvalidate()?k.toString(!1):k.toString(!F),F)}var u=de(function(){return kg(e.max)}),s=de(function(){return kg(e.min)}),h=de(function(){return!u.value||!Z.value||Z.value.isInvalidate()?!1:u.value.lessEquals(Z.value)}),c=de(function(){return!s.value||!Z.value||Z.value.isInvalidate()?!1:Z.value.lessEquals(s.value)}),W=Jse(r,f),M=ft(W,2),I=M[0],w=M[1],C=function(F){return u.value&&!F.lessEquals(u.value)?u.value:s.value&&!s.value.lessEquals(F)?s.value:null},x=function(F){return!C(F)},R=function(F,O){var Q=F,oe=x(Q)||Q.isEmpty();if(!Q.isEmpty()&&!O&&(Q=C(Q)||Q,oe=!0),!e.readonly&&!e.disabled&&oe){var se=Q.toString(),he=y(se,O);if(he>=0&&(Q=Dr(Dv(se,".",he))),!Q.equals(Z.value)){var pe;p(Q),(pe=e.onChange)===null||pe===void 0||pe.call(e,Q.isEmpty()?null:zg(e.stringMode,Q)),e.value===void 0&&d(Q,O)}return Q}return Z.value},g=Dse(),S=function k(F){var O;if(I(),m.value=F,!b.value){var Q=X(F),oe=Dr(Q);oe.isNaN()||R(oe,!0)}(O=e.onInput)===null||O===void 0||O.call(e,F),g(function(){var se=F;e.parser||(se=F.replace(/。/g,".")),se!==F&&k(se)})},L=function(){b.value=!0},V=function(){b.value=!1,S(r.value.value)},Y=function(F){S(F.target.value)},T=function(F){var O,Q;if(!(F&&h.value||!F&&c.value)){v.value=!1;var oe=Dr(e.step);F||(oe=oe.negate());var se=(Z.value||Dr(0)).add(oe.toString()),he=R(se,!1);(O=e.onStep)===null||O===void 0||O.call(e,zg(e.stringMode,he),{offset:e.step,type:F?"up":"down"}),(Q=r.value)===null||Q===void 0||Q.focus()}},J=function(F){var O=Dr(X(m.value)),Q=O;O.isNaN()?Q=Z.value:Q=R(O,F),e.value!==void 0?d(Z.value,!1):Q.isNaN()||d(Q,!1)},U=function(F){var O=F.which;if(v.value=!0,O===bt.ENTER){var Q;b.value||(v.value=!1),J(!1),(Q=e.onPressEnter)===null||Q===void 0||Q.call(e,F)}e.keyboard!==!1&&!b.value&&[bt.UP,bt.DOWN].includes(O)&&(T(bt.UP===O),F.preventDefault())},K=function(){v.value=!1},H=function(F){J(!1),f.value=!1,v.value=!1,l("blur",F)};return rt(function(){return e.precision},function(){Z.value.isInvalidate()||d(Z.value,!1)},{flush:"post"}),rt(function(){return e.value},function(){var k=Dr(e.value);Z.value=k;var F=Dr(X(m.value));(!k.equals(F)||!v.value||e.formatter)&&d(k,v.value)},{flush:"post"}),rt(m,function(){e.formatter&&w()},{flush:"post"}),rt(function(){return e.disabled},function(k){k&&(f.value=!1)}),o({focus:function(){var F;(F=r.value)===null||F===void 0||F.focus()},blur:function(){var F;(F=r.value)===null||F===void 0||F.blur()}}),function(){var k,F=P(P({},i),e),O=F.prefixCls,Q=O===void 0?"rc-input-number":O,oe=F.min,se=F.max,he=F.step,pe=he===void 0?1:he;F.defaultValue,F.value;var re=F.disabled,_=F.readonly;F.keyboard;var E=F.controls,$=E===void 0?!0:E,ae=F.autofocus;F.stringMode,F.parser,F.formatter,F.precision,F.decimalSeparator,F.onChange,F.onInput,F.onPressEnter,F.onStep;var le=F.lazy,ee=F.class,te=F.style,be=jt(F,Ose),ne=a.upHandler,B=a.downHandler,q="".concat(Q,"-input"),ue={};return le?ue.onChange=Y:ue.onInput=Y,D("div",{class:_e(Q,ee,(k={},ce(k,"".concat(Q,"-focused"),f.value),ce(k,"".concat(Q,"-disabled"),re),ce(k,"".concat(Q,"-readonly"),_),ce(k,"".concat(Q,"-not-a-number"),Z.value.isNaN()),ce(k,"".concat(Q,"-out-of-range"),!Z.value.isInvalidate()&&!x(Z.value)),k)),style:te,onKeydown:U,onKeyup:K},[$&&D(Fse,{prefixCls:Q,upDisabled:h.value,downDisabled:c.value,onStep:T},{upNode:ne,downNode:B}),D("div",{class:"".concat(q,"-wrap")},[D("input",P(P(P({autofocus:ae,autocomplete:"off",role:"spinbutton","aria-valuemin":oe,"aria-valuemax":se,"aria-valuenow":Z.value.isInvalidate()?null:Z.value.toString(),step:pe},be),{},{ref:r,class:q,value:m.value,disabled:re,readonly:_,onFocus:function(Ge){f.value=!0,l("focus",Ge)}},ue),{},{onBlur:H,onCompositionstart:L,onCompositionend:V}),null)])])}}});function FZ(n){return n!=null}var Use=["class","bordered","readonly","style","addonBefore","addonAfter","prefix","valueModifiers"],Fg=T9(),Ese=function(){return P(P({},Fg),{},{size:{type:String},bordered:{type:Boolean,default:!0},placeholder:String,name:String,id:String,type:String,addonBefore:We.any,addonAfter:We.any,prefix:We.any,"onUpdate:value":Fg.onChange,valueModifiers:Object})},JZ=He({compatConfig:{MODE:3},name:"AInputNumber",inheritAttrs:!1,props:Ese(),slots:["addonBefore","addonAfter","prefix"],setup:function(e,t){var i=t.emit,a=t.expose,l=t.attrs,o=t.slots,r=Hi(),f=Nt("input-number",e),v=f.prefixCls,b=f.size,Z=f.direction,p=Ne(e.value===void 0?e.defaultValue:e.value),y=Ne(!1);rt(function(){return e.value},function(){p.value=e.value});var X=Ne(null),m=function(){var h;(h=X.value)===null||h===void 0||h.focus()},N=function(){var h;(h=X.value)===null||h===void 0||h.blur()};a({focus:m,blur:N});var G=function(h){e.value===void 0&&(p.value=h),i("update:value",h),i("change",h),r.onFieldChange()},d=function(h){y.value=!1,i("blur",h),r.onFieldBlur()},u=function(h){y.value=!0,i("focus",h)};return function(){var s,h,c,W,M=P(P({},l),e),I=M.class,w=M.bordered,C=M.readonly,x=M.style,R=M.addonBefore,g=R===void 0?(s=o.addonBefore)===null||s===void 0?void 0:s.call(o):R,S=M.addonAfter,L=S===void 0?(h=o.addonAfter)===null||h===void 0?void 0:h.call(o):S,V=M.prefix,Y=V===void 0?(c=o.prefix)===null||c===void 0?void 0:c.call(o):V,T=M.valueModifiers,J=T===void 0?{}:T,U=jt(M,Use),K=v.value,H=b.value,k=_e((W={},ce(W,"".concat(K,"-lg"),H==="large"),ce(W,"".concat(K,"-sm"),H==="small"),ce(W,"".concat(K,"-rtl"),Z.value==="rtl"),ce(W,"".concat(K,"-readonly"),C),ce(W,"".concat(K,"-borderless"),!w),W),I),F=D(jse,P(P({},dn(U,["size","defaultValue"])),{},{ref:X,lazy:!!J.lazy,value:p.value,class:k,prefixCls:K,readonly:C,onChange:G,onBlur:d,onFocus:u}),{upHandler:function(){return D(xse,{class:"".concat(K,"-handler-up-inner")},null)},downHandler:function(){return D(Dh,{class:"".concat(K,"-handler-down-inner")},null)}}),O=FZ(g)||FZ(L);if(FZ(Y)){var Q,oe=_e("".concat(K,"-affix-wrapper"),(Q={},ce(Q,"".concat(K,"-affix-wrapper-focused"),y.value),ce(Q,"".concat(K,"-affix-wrapper-disabled"),e.disabled),ce(Q,"".concat(K,"-affix-wrapper-rtl"),Z.value==="rtl"),ce(Q,"".concat(K,"-affix-wrapper-readonly"),C),ce(Q,"".concat(K,"-affix-wrapper-borderless"),!w),ce(Q,"".concat(I),!O&&I),Q));F=D("div",{class:oe,style:x,onMouseup:function(){return X.value.focus()}},[D("span",{class:"".concat(K,"-prefix")},[Y]),F])}if(O){var se,he="".concat(K,"-group"),pe="".concat(he,"-addon"),re=g?D("div",{class:pe},[g]):null,_=L?D("div",{class:pe},[L]):null,E=_e("".concat(K,"-wrapper"),he,ce({},"".concat(he,"-rtl"),Z.value==="rtl")),$=_e("".concat(K,"-group-wrapper"),(se={},ce(se,"".concat(K,"-group-wrapper-sm"),H==="small"),ce(se,"".concat(K,"-group-wrapper-lg"),H==="large"),ce(se,"".concat(K,"-group-wrapper-rtl"),Z.value==="rtl"),se),I);F=D("div",{class:$,style:x},[D("div",{class:E},[re,F,_])])}return wn(F,{style:x})}}});const Kse=Xn(JZ,{install:function(e){return e.component(JZ.name,JZ),e}});var bX=function(){return{prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String}};function Xp(n){var e=n.suffixCls,t=n.tagName,i=n.name;return function(a){var l=He({compatConfig:{MODE:3},name:i,props:bX(),setup:function(r,f){var v=f.slots,b=Nt(e,r),Z=b.prefixCls;return function(){var p=P(P({},r),{},{prefixCls:Z.value,tagName:t});return D(a,p,v)}}});return l}}var mX=He({compatConfig:{MODE:3},props:bX(),setup:function(e,t){var i=t.slots;return function(){return D(e.tagName,{class:e.prefixCls},i)}}}),Hse=He({compatConfig:{MODE:3},props:bX(),setup:function(e,t){var i=t.slots,a=Nt("",e),l=a.direction,o=Ne([]),r={addSider:function(b){o.value=[].concat(yt(o.value),[b])},removeSider:function(b){o.value=o.value.filter(function(Z){return Z!==b})}};hn(r3,r);var f=de(function(){var v,b=e.prefixCls,Z=e.hasSider;return v={},ce(v,"".concat(b),!0),ce(v,"".concat(b,"-has-sider"),typeof Z=="boolean"?Z:o.value.length>0),ce(v,"".concat(b,"-rtl"),l.value==="rtl"),v});return function(){var v=e.tagName;return D(v,{class:f.value},i)}}}),Pse=Xp({suffixCls:"layout",tagName:"section",name:"ALayout"})(Hse),$b=Xp({suffixCls:"layout-header",tagName:"header",name:"ALayoutHeader"})(mX),qb=Xp({suffixCls:"layout-footer",tagName:"footer",name:"ALayoutFooter"})(mX),em=Xp({suffixCls:"layout-content",tagName:"main",name:"ALayoutContent"})(mX);const DZ=Pse;var Qse={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"bars",theme:"outlined"};const Bse=Qse;function Jg(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:"";return n+=1,"".concat(e).concat(n)}}();const tm=He({compatConfig:{MODE:3},name:"ALayoutSider",inheritAttrs:!1,props:pn($se(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:["breakpoint","update:collapsed","collapse"],setup:function(e,t){var i=t.emit,a=t.attrs,l=t.slots,o=Nt("layout-sider",e),r=o.prefixCls,f=un(r3,void 0),v=Ne(!!(e.collapsed!==void 0?e.collapsed:e.defaultCollapsed)),b=Ne(!1);rt(function(){return e.collapsed},function(){v.value=!!e.collapsed}),hn(a3,v);var Z=function(d,u){e.collapsed===void 0&&(v.value=d),i("update:collapsed",d),i("collapse",d,u)},p=Ne(function(G){b.value=G.matches,i("breakpoint",G.matches),v.value!==G.matches&&Z(G.matches,"responsive")}),y;function X(G){return p.value(G)}var m=qse("ant-sider-");f&&f.addSider(m),Kt(function(){rt(function(){return e.breakpoint},function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}if(typeof window<"u"){var u=window,s=u.matchMedia;if(s&&e.breakpoint&&e.breakpoint in Dg){y=s("(max-width: ".concat(Dg[e.breakpoint],")"));try{y.addEventListener("change",X)}catch{y.addListener(X)}X(y)}}},{immediate:!0})}),fn(function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}f&&f.removeSider(m)});var N=function(){Z(!v.value,"clickTrigger")};return function(){var G,d,u,s=r.value,h=e.collapsedWidth,c=e.width,W=e.reverseArrow,M=e.zeroWidthTriggerStyle,I=e.trigger,w=I===void 0?(G=l.trigger)===null||G===void 0?void 0:G.call(l):I,C=e.collapsible,x=e.theme,R=v.value?h:c,g=Kx(R)?"".concat(R,"px"):String(R),S=parseFloat(String(h||0))===0?D("span",{onClick:N,class:_e("".concat(s,"-zero-width-trigger"),"".concat(s,"-zero-width-trigger-").concat(W?"right":"left")),style:M},[w||D(_se,null,null)]):null,L={expanded:D(W?xo:Nc,null,null),collapsed:D(W?Nc:xo,null,null)},V=v.value?"collapsed":"expanded",Y=L[V],T=w!==null?S||D("div",{class:"".concat(s,"-trigger"),onClick:N,style:{width:g}},[w||Y]):null,J=[a.style,{flex:"0 0 ".concat(g),maxWidth:g,minWidth:g,width:g}],U=_e(s,"".concat(s,"-").concat(x),(d={},ce(d,"".concat(s,"-collapsed"),!!v.value),ce(d,"".concat(s,"-has-trigger"),C&&w!==null&&!S),ce(d,"".concat(s,"-below"),!!b.value),ce(d,"".concat(s,"-zero-width"),parseFloat(g)===0),d),a.class);return D("aside",P(P({},a),{},{class:U,style:J}),[D("div",{class:"".concat(s,"-children")},[(u=l.default)===null||u===void 0?void 0:u.call(l)]),C||b.value&&S?T:null])}}});var ece=$b,tce=qb,nce=tm,ice=em;const lce=Xn(DZ,{Header:$b,Footer:qb,Content:em,Sider:tm,install:function(e){return e.component(DZ.name,DZ),e.component($b.name,$b),e.component(qb.name,qb),e.component(tm.name,tm),e.component(em.name,em),e}});var ace=["class","style"],rce=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:We.any,delay:Number,indicator:We.any}},nm=null;function oce(n,e){return!!n&&!!e&&!isNaN(Number(e))}function sce(n){var e=n.indicator;nm=typeof e=="function"?e:function(){return D(e,null,null)}}const Ws=He({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:pn(rce(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:un("configProvider",mG)}},data:function(){var e=this.spinning,t=this.delay,i=oce(e,t);return{sSpinning:e&&!i}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var e=this;cn(function(){e.debouncifyUpdateSpinning(),e.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(e){var t=e||this.$props,i=t.delay;i&&(this.cancelExistingSpin(),this.updateSpinning=hp(this.originalUpdateSpinning,i))},updateSpinning:function(){var e=this.spinning,t=this.sSpinning;t!==e&&(this.sSpinning=e)},cancelExistingSpin:function(){var e=this.updateSpinning;e&&e.cancel&&e.cancel()},renderIndicator:function(e){var t="".concat(e,"-dot"),i=BW(this,"indicator");return i===null?null:(Array.isArray(i)&&(i=i.length===1?i[0]:i),Zl(i)?Vl(i,{class:t}):nm&&Zl(nm())?Vl(nm(),{class:t}):D("span",{class:"".concat(t," ").concat(e,"-dot-spin")},[D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null)]))}},render:function(){var e,t,i,a=this.$props,l=a.size,o=a.prefixCls,r=a.tip,f=r===void 0?(e=(t=this.$slots).tip)===null||e===void 0?void 0:e.call(t):r,v=a.wrapperClassName,b=this.$attrs,Z=b.class,p=b.style,y=jt(b,ace),X=this.configProvider,m=X.getPrefixCls,N=X.direction,G=m("spin",o),d=this.sSpinning,u=(i={},ce(i,G,!0),ce(i,"".concat(G,"-sm"),l==="small"),ce(i,"".concat(G,"-lg"),l==="large"),ce(i,"".concat(G,"-spinning"),d),ce(i,"".concat(G,"-show-text"),!!f),ce(i,"".concat(G,"-rtl"),N==="rtl"),ce(i,Z,!!Z),i),s=D("div",P(P({},y),{},{style:p,class:u}),[this.renderIndicator(G),f?D("div",{class:"".concat(G,"-text")},[f]):null]),h=xh(this);if(h&&h.length){var c,W=(c={},ce(c,"".concat(G,"-container"),!0),ce(c,"".concat(G,"-blur"),d),c);return D("div",{class:["".concat(G,"-nested-loading"),v]},[d&&D("div",{key:"loading"},[s]),D("div",{class:W,key:"container"},[h])])}return s}});Ws.setDefaultIndicator=sce;Ws.install=function(n){return n.component(Ws.name,Ws),n};var cce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"};const uce=cce;function Og(n){for(var e=1;e=0||b.relatedTarget.className.indexOf("".concat(y,"-item"))>=0)){t.value="";return}else p(i.value),t.value=""},r=function(b){t.value!==""&&(b.keyCode===As.ENTER||b.type==="click")&&(e.quickGo(i.value),t.value="")},f=de(function(){var v=e.pageSize,b=e.pageSizeOptions;return b.some(function(Z){return Z.toString()===v.toString()})?b:b.concat([v.toString()]).sort(function(Z,p){var y=isNaN(Number(Z))?0:Number(Z),X=isNaN(Number(p))?0:Number(p);return y-X})});return function(){var v=e.rootPrefixCls,b=e.locale,Z=e.changeSize,p=e.quickGo,y=e.goButton,X=e.selectComponentClass,m=e.selectPrefixCls,N=e.pageSize,G=e.disabled,d="".concat(v,"-options"),u=null,s=null,h=null;if(!Z&&!p)return null;if(Z&&X){var c=e.buildOptionText||a,W=f.value.map(function(M,I){return D(X.Option,{key:I,value:M},{default:function(){return[c({value:M})]}})});u=D(X,{disabled:G,prefixCls:m,showSearch:!1,class:"".concat(d,"-size-changer"),optionLabelProp:"children",value:(N||f.value[0]).toString(),onChange:function(I){return Z(Number(I))},getPopupContainer:function(I){return I.parentNode}},{default:function(){return[W]}})}return p&&(y&&(h=typeof y=="boolean"?D("button",{type:"button",onClick:r,onKeyup:r,disabled:G,class:"".concat(d,"-quick-jumper-button")},[b.jump_to_confirm]):D("span",{onClick:r,onKeyup:r},[y])),s=D("div",{class:"".concat(d,"-quick-jumper")},[b.jump_to,cl(D("input",{disabled:G,type:"text",value:t.value,onInput:l,onChange:l,onKeyup:r,onBlur:o},null),[[Bu]]),b.page,h])),D("li",{class:"".concat(d)},[u,s])}}}),vce={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"};var Wce=["class"];function Gce(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n}function Xce(n){var e=n.originalElement;return e}function yo(n,e,t){var i=typeof n>"u"?e.statePageSize:n;return Math.floor((t.total-1)/i)+1}const Nce=He({compatConfig:{MODE:3},name:"Pagination",mixins:[Rc],inheritAttrs:!1,props:{disabled:{type:Boolean,default:void 0},prefixCls:We.string.def("rc-pagination"),selectPrefixCls:We.string.def("rc-select"),current:Number,defaultCurrent:We.number.def(1),total:We.number.def(0),pageSize:Number,defaultPageSize:We.number.def(10),hideOnSinglePage:{type:Boolean,default:!1},showSizeChanger:{type:Boolean,default:void 0},showLessItems:{type:Boolean,default:!1},selectComponentClass:We.any,showPrevNextJumpers:{type:Boolean,default:!0},showQuickJumper:We.oneOfType([We.looseBool,We.object]).def(!1),showTitle:{type:Boolean,default:!0},pageSizeOptions:We.arrayOf(We.oneOfType([We.number,We.string])),buildOptionText:Function,showTotal:Function,simple:{type:Boolean,default:void 0},locale:We.object.def(vce),itemRender:We.func.def(Xce),prevIcon:We.any,nextIcon:We.any,jumpPrevIcon:We.any,jumpNextIcon:We.any,totalBoundaryShowSizeChanger:We.number.def(50)},data:function(){var e=this.$props,t=jm([this.current,this.defaultCurrent]),i=jm([this.pageSize,this.defaultPageSize]);return t=Math.min(t,yo(i,void 0,e)),{stateCurrent:t,stateCurrentInputValue:t,statePageSize:i}},watch:{current:function(e){this.setState({stateCurrent:e,stateCurrentInputValue:e})},pageSize:function(e){var t={},i=this.stateCurrent,a=yo(e,this.$data,this.$props);i=i>a?a:i,Mo(this,"current")||(t.stateCurrent=i,t.stateCurrentInputValue=i),t.statePageSize=e,this.setState(t)},stateCurrent:function(e,t){var i=this;this.$nextTick(function(){if(i.$refs.paginationNode){var a=i.$refs.paginationNode.querySelector(".".concat(i.prefixCls,"-item-").concat(t));a&&document.activeElement===a&&a.blur()}})},total:function(){var e={},t=yo(this.pageSize,this.$data,this.$props);if(Mo(this,"current")){var i=Math.min(this.current,t);e.stateCurrent=i,e.stateCurrentInputValue=i}else{var a=this.stateCurrent;a===0&&t>0?a=1:a=Math.min(this.stateCurrent,t),e.stateCurrent=a}this.setState(e)}},methods:{getJumpPrevPage:function(){return Math.max(1,this.stateCurrent-(this.showLessItems?3:5))},getJumpNextPage:function(){return Math.min(yo(void 0,this.$data,this.$props),this.stateCurrent+(this.showLessItems?3:5))},getItemIcon:function(e,t){var i=this.$props.prefixCls,a=BW(this,e,this.$props)||D("button",{type:"button","aria-label":t,class:"".concat(i,"-item-link")},null);return a},getValidValue:function(e){var t=e.target.value,i=yo(void 0,this.$data,this.$props),a=this.$data.stateCurrentInputValue,l;return t===""?l=t:isNaN(Number(t))?l=a:t>=i?l=i:l=Number(t),l},isValid:function(e){return Gce(e)&&e!==this.stateCurrent},shouldDisplayQuickJumper:function(){var e=this.$props,t=e.showQuickJumper,i=e.pageSize,a=e.total;return a<=i?!1:t},handleKeyDown:function(e){(e.keyCode===As.ARROW_UP||e.keyCode===As.ARROW_DOWN)&&e.preventDefault()},handleKeyUp:function(e){if(!(e.isComposing||e.target.composing)){var t=this.getValidValue(e),i=this.stateCurrentInputValue;t!==i&&this.setState({stateCurrentInputValue:t}),e.keyCode===As.ENTER?this.handleChange(t):e.keyCode===As.ARROW_UP?this.handleChange(t-1):e.keyCode===As.ARROW_DOWN&&this.handleChange(t+1)}},changePageSize:function(e){var t=this.stateCurrent,i=t,a=yo(e,this.$data,this.$props);t=t>a?a:t,a===0&&(t=this.stateCurrent),typeof e=="number"&&(Mo(this,"pageSize")||this.setState({statePageSize:e}),Mo(this,"current")||this.setState({stateCurrent:t,stateCurrentInputValue:t})),this.__emit("update:pageSize",e),t!==i&&this.__emit("update:current",t),this.__emit("showSizeChange",t,e),this.__emit("change",t,e)},handleChange:function(e){var t=this.$props.disabled,i=e;if(this.isValid(i)&&!t){var a=yo(void 0,this.$data,this.$props);return i>a?i=a:i<1&&(i=1),Mo(this,"current")||this.setState({stateCurrent:i,stateCurrentInputValue:i}),this.__emit("update:current",i),this.__emit("change",i,this.statePageSize),i}return this.stateCurrent},prev:function(){this.hasPrev()&&this.handleChange(this.stateCurrent-1)},next:function(){this.hasNext()&&this.handleChange(this.stateCurrent+1)},jumpPrev:function(){this.handleChange(this.getJumpPrevPage())},jumpNext:function(){this.handleChange(this.getJumpNextPage())},hasPrev:function(){return this.stateCurrent>1},hasNext:function(){return this.stateCurrenta},runIfEnter:function(e,t){if(e.key==="Enter"||e.charCode===13){for(var i=arguments.length,a=new Array(i>2?i-2:0),l=2;l0?s-1:0,T=s+1=V*2&&s!==1+2&&(w[0]=D(Hs,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:Q,page:Q,class:"".concat(i,"-item-after-jump-prev"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.unshift(C)),I-s>=V*2&&s!==I-2&&(w[w.length-1]=D(Hs,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:oe,page:oe,class:"".concat(i,"-item-before-jump-next"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.push(x)),Q!==1&&w.unshift(R),oe!==I&&w.push(g)}var pe=null;Z&&(pe=D("li",{class:"".concat(i,"-total-text")},[Z(o,[o===0?0:(s-1)*h+1,s*h>o?o:s*h])]));var re=!J||!I,_=!U||!I,E=this.buildOptionText||this.$slots.buildOptionText;return D("ul",P(P({unselectable:"on",ref:"paginationNode"},M),{},{class:_e((e={},ce(e,"".concat(i),!0),ce(e,"".concat(i,"-disabled"),a),e),W)}),[pe,D("li",{title:b?r.prev_page:null,onClick:this.prev,tabindex:re?null:0,onKeypress:this.runIfEnterPrev,class:_e("".concat(i,"-prev"),ce({},"".concat(i,"-disabled"),re)),"aria-disabled":re},[this.renderPrev(Y)]),w,D("li",{title:b?r.next_page:null,onClick:this.next,tabindex:_?null:0,onKeypress:this.runIfEnterNext,class:_e("".concat(i,"-next"),ce({},"".concat(i,"-disabled"),_)),"aria-disabled":_},[this.renderNext(T)]),D(Zce,{disabled:a,locale:r,rootPrefixCls:i,selectComponentClass:G,selectPrefixCls:d,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:s,pageSize:h,pageSizeOptions:u,buildOptionText:E||null,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:L},null)])}});var Mce=["size","itemRender","buildOptionText","selectComponentClass","responsive"],Ice=function(){return{total:Number,defaultCurrent:Number,disabled:{type:Boolean,default:void 0},current:Number,defaultPageSize:Number,pageSize:Number,hideOnSinglePage:{type:Boolean,default:void 0},showSizeChanger:{type:Boolean,default:void 0},pageSizeOptions:Array,buildOptionText:Function,showQuickJumper:{type:[Boolean,Object],default:void 0},showTotal:Function,size:String,simple:{type:Boolean,default:void 0},locale:Object,prefixCls:String,selectPrefixCls:String,totalBoundaryShowSizeChanger:Number,selectComponentClass:String,itemRender:Function,role:String,responsive:Boolean,showLessItems:{type:Boolean,default:void 0},onChange:Function,onShowSizeChange:Function,"onUpdate:current":Function,"onUpdate:pageSize":Function}};const Yce=He({compatConfig:{MODE:3},name:"APagination",inheritAttrs:!1,props:Ice(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("pagination",e),o=l.prefixCls,r=l.configProvider,f=l.direction,v=de(function(){return r.getPrefixCls("select",e.selectPrefixCls)}),b=Au(),Z=Br("Pagination",lT,Ot(e,"locale")),p=ft(Z,1),y=p[0],X=function(N){var G=D("span",{class:"".concat(N,"-item-ellipsis")},[Fl("•••")]),d=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(Nc,null,null)]),u=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(xo,null,null)]),s=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(hce,{class:"".concat(N,"-item-link-icon")},null),G])]),h=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(pce,{class:"".concat(N,"-item-link-icon")},null),G])]);if(f.value==="rtl"){var c=[u,d];d=c[0],u=c[1];var W=[h,s];s=W[0],h=W[1]}return{prevIcon:d,nextIcon:u,jumpPrevIcon:s,jumpNextIcon:h}};return function(){var m,N=e.size,G=e.itemRender,d=G===void 0?i.itemRender:G,u=e.buildOptionText,s=u===void 0?i.buildOptionText:u,h=e.selectComponentClass,c=e.responsive,W=jt(e,Mce),M=N==="small"||!!((m=b.value)!==null&&m!==void 0&&m.xs&&!N&&c),I=P(P(P(P({},W),X(o.value)),{},{prefixCls:o.value,selectPrefixCls:v.value,selectComponentClass:h||(M?yce:Ns),locale:y.value,buildOptionText:s},a),{},{class:_e(ce({mini:M},"".concat(o.value,"-rtl"),f.value==="rtl"),a.class),itemRender:d});return D(Nce,I,null)}}}),Np=wi(Yce);var wce=function(){return{avatar:We.any,description:We.any,prefixCls:String,title:We.any}};const x9=He({compatConfig:{MODE:3},name:"AListItemMeta",props:wce(),displayName:"AListItemMeta",__ANT_LIST_ITEM_META:!0,slots:["avatar","description","title"],setup:function(e,t){var i=t.slots,a=Nt("list",e),l=a.prefixCls;return function(){var o,r,f,v,b,Z,p="".concat(l.value,"-item-meta"),y=(o=e.title)!==null&&o!==void 0?o:(r=i.title)===null||r===void 0?void 0:r.call(i),X=(f=e.description)!==null&&f!==void 0?f:(v=i.description)===null||v===void 0?void 0:v.call(i),m=(b=e.avatar)!==null&&b!==void 0?b:(Z=i.avatar)===null||Z===void 0?void 0:Z.call(i),N=D("div",{class:"".concat(l.value,"-item-meta-content")},[y&&D("h4",{class:"".concat(l.value,"-item-meta-title")},[y]),X&&D("div",{class:"".concat(l.value,"-item-meta-description")},[X])]);return D("div",{class:p},[m&&D("div",{class:"".concat(l.value,"-item-meta-avatar")},[m]),(y||X)&&N])}}});var C9=Symbol("ListContextKey"),gce=["class"],Vce=function(){return{prefixCls:String,extra:We.any,actions:We.array,grid:Object,colStyle:{type:Object,default:void 0}}};const S9=He({compatConfig:{MODE:3},name:"AListItem",inheritAttrs:!1,Meta:x9,props:Vce(),slots:["actions","extra"],setup:function(e,t){var i=t.slots,a=t.attrs,l=un(C9,{grid:Ne(),itemLayout:Ne()}),o=l.itemLayout,r=l.grid,f=Nt("list",e),v=f.prefixCls,b=function(){var y,X=((y=i.default)===null||y===void 0?void 0:y.call(i))||[],m;return X.forEach(function(N){NK(N)&&!Ch(N)&&(m=!0)}),m&&X.length>1},Z=function(){var y,X,m=(y=e.extra)!==null&&y!==void 0?y:(X=i.extra)===null||X===void 0?void 0:X.call(i);return o.value==="vertical"?!!m:!b()};return function(){var p,y,X,m,N,G=a.class,d=jt(a,gce),u=v.value,s=(p=e.extra)!==null&&p!==void 0?p:(y=i.extra)===null||y===void 0?void 0:y.call(i),h=(X=i.default)===null||X===void 0?void 0:X.call(i),c=(m=e.actions)!==null&&m!==void 0?m:ti((N=i.actions)===null||N===void 0?void 0:N.call(i));c=c&&!Array.isArray(c)?[c]:c;var W=c&&c.length>0&&D("ul",{class:"".concat(u,"-item-action"),key:"actions"},[c.map(function(w,C){return D("li",{key:"".concat(u,"-item-action-").concat(C)},[w,C!==c.length-1&&D("em",{class:"".concat(u,"-item-action-split")},null)])})]),M=r.value?"div":"li",I=D(M,P(P({},d),{},{class:_e("".concat(u,"-item"),ce({},"".concat(u,"-item-no-flex"),!Z()),G)}),{default:function(){return[o.value==="vertical"&&s?[D("div",{class:"".concat(u,"-item-main"),key:"content"},[h,W]),D("div",{class:"".concat(u,"-item-extra"),key:"extra"},[s])]:[h,W,wn(s,{key:"extra"})]]}});return r.value?D(dp,{flex:1,style:e.colStyle},{default:function(){return[I]}}):I}}});var Lce=function(){return{bordered:{type:Boolean,default:void 0},dataSource:We.array,extra:We.any,grid:{type:Object,default:void 0},itemLayout:String,loading:{type:[Boolean,Object],default:void 0},loadMore:We.any,pagination:{type:[Boolean,Object],default:void 0},prefixCls:String,rowKey:[String,Number,Function],renderItem:Function,size:String,split:{type:Boolean,default:void 0},header:We.any,footer:We.any,locale:{type:Object}}},ls=He({compatConfig:{MODE:3},name:"AList",Item:S9,props:pn(Lce(),{dataSource:[],bordered:!1,split:!0,loading:!1,pagination:!1}),slots:["extra","loadMore","renderItem","header","footer"],setup:function(e,t){var i,a,l=t.slots;hn(C9,{grid:Ot(e,"grid"),itemLayout:Ot(e,"itemLayout")});var o={current:1,total:0},r=Nt("list",e),f=r.prefixCls,v=r.direction,b=r.renderEmpty,Z=de(function(){return e.pagination&&Yt(e.pagination)==="object"?e.pagination:{}}),p=Ne((i=Z.value.defaultCurrent)!==null&&i!==void 0?i:1),y=Ne((a=Z.value.defaultPageSize)!==null&&a!==void 0?a:10);rt(Z,function(){"current"in Z.value&&(p.value=Z.value.current),"pageSize"in Z.value&&(y.value=Z.value.pageSize)});var X=[],m=function(g){return function(S,L){p.value=S,y.value=L,Z.value[g]&&Z.value[g](S,L)}},N=m("onChange"),G=m("onShowSizeChange"),d=function(g){var S;return D("div",{class:"".concat(f.value,"-empty-text")},[((S=e.locale)===null||S===void 0?void 0:S.emptyText)||g("List")])},u=de(function(){return typeof e.loading=="boolean"?{spinning:e.loading}:e.loading}),s=de(function(){return u.value&&u.value.spinning}),h=de(function(){var R="";switch(e.size){case"large":R="lg";break;case"small":R="sm";break}return R}),c=de(function(){var R;return R={},ce(R,"".concat(f.value),!0),ce(R,"".concat(f.value,"-vertical"),e.itemLayout==="vertical"),ce(R,"".concat(f.value,"-").concat(h.value),h.value),ce(R,"".concat(f.value,"-split"),e.split),ce(R,"".concat(f.value,"-bordered"),e.bordered),ce(R,"".concat(f.value,"-loading"),s.value),ce(R,"".concat(f.value,"-grid"),!!e.grid),ce(R,"".concat(f.value,"-rtl"),v.value==="rtl"),R}),W=de(function(){var R=P(P({},o),{},{total:e.dataSource.length,current:p.value,pageSize:y.value},e.pagination||{}),g=Math.ceil(R.total/R.pageSize);return R.current>g&&(R.current=g),R}),M=de(function(){var R=yt(e.dataSource);return e.pagination&&e.dataSource.length>(W.value.current-1)*W.value.pageSize&&(R=yt(e.dataSource).splice((W.value.current-1)*W.value.pageSize,W.value.pageSize)),R}),I=Au(),w=Sa(function(){for(var R=0;R0){X.length=0;var oe=M.value.map(function(pe,re){return x(pe,re)}),se=oe.map(function(pe,re){return D("div",{key:X[re],style:C.value},[pe])});Q=e.grid?D(F1,{gutter:e.grid.gutter},{default:function(){return[se]}}):D("ul",{class:"".concat(f.value,"-items")},[oe])}else!H.length&&!s.value&&(Q=d(b.value));var he=W.value.position||"bottom";return D("div",{class:F},[(he==="top"||he==="both")&&O,K&&D("div",{class:"".concat(f.value,"-header")},[K]),D(Ws,u.value,{default:function(){return[Q,H]}}),U&&D("div",{class:"".concat(f.value,"-footer")},[U]),J||(he==="bottom"||he==="both")&&O])}}});ls.install=function(n){return n.component(ls.name,ls),n.component(ls.Item.name,ls.Item),n.component(ls.Item.Meta.name,ls.Item.Meta),n};const Rce=ls;function Tce(n){var e=n.selectionStart;return n.value.slice(0,e)}function xce(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",t=Array.isArray(e)?e:[e];return t.reduce(function(i,a){var l=n.lastIndexOf(a);return l>i.location?{location:l,prefix:a}:i},{location:-1,prefix:""})}function Ug(n){return(n||"").toLowerCase()}function Cce(n,e,t){var i=n[0];if(!i||i===t)return n;for(var a=n,l=e.length,o=0;o0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.prefix,a=i===void 0?"@":i,l=t.split,o=l===void 0?" ":l,r=Array.isArray(a)?a:[a];return e.split(o).map(function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",v=null;return r.some(function(b){var Z=f.slice(0,b.length);return Z===b?(v=b,!0):!1}),v!==null?{prefix:v,value:f.slice(v.length)}:null}).filter(function(f){return!!f&&!!f.value})},$ce=function(){return P(P({},k9),{},{loading:{type:Boolean,default:void 0},onFocus:{type:Function},onBlur:{type:Function},onSelect:{type:Function},onChange:{type:Function},onPressenter:{type:Function},"onUpdate:value":{type:Function},notFoundContent:We.any,defaultValue:String,id:String})},OZ=He({compatConfig:{MODE:3},name:"AMentions",inheritAttrs:!1,props:$ce(),slots:["notFoundContent","option"],setup:function(e,t){var i,a,l=t.slots,o=t.emit,r=t.attrs,f=t.expose,v=Nt("mentions",e),b=v.prefixCls,Z=v.renderEmpty,p=v.direction,y=Ne(!1),X=Ne(null),m=Ne((i=(a=e.value)!==null&&a!==void 0?a:e.defaultValue)!==null&&i!==void 0?i:""),N=Hi();rt(function(){return e.value},function(I){m.value=I});var G=function(w){y.value=!0,o("focus",w)},d=function(w){y.value=!1,o("blur",w),N.onFieldBlur()},u=function(){for(var w=arguments.length,C=new Array(w),x=0;x=Date.now()?f():v()},f=function(){if(!l.value){var y=UZ(e.value);l.value=setInterval(function(){o.value.$forceUpdate(),y>Date.now()&&i("change",y-Date.now()),r()},wue)}},v=function(){var y=e.value;if(l.value){clearInterval(l.value),l.value=void 0;var X=UZ(y);X100?100:n}function d0(n){var e=n.success,t=n.successPercent,i=t;return e&&"progress"in e&&(jn(!1,"Progress","`success.progress` is deprecated. Please use `success.percent` instead."),i=e.progress),e&&"percent"in e&&(i=e.percent),i}var _ue=["from","to","direction"],$ue=function(){return P(P({},wp()),{},{prefixCls:String,direction:{type:String}})},que=function(e){var t=[];return Object.keys(e).forEach(function(i){var a=parseFloat(i.replace(/%/g,""));isNaN(a)||t.push({key:a,value:e[i]})}),t=t.sort(function(i,a){return i.key-a.key}),t.map(function(i){var a=i.key,l=i.value;return"".concat(l," ").concat(a,"%")}).join(", ")},ede=function(e,t){var i=e.from,a=i===void 0?pu.blue:i,l=e.to,o=l===void 0?pu.blue:l,r=e.direction,f=r===void 0?t==="rtl"?"to left":"to right":r,v=jt(e,_ue);if(Object.keys(v).length!==0){var b=que(v);return{backgroundImage:"linear-gradient(".concat(f,", ").concat(b,")")}}return{backgroundImage:"linear-gradient(".concat(f,", ").concat(a,", ").concat(o,")")}};const tde=He({compatConfig:{MODE:3},name:"Line",props:$ue(),setup:function(e,t){var i=t.slots,a=de(function(){var v=e.strokeColor,b=e.direction;return v&&typeof v!="string"?ede(v,b):{background:v}}),l=de(function(){return e.trailColor?{backgroundColor:e.trailColor}:void 0}),o=de(function(){var v=e.percent,b=e.strokeWidth,Z=e.strokeLinecap,p=e.size;return P({width:"".concat(pc(v),"%"),height:"".concat(b||(p==="small"?6:8),"px"),borderRadius:Z==="square"?0:""},a.value)}),r=de(function(){return d0(e)}),f=de(function(){var v=e.strokeWidth,b=e.size,Z=e.strokeLinecap,p=e.success;return{width:"".concat(pc(r.value),"%"),height:"".concat(v||(b==="small"?6:8),"px"),borderRadius:Z==="square"?0:"",backgroundColor:p==null?void 0:p.strokeColor}});return function(){var v;return D(ln,null,[D("div",{class:"".concat(e.prefixCls,"-outer")},[D("div",{class:"".concat(e.prefixCls,"-inner"),style:l.value},[D("div",{class:"".concat(e.prefixCls,"-bg"),style:o.value},null),r.value!==void 0?D("div",{class:"".concat(e.prefixCls,"-success-bg"),style:f.value},null):null])]),(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});var nde={percent:0,prefixCls:"vc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1},ide=function(e){var t=Ne(null);return Dl(function(){var i=Date.now(),a=!1;e.value.forEach(function(l){var o=(l==null?void 0:l.$el)||l;if(o){a=!0;var r=o.style;r.transitionDuration=".3s, .3s, .3s, .06s",t.value&&i-t.value<100&&(r.transitionDuration="0s, 0s")}}),a&&(t.value=Date.now())}),e},lde={gapDegree:Number,gapPosition:{type:String},percent:{type:[Array,Number]},prefixCls:String,strokeColor:{type:[Object,String,Array]},strokeLinecap:{type:String},strokeWidth:Number,trailColor:String,trailWidth:Number,transition:String},ade=["prefixCls","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","strokeColor"],Qg=0;function Bg(n){return+n.replace("%","")}function Ag(n){return Array.isArray(n)?n:[n]}function _g(n,e,t,i){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,l=arguments.length>5?arguments[5]:void 0,o=50-i/2,r=0,f=-o,v=0,b=-2*o;switch(l){case"left":r=-o,f=0,v=2*o,b=0;break;case"right":r=o,f=0,v=-2*o,b=0;break;case"bottom":f=o,b=2*o;break}var Z="M 50,50 m ".concat(r,",").concat(f,` a `).concat(o,",").concat(o," 0 1 1 ").concat(v,",").concat(-b,` - a `).concat(o,",").concat(o," 0 1 1 ").concat(-v,",").concat(b),p=Math.PI*2*o,y={stroke:t,strokeDasharray:"".concat(e/100*(p-a),"px ").concat(p,"px"),strokeDashoffset:"-".concat(a/2+n/100*(p-a),"px"),transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s"};return{pathString:Z,pathStyle:y}}const ide=He({compatConfig:{MODE:3},name:"VCCircle",props:pn(tde,que),setup:function(e){Hg+=1;var t=Ne(Hg),i=de(function(){return Qg(e.percent)}),a=de(function(){return Qg(e.strokeColor)}),l=V1(),o=ft(l,2),r=o[0],f=o[1];ede(f);var v=function(){var Z=e.prefixCls,p=e.strokeWidth,y=e.strokeLinecap,X=e.gapDegree,m=e.gapPosition,N=0;return i.value.map(function(G,d){var u=a.value[d]||a.value[a.value.length-1],s=Object.prototype.toString.call(u)==="[object Object]"?"url(#".concat(Z,"-gradient-").concat(t.value,")"):"",h=Bg(N,G,u,p,X,m),c=h.pathString,W=h.pathStyle;N+=G;var M={key:d,d:c,stroke:s,"stroke-linecap":y,"stroke-width":p,opacity:G===0?0:1,"fill-opacity":"0",class:"".concat(Z,"-circle-path"),style:W};return D("path",P({ref:r(d)},M),null)})};return function(){var b=e.prefixCls,Z=e.strokeWidth,p=e.trailWidth,y=e.gapDegree,X=e.gapPosition,m=e.trailColor,N=e.strokeLinecap;e.strokeColor;var G=jt(e,nde),d=Bg(0,100,m,Z,y,X),u=d.pathString,s=d.pathStyle;delete G.percent;var h=a.value.find(function(W){return Object.prototype.toString.call(W)==="[object Object]"}),c={d:u,stroke:m,"stroke-linecap":N,"stroke-width":p||Z,"fill-opacity":"0",class:"".concat(b,"-circle-trail"),style:s};return D("svg",P({class:"".concat(b,"-circle"),viewBox:"0 0 100 100"},G),[h&&D("defs",null,[D("linearGradient",{id:"".concat(b,"-gradient-").concat(t.value),x1:"100%",y1:"0%",x2:"0%",y2:"0%"},[Object.keys(h).sort(function(W,M){return Pg(W)-Pg(M)}).map(function(W,M){return D("stop",{key:M,offset:W,"stop-color":h[W]},null)})])]),D("path",c,null),v().reverse()])}}});function lde(n){var e=n.percent,t=n.success,i=n.successPercent,a=pc(u0({success:t,successPercent:i}));return[a,pc(pc(e)-a)]}function ade(n){var e=n.success,t=e===void 0?{}:e,i=n.strokeColor,a=t.strokeColor;return[a||mu.green,i||null]}const rde=He({compatConfig:{MODE:3},name:"Circle",inheritAttrs:!1,props:Mp(),setup:function(e,t){var i=t.slots,a=de(function(){if(e.gapDegree||e.gapDegree===0)return e.gapDegree;if(e.type==="dashboard")return 75}),l=de(function(){var p=e.width||120;return{width:typeof p=="number"?"".concat(p,"px"):p,height:typeof p=="number"?"".concat(p,"px"):p,fontSize:"".concat(p*.15+6,"px")}}),o=de(function(){return e.strokeWidth||6}),r=de(function(){return e.gapPosition||e.type==="dashboard"&&"bottom"||"top"}),f=de(function(){return lde(e)}),v=de(function(){return Object.prototype.toString.call(e.strokeColor)==="[object Object]"}),b=de(function(){return ade({success:e.success,strokeColor:e.strokeColor})}),Z=de(function(){var p;return p={},ce(p,"".concat(e.prefixCls,"-inner"),!0),ce(p,"".concat(e.prefixCls,"-circle-gradient"),v.value),p});return function(){var p;return D("div",{class:Z.value,style:l.value},[D(ide,{percent:f.value,strokeWidth:o.value,trailWidth:o.value,strokeColor:b.value,strokeLinecap:e.strokeLinecap,trailColor:e.trailColor,prefixCls:e.prefixCls,gapDegree:a.value,gapPosition:r.value},null),(p=i.default)===null||p===void 0?void 0:p.call(i)])}}});var ode=function(){return P(P({},Mp()),{},{steps:Number,size:{type:String},strokeColor:String,trailColor:String})};const sde=He({compatConfig:{MODE:3},name:"Steps",props:ode(),setup:function(e,t){var i=t.slots,a=de(function(){return Math.round(e.steps*((e.percent||0)/100))}),l=de(function(){return e.size==="small"?2:14}),o=de(function(){for(var r=e.steps,f=e.strokeWidth,v=f===void 0?8:f,b=e.strokeColor,Z=e.trailColor,p=e.prefixCls,y=[],X=0;X=100?"success":Z||"normal"}),b=function(){var p=e.showInfo,y=e.format,X=e.type,m=e.percent,N=e.title,G=u0(e);if(!p)return null;var d,u=y||(i==null?void 0:i.format)||function(h){return"".concat(h,"%")},s=X==="line";return y||i!=null&&i.format||v.value!=="exception"&&v.value!=="success"?d=u(pc(m),pc(G)):v.value==="exception"?d=D(s?So:Ar,null,null):v.value==="success"&&(d=D(s?Sh:_0,null,null)),D("span",{class:"".concat(l.value,"-text"),title:N===void 0&&typeof d=="string"?d:void 0},[d])};return function(){var Z=e.type,p=e.steps,y=e.strokeColor,X=e.title,m=b(),N;Z==="line"?N=p?D(sde,P(P({},e),{},{strokeColor:typeof y=="string"?y:void 0,prefixCls:l.value,steps:p}),{default:function(){return[m]}}):D($ue,P(P({},e),{},{prefixCls:l.value}),{default:function(){return[m]}}):(Z==="circle"||Z==="dashboard")&&(N=D(rde,P(P({},e),{},{prefixCls:l.value}),{default:function(){return[m]}}));var G=P(P({},r.value),{},ce({},"".concat(l.value,"-status-").concat(v.value),!0));return D("div",{class:G,title:X},[N])}}}),vX=wi(cde);function ude(n){var e=n.pageXOffset,t="scrollLeft";if(typeof e!="number"){var i=n.document;e=i.documentElement[t],typeof e!="number"&&(e=i.body[t])}return e}function dde(n){var e,t,i=n.ownerDocument,a=i.body,l=i&&i.documentElement,o=n.getBoundingClientRect();return e=o.left,t=o.top,e-=l.clientLeft||a.clientLeft||0,t-=l.clientTop||a.clientTop||0,{left:e,top:t}}function hde(n){var e=dde(n),t=n.ownerDocument,i=t.defaultView||t.parentWindow;return e.left+=ude(i),e.left}var fde={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const bde=fde;function Ag(n){for(var e=1;e=X&&Zp?"true":"false","aria-posinset":p+1,"aria-setsize":y,tabindex:v?-1:0},[D("div",{class:"".concat(b,"-first")},[m]),D("div",{class:"".concat(b,"-second")},[m])])]);return Z&&(N=Z(N,e)),N}}});var vde=function(){return{prefixCls:String,count:Number,value:Number,allowHalf:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},tooltips:Array,disabled:{type:Boolean,default:void 0},character:We.any,autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),direction:String,id:String,onChange:Function,onHoverChange:Function,"onUpdate:value":Function,onFocus:Function,onBlur:Function,onKeydown:Function}},Wde=He({compatConfig:{MODE:3},name:"ARate",inheritAttrs:!1,props:pn(vde(),{value:0,count:5,allowHalf:!1,allowClear:!0,tabindex:0,direction:"ltr"}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.emit,o=t.expose,r=Nt("rate",e),f=r.prefixCls,v=r.direction,b=Hi(),Z=Ne(),p=V1(),y=ft(p,2),X=y[0],m=y[1],N=zn({value:e.value,focused:!1,cleanedValue:null,hoverValue:void 0});rt(function(){return e.value},function(){N.value=e.value});var G=function(S){return ds(m.value.get(S))},d=function(S,L){var V=v.value==="rtl",Y=S+1;if(e.allowHalf){var T=G(S),J=hde(T),U=T.clientWidth;(V&&L-J>U/2||!V&&L-J0&&!T||L===bt.RIGHT&&N.value>0&&T?(Y?N.value-=.5:N.value-=1,u(N.value),S.preventDefault()):L===bt.LEFT&&N.value0:!0,"Slider","`Slider[step]` should be a positive number in order to make Slider[dots] work.");var r=Object.keys(t).map(parseFloat).sort(function(v,b){return v-b});if(i&&a)for(var f=l;f<=o;f+=a)r.indexOf(f)===-1&&r.push(f);return r},H9=function(e,t){var i=t.attrs,a=i.prefixCls,l=i.vertical,o=i.reverse,r=i.marks,f=i.dots,v=i.step,b=i.included,Z=i.lowerBound,p=i.upperBound,y=i.max,X=i.min,m=i.dotStyle,N=i.activeDotStyle,G=y-X,d=Kde(l,r,f,v,X,y).map(function(u){var s,h="".concat(Math.abs(u-X)/G*100,"%"),c=!b&&u===p||b&&u<=p&&u>=Z,W=l?P(P({},m),{},ce({},o?"top":"bottom",h)):P(P({},m),{},ce({},o?"right":"left",h));c&&(W=P(P({},W),N));var M=_e((s={},ce(s,"".concat(a,"-dot"),!0),ce(s,"".concat(a,"-dot-active"),c),ce(s,"".concat(a,"-dot-reverse"),o),s));return D("span",{class:M,style:W,key:u},null)});return D("div",{class:"".concat(a,"-step")},[d])};H9.inheritAttrs=!1;const Hde=H9;var P9=function(e,t){var i=t.attrs,a=t.slots,l=i.class,o=i.vertical,r=i.reverse,f=i.marks,v=i.included,b=i.upperBound,Z=i.lowerBound,p=i.max,y=i.min,X=i.onClickLabel,m=Object.keys(f),N=a.mark,G=p-y,d=m.map(parseFloat).sort(function(u,s){return u-s}).map(function(u){var s,h=typeof f[u]=="function"?f[u]():f[u],c=Yt(h)==="object"&&!Si(h),W=c?h.label:h;if(!W&&W!==0)return null;N&&(W=N({point:u,label:W}));var M=!v&&u===b||v&&u<=b&&u>=Z,I=_e((s={},ce(s,"".concat(l,"-text"),!0),ce(s,"".concat(l,"-text-active"),M),s)),w=ce({marginBottom:"-50%"},r?"top":"bottom","".concat((u-y)/G*100,"%")),C=ce({transform:"translateX(".concat(r?"50%":"-50%",")"),msTransform:"translateX(".concat(r?"50%":"-50%",")")},r?"right":"left","".concat((u-y)/G*100,"%")),x=o?w:C,R=c?P(P({},x),h.style):x,g=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(S){return X(S,u)});return D("span",P({class:I,style:R,key:u,onMousedown:function(L){return X(L,u)}},g),[W])});return D("div",{class:l},[d])};P9.inheritAttrs=!1;const Pde=P9,Q9=He({compatConfig:{MODE:3},name:"Handle",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o=Ne(!1),r=Ne(),f=function(){document.activeElement===r.value&&(o.value=!0)},v=function(d){o.value=!1,a("blur",d)},b=function(){o.value=!1},Z=function(){var d;(d=r.value)===null||d===void 0||d.focus()},p=function(){var d;(d=r.value)===null||d===void 0||d.blur()},y=function(){o.value=!0,Z()},X=function(d){d.preventDefault(),Z(),a("mousedown",d)};l({focus:Z,blur:p,clickFocus:y,ref:r});var m=null;Kt(function(){m=hi(document,"mouseup",f)}),fn(function(){var G;(G=m)===null||G===void 0||G.remove()});var N=de(function(){var G,d,u=e.vertical,s=e.offset,h=e.reverse;return u?(G={},ce(G,h?"top":"bottom","".concat(s,"%")),ce(G,h?"bottom":"top","auto"),ce(G,"transform",h?null:"translateY(+50%)"),G):(d={},ce(d,h?"right":"left","".concat(s,"%")),ce(d,h?"left":"right","auto"),ce(d,"transform","translateX(".concat(h?"+":"-","50%)")),d)});return function(){var G=e.prefixCls,d=e.disabled,u=e.min,s=e.max,h=e.value,c=e.tabindex,W=e.ariaLabel,M=e.ariaLabelledBy,I=e.ariaValueTextFormatter,w=e.onMouseenter,C=e.onMouseleave,x=_e(i.class,ce({},"".concat(G,"-handle-click-focused"),o.value)),R={"aria-valuemin":u,"aria-valuemax":s,"aria-valuenow":h,"aria-disabled":!!d},g=[i.style,N.value],S=c||0;(d||c===null)&&(S=null);var L;I&&(L=I(h));var V=P(P(P({},i),{},{role:"slider",tabindex:S},R),{},{class:x,onBlur:v,onKeydown:b,onMousedown:X,onMouseenter:w,onMouseleave:C,ref:r,style:g});return D("div",P(P({},V),{},{"aria-label":W,"aria-labelledby":M,"aria-valuetext":L}),null)}}});function OZ(n,e){try{return Object.keys(e).some(function(t){return n.target===e[t].ref})}catch{return!1}}function B9(n,e){var t=e.min,i=e.max;return ni}function $g(n){return n.touches.length>1||n.type.toLowerCase()==="touchend"&&n.touches.length>0}function qg(n,e){var t=e.marks,i=e.step,a=e.min,l=e.max,o=Object.keys(t).map(parseFloat);if(i!==null){var r=Math.pow(10,A9(i)),f=Math.floor((l*r-a*r)/(i*r)),v=Math.min((n-a)/i,f),b=Math.round(v)*i+a;o.push(b)}var Z=o.map(function(p){return Math.abs(n-p)});return o[Z.indexOf(Math.min.apply(Math,yt(Z)))]}function A9(n){var e=n.toString(),t=0;return e.indexOf(".")>=0&&(t=e.length-e.indexOf(".")-1),t}function eV(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.clientY:e.pageX)/t}function tV(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.touches[0].clientY:e.touches[0].pageX)/t}function nV(n,e){var t=e.getBoundingClientRect();return n?t.top+t.height*.5:window.pageXOffset+t.left+t.width*.5}function YX(n,e){var t=e.max,i=e.min;return n<=i?i:n>=t?t:n}function _9(n,e){var t=e.step,i=isFinite(qg(n,e))?qg(n,e):0;return t===null?i:parseFloat(i.toFixed(A9(t)))}function zu(n){n.stopPropagation(),n.preventDefault()}function Qde(n,e,t){var i={increase:function(r,f){return r+f},decrease:function(r,f){return r-f}},a=i[n](Object.keys(t.marks).indexOf(JSON.stringify(e)),1),l=Object.keys(t.marks)[a];return t.step?i[n](e,t.step):Object.keys(t.marks).length&&t.marks[l]?t.marks[l]:e}function $9(n,e,t){var i="increase",a="decrease",l=i;switch(n.keyCode){case bt.UP:l=e&&t?a:i;break;case bt.RIGHT:l=!e&&t?a:i;break;case bt.DOWN:l=e&&t?i:a;break;case bt.LEFT:l=!e&&t?i:a;break;case bt.END:return function(o,r){return r.max};case bt.HOME:return function(o,r){return r.min};case bt.PAGE_UP:return function(o,r){return o+r.step*2};case bt.PAGE_DOWN:return function(o,r){return o-r.step*2};default:return}return function(o,r){return Qde(l,o,r)}}var Bde=["index","directives","className","style"];function Ps(){}function q9(n){var e={id:String,min:Number,max:Number,step:Number,marks:We.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:We.object,maximumTrackStyle:We.object,handleStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),trackStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),railStyle:We.object,dotStyle:We.object,activeDotStyle:We.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return He({compatConfig:{MODE:3},name:"CreateSlider",mixins:[Lc,n],inheritAttrs:!1,slots:["mark"],props:pn(e,{prefixCls:"rc-slider",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:["change","blur","focus"],data:function(){var i=this.step,a=this.max,l=this.min,o=isFinite(a-l)?(a-l)%i===0:!0;return Ci(i&&Math.floor(i)===i?o:!0,"Slider[max] - Slider[min] (".concat(a-l,") should be a multiple of Slider[step] (").concat(i,")")),this.handlesRefs={},{}},mounted:function(){var i=this;this.$nextTick(function(){i.document=i.sliderRef&&i.sliderRef.ownerDocument;var a=i.autofocus,l=i.disabled;a&&!l&&i.focus()})},beforeUnmount:function(){var i=this;this.$nextTick(function(){i.removeDocumentEvents()})},methods:{defaultHandle:function(i){var a=i.index;i.directives;var l=i.className,o=i.style,r=jt(i,Bde);if(delete r.dragging,r.value===null)return null;var f=P(P({},r),{},{class:l,style:o,key:a});return D(Q9,f,null)},onDown:function(i,a){var l=a,o=this.$props,r=o.draggableTrack,f=o.vertical,v=this.$data.bounds,b=r&&this.positionGetValue?this.positionGetValue(l)||[]:[],Z=OZ(i,this.handlesRefs);if(this.dragTrack=r&&v.length>=2&&!Z&&!b.map(function(y,X){var m=X?!0:y>=v[X];return X===b.length-1?y<=v[X]:m}).some(function(y){return!y}),this.dragTrack)this.dragOffset=l,this.startBounds=yt(v);else{if(!Z)this.dragOffset=0;else{var p=nV(f,i.target);this.dragOffset=l-p,l=p}this.onStart(l)}},onMouseDown:function(i){if(i.button===0){this.removeDocumentEvents();var a=this.$props.vertical,l=eV(a,i);this.onDown(i,l),this.addDocumentMouseEvents()}},onTouchStart:function(i){if(!$g(i)){var a=this.vertical,l=tV(a,i);this.onDown(i,l),this.addDocumentTouchEvents(),zu(i)}},onFocus:function(i){var a=this.vertical;if(OZ(i,this.handlesRefs)&&!this.dragTrack){var l=nV(a,i.target);this.dragOffset=0,this.onStart(l),zu(i),this.$emit("focus",i)}},onBlur:function(i){this.dragTrack||this.onEnd(),this.$emit("blur",i)},onMouseUp:function(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove:function(i){if(!this.sliderRef){this.onEnd();return}var a=eV(this.vertical,i);this.onMove(i,a-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove:function(i){if($g(i)||!this.sliderRef){this.onEnd();return}var a=tV(this.vertical,i);this.onMove(i,a-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown:function(i){this.sliderRef&&OZ(i,this.handlesRefs)&&this.onKeyboard(i)},onClickMarkLabel:function(i,a){var l=this;i.stopPropagation(),this.onChange({sValue:a}),this.setState({sValue:a},function(){return l.onEnd(!0)})},getSliderStart:function(){var i=this.sliderRef,a=this.vertical,l=this.reverse,o=i.getBoundingClientRect();return a?l?o.bottom:o.top:window.pageXOffset+(l?o.right:o.left)},getSliderLength:function(){var i=this.sliderRef;if(!i)return 0;var a=i.getBoundingClientRect();return this.vertical?a.height:a.width},addDocumentTouchEvents:function(){this.onTouchMoveListener=hi(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=hi(this.document,"touchend",this.onEnd)},addDocumentMouseEvents:function(){this.onMouseMoveListener=hi(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=hi(this.document,"mouseup",this.onEnd)},removeDocumentEvents:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus:function(){var i;this.$props.disabled||(i=this.handlesRefs[0])===null||i===void 0||i.focus()},blur:function(){var i=this;this.$props.disabled||Object.keys(this.handlesRefs).forEach(function(a){var l,o;(l=i.handlesRefs[a])===null||l===void 0||(o=l.blur)===null||o===void 0||o.call(l)})},calcValue:function(i){var a=this.vertical,l=this.min,o=this.max,r=Math.abs(Math.max(i,0)/this.getSliderLength()),f=a?(1-r)*(o-l)+l:r*(o-l)+l;return f},calcValueByPos:function(i){var a=this.reverse?-1:1,l=a*(i-this.getSliderStart()),o=this.trimAlignValue(this.calcValue(l));return o},calcOffset:function(i){var a=this.min,l=this.max,o=(i-a)/(l-a);return Math.max(0,o*100)},saveSlider:function(i){this.sliderRef=i},saveHandle:function(i,a){this.handlesRefs[i]=a}},render:function(){var i,a=this.prefixCls,l=this.marks,o=this.dots,r=this.step,f=this.included,v=this.disabled,b=this.vertical,Z=this.reverse,p=this.min,y=this.max,X=this.maximumTrackStyle,m=this.railStyle,N=this.dotStyle,G=this.activeDotStyle,d=this.id,u=this.$attrs,s=u.class,h=u.style,c=this.renderSlider(),W=c.tracks,M=c.handles,I=_e(a,s,(i={},ce(i,"".concat(a,"-with-marks"),Object.keys(l).length),ce(i,"".concat(a,"-disabled"),v),ce(i,"".concat(a,"-vertical"),b),i)),w={vertical:b,marks:l,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,reverse:Z,class:"".concat(a,"-mark"),onClickLabel:v?Ps:this.onClickMarkLabel},C=ce({},Ui?"onTouchstartPassive":"onTouchstart",v?Ps:this.onTouchStart);return D("div",P(P({id:d,ref:this.saveSlider,tabindex:"-1",class:I},C),{},{onMousedown:v?Ps:this.onMouseDown,onMouseup:v?Ps:this.onMouseUp,onKeydown:v?Ps:this.onKeyDown,onFocus:v?Ps:this.onFocus,onBlur:v?Ps:this.onBlur,style:h}),[D("div",{class:"".concat(a,"-rail"),style:P(P({},X),m)},null),W,D(Hde,{prefixCls:a,vertical:b,reverse:Z,marks:l,dots:o,step:r,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,dotStyle:N,activeDotStyle:G},null),M,D(Pde,w,{mark:this.$slots.mark}),Th(this)])}})}var Ade=He({compatConfig:{MODE:3},name:"Slider",mixins:[Lc],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:["beforeChange","afterChange","change"],data:function(){var e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler:function(e){this.setChangeValue(e)},deep:!0},min:function(){var e=this.sValue;this.setChangeValue(e)},max:function(){var e=this.sValue;this.setChangeValue(e)}},methods:{setChangeValue:function(e){var t=e!==void 0?e:this.sValue,i=this.trimAlignValue(t,this.$props);i!==this.sValue&&(this.setState({sValue:i}),B9(t,this.$props)&&this.$emit("change",i))},onChange:function(e){var t=!Mo(this,"value"),i=e.sValue>this.max?P(P({},e),{},{sValue:this.max}):e;t&&this.setState(i);var a=i.sValue;this.$emit("change",a)},onStart:function(e){this.setState({dragging:!0});var t=this.sValue;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e,i!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:i}))},onEnd:function(e){var t=this.dragging;this.removeDocumentEvents(),(t||e)&&this.$emit("afterChange",this.sValue),this.setState({dragging:!1})},onMove:function(e,t){zu(e);var i=this.sValue,a=this.calcValueByPos(t);a!==i&&this.onChange({sValue:a})},onKeyboard:function(e){var t=this.$props,i=t.reverse,a=t.vertical,l=$9(e,a,i);if(l){zu(e);var o=this.sValue,r=l(o,this.$props),f=this.trimAlignValue(r);if(f===o)return;this.onChange({sValue:f}),this.$emit("afterChange",f),this.onEnd()}},getLowerBound:function(){var e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound:function(){return this.$data.sValue1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;var i=P(P({},this.$props),t),a=YX(e,i);return _9(a,i)},getTrack:function(e){var t=e.prefixCls,i=e.reverse,a=e.vertical,l=e.included,o=e.minimumTrackStyle,r=e.mergedTrackStyle,f=e.length,v=e.offset;return D(K9,{class:"".concat(t,"-track"),vertical:a,included:l,offset:v,reverse:i,length:f,style:P(P({},o),r)},null)},renderSlider:function(){var e=this,t=this.prefixCls,i=this.vertical,a=this.included,l=this.disabled,o=this.minimumTrackStyle,r=this.trackStyle,f=this.handleStyle,v=this.tabindex,b=this.ariaLabelForHandle,Z=this.ariaLabelledByForHandle,p=this.ariaValueTextFormatterForHandle,y=this.min,X=this.max,m=this.startPoint,N=this.reverse,G=this.handle,d=this.defaultHandle,u=G||d,s=this.sValue,h=this.dragging,c=this.calcOffset(s),W=u({class:"".concat(t,"-handle"),prefixCls:t,vertical:i,offset:c,value:s,dragging:h,disabled:l,min:y,max:X,reverse:N,index:0,tabindex:v,ariaLabel:b,ariaLabelledBy:Z,ariaValueTextFormatter:p,style:f[0]||f,ref:function(C){return e.saveHandle(0,C)},onFocus:this.onFocus,onBlur:this.onBlur}),M=m!==void 0?this.calcOffset(m):0,I=r[0]||r;return{tracks:this.getTrack({prefixCls:t,reverse:N,vertical:i,included:a,offset:M,minimumTrackStyle:o,mergedTrackStyle:I,length:c-M}),handles:W}}}});const _de=q9(Ade);var Yd=function(e){var t=e.value,i=e.handle,a=e.bounds,l=e.props,o=l.allowCross,r=l.pushable,f=Number(r),v=YX(t,l),b=v;return!o&&i!=null&&a!==void 0&&(i>0&&v<=a[i-1]+f&&(b=a[i-1]+f),i=a[i+1]-f&&(b=a[i+1]-f)),_9(b,l)},$de={defaultValue:We.arrayOf(We.number),value:We.arrayOf(We.number),count:Number,pushable:bT(We.oneOfType([We.looseBool,We.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:We.arrayOf(We.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},qde=He({compatConfig:{MODE:3},name:"Range",mixins:[Lc],inheritAttrs:!1,props:pn($de,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:["beforeChange","afterChange","change"],displayName:"Range",data:function(){var e=this,t=this.count,i=this.min,a=this.max,l=Array.apply(void 0,yt(Array(t+1))).map(function(){return i}),o=Mo(this,"defaultValue")?this.defaultValue:l,r=this.value;r===void 0&&(r=o);var f=r.map(function(b,Z){return Yd({value:b,handle:Z,props:e.$props})}),v=f[0]===a?0:f.length-1;return{sHandle:null,recent:v,bounds:f}},watch:{value:{handler:function(e){var t=this.bounds;this.setChangeValue(e||t)},deep:!0},min:function(){var e=this.value;this.setChangeValue(e||this.bounds)},max:function(){var e=this.value;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue:function(e){var t=this,i=this.bounds,a=e.map(function(o,r){return Yd({value:o,handle:r,bounds:i,props:t.$props})});if(i.length===a.length){if(a.every(function(o,r){return o===i[r]}))return null}else a=e.map(function(o,r){return Yd({value:o,handle:r,props:t.$props})});if(this.setState({bounds:a}),e.some(function(o){return B9(o,t.$props)})){var l=e.map(function(o){return YX(o,t.$props)});this.$emit("change",l)}},onChange:function(e){var t=!Mo(this,"value");if(t)this.setState(e);else{var i={};["sHandle","recent"].forEach(function(o){e[o]!==void 0&&(i[o]=e[o])}),Object.keys(i).length&&this.setState(i)}var a=P(P({},this.$data),e),l=a.bounds;this.$emit("change",l)},positionGetValue:function(e){var t=this.getValue(),i=this.calcValueByPos(e),a=this.getClosestBound(i),l=this.getBoundNeedMoving(i,a),o=t[l];if(i===o)return null;var r=yt(t);return r[l]=i,r},onStart:function(e){var t=this.bounds;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e;var a=this.getClosestBound(i);this.prevMovedHandleIndex=this.getBoundNeedMoving(i,a),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});var l=t[this.prevMovedHandleIndex];if(i!==l){var o=yt(t);o[this.prevMovedHandleIndex]=i,this.onChange({bounds:o})}},onEnd:function(e){var t=this.sHandle;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit("afterChange",this.bounds),this.setState({sHandle:null})},onMove:function(e,t,i,a){zu(e);var l=this.$data,o=this.$props,r=o.max||100,f=o.min||0;if(i){var v=o.vertical?-t:t;v=o.reverse?-v:v;var b=r-Math.max.apply(Math,yt(a)),Z=f-Math.min.apply(Math,yt(a)),p=Math.min(Math.max(v/(this.getSliderLength()/100),Z),b),y=a.map(function(d){return Math.floor(Math.max(Math.min(d+p,r),f))});l.bounds.map(function(d,u){return d===y[u]}).some(function(d){return!d})&&this.onChange({bounds:y});return}var X=this.bounds,m=this.sHandle,N=this.calcValueByPos(t),G=X[m];N!==G&&this.moveTo(N)},onKeyboard:function(e){var t=this.$props,i=t.reverse,a=t.vertical,l=$9(e,a,i);if(l){zu(e);var o=this.bounds,r=this.sHandle,f=o[r===null?this.recent:r],v=l(f,this.$props),b=Yd({value:v,handle:r,bounds:o,props:this.$props});if(b===f)return;var Z=!0;this.moveTo(b,Z)}},getClosestBound:function(e){for(var t=this.bounds,i=0,a=1;a=t[a]&&(i=a);return Math.abs(t[i+1]-e)=a.length||o<0)return!1;var r=t+i,f=a[o],v=this.pushable,b=Number(v),Z=i*(e[r]-f);return this.pushHandle(e,r,i,b-Z)?(e[t]=f,!0):!1},trimAlignValue:function(e){var t=this.sHandle,i=this.bounds;return Yd({value:e,handle:t,bounds:i,props:this.$props})},ensureValueNotConflict:function(e,t,i){var a=i.allowCross,l=i.pushable,o=this.$data||{},r=o.bounds;if(e=e===void 0?o.sHandle:e,l=Number(l),!a&&e!=null&&r!==void 0){if(e>0&&t<=r[e-1]+l)return r[e-1]+l;if(e=r[e+1]-l)return r[e+1]-l}return t},getTrack:function(e){var t=e.bounds,i=e.prefixCls,a=e.reverse,l=e.vertical,o=e.included,r=e.offsets,f=e.trackStyle;return t.slice(0,-1).map(function(v,b){var Z,p=b+1,y=_e((Z={},ce(Z,"".concat(i,"-track"),!0),ce(Z,"".concat(i,"-track-").concat(p),!0),Z));return D(K9,{class:y,vertical:l,reverse:a,included:o,offset:r[p-1],length:r[p]-r[p-1],style:f[b],key:p},null)})},renderSlider:function(){var e=this,t=this.sHandle,i=this.bounds,a=this.prefixCls,l=this.vertical,o=this.included,r=this.disabled,f=this.min,v=this.max,b=this.reverse,Z=this.handle,p=this.defaultHandle,y=this.trackStyle,X=this.handleStyle,m=this.tabindex,N=this.ariaLabelGroupForHandles,G=this.ariaLabelledByGroupForHandles,d=this.ariaValueTextFormatterGroupForHandles,u=Z||p,s=i.map(function(W){return e.calcOffset(W)}),h="".concat(a,"-handle"),c=i.map(function(W,M){var I,w=m[M]||0;(r||m[M]===null)&&(w=null);var C=t===M;return u({class:_e((I={},ce(I,h,!0),ce(I,"".concat(h,"-").concat(M+1),!0),ce(I,"".concat(h,"-dragging"),C),I)),prefixCls:a,vertical:l,dragging:C,offset:s[M],value:W,index:M,tabindex:w,min:f,max:v,reverse:b,disabled:r,style:X[M],ref:function(R){return e.saveHandle(M,R)},onFocus:e.onFocus,onBlur:e.onBlur,ariaLabel:N[M],ariaLabelledBy:G[M],ariaValueTextFormatter:d[M]})});return{tracks:this.getTrack({bounds:i,prefixCls:a,reverse:b,vertical:l,included:o,offsets:s,trackStyle:y}),handles:c}}}});const ehe=q9(qde),the=He({compatConfig:{MODE:3},name:"SliderTooltip",inheritAttrs:!1,props:Jx(),setup:function(e,t){var i=t.attrs,a=t.slots,l=Ne(null),o=Ne(null);function r(){At.cancel(o.value),o.value=null}function f(){o.value=At(function(){var b;(b=l.value)===null||b===void 0||b.forcePopupAlign(),o.value=null})}var v=function(){r(),e.visible&&f()};return rt([function(){return e.visible},function(){return e.title}],function(){v()},{flush:"post",immediate:!0}),L0(function(){v()}),fn(function(){r()}),function(){return D(Xr,P(P({ref:l},e),i),a)}}});var nhe=["value","dragging","index"],ihe=["tooltipPrefixCls","range","id"],lhe=function(e){return typeof e=="number"?e.toString():""},ahe=function(){return{id:String,prefixCls:String,tooltipPrefixCls:String,range:{type:[Boolean,Object],default:void 0},reverse:{type:Boolean,default:void 0},min:Number,max:Number,step:{type:[Number,Object]},marks:{type:Object},dots:{type:Boolean,default:void 0},value:{type:[Number,Array]},defaultValue:{type:[Number,Array]},included:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},tipFormatter:{type:[Function,Object],default:function(){return lhe}},tooltipVisible:{type:Boolean,default:void 0},tooltipPlacement:{type:String},getTooltipPopupContainer:{type:Function},autofocus:{type:Boolean,default:void 0},handleStyle:{type:[Object,Array]},trackStyle:{type:[Object,Array]},onChange:{type:Function},onAfterChange:{type:Function},onFocus:{type:Function},onBlur:{type:Function},"onUpdate:value":{type:Function}}},rhe=He({compatConfig:{MODE:3},name:"ASlider",inheritAttrs:!1,props:ahe(),slots:["mark"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=t.expose,r=Nt("slider",e),f=r.prefixCls,v=r.rootPrefixCls,b=r.direction,Z=r.getPopupContainer,p=r.configProvider,y=Hi(),X=Ne(),m=Ne({}),N=function(M,I){m.value[M]=I},G=de(function(){return e.tooltipPlacement?e.tooltipPlacement:e.vertical?b.value==="rtl"?"left":"right":"top"}),d=function(){var M;(M=X.value)===null||M===void 0||M.focus()},u=function(){var M;(M=X.value)===null||M===void 0||M.blur()},s=function(M){l("update:value",M),l("change",M),y.onFieldChange()},h=function(M){l("blur",M)};o({focus:d,blur:u});var c=function(M){var I=M.tooltipPrefixCls,w=M.info,C=w.value,x=w.dragging,R=w.index,g=jt(w,nhe),S=e.tipFormatter,L=e.tooltipVisible,V=e.getTooltipPopupContainer,Y=S?m.value[R]||x:!1,T=L||L===void 0&&Y;return D(the,{prefixCls:I,title:S?S(C):"",visible:T,placement:G.value,transitionName:"".concat(v.value,"-zoom-down"),key:R,overlayClassName:"".concat(f.value,"-tooltip"),getPopupContainer:V||Z.value},{default:function(){return[D(Q9,P(P({},g),{},{value:C,onMouseenter:function(){return N(R,!0)},onMouseleave:function(){return N(R,!1)}}),null)]}})};return function(){var W=e.tooltipPrefixCls,M=e.range,I=e.id,w=I===void 0?y.id.value:I,C=jt(e,ihe),x=p.getPrefixCls("tooltip",W),R=_e(i.class,ce({},"".concat(f.value,"-rtl"),b.value==="rtl"));b.value==="rtl"&&!C.vertical&&(C.reverse=!C.reverse);var g;return Yt(M)==="object"&&(g=M.draggableTrack),M?D(ehe,P(P({},C),{},{step:C.step,draggableTrack:g,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:a.mark}):D(_de,P(P({},C),{},{id:w,step:C.step,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:a.mark})}}});const ohe=wi(rhe);var she={small:8,middle:16,large:24},che=function(){return{prefixCls:String,size:{type:[String,Number,Array]},direction:We.oneOf(pi("horizontal","vertical")).def("horizontal"),align:We.oneOf(pi("start","end","center","baseline")),wrap:{type:Boolean,default:void 0}}};function uhe(n){return typeof n=="string"?she[n]:n||0}var dhe=He({compatConfig:{MODE:3},name:"ASpace",props:che(),slots:["split"],setup:function(e,t){var i=t.slots,a=Nt("space",e),l=a.prefixCls,o=a.space,r=a.direction,f=cC(),v=de(function(){var N,G,d;return(N=(G=e.size)!==null&&G!==void 0?G:(d=o.value)===null||d===void 0?void 0:d.size)!==null&&N!==void 0?N:"small"}),b=Ne(),Z=Ne();rt(v,function(){var N=(Array.isArray(v.value)?v.value:[v.value,v.value]).map(function(d){return uhe(d)}),G=ft(N,2);b.value=G[0],Z.value=G[1]},{immediate:!0});var p=de(function(){return e.align===void 0&&e.direction==="horizontal"?"center":e.align}),y=de(function(){var N;return _e(l.value,"".concat(l.value,"-").concat(e.direction),(N={},ce(N,"".concat(l.value,"-rtl"),r.value==="rtl"),ce(N,"".concat(l.value,"-align-").concat(p.value),p.value),N))}),X=de(function(){return r.value==="rtl"?"marginLeft":"marginRight"}),m=de(function(){var N={};return f.value&&(N.columnGap="".concat(b.value,"px"),N.rowGap="".concat(Z.value,"px")),P(P({},N),e.wrap&&{flexWrap:"wrap",marginBottom:"".concat(-Z.value,"px")})});return function(){var N,G,d=e.wrap,u=e.direction,s=u===void 0?"horizontal":u,h=Ri((N=i.default)===null||N===void 0?void 0:N.call(i)),c=h.length;if(c===0)return null;var W=(G=i.split)===null||G===void 0?void 0:G.call(i),M="".concat(l.value,"-item"),I=b.value,w=c-1;return D("div",{class:y.value,style:m.value},[h.map(function(C,x){var R={};return f.value||(s==="vertical"?x=t}function She(n){return n&&Yt(n)==="object"&&!Array.isArray(n)&&!yl(n)}const Yp=He({name:"Cell",props:["prefixCls","record","index","renderIndex","dataIndex","customRender","component","colSpan","rowSpan","fixLeft","fixRight","firstFixLeft","lastFixLeft","firstFixRight","lastFixRight","appendNode","additionalProps","ellipsis","align","rowType","isSticky","column","cellType","transformCellText"],slots:["appendNode"],setup:function(e,t){var i=t.slots,a=aS(),l=Lhe(),o=l.onHover,r=l.startRow,f=l.endRow,v=de(function(){var N,G,d,u;return(N=(G=e.colSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.colSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.colspan}),b=de(function(){var N,G,d,u;return(N=(G=e.rowSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.rowSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.rowspan}),Z=Sa(function(){var N=e.index;return Che(N,b.value||1,r.value,f.value)}),p=The(),y=function(G,d){var u,s=e.record,h=e.index,c=e.additionalProps;s&&o(h,h+d-1),c==null||(u=c.onMouseenter)===null||u===void 0||u.call(c,G)},X=function(G){var d,u=e.record,s=e.additionalProps;u&&o(-1,-1),s==null||(d=s.onMouseleave)===null||d===void 0||d.call(s,G)},m=function N(G){var d=Ri(G)[0];return yl(d)?d.type===Ms?d.children:Array.isArray(d.children)?N(d.children):void 0:d};return function(){var N,G,d,u,s,h,c=e.prefixCls,W=e.record,M=e.index,I=e.renderIndex,w=e.dataIndex,C=e.customRender,x=e.component,R=x===void 0?"td":x,g=e.fixLeft,S=e.fixRight,L=e.firstFixLeft,V=e.lastFixLeft,Y=e.firstFixRight,T=e.lastFixRight,J=e.appendNode,U=J===void 0?(N=i.appendNode)===null||N===void 0?void 0:N.call(i):J,K=e.additionalProps,H=K===void 0?{}:K,k=e.ellipsis,F=e.align,O=e.rowType,Q=e.isSticky,oe=e.column,se=oe===void 0?{}:oe,he=e.cellType,pe="".concat(c,"-cell"),re,_,E=(G=i.default)===null||G===void 0?void 0:G.call(i);if(Dv(E)||he==="header")_=E;else{var $,ae=iS(W,w);if(_=ae,C){var le=C({text:ae,value:ae,record:W,index:M,renderIndex:I,column:se.__originColumn__});She(le)?(_=le.children,re=le.props):_=le}if(!(Mu in se)&&he==="body"&&a.value.bodyCell&&!(($=se.slots)!==null&&$!==void 0&&$.customRender)){var ee=x0(a.value,"bodyCell",{text:ae,value:ae,record:W,index:M,column:se.__originColumn__},function(){var Se=_===void 0?ae:_;return[Yt(Se)==="object"&&Si(Se)||Yt(Se)!=="object"?Se:null]});_=ti(ee)}e.transformCellText&&(_=e.transformCellText({text:_,record:W,index:M,column:se.__originColumn__}))}Yt(_)==="object"&&!Array.isArray(_)&&!yl(_)&&(_=null),k&&(V||Y)&&(_=D("span",{class:"".concat(pe,"-content")},[_])),Array.isArray(_)&&_.length===1&&(_=_[0]);var te=re||{},be=te.colSpan,ne=te.rowSpan,B=te.style,q=te.class,ue=jt(te,xhe),ve=(d=be!==void 0?be:v.value)!==null&&d!==void 0?d:1,Ge=(u=ne!==void 0?ne:b.value)!==null&&u!==void 0?u:1;if(ve===0||Ge===0)return null;var Je={},xe=typeof g=="number"&&p.value,ke=typeof S=="number"&&p.value;xe&&(Je.position="sticky",Je.left="".concat(g,"px")),ke&&(Je.position="sticky",Je.right="".concat(S,"px"));var Pe={};F&&(Pe.textAlign=F);var Be,Te=k===!0?{showTitle:!0}:k;Te&&(Te.showTitle||O==="header")&&(typeof _=="string"||typeof _=="number"?Be=_.toString():yl(_)&&(Be=m([_])));var we=P(P(P({title:Be},ue),H),{},{colSpan:ve!==1?ve:null,rowSpan:Ge!==1?Ge:null,class:_e(pe,(s={},ce(s,"".concat(pe,"-fix-left"),xe&&p.value),ce(s,"".concat(pe,"-fix-left-first"),L&&p.value),ce(s,"".concat(pe,"-fix-left-last"),V&&p.value),ce(s,"".concat(pe,"-fix-right"),ke&&p.value),ce(s,"".concat(pe,"-fix-right-first"),Y&&p.value),ce(s,"".concat(pe,"-fix-right-last"),T&&p.value),ce(s,"".concat(pe,"-ellipsis"),k),ce(s,"".concat(pe,"-with-append"),U),ce(s,"".concat(pe,"-fix-sticky"),(xe||ke)&&Q&&p.value),ce(s,"".concat(pe,"-row-hover"),!re&&Z.value),s),H.class,q),onMouseenter:function(De){y(De,Ge)},onMouseleave:X,style:P(P(P(P({},KW(H.style)),Pe),Je),B)});return D(R,we,{default:function(){return[U,_,(h=i.dragHandle)===null||h===void 0?void 0:h.call(i)]}})}}});function wX(n,e,t,i,a){var l=t[n]||{},o=t[e]||{},r,f;l.fixed==="left"?r=i.left[n]:o.fixed==="right"&&(f=i.right[e]);var v=!1,b=!1,Z=!1,p=!1,y=t[e+1],X=t[n-1];if(a==="rtl"){if(r!==void 0){var m=X&&X.fixed==="left";p=!m}else if(f!==void 0){var N=y&&y.fixed==="right";Z=!N}}else if(r!==void 0){var G=y&&y.fixed==="left";v=!G}else if(f!==void 0){var d=X&&X.fixed==="right";b=!d}return{fixLeft:r,fixRight:f,lastFixLeft:v,firstFixRight:b,lastFixRight:Z,firstFixLeft:p,isSticky:i.isSticky}}var lV={mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"},touch:{start:"touchstart",move:"touchmove",stop:"touchend"}},aV=50;const zhe=He({compatConfig:{MODE:3},name:"DragHandle",props:{prefixCls:String,width:{type:Number,required:!0},minWidth:{type:Number,default:aV},maxWidth:{type:Number,default:1/0},column:{type:Object,default:void 0}},setup:function(e){var t=0,i={remove:function(){}},a={remove:function(){}},l=function(){i.remove(),a.remove()};la(function(){l()}),qt(function(){jn(!isNaN(e.width),"Table","width must be a number when use resizable")});var o=ghe(),r=o.onResizeColumn,f=de(function(){return typeof e.minWidth=="number"&&!isNaN(e.minWidth)?e.minWidth:aV}),v=de(function(){return typeof e.maxWidth=="number"&&!isNaN(e.maxWidth)?e.maxWidth:1/0}),b=Wl(),Z=0,p=Ne(!1),y,X=function(c){var W=0;c.touches?c.touches.length?W=c.touches[0].pageX:W=c.changedTouches[0].pageX:W=c.pageX;var M=t-W,I=Math.max(Z-M,f.value);I=Math.min(I,v.value),At.cancel(y),y=At(function(){r(I,e.column.__originColumn__)})},m=function(c){X(c)},N=function(c){p.value=!1,X(c),l()},G=function(c,W){p.value=!0,l(),Z=b.vnode.el.parentNode.getBoundingClientRect().width,!(c instanceof MouseEvent&&c.which!==1)&&(c.stopPropagation&&c.stopPropagation(),t=c.touches?c.touches[0].pageX:c.pageX,i=hi(document.documentElement,W.move,m),a=hi(document.documentElement,W.stop,N))},d=function(c){c.stopPropagation(),c.preventDefault(),G(c,lV.mouse)},u=function(c){c.stopPropagation(),c.preventDefault(),G(c,lV.touch)},s=function(c){c.stopPropagation(),c.preventDefault()};return function(){var h=e.prefixCls,c=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(W){return u(W)});return D("div",P(P({class:"".concat(h,"-resize-handle ").concat(p.value?"dragging":""),onMousedown:d},c),{},{onClick:s}),[D("div",{class:"".concat(h,"-resize-handle-line")},null)])}}}),khe=He({name:"HeaderRow",props:["cells","stickyOffsets","flattenColumns","rowComponent","cellComponent","index","customHeaderRow"],setup:function(e){var t=$r();return function(){var i=t.prefixCls,a=t.direction,l=e.cells,o=e.stickyOffsets,r=e.flattenColumns,f=e.rowComponent,v=e.cellComponent,b=e.customHeaderRow,Z=e.index,p;b&&(p=b(l.map(function(X){return X.column}),Z));var y=Ip(l.map(function(X){return X.column}));return D(f,p,{default:function(){return[l.map(function(m,N){var G=m.column,d=wX(m.colStart,m.colEnd,r,o,a),u;G&&G.customHeaderCell&&(u=m.column.customHeaderCell(G));var s=G;return D(Yp,P(P(P({},m),{},{cellType:"header",ellipsis:G.ellipsis,align:G.align,component:v,prefixCls:i,key:y[N]},d),{},{additionalProps:u,rowType:"header",column:G}),{default:function(){return G.title},dragHandle:function(){return s.resizable?D(zhe,{prefixCls:i,width:s.width,minWidth:s.minWidth,maxWidth:s.maxWidth,column:s},null):null}})})]}})}}});function Fhe(n){var e=[];function t(o,r){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;e[f]=e[f]||[];var v=r,b=o.filter(Boolean).map(function(Z){var p={key:Z.key,class:_e(Z.className,Z.class),column:Z,colStart:v},y=1,X=Z.children;return X&&X.length>0&&(y=t(X,v,f+1).reduce(function(m,N){return m+N},0),p.hasSubColumns=!0),"colSpan"in Z&&(y=Z.colSpan),"rowSpan"in Z&&(p.rowSpan=Z.rowSpan),p.colSpan=y,p.colEnd=p.colStart+y-1,e[f].push(p),v+=y,y});return b}t(n,0);for(var i=e.length,a=function(r){e[r].forEach(function(f){!("rowSpan"in f)&&!f.hasSubColumns&&(f.rowSpan=i-r)})},l=0;l1?h-1:0),W=1;W0?[].concat(yt(e),yt(jv(l).map(function(o){return P({fixed:a},o)}))):[].concat(yt(e),[P(P({},t),{},{fixed:a})])},[])}function Bhe(n){return n.map(function(e){var t=e.fixed,i=jt(e,Qhe),a=t;return t==="left"?a="right":t==="right"&&(a="left"),P({fixed:a},i)})}function Ahe(n,e){var t=n.prefixCls,i=n.columns,a=n.expandable,l=n.expandedKeys,o=n.getRowKey,r=n.onTriggerExpand,f=n.expandIcon,v=n.rowExpandable,b=n.expandIconColumnIndex,Z=n.direction,p=n.expandRowByClick,y=n.expandColumnWidth,X=n.expandFixed,m=de(function(){if(a.value){var d,u=i.value.slice();if(!u.includes(os)){var s=b.value||0;s>=0&&u.splice(s,0,os)}var h=u.indexOf(os);u=u.filter(function(g,S){return g!==os||S===h});var c=i.value[h],W;(X.value==="left"||X.value)&&!b.value?W="left":(X.value==="right"||X.value)&&b.value===i.value.length?W="right":W=c?c.fixed:null;var M=l.value,I=v.value,w=f.value,C=t.value,x=p.value,R=(d={},ce(d,Mu,{class:"".concat(t.value,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),ce(d,"title",""),ce(d,"fixed",W),ce(d,"class","".concat(t.value,"-row-expand-icon-cell")),ce(d,"width",y.value),ce(d,"customRender",function(S){var L=S.record,V=S.index,Y=o.value(L,V),T=M.has(Y),J=I?I(L):!0,U=w({prefixCls:C,expanded:T,expandable:J,record:L,onExpand:r});return x?D("span",{onClick:function(H){return H.stopPropagation()}},[U]):U}),d);return u.map(function(g){return g===os?R:g})}return i.value.filter(function(g){return g!==os})}),N=de(function(){var d=m.value;return e.value&&(d=e.value(d)),d.length||(d=[{customRender:function(){return null}}]),d}),G=de(function(){return Z.value==="rtl"?Bhe(jv(N.value)):jv(N.value)});return[N,G]}function bS(n){var e=Gn(n),t,i=Gn([]);function a(l){i.value.push(l),At.cancel(t),t=At(function(){var o=i.value;i.value=[],o.forEach(function(r){e.value=r(e.value)})})}return fn(function(){At.cancel(t)}),[e,a]}function _he(n){var e=Ne(n||null),t=Ne();function i(){clearTimeout(t.value)}function a(o){e.value=o,i(),t.value=setTimeout(function(){e.value=null,t.value=void 0},100)}function l(){return e.value}return fn(function(){i()}),[a,l]}function $he(n,e,t){var i=de(function(){for(var a=[],l=[],o=0,r=0,f=n.value,v=e.value,b=t.value,Z=0;Z=0;r-=1){var f=e[r],v=t&&t[r],b=v&&v[Mu];if(f||b||o){var Z=b||{};Z.columnType;var p=jt(Z,qhe);a.unshift(D("col",P({key:r,style:{width:typeof f=="number"?"".concat(f,"px"):f}},p),null)),o=!0}}return D("colgroup",null,[a])}function Uv(n,e){var t,i=e.slots;return D("div",null,[(t=i.default)===null||t===void 0?void 0:t.call(i)])}Uv.displayName="Panel";var efe=0,tfe=He({name:"Summary",props:["fixed"],setup:function(e,t){var i=t.slots,a=$r(),l="table-summary-uni-key-".concat(++efe),o=de(function(){return e.fixed===""||e.fixed});return qt(function(){a.summaryCollect(l,o.value)}),fn(function(){a.summaryCollect(l,!1)}),function(){var r;return(r=i.default)===null||r===void 0?void 0:r.call(i)}}});const nfe=tfe,ife=He({compatConfig:{MODE:3},name:"FooterRow",setup:function(e,t){var i=t.slots;return function(){var a;return D("tr",null,[(a=i.default)===null||a===void 0?void 0:a.call(i)])}}});var pS=Symbol("SummaryContextProps"),lfe=function(e){hn(pS,e)},afe=function(){return un(pS,{})};const rfe=He({name:"SummaryCell",props:["index","colSpan","rowSpan","align"],setup:function(e,t){var i=t.attrs,a=t.slots,l=$r(),o=afe();return function(){var r=e.index,f=e.colSpan,v=f===void 0?1:f,b=e.rowSpan,Z=e.align,p=l.prefixCls,y=l.direction,X=o.scrollColumnIndex,m=o.stickyOffsets,N=o.flattenColumns,G=r+v-1,d=G+1===X?v+1:v,u=wX(r,r+d-1,N,m,y);return D(Yp,P({class:i.class,index:r,component:"td",prefixCls:p,record:null,dataIndex:null,align:Z,colSpan:d,rowSpan:b,customRender:function(){var h;return(h=a.default)===null||h===void 0?void 0:h.call(a)}},u),null)}}}),vb=He({name:"Footer",inheritAttrs:!1,props:["stickyOffsets","flattenColumns"],setup:function(e,t){var i=t.slots,a=$r();return lfe(zn({stickyOffsets:Ot(e,"stickyOffsets"),flattenColumns:Ot(e,"flattenColumns"),scrollColumnIndex:de(function(){var l=e.flattenColumns.length-1,o=e.flattenColumns[l];return o!=null&&o.scrollbar?l:null})})),function(){var l,o=a.prefixCls;return D("tfoot",{class:"".concat(o,"-summary")},[(l=i.default)===null||l===void 0?void 0:l.call(i)])}}});var ofe=nfe;function sfe(n){var e,t=n.prefixCls,i=n.record,a=n.onExpand,l=n.expanded,o=n.expandable,r="".concat(t,"-row-expand-icon");if(!o)return D("span",{class:[r,"".concat(t,"-row-spaced")]},null);var f=function(b){a(i,b),b.stopPropagation()};return D("span",{class:(e={},ce(e,r,!0),ce(e,"".concat(t,"-row-expanded"),l),ce(e,"".concat(t,"-row-collapsed"),!l),e),onClick:f},null)}function cfe(n,e,t){var i=[];function a(l){(l||[]).forEach(function(o,r){i.push(e(o,r)),a(o[t])})}return a(n),i}const ufe=He({name:"StickyScrollBar",inheritAttrs:!1,props:["offsetScroll","container","scrollBodyRef","scrollBodySizeInfo"],emits:["scroll"],setup:function(e,t){var i=t.emit,a=t.expose,l=$r(),o=Ne(0),r=Ne(0),f=Ne(0);qt(function(){o.value=e.scrollBodySizeInfo.scrollWidth||0,r.value=e.scrollBodySizeInfo.clientWidth||0,f.value=o.value&&r.value*(r.value/o.value)},{flush:"post"});var v=Ne(),b=bS({scrollLeft:0,isHiddenScrollBar:!0}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne({delta:0,x:0}),m=Ne(!1),N=function(){m.value=!1},G=function(C){X.value={delta:C.pageX-p.value.scrollLeft,x:0},m.value=!0,C.preventDefault()},d=function(C){var x,R=C||((x=window)===null||x===void 0?void 0:x.event),g=R.buttons;if(!m.value||g===0){m.value&&(m.value=!1);return}var S=X.value.x+C.pageX-X.value.x-X.value.delta;S<=0&&(S=0),S+f.value>=r.value&&(S=r.value-f.value),i("scroll",{scrollLeft:S/r.value*(o.value+2)}),X.value.x=C.pageX},u=function(){if(e.scrollBodyRef.value){var C=s0(e.scrollBodyRef.value).top,x=C+e.scrollBodyRef.value.offsetHeight,R=e.container===window?document.documentElement.scrollTop+window.innerHeight:s0(e.container).top+e.container.clientHeight;x-Cu()<=R||C>=R-e.offsetScroll?y(function(g){return P(P({},g),{},{isHiddenScrollBar:!0})}):y(function(g){return P(P({},g),{},{isHiddenScrollBar:!1})})}},s=function(C){y(function(x){return P(P({},x),{},{scrollLeft:C/o.value*r.value||0})})};a({setScrollLeft:s});var h=null,c=null,W=null,M=null;Kt(function(){h=hi(document.body,"mouseup",N,!1),c=hi(document.body,"mousemove",d,!1),W=hi(window,"resize",u,!1)}),L0(function(){cn(function(){u()})}),Kt(function(){setTimeout(function(){rt([f,m],function(){u()},{immediate:!0,flush:"post"})})}),rt(function(){return e.container},function(){var w;(w=M)===null||w===void 0||w.remove(),M=hi(e.container,"scroll",u,!1)},{immediate:!0,flush:"post"}),fn(function(){var w,C,x,R;(w=h)===null||w===void 0||w.remove(),(C=c)===null||C===void 0||C.remove(),(x=M)===null||x===void 0||x.remove(),(R=W)===null||R===void 0||R.remove()}),rt(function(){return P({},p.value)},function(w,C){w.isHiddenScrollBar!==(C==null?void 0:C.isHiddenScrollBar)&&!w.isHiddenScrollBar&&y(function(x){var R=e.scrollBodyRef.value;return R?P(P({},x),{},{scrollLeft:R.scrollLeft/R.scrollWidth*R.clientWidth}):x})},{immediate:!0});var I=Cu();return function(){if(o.value<=r.value||!f.value||p.value.isHiddenScrollBar)return null;var w=l.prefixCls;return D("div",{style:{height:"".concat(I,"px"),width:"".concat(r.value,"px"),bottom:"".concat(e.offsetScroll,"px")},class:"".concat(w,"-sticky-scroll")},[D("div",{onMousedown:G,ref:v,class:_e("".concat(w,"-sticky-scroll-bar"),ce({},"".concat(w,"-sticky-scroll-bar-active"),m)),style:{width:"".concat(f.value,"px"),transform:"translate3d(".concat(p.value.scrollLeft,"px, 0, 0)")}},null)])}}});var oV=wc()?window:null;function dfe(n,e){return de(function(){var t=Yt(n.value)==="object"?n.value:{},i=t.offsetHeader,a=i===void 0?0:i,l=t.offsetSummary,o=l===void 0?0:l,r=t.offsetScroll,f=r===void 0?0:r,v=t.getContainer,b=v===void 0?function(){return oV}:v,Z=b()||oV,p=!!n.value;return{isSticky:p,stickyClassName:p?"".concat(e.value,"-sticky-holder"):"",offsetHeader:a,offsetSummary:o,offsetScroll:f,container:Z}})}function hfe(n,e){return de(function(){for(var t=[],i=n.value,a=e.value,l=0;l1?e-1:0),i=1;i0)):(L(qe>0),J(qe0?a.value:n.value}),y=Math.ceil((a.value||n.value)/p.pageSize);return p.current>y&&(p.current=y||1),p}),b=function(y,X){i.value!==!1&&f({current:y??1,pageSize:X||v.value.pageSize})},Z=function(y,X){if(i.value){var m,N;(m=(N=i.value).onChange)===null||m===void 0||m.call(N,y,X)}b(y,X),t(y,X||v.value.pageSize)};return[de(function(){return i.value===!1?{}:P(P({},v.value),{},{onChange:Z})}),b]}function Wfe(n,e,t){var i=Gn({});rt([n,e,t],function(){var l=new Map,o=t.value,r=e.value;function f(v){v.forEach(function(b,Z){var p=o(b,Z);l.set(p,b),b&&Yt(b)==="object"&&r in b&&f(b[r]||[])})}f(n.value),i.value={kvMap:l}},{deep:!0,immediate:!0});function a(l){return i.value.kvMap.get(l)}return[a]}var Xo={},Hv="SELECT_ALL",Pv="SELECT_INVERT",Qv="SELECT_NONE",Gfe=[];function yS(n,e){var t=[];return(n||[]).forEach(function(i){t.push(i),i&&Yt(i)==="object"&&e in i&&(t=[].concat(yt(t),yt(yS(i[e],e))))}),t}function Xfe(n,e){var t=de(function(){var g=n.value||{},S=g.checkStrictly,L=S===void 0?!0:S;return P(P({},g),{},{checkStrictly:L})}),i=Wi(t.value.selectedRowKeys||t.value.defaultSelectedRowKeys||Gfe,{value:de(function(){return t.value.selectedRowKeys})}),a=ft(i,2),l=a[0],o=a[1],r=Gn(new Map),f=function(S){if(t.value.preserveSelectedRowKeys){var L=new Map;S.forEach(function(V){var Y=e.getRecordByKey(V);!Y&&r.value.has(V)&&(Y=r.value.get(V)),L.set(V,Y)}),r.value=L}};qt(function(){f(l.value)});var v=de(function(){return t.value.checkStrictly?null:Eh(e.data.value,{externalGetKey:e.getRowKey.value,childrenPropName:e.childrenColumnName.value}).keyEntities}),b=de(function(){return yS(e.pageData.value,e.childrenColumnName.value)}),Z=de(function(){var g=new Map,S=e.getRowKey.value,L=t.value.getCheckboxProps;return b.value.forEach(function(V,Y){var T=S(V,Y),J=(L?L(V):null)||{};g.set(T,J)}),g}),p=mp(v),y=p.maxLevel,X=p.levelEntities,m=function(S){var L;return!!((L=Z.value.get(e.getRowKey.value(S)))!==null&&L!==void 0&&L.disabled)},N=de(function(){if(t.value.checkStrictly)return[l.value||[],[]];var g=ir(l.value,!0,v.value,y.value,X.value,m),S=g.checkedKeys,L=g.halfCheckedKeys;return[S||[],L]}),G=de(function(){return N.value[0]}),d=de(function(){return N.value[1]}),u=de(function(){var g=t.value.type==="radio"?G.value.slice(0,1):G.value;return new Set(g)}),s=de(function(){return t.value.type==="radio"?new Set:new Set(d.value)}),h=di(null),c=ft(h,2),W=c[0],M=c[1],I=function(S){var L,V;f(S);var Y=t.value,T=Y.preserveSelectedRowKeys,J=Y.onChange,U=e.getRecordByKey;T?(L=S,V=S.map(function(K){return r.value.get(K)})):(L=[],V=[],S.forEach(function(K){var H=U(K);H!==void 0&&(L.push(K),V.push(H))})),o(L),J==null||J(L,V)},w=function(S,L,V,Y){var T=t.value.onSelect,J=e||{},U=J.getRecordByKey;if(T){var K=V.map(function(H){return U(H)});T(U(S),L,K,Y)}I(V)},C=de(function(){var g=t.value,S=g.onSelectInvert,L=g.onSelectNone,V=g.selections,Y=g.hideSelectAll,T=e.data,J=e.pageData,U=e.getRowKey,K=e.locale;if(!V||Y)return null;var H=V===!0?[Hv,Pv,Qv]:V;return H.map(function(k){return k===Hv?{key:"all",text:K.value.selectionAll,onSelect:function(){I(T.value.map(function(O,Q){return U.value(O,Q)}).filter(function(O){var Q=Z.value.get(O);return!(Q!=null&&Q.disabled)||u.value.has(O)}))}}:k===Pv?{key:"invert",text:K.value.selectInvert,onSelect:function(){var O=new Set(u.value);J.value.forEach(function(oe,se){var he=U.value(oe,se),pe=Z.value.get(he);pe!=null&&pe.disabled||(O.has(he)?O.delete(he):O.add(he))});var Q=Array.from(O);S&&(jn(!1,"Table","`onSelectInvert` will be removed in future. Please use `onChange` instead."),S(Q)),I(Q)}}:k===Qv?{key:"none",text:K.value.selectNone,onSelect:function(){L==null||L(),I(Array.from(u.value).filter(function(O){var Q=Z.value.get(O);return Q==null?void 0:Q.disabled}))}}:k})}),x=de(function(){return b.value.length}),R=function(S){var L,V=t.value,Y=V.onSelectAll,T=V.onSelectMultiple,J=V.columnWidth,U=V.type,K=V.fixed,H=V.renderCell,k=V.hideSelectAll,F=V.checkStrictly,O=e.prefixCls,Q=e.getRecordByKey,oe=e.getRowKey,se=e.expandType,he=e.getPopupContainer;if(!n.value)return S.filter(function(De){return De!==Xo});var pe=S.slice(),re=new Set(u.value),_=b.value.map(oe.value).filter(function(De){return!Z.value.get(De).disabled}),E=_.every(function(De){return re.has(De)}),$=_.some(function(De){return re.has(De)}),ae=function(){var me=[];E?_.forEach(function(Me){re.delete(Me),me.push(Me)}):_.forEach(function(Me){re.has(Me)||(re.add(Me),me.push(Me))});var Ve=Array.from(re);Y==null||Y(!E,Ve.map(function(Me){return Q(Me)}),me.map(function(Me){return Q(Me)})),I(Ve)},le;if(U!=="radio"){var ee;if(C.value){var te=D(Yi,{getPopupContainer:he.value},{default:function(){return[C.value.map(function(me,Ve){var Me=me.key,Ie=me.text,Ze=me.onSelect;return D(Yi.Item,{key:Me||Ve,onClick:function(){Ze==null||Ze(_)}},{default:function(){return[Ie]}})})]}});ee=D("div",{class:"".concat(O.value,"-selection-extra")},[D(Pr,{overlay:te,getPopupContainer:he.value},{default:function(){return[D("span",null,[D(Jh,null,null)])]}})])}var be=b.value.map(function(De,me){var Ve=oe.value(De,me),Me=Z.value.get(Ve)||{};return P({checked:re.has(Ve)},Me)}).filter(function(De){var me=De.disabled;return me}),ne=!!be.length&&be.length===x.value,B=ne&&be.every(function(De){var me=De.checked;return me}),q=ne&&be.some(function(De){var me=De.checked;return me});le=!k&&D("div",{class:"".concat(O.value,"-selection")},[D(lr,{checked:ne?B:!!x.value&&E,indeterminate:ne?!B&&q:!E&&$,onChange:ae,disabled:x.value===0||ne,skipGroup:!0},null),ee])}var ue;U==="radio"?ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie);return{node:D(ta,P(P({},Z.value.get(Ie)),{},{checked:Ze,onClick:function(ye){return ye.stopPropagation()},onChange:function(ye){re.has(Ie)||w(Ie,!0,[Ie],ye.nativeEvent)}}),null),checked:Ze}}:ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie),Ce=s.value.has(Ie),ye=Z.value.get(Ie),Ue;if(se.value==="nest")Ue=Ce,jn(typeof(ye==null?void 0:ye.indeterminate)!="boolean","Table","set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.");else{var qe;Ue=(qe=ye==null?void 0:ye.indeterminate)!==null&&qe!==void 0?qe:Ce}return{node:D(lr,P(P({},ye),{},{indeterminate:Ue,checked:Ze,skipGroup:!0,onClick:function(Oe){return Oe.stopPropagation()},onChange:function(Oe){var Ke=Oe.nativeEvent,Xe=Ke.shiftKey,Re=-1,Ae=-1;if(Xe&&F){var ct=new Set([W.value,Ie]);_.some(function(Pt,Ut){if(ct.has(Pt))if(Re===-1)Re=Ut;else return Ae=Ut,!0;return!1})}if(Ae!==-1&&Re!==Ae&&F){var lt=_.slice(Re,Ae+1),ot=[];Ze?lt.forEach(function(Pt){re.has(Pt)&&(ot.push(Pt),re.delete(Pt))}):lt.forEach(function(Pt){re.has(Pt)||(ot.push(Pt),re.add(Pt))});var wt=Array.from(re);T==null||T(!Ze,wt.map(function(Pt){return Q(Pt)}),ot.map(function(Pt){return Q(Pt)})),I(wt)}else{var Mt=G.value;if(F){var xt=Ze?Wo(Mt,Ie):is(Mt,Ie);w(Ie,!Ze,xt,Ke)}else{var Gt=ir([].concat(yt(Mt),[Ie]),!0,v.value,y.value,X.value,m),Zt=Gt.checkedKeys,Tt=Gt.halfCheckedKeys,Ct=Zt;if(Ze){var St=new Set(Zt);St.delete(Ie),Ct=ir(Array.from(St),{checked:!1,halfCheckedKeys:Tt},v.value,y.value,X.value,m).checkedKeys}w(Ie,!Ze,Ct,Ke)}}M(Ie)}}),null),checked:Ze}};var ve=function(me){var Ve=me.record,Me=me.index,Ie=ue({record:Ve,index:Me}),Ze=Ie.node,Ce=Ie.checked;return H?H(Ce,Ve,Me,Ze):Ze};if(!pe.includes(Xo))if(pe.findIndex(function(De){var me;return((me=De[Mu])===null||me===void 0?void 0:me.columnType)==="EXPAND_COLUMN"})===0){var Ge=pe,Je=yG(Ge),xe=Je[0],ke=Je.slice(1);pe=[xe,Xo].concat(yt(ke))}else pe=[Xo].concat(yt(pe));var Pe=pe.indexOf(Xo);pe=pe.filter(function(De,me){return De!==Xo||me===Pe});var Be=pe[Pe-1],Te=pe[Pe+1],we=K;we===void 0&&((Te==null?void 0:Te.fixed)!==void 0?we=Te.fixed:(Be==null?void 0:Be.fixed)!==void 0&&(we=Be.fixed)),we&&Be&&((L=Be[Mu])===null||L===void 0?void 0:L.columnType)==="EXPAND_COLUMN"&&Be.fixed===void 0&&(Be.fixed=we);var Se=ce({fixed:we,width:J,className:"".concat(O.value,"-selection-column"),title:t.value.columnTitle||le,customRender:ve},Mu,{class:"".concat(O.value,"-selection-col")});return pe.map(function(De){return De===Xo?Se:De})};return[R,u]}var Nfe={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"};const Mfe=Nfe;function uV(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:[],e=ti(n),t=[];return e.forEach(function(i){var a,l,o;if(i){for(var r=i.key,f=((a=i.props)===null||a===void 0?void 0:a.style)||{},v=((l=i.props)===null||l===void 0?void 0:l.class)||"",b=i.props||{},Z=0,p=Object.entries(b);Z0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=n.length,i=e.length;if(Math.abs(t-i)!==1)return{add:!1,key:null};function a(l,o){var r=new Map;l.forEach(function(v){r.set(v,!0)});var f=o.filter(function(v){return!r.has(v)});return f.length===1?f[0]:null}return t ").concat(e);return e}const Hfe=He({compatConfig:{MODE:3},name:"NodeList",inheritAttrs:!1,props:mne,setup:function(e,t){var i=t.expose,a=t.attrs,l=Ne(),o=Ne(),r=IC(),f=r.expandedKeys,v=r.flattenNodes;i({scrollTo:function(d){l.value.scrollTo(d)},getIndentWidth:function(){return o.value.offsetWidth}});var b=Gn(v.value),Z=Gn([]),p=Ne(null);function y(){b.value=v.value,Z.value=[],p.value=null,e.onListChangeEnd()}var X=D1();rt([function(){return f.value.slice()},v],function(G,d){var u=ft(G,2),s=u[0],h=u[1],c=ft(d,2),W=c[0],M=c[1],I=jfe(W,s);if(I.key!==null){var w=e.virtual,C=e.height,x=e.itemHeight;if(I.add){var R=M.findIndex(function(T){var J=T.key;return J===I.key}),g=WV(yV(M,h,I.key),w,C,x),S=M.slice();S.splice(R+1,0,vV),b.value=S,Z.value=g,p.value="show"}else{var L=h.findIndex(function(T){var J=T.key;return J===I.key}),V=WV(yV(h,M,I.key),w,C,x),Y=h.slice();Y.splice(L+1,0,vV),b.value=Y,Z.value=V,p.value="hide"}}else M!==h&&(b.value=h)}),rt(function(){return X.value.dragging},function(G){G||y()});var m=de(function(){return e.motion===void 0?b.value:v.value}),N=function(){e.onActiveChange(null)};return function(){var G=P(P({},e),a),d=G.prefixCls;G.selectable,G.checkable;var u=G.disabled,s=G.motion,h=G.height,c=G.itemHeight,W=G.virtual,M=G.focusable,I=G.activeItem,w=G.focused,C=G.tabindex,x=G.onKeydown,R=G.onFocus,g=G.onBlur,S=G.onListChangeStart;G.onListChangeEnd;var L=jt(G,Ufe);return D(ln,null,[w&&I&&D("span",{style:ZV,"aria-live":"assertive"},[Kfe(I)]),D("div",null,[D("input",{style:ZV,disabled:M===!1||u,tabindex:M!==!1?C:null,onKeydown:x,onFocus:R,onBlur:g,value:"",onChange:Efe,"aria-label":"for screen reader"},null)]),D("div",{class:"".concat(d,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden"}},[D("div",{class:"".concat(d,"-indent")},[D("div",{ref:o,class:"".concat(d,"-indent-unit")},null)])]),D(Lx,P(P({},dn(L,["onActiveChange"])),{},{data:m.value,itemKey:GV,height:h,fullHeight:!1,virtual:W,itemHeight:c,prefixCls:"".concat(d,"-list"),ref:l,onVisibleChange:function(Y,T){var J=new Set(Y),U=T.filter(function(K){return!J.has(K)});U.some(function(K){return GV(K)===Mc})&&y()}}),{default:function(Y){var T=Y.pos,J=Xn({},(Zp(Y.data),Y.data)),U=Y.title,K=Y.key,H=Y.isStart,k=Y.isEnd,F=Uh(K,T);return delete J.key,delete J.children,D(Ofe,P(P({},J),{},{eventKey:F,title:U,active:!!I&&K===I.key,data:Y.data,isStart:H,isEnd:k,motion:s,motionNodes:K===Mc?Z.value:null,motionType:p.value,onMotionStart:S,onMotionEnd:y,onMousemove:N}),null)}})])}}});function Pfe(n){var e=n.dropPosition,t=n.dropLevelOffset,i=n.indent,a={pointerEvents:"none",position:"absolute",right:0,backgroundColor:"red",height:"".concat(2,"px")};switch(e){case-1:a.top=0,a.left="".concat(-t*i,"px");break;case 1:a.bottom=0,a.left="".concat(-t*i,"px");break;case 0:a.bottom=0,a.left="".concat(i);break}return D("div",{style:a},null)}var Qfe=10;const GS=He({compatConfig:{MODE:3},name:"Tree",inheritAttrs:!1,slots:["checkable","title","icon","titleRender"],props:pn(YC(),{prefixCls:"vc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:Pfe,allowDrop:function(){return!0}}),setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne(!1),r={},f=Ne(),v=Gn([]),b=Gn([]),Z=Gn([]),p=Gn([]),y=Gn([]),X=Gn([]),m={},N=zn({draggingNodeKey:null,dragChildrenKeys:[],dropTargetKey:null,dropPosition:null,dropContainerKey:null,dropLevelOffset:null,dropTargetPos:null,dropAllowed:!0,dragOverNodeKey:null}),G=Gn([]);rt([function(){return e.treeData},function(){return e.children}],function(){G.value=e.treeData!==void 0?on(e.treeData).slice():Xv(on(e.children))},{immediate:!0,deep:!0});var d=Gn({}),u=Ne(!1),s=Ne(null),h=Ne(!1),c=de(function(){return dp(e.fieldNames)}),W=Ne(),M=null,I=null,w=null,C=de(function(){return{expandedKeysSet:x.value,selectedKeysSet:R.value,loadedKeysSet:g.value,loadingKeysSet:S.value,checkedKeysSet:L.value,halfCheckedKeysSet:V.value,dragOverNodeKey:N.dragOverNodeKey,dropPosition:N.dropPosition,keyEntities:d.value}}),x=de(function(){return new Set(X.value)}),R=de(function(){return new Set(v.value)}),g=de(function(){return new Set(p.value)}),S=de(function(){return new Set(y.value)}),L=de(function(){return new Set(b.value)}),V=de(function(){return new Set(Z.value)});qt(function(){if(G.value){var Te=Eh(G.value,{fieldNames:c.value});d.value=P(ce({},Mc,WS),Te.keyEntities)}});var Y=!1;rt([function(){return e.expandedKeys},function(){return e.autoExpandParent},d],function(Te,we){var Se=ft(Te,2);Se[0];var De=Se[1],me=ft(we,2);me[0];var Ve=me[1],Me=X.value;if(e.expandedKeys!==void 0||Y&&De!==Ve)Me=e.autoExpandParent||!Y&&e.defaultExpandParent?Gv(e.expandedKeys,d.value):e.expandedKeys;else if(!Y&&e.defaultExpandAll){var Ie=P({},d.value);delete Ie[Mc],Me=Object.keys(Ie).map(function(Ze){return Ie[Ze].key})}else!Y&&e.defaultExpandedKeys&&(Me=e.autoExpandParent||e.defaultExpandParent?Gv(e.defaultExpandedKeys,d.value):e.defaultExpandedKeys);Me&&(X.value=Me),Y=!0},{immediate:!0});var T=Gn([]);qt(function(){T.value=Nne(G.value,X.value,c.value)}),qt(function(){e.selectable&&(e.selectedKeys!==void 0?v.value=Yw(e.selectedKeys,e):!Y&&e.defaultSelectedKeys&&(v.value=Yw(e.defaultSelectedKeys,e)))});var J=mp(d),U=J.maxLevel,K=J.levelEntities;qt(function(){if(e.checkable){var Te;if(e.checkedKeys!==void 0?Te=ZZ(e.checkedKeys)||{}:!Y&&e.defaultCheckedKeys?Te=ZZ(e.defaultCheckedKeys)||{}:G.value&&(Te=ZZ(e.checkedKeys)||{checkedKeys:b.value,halfCheckedKeys:Z.value}),Te){var we=Te,Se=we.checkedKeys,De=Se===void 0?[]:Se,me=we.halfCheckedKeys,Ve=me===void 0?[]:me;if(!e.checkStrictly){var Me=ir(De,!0,d.value,U.value,K.value);De=Me.checkedKeys,Ve=Me.halfCheckedKeys}b.value=De,Z.value=Ve}}}),qt(function(){e.loadedKeys&&(p.value=e.loadedKeys)});var H=function(){Xn(N,{dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})},k=function(we){W.value.scrollTo(we)};rt(function(){return e.activeKey},function(){e.activeKey!==void 0&&(s.value=e.activeKey)},{immediate:!0}),rt(s,function(Te){cn(function(){Te!==null&&k({key:Te})})},{immediate:!0,flush:"post"});var F=function(we){e.expandedKeys===void 0&&(X.value=we)},O=function(){N.draggingNodeKey!==null&&Xn(N,{draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),M=null,w=null},Q=function(we,Se){var De=e.onDragend;N.dragOverNodeKey=null,O(),De==null||De({event:we,node:Se.eventData}),I=null},oe=function Te(we){Q(we,null),window.removeEventListener("dragend",Te)},se=function(we,Se){var De=e.onDragstart,me=Se.eventKey,Ve=Se.eventData;I=Se,M={x:we.clientX,y:we.clientY};var Me=Wo(X.value,me);N.draggingNodeKey=me,N.dragChildrenKeys=vne(me,d.value),f.value=W.value.getIndentWidth(),F(Me),window.addEventListener("dragend",oe),De&&De({event:we,node:Ve})},he=function(we,Se){var De=e.onDragenter,me=e.onExpand,Ve=e.allowDrop,Me=e.direction,Ie=Se.pos,Ze=Se.eventKey;if(w!==Ze&&(w=Ze),!I){H();return}var Ce=Iw(we,I,Se,f.value,M,Ve,T.value,d.value,x.value,Me),ye=Ce.dropPosition,Ue=Ce.dropLevelOffset,qe=Ce.dropTargetKey,ie=Ce.dropContainerKey,Oe=Ce.dropTargetPos,Ke=Ce.dropAllowed,Xe=Ce.dragOverNodeKey;if(N.dragChildrenKeys.indexOf(qe)!==-1||!Ke){H();return}if(r||(r={}),Object.keys(r).forEach(function(Re){clearTimeout(r[Re])}),I.eventKey!==Se.eventKey&&(r[Ie]=window.setTimeout(function(){if(N.draggingNodeKey!==null){var Re=X.value.slice(),Ae=d.value[Se.eventKey];Ae&&(Ae.children||[]).length&&(Re=is(X.value,Se.eventKey)),F(Re),me&&me(Re,{node:Se.eventData,expanded:!0,nativeEvent:we})}},800)),I.eventKey===qe&&Ue===0){H();return}Xn(N,{dragOverNodeKey:Xe,dropPosition:ye,dropLevelOffset:Ue,dropTargetKey:qe,dropContainerKey:ie,dropTargetPos:Oe,dropAllowed:Ke}),De&&De({event:we,node:Se.eventData,expandedKeys:X.value})},pe=function(we,Se){var De=e.onDragover,me=e.allowDrop,Ve=e.direction;if(I){var Me=Iw(we,I,Se,f.value,M,me,T.value,d.value,x.value,Ve),Ie=Me.dropPosition,Ze=Me.dropLevelOffset,Ce=Me.dropTargetKey,ye=Me.dropContainerKey,Ue=Me.dropAllowed,qe=Me.dropTargetPos,ie=Me.dragOverNodeKey;N.dragChildrenKeys.indexOf(Ce)!==-1||!Ue||(I.eventKey===Ce&&Ze===0?N.dropPosition===null&&N.dropLevelOffset===null&&N.dropTargetKey===null&&N.dropContainerKey===null&&N.dropTargetPos===null&&N.dropAllowed===!1&&N.dragOverNodeKey===null||H():Ie===N.dropPosition&&Ze===N.dropLevelOffset&&Ce===N.dropTargetKey&&ye===N.dropContainerKey&&qe===N.dropTargetPos&&Ue===N.dropAllowed&&ie===N.dragOverNodeKey||Xn(N,{dropPosition:Ie,dropLevelOffset:Ze,dropTargetKey:Ce,dropContainerKey:ye,dropTargetPos:qe,dropAllowed:Ue,dragOverNodeKey:ie}),De&&De({event:we,node:Se.eventData}))}},re=function(we,Se){w===Se.eventKey&&!we.currentTarget.contains(we.relatedTarget)&&(H(),w=null);var De=e.onDragleave;De&&De({event:we,node:Se.eventData})},_=function(we,Se){var De,me=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Ve=N.dragChildrenKeys,Me=N.dropPosition,Ie=N.dropTargetKey,Ze=N.dropTargetPos,Ce=N.dropAllowed;if(Ce){var ye=e.onDrop;if(N.dragOverNodeKey=null,O(),Ie!==null){var Ue=P(P({},Nv(Ie,on(C.value))),{},{active:((De=xe.value)===null||De===void 0?void 0:De.key)===Ie,data:d.value[Ie].node});Ve.indexOf(Ie);var qe=j1(Ze),ie={event:we,node:Mv(Ue),dragNode:I?I.eventData:null,dragNodesKeys:[I.eventKey].concat(Ve),dropToGap:Me!==0,dropPosition:Me+Number(qe[qe.length-1])};me||ye==null||ye(ie),I=null}}},E=function(we,Se){var De=e.onClick;De&&De(we,Se)},$=function(we,Se){var De=e.onDblclick;De&&De(we,Se)},ae=function(we,Se){var De=v.value,me=e.onSelect,Ve=e.multiple,Me=Se.selected,Ie=Se[c.value.key],Ze=!Me;Ze?Ve?De=is(De,Ie):De=[Ie]:De=Wo(De,Ie);var Ce=d.value,ye=De.map(function(Ue){var qe=Ce[Ue];return qe?qe.node:null}).filter(function(Ue){return Ue});e.selectedKeys===void 0&&(v.value=De),me&&me(De,{event:"select",selected:Ze,node:Se,selectedNodes:ye,nativeEvent:we})},le=function(we,Se,De){var me=e.checkStrictly,Ve=e.onCheck,Me=Se[c.value.key],Ie,Ze={event:"check",node:Se,checked:De,nativeEvent:we},Ce=d.value;if(me){var ye=De?is(b.value,Me):Wo(b.value,Me),Ue=Wo(Z.value,Me);Ie={checked:ye,halfChecked:Ue},Ze.checkedNodes=ye.map(function(Re){return Ce[Re]}).filter(function(Re){return Re}).map(function(Re){return Re.node}),e.checkedKeys===void 0&&(b.value=ye)}else{var qe=ir([].concat(yt(b.value),[Me]),!0,Ce,U.value,K.value),ie=qe.checkedKeys,Oe=qe.halfCheckedKeys;if(!De){var Ke=new Set(ie);Ke.delete(Me);var Xe=ir(Array.from(Ke),{checked:!1,halfCheckedKeys:Oe},Ce,U.value,K.value);ie=Xe.checkedKeys,Oe=Xe.halfCheckedKeys}Ie=ie,Ze.checkedNodes=[],Ze.checkedNodesPositions=[],Ze.halfCheckedKeys=Oe,ie.forEach(function(Re){var Ae=Ce[Re];if(Ae){var ct=Ae.node,lt=Ae.pos;Ze.checkedNodes.push(ct),Ze.checkedNodesPositions.push({node:ct,pos:lt})}}),e.checkedKeys===void 0&&(b.value=ie,Z.value=Oe)}Ve&&Ve(Ie,Ze)},ee=function(we){var Se=we[c.value.key],De=new Promise(function(me,Ve){var Me=e.loadData,Ie=e.onLoad;if(!Me||g.value.has(Se)||S.value.has(Se))return null;var Ze=Me(we);Ze.then(function(){var Ce=is(p.value,Se),ye=Wo(y.value,Se);Ie&&Ie(Ce,{event:"load",node:we}),e.loadedKeys===void 0&&(p.value=Ce),y.value=ye,me()}).catch(function(Ce){var ye=Wo(y.value,Se);if(y.value=ye,m[Se]=(m[Se]||0)+1,m[Se]>=Qfe){var Ue=is(p.value,Se);e.loadedKeys===void 0&&(p.value=Ue),me()}Ve(Ce)}),y.value=is(y.value,Se)});return De.catch(function(){}),De},te=function(we,Se){var De=e.onMouseenter;De&&De({event:we,node:Se})},be=function(we,Se){var De=e.onMouseleave;De&&De({event:we,node:Se})},ne=function(we,Se){var De=e.onRightClick;De&&(we.preventDefault(),De({event:we,node:Se}))},B=function(we){var Se=e.onFocus;u.value=!0,Se&&Se(we)},q=function(we){var Se=e.onBlur;u.value=!1,Je(null),Se&&Se(we)},ue=function(we,Se){var De=X.value,me=e.onExpand,Ve=e.loadData,Me=Se.expanded,Ie=Se[c.value.key];if(!h.value){De.indexOf(Ie);var Ze=!Me;if(Ze?De=is(De,Ie):De=Wo(De,Ie),F(De),me&&me(De,{node:Se,expanded:Ze,nativeEvent:we}),Ze&&Ve){var Ce=ee(Se);Ce&&Ce.then(function(){}).catch(function(ye){var Ue=Wo(X.value,Ie);F(Ue),Promise.reject(ye)})}}},ve=function(){h.value=!0},Ge=function(){setTimeout(function(){h.value=!1})},Je=function(we){var Se=e.onActiveChange;s.value!==we&&(e.activeKey!==void 0&&(s.value=we),we!==null&&k({key:we}),Se&&Se(we))},xe=de(function(){return s.value===null?null:T.value.find(function(Te){var we=Te.key;return we===s.value})||null}),ke=function(we){var Se=T.value.findIndex(function(Ve){var Me=Ve.key;return Me===s.value});Se===-1&&we<0&&(Se=T.value.length),Se=(Se+we+T.value.length)%T.value.length;var De=T.value[Se];if(De){var me=De.key;Je(me)}else Je(null)},Pe=de(function(){return Mv(P(P({},Nv(s.value,C.value)),{},{data:xe.value.data,active:!0}))}),Be=function(we){var Se=e.onKeydown,De=e.checkable,me=e.selectable;switch(we.which){case bt.UP:{ke(-1),we.preventDefault();break}case bt.DOWN:{ke(1),we.preventDefault();break}}var Ve=xe.value;if(Ve&&Ve.data){var Me=Ve.data.isLeaf===!1||!!(Ve.data.children||[]).length,Ie=Pe.value;switch(we.which){case bt.LEFT:{Me&&x.value.has(s.value)?ue({},Ie):Ve.parent&&Je(Ve.parent.key),we.preventDefault();break}case bt.RIGHT:{Me&&!x.value.has(s.value)?ue({},Ie):Ve.children&&Ve.children.length&&Je(Ve.children[0].key),we.preventDefault();break}case bt.ENTER:case bt.SPACE:{De&&!Ie.disabled&&Ie.checkable!==!1&&!Ie.disableCheckbox?le({},Ie,!L.value.has(s.value)):!De&&me&&!Ie.disabled&&Ie.selectable!==!1&&ae({},Ie);break}}}Se&&Se(we)};return l({onNodeExpand:ue,scrollTo:k,onKeydown:Be,selectedKeys:de(function(){return v.value}),checkedKeys:de(function(){return b.value}),halfCheckedKeys:de(function(){return Z.value}),loadedKeys:de(function(){return p.value}),loadingKeys:de(function(){return y.value}),expandedKeys:de(function(){return X.value})}),la(function(){window.removeEventListener("dragend",oe),o.value=!0}),hne({expandedKeys:X,selectedKeys:v,loadedKeys:p,loadingKeys:y,checkedKeys:b,halfCheckedKeys:Z,expandedKeysSet:x,selectedKeysSet:R,loadedKeysSet:g,loadingKeysSet:S,checkedKeysSet:L,halfCheckedKeysSet:V,flattenNodes:T}),function(){var Te,we=N.draggingNodeKey,Se=N.dropLevelOffset,De=N.dropContainerKey,me=N.dropTargetKey,Ve=N.dropPosition,Me=N.dragOverNodeKey,Ie=e.prefixCls,Ze=e.showLine,Ce=e.focusable,ye=e.tabindex,Ue=ye===void 0?0:ye,qe=e.selectable,ie=e.showIcon,Oe=e.icon,Ke=Oe===void 0?a.icon:Oe,Xe=e.switcherIcon,Re=e.draggable,Ae=e.checkable,ct=e.checkStrictly,lt=e.disabled,ot=e.motion,wt=e.loadData,Mt=e.filterTreeNode,xt=e.height,Gt=e.itemHeight,Zt=e.virtual,Tt=e.dropIndicatorRender,Ct=e.onContextmenu,St=e.onScroll,Pt=e.direction,Ut=i.class,kt=i.style,en=ws(P(P({},e),i),{aria:!0,data:!0}),nn;return Re&&(Yt(Re)==="object"?nn=Re:typeof Re=="function"?nn={nodeDraggable:Re}:nn={}),D(dne,{value:{prefixCls:Ie,selectable:qe,showIcon:ie,icon:Ke,switcherIcon:Xe,draggable:nn,draggingNodeKey:we,checkable:Ae,customCheckable:a.checkable,checkStrictly:ct,disabled:lt,keyEntities:d.value,dropLevelOffset:Se,dropContainerKey:De,dropTargetKey:me,dropPosition:Ve,dragOverNodeKey:Me,dragging:we!==null,indent:f.value,direction:Pt,dropIndicatorRender:Tt,loadData:wt,filterTreeNode:Mt,onNodeClick:E,onNodeDoubleClick:$,onNodeExpand:ue,onNodeSelect:ae,onNodeCheck:le,onNodeLoad:ee,onNodeMouseEnter:te,onNodeMouseLeave:be,onNodeContextMenu:ne,onNodeDragStart:se,onNodeDragEnter:he,onNodeDragOver:pe,onNodeDragLeave:re,onNodeDragEnd:Q,onNodeDrop:_,slots:a}},{default:function(){return[D("div",{role:"tree",class:_e(Ie,Ut,(Te={},ce(Te,"".concat(Ie,"-show-line"),Ze),ce(Te,"".concat(Ie,"-focused"),u.value),ce(Te,"".concat(Ie,"-active-focused"),s.value!==null),Te))},[D(Hfe,P({ref:W,prefixCls:Ie,style:kt,disabled:lt,selectable:qe,checkable:!!Ae,motion:ot,height:xt,itemHeight:Gt,virtual:Zt,focusable:Ce,focused:u.value,tabindex:Ue,activeItem:xe.value,onFocus:B,onBlur:q,onKeydown:Be,onActiveChange:Je,onListChangeStart:ve,onListChangeEnd:Ge,onContextmenu:Ct,onScroll:St},en),null)])]}})}}});var Bfe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"};const Afe=Bfe;function XV(n){for(var e=1;e0})}function YS(n,e){return typeof e=="string"||typeof e=="number"?e==null?void 0:e.toString().toLowerCase().includes(n.trim().toLowerCase()):!1}function wS(n){var e=n.filters,t=n.prefixCls,i=n.filteredKeys,a=n.filterMultiple,l=n.searchValue,o=n.filterSearch;return e.map(function(r,f){var v=String(r.value);if(r.children)return D(Nbe,{key:v||f,title:r.text,popupClassName:"".concat(t,"-dropdown-submenu")},{default:function(){return[wS({filters:r.children,prefixCls:t,filteredKeys:i,filterMultiple:a,searchValue:l,filterSearch:o})]}});var b=a?lr:ta,Z=D(Mbe,{key:r.value!==void 0?v:f},{default:function(){return[D(b,{checked:i.includes(v)},null),D("span",null,[r.text])]}});return l.trim()?typeof o=="function"?o(l,r)?Z:void 0:YS(l,r.text)?Z:void 0:Z})}const Ybe=He({name:"FilterDropdown",props:["tablePrefixCls","prefixCls","dropdownPrefixCls","column","filterState","filterMultiple","filterMode","filterSearch","columnKey","triggerFilter","locale","getPopupContainer"],setup:function(e,t){var i=t.slots,a=aS(),l=de(function(){var U;return(U=e.filterMode)!==null&&U!==void 0?U:"menu"}),o=de(function(){var U;return(U=e.filterSearch)!==null&&U!==void 0?U:!1}),r=de(function(){return e.column.filterDropdownVisible}),f=Ne(!1),v=de(function(){var U;return!!(e.filterState&&((U=e.filterState.filteredKeys)!==null&&U!==void 0&&U.length||e.filterState.forceFiltered))}),b=de(function(){var U;return gp((U=e.column)===null||U===void 0?void 0:U.filters)}),Z=de(function(){var U=e.column,K=U.filterDropdown,H=U.slots,k=H===void 0?{}:H,F=U.customFilterDropdown;return K||k.filterDropdown&&a.value[k.filterDropdown]||F&&a.value.customFilterDropdown}),p=de(function(){var U=e.column,K=U.filterIcon,H=U.slots,k=H===void 0?{}:H;return K||k.filterIcon&&a.value[k.filterIcon]||a.value.customFilterIcon}),y=function(K){var H,k;f.value=K,(H=(k=e.column).onFilterDropdownVisibleChange)===null||H===void 0||H.call(k,K)},X=de(function(){return typeof r.value=="boolean"?r.value:f.value}),m=de(function(){var U;return(U=e.filterState)===null||U===void 0?void 0:U.filteredKeys}),N=Gn([]),G=function(K){var H=K.selectedKeys;N.value=H},d=function(K,H){var k=H.node,F=H.checked;e.filterMultiple?G({selectedKeys:K}):G({selectedKeys:F&&k.key?[k.key]:[]})};rt(m,function(){f.value&&G({selectedKeys:m.value||[]})},{immediate:!0});var u=Gn([]),s=Ne(),h=function(K){s.value=setTimeout(function(){u.value=K})},c=function(){clearTimeout(s.value)};fn(function(){clearTimeout(s.value)});var W=Ne(""),M=function(K){var H=K.target.value;W.value=H};rt(f,function(){f.value||(W.value="")});var I=function(K){var H=e.column,k=e.columnKey,F=e.filterState,O=K&&K.length?K:null;if(O===null&&(!F||!F.filteredKeys)||K0(O,F==null?void 0:F.filteredKeys))return null;e.triggerFilter({column:H,key:k,filteredKeys:O})},w=function(){y(!1),I(N.value)},C=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1},H=K.confirm,k=K.closeDropdown;H&&I([]),k&&y(!1),W.value="",N.value=[]},x=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0},H=K.closeDropdown;H&&y(!1),I(N.value)},R=function(K){K&&m.value!==void 0&&(N.value=m.value||[]),y(K),!K&&!Z.value&&w()},g=Nt("",e),S=g.direction,L=function(K){if(K.target.checked){var H=b.value;N.value=H}else N.value=[]},V=function U(K){var H=K.filters;return(H||[]).map(function(k,F){var O=String(k.value),Q={title:k.text,key:k.value!==void 0?O:F};return k.children&&(Q.children=U({filters:k.children})),Q})},Y=de(function(){return V({filters:e.column.filters})}),T=de(function(){return _e(ce({},"".concat(e.dropdownPrefixCls,"-menu-without-submenu"),!Ibe(e.column.filters||[])))}),J=function(){var K=N.value,H=e.column,k=e.locale,F=e.tablePrefixCls,O=e.filterMultiple,Q=e.dropdownPrefixCls,oe=e.getPopupContainer,se=e.prefixCls;return(H.filters||[]).length===0?D(cs,{image:cs.PRESENTED_IMAGE_SIMPLE,description:k.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}},null):l.value==="tree"?D(ln,null,[D(pV,{filterSearch:o.value,value:W.value,onChange:M,tablePrefixCls:F,locale:k},null),D("div",{class:"".concat(F,"-filter-dropdown-tree")},[O?D(lr,{class:"".concat(F,"-filter-dropdown-checkall"),onChange:L,checked:K.length===b.value.length,indeterminate:K.length>0&&K.length1),"Table","`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected."),Yhe(de(function(){return e.contextSlots})),whe({onResizeColumn:function(we,Se){o("resizeColumn",we,Se)}});var r=Bu(),f=de(function(){var Te=new Set(Object.keys(r.value).filter(function(we){return r.value[we]}));return e.columns.filter(function(we){return!we.responsive||we.responsive.some(function(Se){return Te.has(Se)})})}),v=Nt("table",e),b=v.size,Z=v.renderEmpty,p=v.direction,y=v.prefixCls,X=v.configProvider,m=de(function(){return e.transformCellText||X.transformCellText}),N=Br("Table",Mr.Table,Ot(e,"locale")),G=ft(N,1),d=G[0],u=de(function(){return e.dataSource||Rbe}),s=de(function(){return X.getPrefixCls("dropdown",e.dropdownPrefixCls)}),h=de(function(){return e.childrenColumnName||"children"}),c=de(function(){return u.value.some(function(Te){return Te==null?void 0:Te[h.value]})?"nest":e.expandedRowRender?"row":null}),W=zn({body:null}),M=function(we){Xn(W,we)},I=de(function(){return typeof e.rowKey=="function"?e.rowKey:function(Te){return Te==null?void 0:Te[e.rowKey]}}),w=Wfe(u,h,I),C=ft(w,1),x=C[0],R={},g=function(we,Se){var De=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,me=e.pagination,Ve=e.scroll,Me=e.onChange,Ie=P(P({},R),we);De&&(R.resetPagination(),Ie.pagination.current&&(Ie.pagination.current=1),me&&me.onChange&&me.onChange(1,Ie.pagination.pageSize)),Ve&&Ve.scrollToFirstRowOnChange!==!1&&W.body&&pG(0,{getContainer:function(){return W.body}}),Me==null||Me(Ie.pagination,Ie.filters,Ie.sorter,{currentDataSource:LV(_v(u.value,Ie.sorterStates,h.value),Ie.filterStates),action:Se})},S=function(we,Se){g({sorter:we,sorterStates:Se},"sort",!1)},L=xfe({prefixCls:y,mergedColumns:f,onSorterChange:S,sortDirections:de(function(){return e.sortDirections||["ascend","descend"]}),tableLocale:d,showSorterTooltip:Ot(e,"showSorterTooltip")}),V=ft(L,4),Y=V[0],T=V[1],J=V[2],U=V[3],K=de(function(){return _v(u.value,T.value,h.value)}),H=function(we,Se){g({filters:we,filterStates:Se},"filter",!0)},k=wbe({prefixCls:y,locale:d,dropdownPrefixCls:s,mergedColumns:f,onFilterChange:H,getPopupContainer:Ot(e,"getPopupContainer")}),F=ft(k,3),O=F[0],Q=F[1],oe=F[2],se=de(function(){return LV(K.value,Q.value)}),he=Lbe(Ot(e,"contextSlots")),pe=ft(he,1),re=pe[0],_=de(function(){return P({},J.value)}),E=gbe(_),$=ft(E,1),ae=$[0],le=function(we,Se){g({pagination:P(P({},R.pagination),{},{current:we,pageSize:Se})},"paginate")},ee=vfe(de(function(){return se.value.length}),Ot(e,"pagination"),le),te=ft(ee,2),be=te[0],ne=te[1];qt(function(){R.sorter=U.value,R.sorterStates=T.value,R.filters=oe.value,R.filterStates=Q.value,R.pagination=e.pagination===!1?{}:yfe(e.pagination,be.value),R.resetPagination=ne});var B=de(function(){if(e.pagination===!1||!be.value.pageSize)return se.value;var Te=be.value,we=Te.current,Se=we===void 0?1:we,De=Te.total,me=Te.pageSize,Ve=me===void 0?Kv:me;return jn(Se>0,"Table","`current` should be positive number."),se.value.lengthVe?se.value.slice((Se-1)*Ve,Se*Ve):se.value:se.value.slice((Se-1)*Ve,Se*Ve)});qt(function(){cn(function(){var Te=be.value,we=Te.total,Se=Te.pageSize,De=Se===void 0?Kv:Se;se.value.lengthDe&&jn(!1,"Table","`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.")})},{flush:"post"});var q=de(function(){return e.showExpandColumn===!1?-1:c.value==="nest"&&e.expandIconColumnIndex===void 0?e.rowSelection?1:0:e.expandIconColumnIndex>0&&e.rowSelection?e.expandIconColumnIndex-1:e.expandIconColumnIndex}),ue=Ne();rt(function(){return e.rowSelection},function(){ue.value=e.rowSelection?P({},e.rowSelection):e.rowSelection},{deep:!0,immediate:!0});var ve=Xfe(ue,{prefixCls:y,data:se,pageData:B,getRowKey:I,getRecordByKey:x,expandType:c,childrenColumnName:h,locale:d,getPopupContainer:de(function(){return e.getPopupContainer})}),Ge=ft(ve,2),Je=Ge[0],xe=Ge[1],ke=function(we,Se,De){var me,Ve=e.rowClassName;return typeof Ve=="function"?me=_e(Ve(we,Se,De)):me=_e(Ve),_e(ce({},"".concat(y.value,"-row-selected"),xe.value.has(I.value(we,Se))),me)};l({selectedKeySet:xe});var Pe=de(function(){return typeof e.indentSize=="number"?e.indentSize:15}),Be=function(we){var Se=ae(Je(O(Y(re(we)))));return Se};return function(){var Te,we,Se=e.expandIcon,De=Se===void 0?a.expandIcon||Vbe(d.value):Se,me=e.pagination,Ve=e.loading,Me=e.bordered,Ie,Ze;if(me!==!1&&(Te=be.value)!==null&&Te!==void 0&&Te.total){var Ce;be.value.size?Ce=be.value.size:Ce=b.value==="small"||b.value==="middle"?"small":void 0;var ye=function(lt){return D(Wp,P(P({},be.value),{},{class:["".concat(y.value,"-pagination ").concat(y.value,"-pagination-").concat(lt),be.value.class],size:Ce}),null)},Ue=p.value==="rtl"?"left":"right",qe=be.value.position;if(qe!==null&&Array.isArray(qe)){var ie=qe.find(function(ct){return ct.indexOf("top")!==-1}),Oe=qe.find(function(ct){return ct.indexOf("bottom")!==-1}),Ke=qe.every(function(ct){return"".concat(ct)==="none"});!ie&&!Oe&&!Ke&&(Ze=ye(Ue)),ie&&(Ie=ye(ie.toLowerCase().replace("top",""))),Oe&&(Ze=ye(Oe.toLowerCase().replace("bottom","")))}else Ze=ye(Ue)}var Xe;typeof Ve=="boolean"?Xe={spinning:Ve}:Yt(Ve)==="object"&&(Xe=P({spinning:!0},Ve));var Re=_e("".concat(y.value,"-wrapper"),ce({},"".concat(y.value,"-wrapper-rtl"),p.value==="rtl"),i.class),Ae=dn(e,["columns"]);return D("div",{class:Re,style:i.style},[D(Ws,P({spinning:!1},Xe),{default:function(){return[Ie,D(pfe,P(P(P({},i),Ae),{},{expandedRowKeys:e.expandedRowKeys,defaultExpandedRowKeys:e.defaultExpandedRowKeys,expandIconColumnIndex:q.value,indentSize:Pe.value,expandIcon:De,columns:f.value,direction:p.value,prefixCls:y.value,class:_e((we={},ce(we,"".concat(y.value,"-middle"),b.value==="middle"),ce(we,"".concat(y.value,"-small"),b.value==="small"),ce(we,"".concat(y.value,"-bordered"),Me),ce(we,"".concat(y.value,"-empty"),u.value.length===0),we)),data:B.value,rowKey:I.value,rowClassName:ke,internalHooks:Ev,internalRefs:W,onUpdateInternalRefs:M,transformColumns:Be,transformCellText:m.value}),P(P({},a),{},{emptyText:function(){var ot,wt;return((ot=a.emptyText)===null||ot===void 0?void 0:ot.call(a))||((wt=e.locale)===null||wt===void 0?void 0:wt.emptyText)||Z.value("Table")}})),Ze]}})])}}}),Cbe=He({name:"ATable",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne();return l({table:o}),function(){var r,f=i,v=f.columns||ZS((r=a.default)===null||r===void 0?void 0:r.call(a));return D(xbe,P(P({ref:o},i),{},{columns:v||[],expandedRowRender:a.expandedRowRender,contextSlots:P({},a)}),a)}}});const KZ=Cbe,sm=He({name:"ATableColumn",slots:["title","filterIcon"],render:function(){return null}}),cm=He({name:"ATableColumnGroup",slots:["title"],__ANT_TABLE_COLUMN_GROUP:!0,render:function(){return null}});var d0=He(P(P({},ife),{},{name:"ATableSummaryRow"})),h0=He(P(P({},rfe),{},{name:"ATableSummaryCell"})),um=Xn(ofe,{Cell:h0,Row:d0,name:"ATableSummary"});const Sbe=Xn(KZ,{SELECTION_ALL:Hv,SELECTION_INVERT:Pv,SELECTION_NONE:Qv,SELECTION_COLUMN:Xo,EXPAND_COLUMN:os,Column:sm,ColumnGroup:cm,Summary:um,install:function(e){return e.component(um.name,um),e.component(h0.name,h0),e.component(d0.name,d0),e.component(KZ.name,KZ),e.component(sm.name,sm),e.component(cm.name,cm),e}});var zbe={prefixCls:String,placeholder:String,value:String,handleClear:Function,disabled:{type:Boolean,default:void 0},onChange:Function};const kbe=He({compatConfig:{MODE:3},name:"Search",inheritAttrs:!1,props:pn(zbe,{placeholder:""}),emits:["change"],setup:function(e,t){var i=t.emit,a=function(o){if(i("change",o),o.target.value===""){var r;(r=e.handleClear)===null||r===void 0||r.call(e)}};return function(){var l=e.placeholder,o=e.value,r=e.prefixCls,f=e.disabled;return D(Ai,{placeholder:l,class:r,value:o,onChange:a,disabled:f,allowClear:!0},{prefix:function(){return D($0,null,null)}})}}});var Fbe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"};const Jbe=Fbe;function RV(n){for(var e=1;e=0;i("itemSelect",y.key,!m)},r=function(y){i("itemRemove",[y.key])},f=function(y){i("scroll",y)},v=de(function(){return Kbe(e.pagination)});rt([v,function(){return e.filteredRenderItems}],function(){if(v.value){var p=Math.ceil(e.filteredRenderItems.length/v.value.pageSize);l.value>p&&(l.value=p)}},{immediate:!0});var b=de(function(){var p=e.filteredRenderItems,y=p;return v.value&&(y=p.slice((l.value-1)*v.value.pageSize,l.value*v.value.pageSize)),y}),Z=function(y){l.value=y};return a({items:b}),function(){var p=e.prefixCls,y=e.filteredRenderItems,X=e.selectedKeys,m=e.disabled,N=e.showRemove,G=null;v.value&&(G=D(Wp,{simple:!0,size:"small",disabled:m,class:"".concat(p,"-pagination"),total:y.length,pageSize:v.value.pageSize,current:l.value,onChange:Z},null));var d=b.value.map(function(u){var s=u.renderedEl,h=u.renderedText,c=u.item,W=c.disabled,M=X.indexOf(c.key)>=0;return D(Ube,{disabled:m||W,key:c.key,item:c,renderedText:h,renderedEl:s,checked:M,prefixCls:p,onClick:o,onRemove:r,showRemove:N},null)});return D(ln,null,[D("ul",{class:_e("".concat(p,"-content"),ce({},"".concat(p,"-content-show-remove"),N)),onScroll:f},[d]),G])}}});const Pbe=Hbe;var Qbe=function(){return null};function Bbe(n){return n&&!Si(n)&&Object.prototype.toString.call(n)==="[object Object]"}function Wb(n){return n.filter(function(e){return!e.disabled}).map(function(e){return e.key})}var Abe={prefixCls:String,dataSource:{type:Array,default:[]},filter:String,filterOption:Function,checkedKeys:We.arrayOf(We.string),handleFilter:Function,handleClear:Function,renderItem:Function,showSearch:{type:Boolean,default:!1},searchPlaceholder:String,notFoundContent:We.any,itemUnit:String,itemsUnit:String,renderList:We.any,disabled:{type:Boolean,default:void 0},direction:String,showSelectAll:{type:Boolean,default:void 0},remove:String,selectAll:String,selectCurrent:String,selectInvert:String,removeAll:String,removeCurrent:String,selectAllLabel:We.any,showRemove:{type:Boolean,default:void 0},pagination:We.any,onItemSelect:Function,onItemSelectAll:Function,onItemRemove:Function,onScroll:Function};const TV=He({compatConfig:{MODE:3},name:"TransferList",inheritAttrs:!1,props:Abe,slots:["footer","titleText"],setup:function(e,t){var i=t.attrs,a=t.slots,l=Ne(""),o=Ne(),r=Ne(),f=function(c,W){var M=c?c(W):null,I=!!M&&Ri(M).length>0;return I||(M=D(Pbe,P(P({},W),{},{ref:r}),null)),{customize:I,bodyContent:M}},v=function(c){var W=e.renderItem,M=W===void 0?Qbe:W,I=M(c),w=Bbe(I);return{renderedText:w?I.value:I,renderedEl:w?I.label:I,item:c}},b=Ne([]),Z=Ne([]);qt(function(){var h=[],c=[];e.dataSource.forEach(function(W){var M=v(W),I=M.renderedText;if(l.value&&l.value.trim()&&!d(I,W))return null;h.push(W),c.push(M)}),b.value=h,Z.value=c});var p=de(function(){var h=e.checkedKeys;return h.length===0?"none":b.value.every(function(c){return h.indexOf(c.key)>=0||!!c.disabled})?"all":"part"}),y=de(function(){return Wb(b.value)}),X=function(c,W){return Array.from(new Set([].concat(yt(c),yt(e.checkedKeys)))).filter(function(M){return W.indexOf(M)===-1})},m=function(c){var W=c.disabled,M=c.prefixCls,I=p.value==="all",w=D(lr,{disabled:W,checked:I,indeterminate:p.value==="part",class:"".concat(M,"-checkbox"),onChange:function(){var x=y.value;e.onItemSelectAll(X(I?[]:x,I?e.checkedKeys:[]))}},null);return w},N=function(c){var W,M=c.target.value;l.value=M,(W=e.handleFilter)===null||W===void 0||W.call(e,c)},G=function(c){var W;l.value="",(W=e.handleClear)===null||W===void 0||W.call(e,c)},d=function(c,W){var M=e.filterOption;return M?M(l.value,W):c.indexOf(l.value)>=0},u=function(c,W){var M=e.itemsUnit,I=e.itemUnit,w=e.selectAllLabel;if(w)return typeof w=="function"?w({selectedCount:c,totalCount:W}):w;var C=W>1?M:I;return D(ln,null,[(c>0?"".concat(c,"/"):"")+W,Fl(" "),C])},s=function(c,W,M,I,w,C){var x=w?D("div",{class:"".concat(c,"-body-search-wrapper")},[D(kbe,{prefixCls:"".concat(c,"-search"),onChange:N,handleClear:G,placeholder:W,value:l.value,disabled:C},null)]):null,R,g=EW(i),S=g.onEvents,L=f(I,P(P({},e),{},{filteredItems:b.value,filteredRenderItems:Z.value,selectedKeys:M},S)),V=L.bodyContent,Y=L.customize;return Y?R=D("div",{class:"".concat(c,"-body-customize-wrapper")},[V]):R=b.value.length?V:D("div",{class:"".concat(c,"-body-not-found")},[e.notFoundContent]),D("div",{class:w?"".concat(c,"-body ").concat(c,"-body-with-search"):"".concat(c,"-body"),ref:o},[x,R])};return function(){var h,c,W,M=e.prefixCls,I=e.checkedKeys,w=e.disabled,C=e.showSearch,x=e.searchPlaceholder,R=e.selectAll,g=e.selectCurrent,S=e.selectInvert,L=e.removeAll,V=e.removeCurrent,Y=e.renderList,T=e.onItemSelectAll,J=e.onItemRemove,U=e.showSelectAll,K=U===void 0?!0:U,H=e.showRemove,k=e.pagination,F=(h=a.footer)===null||h===void 0?void 0:h.call(a,P({},e)),O=_e(M,(c={},ce(c,"".concat(M,"-with-pagination"),!!k),ce(c,"".concat(M,"-with-footer"),!!F),c)),Q=s(M,x,I,Y,C,w),oe=F?D("div",{class:"".concat(M,"-footer")},[F]):null,se=!H&&!k&&m({disabled:w,prefixCls:M}),he=null;H?he=D(Yi,null,{default:function(){return[k&&D(Yi.Item,{key:"removeCurrent",onClick:function(){var E=Wb((r.value.items||[]).map(function($){return $.item}));J==null||J(E)}},{default:function(){return[V]}}),D(Yi.Item,{key:"removeAll",onClick:function(){J==null||J(y.value)}},{default:function(){return[L]}})]}}):he=D(Yi,null,{default:function(){return[D(Yi.Item,{key:"selectAll",onClick:function(){var E=y.value;T(X(E,[]))}},{default:function(){return[R]}}),k&&D(Yi.Item,{onClick:function(){var E=Wb((r.value.items||[]).map(function($){return $.item}));T(X(E,[]))}},{default:function(){return[g]}}),D(Yi.Item,{key:"selectInvert",onClick:function(){var E;k?E=Wb((r.value.items||[]).map(function(ee){return ee.item})):E=y.value;var $=new Set(I),ae=[],le=[];E.forEach(function(ee){$.has(ee)?le.push(ee):ae.push(ee)}),T(X(ae,le))}},{default:function(){return[S]}})]}});var pe=D(Pr,{class:"".concat(M,"-header-dropdown"),overlay:he,disabled:w},{default:function(){return[D(Jh,null,null)]}});return D("div",{class:O,style:i.style},[D("div",{class:"".concat(M,"-header")},[K?D(ln,null,[se,pe]):null,D("span",{class:"".concat(M,"-header-selected")},[D("span",null,[u(I.length,b.value.length)]),D("span",{class:"".concat(M,"-header-title")},[(W=a.titleText)===null||W===void 0?void 0:W.call(a)])])]),Q,oe])}}});function xV(){}var DX=function(e){var t=e.disabled,i=e.moveToLeft,a=i===void 0?xV:i,l=e.moveToRight,o=l===void 0?xV:l,r=e.leftArrowText,f=r===void 0?"":r,v=e.rightArrowText,b=v===void 0?"":v,Z=e.leftActive,p=e.rightActive,y=e.class,X=e.style,m=e.direction,N=e.oneWay;return D("div",{class:y,style:X},[D(qi,{type:"primary",size:"small",disabled:t||!p,onClick:o,icon:D(m!=="rtl"?xo:Nc,null,null)},{default:function(){return[b]}}),!N&&D(qi,{type:"primary",size:"small",disabled:t||!Z,onClick:a,icon:D(m!=="rtl"?Nc:xo,null,null)},{default:function(){return[f]}})])};DX.displayName="Operation";DX.inheritAttrs=!1;const _be=DX;var $be=function(){return{id:String,prefixCls:String,dataSource:{type:Array,default:[]},disabled:{type:Boolean,default:void 0},targetKeys:{type:Array,default:void 0},selectedKeys:{type:Array,default:void 0},render:{type:Function},listStyle:{type:[Function,Object],default:function(){return{}}},operationStyle:{type:Object,default:void 0},titles:{type:Array},operations:{type:Array},showSearch:{type:Boolean,default:!1},filterOption:{type:Function},searchPlaceholder:String,notFoundContent:We.any,locale:{type:Object,default:function(){return{}}},rowKey:{type:Function},showSelectAll:{type:Boolean,default:void 0},selectAllLabels:{type:Array},children:{type:Function},oneWay:{type:Boolean,default:void 0},pagination:{type:[Object,Boolean],default:void 0},onChange:Function,onSelectChange:Function,onSearch:Function,onScroll:Function,"onUpdate:targetKeys":Function,"onUpdate:selectedKeys":Function}},qbe=He({compatConfig:{MODE:3},name:"ATransfer",inheritAttrs:!1,props:$be(),slots:["leftTitle","rightTitle","children","render","notFoundContent","leftSelectAllLabel","rightSelectAllLabel","footer"],setup:function(e,t){var i=t.emit,a=t.attrs,l=t.slots,o=t.expose,r=Nt("transfer",e),f=r.configProvider,v=r.prefixCls,b=r.direction,Z=Ne([]),p=Ne([]),y=Hi();rt(function(){return e.selectedKeys},function(){var H,k;Z.value=((H=e.selectedKeys)===null||H===void 0?void 0:H.filter(function(F){return e.targetKeys.indexOf(F)===-1}))||[],p.value=((k=e.selectedKeys)===null||k===void 0?void 0:k.filter(function(F){return e.targetKeys.indexOf(F)>-1}))||[]},{immediate:!0});var X=function(k,F){var O={notFoundContent:F("Transfer")},Q=ui(l,e,"notFoundContent");return Q&&(O.notFoundContent=Q),e.searchPlaceholder!==void 0&&(O.searchPlaceholder=e.searchPlaceholder),P(P(P({},k),O),e.locale)},m=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=e.dataSource,oe=Q===void 0?[]:Q,se=k==="right"?Z.value:p.value,he=se.filter(function(_){return!oe.some(function(E){return!!(_===E.key&&E.disabled)})}),pe=k==="right"?he.concat(O):O.filter(function(_){return he.indexOf(_)===-1}),re=k==="right"?"left":"right";k==="right"?Z.value=[]:p.value=[],i("update:targetKeys",pe),h(re,[]),i("change",pe,k,he),y.onFieldChange()},N=function(){m("left")},G=function(){m("right")},d=function(k,F){h(k,F)},u=function(k){return d("left",k)},s=function(k){return d("right",k)},h=function(k,F){k==="left"?(e.selectedKeys||(Z.value=F),i("update:selectedKeys",[].concat(yt(F),yt(p.value))),i("selectChange",F,on(p.value))):(e.selectedKeys||(p.value=F),i("update:selectedKeys",[].concat(yt(F),yt(Z.value))),i("selectChange",on(Z.value),F))},c=function(k,F){var O=F.target.value;i("search",k,O)},W=function(k){c("left",k)},M=function(k){c("right",k)},I=function(k){i("search",k,"")},w=function(){I("left")},C=function(){I("right")},x=function(k,F,O){var Q=yt(k==="left"?Z.value:p.value),oe=Q.indexOf(F);oe>-1&&Q.splice(oe,1),O&&Q.push(F),h(k,Q)},R=function(k,F){return x("left",k,F)},g=function(k,F){return x("right",k,F)},S=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=O.filter(function(oe){return!k.includes(oe)});i("update:targetKeys",Q),i("change",Q,"left",yt(k))},L=function(k,F){i("scroll",k,F)},V=function(k){L("left",k)},Y=function(k){L("right",k)},T=function(k,F){return typeof k=="function"?k({direction:F}):k},J=Ne([]),U=Ne([]);qt(function(){var H=e.dataSource,k=e.rowKey,F=e.targetKeys,O=F===void 0?[]:F,Q=[],oe=new Array(O.length);H.forEach(function(se){k&&(se.key=k(se));var he=O.indexOf(se.key);he!==-1?oe[he]=se:Q.push(se)}),J.value=Q,U.value=oe}),o({handleSelectChange:h});var K=function(k){var F,O,Q,oe,se,he,pe,re=e.disabled,_=e.operations,E=_===void 0?[]:_,$=e.showSearch,ae=e.listStyle,le=e.operationStyle,ee=e.filterOption,te=e.showSelectAll,be=e.selectAllLabels,ne=be===void 0?[]:be,B=e.oneWay,q=e.pagination,ue=e.id,ve=ue===void 0?y.id.value:ue,Ge=a.class,Je=a.style,xe=l.children,ke=!xe&&q,Pe=f.renderEmpty,Be=X(k,Pe),Te=l.footer,we=e.render||l.render,Se=p.value.length>0,De=Z.value.length>0,me=_e(v.value,Ge,(F={},ce(F,"".concat(v.value,"-disabled"),re),ce(F,"".concat(v.value,"-customize-list"),!!xe),F)),Ve=e.titles,Me=(O=(Q=Ve&&Ve[0])!==null&&Q!==void 0?Q:(oe=l.leftTitle)===null||oe===void 0?void 0:oe.call(l))!==null&&O!==void 0?O:(Be.titles||["",""])[0],Ie=(se=(he=Ve&&Ve[1])!==null&&he!==void 0?he:(pe=l.rightTitle)===null||pe===void 0?void 0:pe.call(l))!==null&&se!==void 0?se:(Be.titles||["",""])[1];return D("div",{class:me,style:Je,id:ve},[D(TV,P({key:"leftList",prefixCls:"".concat(v.value,"-list"),dataSource:J.value,filterOption:ee,style:T(ae,"left"),checkedKeys:Z.value,handleFilter:W,handleClear:w,onItemSelect:R,onItemSelectAll:u,renderItem:we,showSearch:$,renderList:xe,onScroll:V,disabled:re,direction:b.value==="rtl"?"right":"left",showSelectAll:te,selectAllLabel:ne[0]||l.leftSelectAllLabel,pagination:ke},Be),{titleText:function(){return Me},footer:Te}),D(_be,{key:"operation",class:"".concat(v.value,"-operation"),rightActive:De,rightArrowText:E[0],moveToRight:G,leftActive:Se,leftArrowText:E[1],moveToLeft:N,style:le,disabled:re,direction:b.value,oneWay:B},null),D(TV,P({key:"rightList",prefixCls:"".concat(v.value,"-list"),dataSource:U.value,filterOption:ee,style:T(ae,"right"),checkedKeys:p.value,handleFilter:M,handleClear:C,onItemSelect:g,onItemSelectAll:s,onItemRemove:S,renderItem:we,showSearch:$,renderList:xe,onScroll:Y,disabled:re,direction:b.value==="rtl"?"left":"right",showSelectAll:te,selectAllLabel:ne[1]||l.rightSelectAllLabel,showRemove:B,pagination:ke},Be),{titleText:function(){return Ie},footer:Te})])};return function(){return D(ju,{componentName:"Transfer",defaultLocale:Mr.Transfer,children:K},null)}}});const eme=wi(qbe);function tme(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function nme(n){var e=n||{},t=e.label,i=e.value,a=e.children,l=i||"value";return{_title:t?[t]:["title","label"],value:l,key:l,children:a||"children"}}function eW(n){return n.disabled||n.disableCheckbox||n.checkable===!1}function ime(n,e){var t=[];function i(a){a.forEach(function(l){t.push(l[e.value]);var o=l[e.children];o&&i(o)})}return i(n),t}function CV(n){return n==null}var TS=Symbol("TreeSelectContextPropsKey");function lme(n){return hn(TS,n)}function ame(){return un(TS,{})}var rme={width:0,height:0,display:"flex",overflow:"hidden",opacity:0,border:0,padding:0,margin:0};const ome=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["notFoundContent","menuItemSelectedIcon"],setup:function(e,t){var i=t.slots,a=t.expose,l=Fh(),o=Q0(),r=ame(),f=Ne(),v=kG(function(){return r.treeData},[function(){return l.open},function(){return r.treeData}],function(c){return c[0]}),b=de(function(){var c=o.checkable,W=o.halfCheckedKeys,M=o.checkedKeys;return c?{checked:M,halfChecked:W}:null});rt(function(){return l.open},function(){cn(function(){if(l.open&&!l.multiple&&o.checkedKeys.length){var c;(c=f.value)===null||c===void 0||c.scrollTo({key:o.checkedKeys[0]})}})},{immediate:!0,flush:"post"});var Z=de(function(){return String(l.searchValue).toLowerCase()}),p=function(W){return Z.value?String(W[o.treeNodeFilterProp]).toLowerCase().includes(Z.value):!1},y=Gn(o.treeDefaultExpandedKeys),X=Gn(null);rt(function(){return l.searchValue},function(){l.searchValue&&(X.value=ime(on(r.treeData),on(r.fieldNames)))},{immediate:!0});var m=de(function(){return o.treeExpandedKeys?o.treeExpandedKeys.slice():l.searchValue?X.value:y.value}),N=function(W){var M;y.value=W,X.value=W,(M=o.onTreeExpand)===null||M===void 0||M.call(o,W)},G=function(W){W.preventDefault()},d=function(W,M){var I,w=M.node,C=o.checkable,x=o.checkedKeys;if(!(C&&eW(w))&&((I=r.onSelect)===null||I===void 0||I.call(r,w.key,{selected:!x.includes(w.key)}),!l.multiple)){var R;(R=l.toggleOpen)===null||R===void 0||R.call(l,!1)}},u=Ne(null),s=de(function(){return o.keyEntities[u.value]}),h=function(W){u.value=W};return a({scrollTo:function(){for(var W,M,I=arguments.length,w=new Array(I),C=0;C0&&arguments[0]!==void 0?arguments[0]:[];return Ri(t).map(function(i){var a,l,o;if(!ume(i))return null;for(var r=i.children||{},f=i.key,v={},b=0,Z=Object.entries(i.props);b1&&arguments[1]!==void 0?arguments[1]:"0",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return b.map(function(y,X){var m="".concat(Z,"-").concat(X),N=y[l.value],G=t.includes(N),d=v(y[l.children]||[],m,G),u=D(jX,y,{default:function(){return[d.map(function(c){return c.node})]}});if(e===N&&(o=u),G){var s={pos:m,node:u,children:d};return p||r.push(s),s}return null}).filter(function(y){return y})}r||(r=[],v(i),r.sort(function(b,Z){var p=b.node.props.value,y=Z.node.props.value,X=t.indexOf(p),m=t.indexOf(y);return X-m}))}Object.defineProperty(n,"triggerNode",{get:function(){return f(),o}}),Object.defineProperty(n,"allCheckedNodes",{get:function(){return f(),a?r:r.map(function(b){var Z=b.node;return Z})}})}function fme(n,e){var t=e.id,i=e.pId,a=e.rootPId,l={},o=[],r=n.map(function(f){var v=P({},f),b=v[t];return l[b]=v,v.key=v.key||b,v});return r.forEach(function(f){var v=f[i],b=l[v];b&&(b.children=b.children||[],b.children.push(f)),(v===a||!b&&a===null)&&o.push(f)}),o}function bme(n,e,t){var i=Gn();return rt([t,n,e],function(){var a=t.value;n.value?i.value=t.value?fme(on(n.value),P({id:"id",pId:"pId",rootPId:null},a!==!0?a:{})):on(n.value).slice():i.value=dme(on(e.value))},{immediate:!0,deep:!0}),i}const mme=function(n){var e=Gn({valueLabels:new Map}),t=Gn();rt(n,function(){t.value=on(n.value)},{immediate:!0});var i=de(function(){var a=e.value.valueLabels,l=new Map,o=t.value.map(function(r){var f,v=r.value,b=(f=r.label)!==null&&f!==void 0?f:a.get(v);return l.set(v,b),P(P({},r),{},{label:b})});return e.value.valueLabels=l,o});return[i]},pme=function(n,e){var t=Gn(new Map),i=Gn({});return qt(function(){var a=e.value,l=Eh(n.value,{fieldNames:a,initWrapper:function(r){return P(P({},r),{},{valueEntities:new Map})},processEntity:function(r,f){var v=r.node[a.value];f.valueEntities.set(v,r)}});t.value=l.valueEntities,i.value=l.keyEntities}),{valueEntities:t,keyEntities:i}},yme=function(n,e,t,i,a,l){var o=Gn([]),r=Gn([]);return qt(function(){var f=n.value.map(function(p){var y=p.value;return y}),v=e.value.map(function(p){var y=p.value;return y}),b=f.filter(function(p){return!i.value[p]});if(t.value){var Z=ir(f,!0,i.value,a.value,l.value);f=Z.checkedKeys,v=Z.halfCheckedKeys}o.value=Array.from(new Set([].concat(yt(b),yt(f)))),r.value=v}),[o,r]},Zme=function(n,e,t){var i=t.treeNodeFilterProp,a=t.filterTreeNode,l=t.fieldNames;return de(function(){var o=l.value.children,r=e.value,f=i==null?void 0:i.value;if(!r||a.value===!1)return n.value;var v;if(typeof a.value=="function")v=a.value;else{var b=r.toUpperCase();v=function(y,X){var m=X[f];return String(m).toUpperCase().includes(b)}}function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=[],m=0,N=p.length;m2&&arguments[2]!==void 0?arguments[2]:0,W=arguments.length>3&&arguments[3]!==void 0?arguments[3]:h.length,M=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,I=Math.floor((c+W)/2),w=h.slice(0,I);if(s.textContent=w,c>=W-1)for(var C=W;C>=c;C-=1){var x=h.slice(0,C);if(s.textContent=x,Z()||!x)return C===h.length?{finished:!1,vNode:h}:{finished:!0,vNode:x}}return Z()?d(s,h,I,W,I):d(s,h,c,I,M)}function u(s){var h=s.nodeType;if(h===Cme){var c=s.textContent||"",W=document.createTextNode(c);return G(W),d(W,c)}return{finished:!1,vNode:null}}return p.some(function(s){var h=u(s),c=h.finished,W=h.vNode;return W&&X.push(W),c}),{content:X,text:ha.innerHTML,ellipsis:!0}};var Jme=["prefixCls","class","direction","component"],Dme=function(){return{prefixCls:String,direction:String,component:String}},Ome=He({name:"ATypography",inheritAttrs:!1,props:Dme(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("typography",e),o=l.prefixCls,r=l.direction;return function(){var f,v=P(P({},e),a);v.prefixCls,v.class,v.direction;var b=v.component,Z=b===void 0?"article":b,p=jt(v,Jme);return D(Z,P({class:_e(o.value,ce({},"".concat(o.value,"-rtl"),r.value==="rtl"),a.class)},p),{default:function(){return[(f=i.default)===null||f===void 0?void 0:f.call(i)]}})}}});const ma=Ome;var jme=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,i=[],a=0;a"u"){f&&console.warn("unable to use e.clipboardData"),f&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var Z=FV[e.format]||FV.default;window.clipboardData.setData(Z,n)}else b.clipboardData.clearData(),b.clipboardData.setData(e.format,n);e.onCopy&&(b.preventDefault(),e.onCopy(b.clipboardData))}),document.body.appendChild(o),a.selectNodeContents(o),l.addRange(a);var v=document.execCommand("copy");if(!v)throw new Error("copy command was unsuccessful");r=!0}catch(b){f&&console.error("unable to copy using execCommand: ",b),f&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",n),e.onCopy&&e.onCopy(window.clipboardData),r=!0}catch(Z){f&&console.error("unable to copy using clipboardData: ",Z),f&&console.error("falling back to prompt"),t=Kme("message"in e?e.message:Eme),window.prompt(t,n)}}finally{l&&(typeof l.removeRange=="function"?l.removeRange(a):l.removeAllRanges()),o&&document.body.removeChild(o),i()}return r}var Pme={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"};const Qme=Pme;function JV(n){for(var e=1;e1&&ne,ue=K,ve;if(_&&v.isEllipsis&&!v.expanded&&!ne){var Ge,Je=pe.title,xe=Je||"";!Je&&(typeof K=="string"||typeof K=="number")&&(xe=String(K)),xe=(Ge=xe)===null||Ge===void 0?void 0:Ge.slice(String(v.ellipsisContent||"").length),ue=D(ln,null,[on(v.ellipsisContent),D("span",{title:xe,"aria-hidden":"true"},[OV]),E])}else ue=D(ln,null,[K,E]);ue=R(e,ue);var ke=$&&_&&v.isEllipsis&&!v.expanded&&!ne,Pe=i.ellipsisTooltip?i.ellipsisTooltip():$;return D(rr,{onResize:w,disabled:!_},{default:function(){return[D(ma,P({ref:b,class:[(F={},ce(F,"".concat(r.value,"-").concat(Q),Q),ce(F,"".concat(r.value,"-disabled"),oe),ce(F,"".concat(r.value,"-ellipsis"),_),ce(F,"".concat(r.value,"-single-line"),_===1&&!v.isEllipsis),ce(F,"".concat(r.value,"-ellipsis-single-line"),B),ce(F,"".concat(r.value,"-ellipsis-multiple-line"),q),F),se],style:P(P({},he),{},{WebkitLineClamp:q?_:void 0}),"aria-label":ve,direction:f.value,onClick:U.indexOf("text")!==-1?m:function(){}},be),{default:function(){return[ke?D(Xr,{title:$===!0?K:Pe},{default:function(){return[D("span",null,[ue])]}}):ue,Y()]}})]}})}},null)}}});const Ah=l0e;var a0e=["ellipsis","rel"],r0e=function(){return dn(P(P({},Bh()),{},{ellipsis:{type:Boolean,default:void 0}}),["component"])},Lp=function(e,t){var i=t.slots,a=t.attrs,l=P(P({},e),a),o=l.ellipsis,r=l.rel,f=jt(l,a0e);Ci(Yt(o)!=="object","Typography.Link","`ellipsis` only supports boolean value.");var v=P(P({},f),{},{rel:r===void 0&&f.target==="_blank"?"noopener noreferrer":r,ellipsis:!!o,component:"a"});return delete v.navigate,D(Ah,v,i)};Lp.displayName="ATypographyLink";Lp.inheritAttrs=!1;Lp.props=r0e();const HX=Lp;var o0e=function(){return dn(Bh(),["component"])},Rp=function(e,t){var i=t.slots,a=t.attrs,l=P(P({},e),{},{component:"div"},a);return D(Ah,l,i)};Rp.displayName="ATypographyParagraph";Rp.inheritAttrs=!1;Rp.props=o0e();const PX=Rp;var s0e=function(){return P(P({},dn(Bh(),["component"])),{},{ellipsis:{type:[Boolean,Object],default:void 0}})},Tp=function(e,t){var i=t.slots,a=t.attrs,l=e.ellipsis;Ci(Yt(l)!=="object"||!l||!("expandable"in l)&&!("rows"in l),"Typography.Text","`ellipsis` do not support `expandable` or `rows` props.");var o=P(P({},e),{},{ellipsis:l&&Yt(l)==="object"?dn(l,["expandable","rows"]):l,component:"span"},a);return D(Ah,o,i)};Tp.displayName="ATypographyText";Tp.inheritAttrs=!1;Tp.props=s0e();const QX=Tp;var c0e=["level"],u0e=GK(1,2,3,4,5),d0e=function(){return P(P({},dn(Bh(),["component","strong"])),{},{level:Number})},xp=function(e,t){var i=t.slots,a=t.attrs,l=e.level,o=l===void 0?1:l,r=jt(e,c0e),f;u0e.indexOf(o)!==-1?f="h".concat(o):(Ci(!1,"Typography","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."),f="h1");var v=P(P({},r),{},{component:f},a);return D(Ah,v,i)};xp.displayName="ATypographyTitle";xp.inheritAttrs=!1;xp.props=d0e();const BX=xp;ma.Text=QX;ma.Title=BX;ma.Paragraph=PX;ma.Link=HX;ma.Base=Ah;ma.install=function(n){return n.component(ma.name,ma),n.component(ma.Text.displayName,QX),n.component(ma.Title.displayName,BX),n.component(ma.Paragraph.displayName,PX),n.component(ma.Link.displayName,HX),n};function h0e(n,e){var t="cannot ".concat(n.method," ").concat(n.action," ").concat(e.status,"'"),i=new Error(t);return i.status=e.status,i.method=n.method,i.url=n.action,i}function jV(n){var e=n.responseText||n.response;if(!e)return e;try{return JSON.parse(e)}catch{return e}}function f0e(n){var e=new XMLHttpRequest;n.onProgress&&e.upload&&(e.upload.onprogress=function(l){l.total>0&&(l.percent=l.loaded/l.total*100),n.onProgress(l)});var t=new FormData;n.data&&Object.keys(n.data).forEach(function(a){var l=n.data[a];if(Array.isArray(l)){l.forEach(function(o){t.append("".concat(a,"[]"),o)});return}t.append(a,l)}),n.file instanceof Blob?t.append(n.filename,n.file,n.file.name):t.append(n.filename,n.file),e.onerror=function(l){n.onError(l)},e.onload=function(){return e.status<200||e.status>=300?n.onError(h0e(n,e),jV(e)):n.onSuccess(jV(e),e)},e.open(n.method,n.action,!0),n.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var i=n.headers||{};return i["X-Requested-With"]!==null&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(i).forEach(function(a){i[a]!==null&&e.setRequestHeader(a,i[a])}),e.send(t),{abort:function(){e.abort()}}}var b0e=+new Date,m0e=0;function BZ(){return"vc-upload-".concat(b0e,"-").concat(++m0e)}const AZ=function(n,e){if(n&&e){var t=Array.isArray(e)?e:e.split(","),i=n.name||"",a=n.type||"",l=a.replace(/\/.*$/,"");return t.some(function(o){var r=o.trim();if(/^\*(\/\*)?$/.test(o))return!0;if(r.charAt(0)==="."){var f=i.toLowerCase(),v=r.toLowerCase(),b=[v];return(v===".jpg"||v===".jpeg")&&(b=[".jpg",".jpeg"]),b.some(function(Z){return f.endsWith(Z)})}return/\/\*$/.test(r)?l===r.replace(/\/.*$/,""):!!(a===r||/^\w+$/.test(r))})}return!0};function p0e(n,e){var t=n.createReader(),i=[];function a(){t.readEntries(function(l){var o=Array.prototype.slice.apply(l);i=i.concat(o);var r=!o.length;r?e(i):a()})}a()}var y0e=function(e,t,i){var a=function l(o,r){o.path=r||"",o.isFile?o.file(function(f){i(f)&&(o.fullPath&&!f.webkitRelativePath&&(Object.defineProperties(f,{webkitRelativePath:{writable:!0}}),f.webkitRelativePath=o.fullPath.replace(/^\//,""),Object.defineProperties(f,{webkitRelativePath:{writable:!1}})),t([f]))}):o.isDirectory&&p0e(o,function(f){f.forEach(function(v){l(v,"".concat(r).concat(o.name,"/"))})})};e.forEach(function(l){a(l.webkitGetAsEntry())})};const Z0e=y0e;var kS=function(){return{capture:[Boolean,String],multipart:{type:Boolean,default:void 0},name:String,disabled:{type:Boolean,default:void 0},componentTag:String,action:[String,Function],method:String,directory:{type:Boolean,default:void 0},data:[Object,Function],headers:Object,accept:String,multiple:{type:Boolean,default:void 0},onBatchStart:Function,onReject:Function,onStart:Function,onError:Function,onSuccess:Function,onProgress:Function,beforeUpload:Function,customRequest:Function,withCredentials:{type:Boolean,default:void 0},openFileDialogOnClick:{type:Boolean,default:void 0},prefixCls:String,id:String,onMouseenter:Function,onMouseleave:Function,onClick:Function}};function v0e(n,e,t,i){for(var a=-1,l=n==null?0:n.length;++a0&&arguments[0]!==void 0?arguments[0]:"",t=e.split("/"),i=t[t.length-1],a=i.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(a)||[""])[0]},JS=function(e){return e.indexOf("image/")===0},Q0e=function(e){if(e.type&&!e.thumbUrl)return JS(e.type);var t=e.thumbUrl||e.url||"",i=P0e(t);return/^data:image\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(i)?!0:!(/^data:/.test(t)||i)},es=200;function B0e(n){return new Promise(function(e){if(!n.type||!JS(n.type)){e("");return}var t=document.createElement("canvas");t.width=es,t.height=es,t.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(es,"px; height: ").concat(es,"px; z-index: 9999; display: none;"),document.body.appendChild(t);var i=t.getContext("2d"),a=new Image;a.onload=function(){var l=a.width,o=a.height,r=es,f=es,v=0,b=0;l>o?(f=o*(es/l),b=-(f-r)/2):(r=l*(es/o),v=-(r-f)/2),i.drawImage(a,v,b,r,f);var Z=t.toDataURL();document.body.removeChild(t),e(Z)},a.src=window.URL.createObjectURL(n)})}var A0e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"};const _0e=A0e;function PV(n){for(var e=1;e"u"||typeof window>"u"||!window.FileReader||!window.File||!(G.originFileObj instanceof File||G.originFileObj instanceof Blob)||G.thumbUrl!==void 0||(G.thumbUrl="",e.previewFile&&e.previewFile(G.originFileObj).then(function(d){G.thumbUrl=d||"",o.update()}))})});var r=function(d,u){if(e.onPreview)return u==null||u.preventDefault(),e.onPreview(d)},f=function(d){typeof e.onDownload=="function"?e.onDownload(d):d.url&&window.open(d.url)},v=function(d){var u;(u=e.onRemove)===null||u===void 0||u.call(e,d)},b=function(d){var u=d.file,s=e.iconRender||i.iconRender;if(s)return s({file:u,listType:e.listType});var h=u.status==="uploading",c=e.isImageUrl&&e.isImageUrl(u)?D(D0e,null,null):D(E0e,null,null),W=D(h?Yr:z0e,null,null);return e.listType==="picture"?W=h?D(Yr,null,null):c:e.listType==="picture-card"&&(W=h?e.locale.uploading:c),W},Z=function(d){var u=d.customIcon,s=d.callback,h=d.prefixCls,c=d.title,W={type:"text",size:"small",title:c,onClick:function(){s()},class:"".concat(h,"-list-item-card-actions-btn")};return Si(u)?D(qi,W,{icon:function(){return u}}):D(qi,W,{default:function(){return[D("span",null,[u])]}})};a({handlePreview:r,handleDownload:f});var p=Nt("upload",e),y=p.prefixCls,X=p.direction,m=de(function(){var G;return G={},ce(G,"".concat(y.value,"-list"),!0),ce(G,"".concat(y.value,"-list-").concat(e.listType),!0),ce(G,"".concat(y.value,"-list-rtl"),X.value==="rtl"),G}),N=de(function(){return P(P(P({},Dh("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),BW("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),{},{class:m.value,appear:l.value})});return function(){var G=e.listType,d=e.locale,u=e.isImageUrl,s=e.items,h=s===void 0?[]:s,c=e.showPreviewIcon,W=e.showRemoveIcon,M=e.showDownloadIcon,I=e.removeIcon,w=e.previewIcon,C=e.downloadIcon,x=e.progress,R=e.appendAction,g=e.itemRender,S=e.appendActionVisible,L=R==null?void 0:R();return D(JW,P(P({},N.value),{},{tag:"div"}),{default:function(){return[h.map(function(Y){var T=Y.uid;return D(tpe,{key:T,locale:d,prefixCls:y.value,file:Y,items:h,progress:x,listType:G,isImgUrl:u,showPreviewIcon:c,showRemoveIcon:W,showDownloadIcon:M,onPreview:r,onDownload:f,onClose:v,removeIcon:I,previewIcon:w,downloadIcon:C,itemRender:g},P(P({},i),{},{iconRender:b,actionIconRender:Z}))}),R?vl(D(npe,{key:"__ant_upload_appendAction"},{default:function(){return L}}),[[gr,!!S]]):null]}})}}});var lpe=["class","style"],zd="__LIST_IGNORE_".concat(Date.now(),"__");const hm=He({compatConfig:{MODE:3},name:"AUpload",inheritAttrs:!1,props:pn(FS(),{type:"select",multiple:!1,action:"",data:{},accept:"",showUploadList:!0,listType:"text",disabled:!1,supportServerRender:!0}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=Hi(),r=Wi(e.defaultFileList||[],{value:Ot(e,"fileList"),postState:function(R){var g=Date.now();return(R??[]).map(function(S,L){return!S.uid&&!Object.isFrozen(S)&&(S.uid="__AUTO__".concat(g,"_").concat(L,"__")),S})}}),f=ft(r,2),v=f[0],b=f[1],Z=Ne("drop"),p=Ne();Kt(function(){jn(e.fileList!==void 0||a.value===void 0,"Upload","`value` is not a valid prop, do you mean `fileList`?"),jn(e.transformFile===void 0,"Upload","`transformFile` is deprecated. Please use `beforeUpload` directly."),jn(e.remove===void 0,"Upload","`remove` props is deprecated. Please use `remove` event.")});var y=function(R,g,S){var L,V,Y=yt(g);e.maxCount===1?Y=Y.slice(-1):e.maxCount&&(Y=Y.slice(0,e.maxCount)),b(Y);var T={file:R,fileList:Y};S&&(T.event=S),(L=e["onUpdate:fileList"])===null||L===void 0||L.call(e,T.fileList),(V=e.onChange)===null||V===void 0||V.call(e,T),o.onFieldChange()},X=function(){var x=Yc(Xa.mark(function R(g,S){var L,V,Y,T;return Xa.wrap(function(U){for(;;)switch(U.prev=U.next){case 0:if(L=e.beforeUpload,V=e.transformFile,Y=g,!L){U.next=13;break}return U.next=5,L(g,S);case 5:if(T=U.sent,T!==!1){U.next=8;break}return U.abrupt("return",!1);case 8:if(delete g[zd],T!==zd){U.next=12;break}return Object.defineProperty(g,zd,{value:!0,configurable:!0}),U.abrupt("return",!1);case 12:Yt(T)==="object"&&T&&(Y=T);case 13:if(!V){U.next=17;break}return U.next=16,V(Y);case 16:Y=U.sent;case 17:return U.abrupt("return",Y);case 18:case"end":return U.stop()}},R)}));return function(g,S){return x.apply(this,arguments)}}(),m=function(R){var g=R.filter(function(V){return!V.file[zd]});if(g.length){var S=g.map(function(V){return Xb(V.file)}),L=yt(v.value);S.forEach(function(V){L=Nb(V,L)}),S.forEach(function(V,Y){var T=V;if(g[Y].parsedFile)V.status="uploading";else{var J=V.originFileObj,U;try{U=new File([J],J.name,{type:J.type})}catch{U=new Blob([J],{type:J.type}),U.name=J.name,U.lastModifiedDate=new Date,U.lastModified=new Date().getTime()}U.uid=V.uid,T=U}y(T,L)})}},N=function(R,g,S){try{typeof R=="string"&&(R=JSON.parse(R))}catch{}if($Z(g,v.value)){var L=Xb(g);L.status="done",L.percent=100,L.response=R,L.xhr=S;var V=Nb(L,v.value);y(L,V)}},G=function(R,g){if($Z(g,v.value)){var S=Xb(g);S.status="uploading",S.percent=R.percent;var L=Nb(S,v.value);y(S,L,R)}},d=function(R,g,S){if($Z(S,v.value)){var L=Xb(S);L.error=R,L.response=g,L.status="error";var V=Nb(L,v.value);y(L,V)}},u=function(R){var g,S=e.onRemove||e.remove;Promise.resolve(typeof S=="function"?S(R):S).then(function(L){if(L!==!1){var V=H0e(R,v.value);if(V){var Y,T;g=P(P({},R),{},{status:"removed"}),(Y=v.value)===null||Y===void 0||Y.forEach(function(J){var U=g.uid!==void 0?"uid":"name";J[U]===g[U]&&!Object.isFrozen(J)&&(J.status="removed")}),(T=p.value)===null||T===void 0||T.abort(g),y(g,V)}}})},s=function(R){if(Z.value=R.type,R.type==="drop"){var g;(g=e.onDrop)===null||g===void 0||g.call(e,R)}};l({onBatchStart:m,onSuccess:N,onProgress:G,onError:d,fileList:v,upload:p});var h=Nt("upload",e),c=h.prefixCls,W=h.direction,M=Br("Upload",Mr.Upload,de(function(){return e.locale})),I=ft(M,1),w=I[0],C=function(R,g){var S=e.removeIcon,L=e.previewIcon,V=e.downloadIcon,Y=e.previewFile,T=e.onPreview,J=e.onDownload,U=e.disabled,K=e.isImageUrl,H=e.progress,k=e.itemRender,F=e.iconRender,O=e.showUploadList,Q=typeof O=="boolean"?{}:O,oe=Q.showDownloadIcon,se=Q.showPreviewIcon,he=Q.showRemoveIcon;return O?D(ipe,{listType:e.listType,items:v.value,previewFile:Y,onPreview:T,onDownload:J,onRemove:u,showRemoveIcon:!U&&he,showPreviewIcon:se,showDownloadIcon:oe,removeIcon:S,previewIcon:L,downloadIcon:V,iconRender:F,locale:w.value,isImageUrl:K,progress:H,itemRender:k,appendActionVisible:g,appendAction:R},P({},i)):R==null?void 0:R()};return function(){var x,R,g,S=e.listType,L=e.disabled,V=e.type;a.class,a.style;var Y=jt(a,lpe),T=P(P(P({onBatchStart:m,onError:d,onProgress:G,onSuccess:N},Y),e),{},{id:(x=e.id)!==null&&x!==void 0?x:o.id.value,prefixCls:c.value,beforeUpload:X,onChange:void 0});if(delete T.remove,(!i.default||L)&&delete T.id,V==="drag"){var J,U,K=_e(c.value,(J={},ce(J,"".concat(c.value,"-drag"),!0),ce(J,"".concat(c.value,"-drag-uploading"),v.value.some(function(O){return O.status==="uploading"})),ce(J,"".concat(c.value,"-drag-hover"),Z.value==="dragover"),ce(J,"".concat(c.value,"-disabled"),L),ce(J,"".concat(c.value,"-rtl"),W.value==="rtl"),J),a.class);return D("span",null,[D("div",{class:K,onDrop:s,onDragover:s,onDragleave:s,style:a.style},[D(UV,P(P({},T),{},{ref:p,class:"".concat(c.value,"-btn")}),P({default:function(){return[D("div",{class:"".concat(c,"-drag-container")},[(U=i.default)===null||U===void 0?void 0:U.call(i)])]}},i))]),C()])}var H=_e(c.value,(R={},ce(R,"".concat(c.value,"-select"),!0),ce(R,"".concat(c.value,"-select-").concat(S),!0),ce(R,"".concat(c.value,"-disabled"),L),ce(R,"".concat(c.value,"-rtl"),W.value==="rtl"),R)),k=ti((g=i.default)===null||g===void 0?void 0:g.call(i)),F=function(Q){return D("div",{class:H,style:Q},[D(UV,P(P({},T),{},{ref:p}),i)])};return S==="picture-card"?D("span",{class:_e("".concat(c.value,"-picture-card-wrapper"),a.class)},[C(F,!!(k&&k.length))]):D("span",{class:a.class},[F(k&&k.length?void 0:{display:"none"}),C()])}}});var ape=["height"],rpe=["style"];const fm=He({compatConfig:{MODE:3},name:"AUploadDragger",inheritAttrs:!1,props:FS(),setup:function(e,t){var i=t.slots,a=t.attrs;return function(){var l=e.height,o=jt(e,ape),r=a.style,f=jt(a,rpe),v=P(P(P({},o),f),{},{type:"drag",style:P(P({},r),{},{height:typeof l=="number"?"".concat(l,"px"):l})});return D(hm,v,i)}}});var ope=fm;const spe=Xn(hm,{Dragger:fm,LIST_IGNORE:zd,install:function(e){return e.component(hm.name,hm),e.component(fm.name,fm),e}}),QV=Object.freeze(Object.defineProperty({__proto__:null,Affix:PT,Alert:M6,Anchor:nc,AnchorLink:BT,AutoComplete:Z6,AutoCompleteOptGroup:y6,AutoCompleteOption:p6,Avatar:fc,AvatarGroup:jm,BackTop:B6,Badge:Db,BadgeRibbon:Um,Breadcrumb:bc,BreadcrumbItem:Mh,BreadcrumbSeparator:Bm,Button:qi,ButtonGroup:Km,Calendar:bee,Card:Xu,CardGrid:t0,CardMeta:e0,Carousel:ane,Cascader:ore,CheckableTag:a0,Checkbox:lr,CheckboxGroup:l0,Col:mr,Collapse:_d,CollapsePanel:n0,Comment:yre,ConfigProvider:bG,DatePicker:Kre,Descriptions:qre,DescriptionsItem:a9,DirectoryTree:rm,Divider:noe,Drawer:Noe,Dropdown:Pr,DropdownButton:Nh,Empty:cs,Form:us,FormItem:QC,FormItemRest:Dm,Grid:yte,Image:Yse,ImagePreviewGroup:g9,Input:Ai,InputGroup:y9,InputNumber:jse,InputPassword:W9,InputSearch:Z9,Layout:tce,LayoutContent:ece,LayoutFooter:$se,LayoutHeader:_se,LayoutSider:qse,List:gce,ListItem:T9,ListItemMeta:L9,LocaleProvider:WT,Mentions:Ace,MentionsOption:nm,Menu:Yi,MenuDivider:Qm,MenuItem:Ro,MenuItemGroup:Pm,Modal:pl,MonthPicker:Qb,PageHeader:Oue,Pagination:Wp,Popconfirm:Kue,Popover:Ox,Progress:vX,QuarterPicker:Bb,Radio:ta,RadioButton:_m,RadioGroup:g1,RangePicker:Ab,Rate:Gde,Result:kde,Row:ru,Select:Ns,SelectOptGroup:f6,SelectOption:h6,Skeleton:ea,SkeletonAvatar:IX,SkeletonButton:XX,SkeletonImage:MX,SkeletonInput:NX,SkeletonTitle:Gp,Slider:ohe,Space:hhe,Spin:Ws,Statistic:Io,StatisticCountdown:wue,Step:im,Steps:Zhe,SubMenu:xu,Switch:Xhe,TabPane:qm,Table:Sbe,TableColumn:sm,TableColumnGroup:cm,TableSummary:um,TableSummaryCell:h0,TableSummaryRow:d0,Tabs:mc,Tag:$C,Textarea:q1,TimePicker:Mme,TimeRangePicker:dm,Timeline:ah,TimelineItem:Lh,Tooltip:Xr,Transfer:eme,Tree:IS,TreeNode:om,TreeSelect:Xme,TreeSelectNode:nW,Typography:ma,TypographyLink:HX,TypographyParagraph:PX,TypographyText:QX,TypographyTitle:BX,Upload:spe,UploadDragger:ope,WeekPicker:Pb,message:nG,notification:dG},Symbol.toStringTag,{value:"Module"})),cpe="3.2.15";var upe=function(e){return Object.keys(QV).forEach(function(t){var i=QV[t];i.install&&e.use(i)}),e.config.globalProperties.$message=nG,e.config.globalProperties.$notification=dG,e.config.globalProperties.$info=pl.info,e.config.globalProperties.$success=pl.success,e.config.globalProperties.$error=pl.error,e.config.globalProperties.$warning=pl.warning,e.config.globalProperties.$confirm=pl.confirm,e.config.globalProperties.$destroyAll=pl.destroyAll,e};const dpe={version:cpe,install:upe};var iW={},hpe={get exports(){return iW},set exports(n){iW=n}};function ms(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var f0={},fpe={get exports(){return f0},set exports(n){f0=n}};/*! + a `).concat(o,",").concat(o," 0 1 1 ").concat(-v,",").concat(b),p=Math.PI*2*o,y={stroke:t,strokeDasharray:"".concat(e/100*(p-a),"px ").concat(p,"px"),strokeDashoffset:"-".concat(a/2+n/100*(p-a),"px"),transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s"};return{pathString:Z,pathStyle:y}}const rde=He({compatConfig:{MODE:3},name:"VCCircle",props:pn(lde,nde),setup:function(e){Qg+=1;var t=Ne(Qg),i=de(function(){return Ag(e.percent)}),a=de(function(){return Ag(e.strokeColor)}),l=R1(),o=ft(l,2),r=o[0],f=o[1];ide(f);var v=function(){var Z=e.prefixCls,p=e.strokeWidth,y=e.strokeLinecap,X=e.gapDegree,m=e.gapPosition,N=0;return i.value.map(function(G,d){var u=a.value[d]||a.value[a.value.length-1],s=Object.prototype.toString.call(u)==="[object Object]"?"url(#".concat(Z,"-gradient-").concat(t.value,")"):"",h=_g(N,G,u,p,X,m),c=h.pathString,W=h.pathStyle;N+=G;var M={key:d,d:c,stroke:s,"stroke-linecap":y,"stroke-width":p,opacity:G===0?0:1,"fill-opacity":"0",class:"".concat(Z,"-circle-path"),style:W};return D("path",P({ref:r(d)},M),null)})};return function(){var b=e.prefixCls,Z=e.strokeWidth,p=e.trailWidth,y=e.gapDegree,X=e.gapPosition,m=e.trailColor,N=e.strokeLinecap;e.strokeColor;var G=jt(e,ade),d=_g(0,100,m,Z,y,X),u=d.pathString,s=d.pathStyle;delete G.percent;var h=a.value.find(function(W){return Object.prototype.toString.call(W)==="[object Object]"}),c={d:u,stroke:m,"stroke-linecap":N,"stroke-width":p||Z,"fill-opacity":"0",class:"".concat(b,"-circle-trail"),style:s};return D("svg",P({class:"".concat(b,"-circle"),viewBox:"0 0 100 100"},G),[h&&D("defs",null,[D("linearGradient",{id:"".concat(b,"-gradient-").concat(t.value),x1:"100%",y1:"0%",x2:"0%",y2:"0%"},[Object.keys(h).sort(function(W,M){return Bg(W)-Bg(M)}).map(function(W,M){return D("stop",{key:M,offset:W,"stop-color":h[W]},null)})])]),D("path",c,null),v().reverse()])}}});function ode(n){var e=n.percent,t=n.success,i=n.successPercent,a=pc(d0({success:t,successPercent:i}));return[a,pc(pc(e)-a)]}function sde(n){var e=n.success,t=e===void 0?{}:e,i=n.strokeColor,a=t.strokeColor;return[a||pu.green,i||null]}const cde=He({compatConfig:{MODE:3},name:"Circle",inheritAttrs:!1,props:wp(),setup:function(e,t){var i=t.slots,a=de(function(){if(e.gapDegree||e.gapDegree===0)return e.gapDegree;if(e.type==="dashboard")return 75}),l=de(function(){var p=e.width||120;return{width:typeof p=="number"?"".concat(p,"px"):p,height:typeof p=="number"?"".concat(p,"px"):p,fontSize:"".concat(p*.15+6,"px")}}),o=de(function(){return e.strokeWidth||6}),r=de(function(){return e.gapPosition||e.type==="dashboard"&&"bottom"||"top"}),f=de(function(){return ode(e)}),v=de(function(){return Object.prototype.toString.call(e.strokeColor)==="[object Object]"}),b=de(function(){return sde({success:e.success,strokeColor:e.strokeColor})}),Z=de(function(){var p;return p={},ce(p,"".concat(e.prefixCls,"-inner"),!0),ce(p,"".concat(e.prefixCls,"-circle-gradient"),v.value),p});return function(){var p;return D("div",{class:Z.value,style:l.value},[D(rde,{percent:f.value,strokeWidth:o.value,trailWidth:o.value,strokeColor:b.value,strokeLinecap:e.strokeLinecap,trailColor:e.trailColor,prefixCls:e.prefixCls,gapDegree:a.value,gapPosition:r.value},null),(p=i.default)===null||p===void 0?void 0:p.call(i)])}}});var ude=function(){return P(P({},wp()),{},{steps:Number,size:{type:String},strokeColor:String,trailColor:String})};const dde=He({compatConfig:{MODE:3},name:"Steps",props:ude(),setup:function(e,t){var i=t.slots,a=de(function(){return Math.round(e.steps*((e.percent||0)/100))}),l=de(function(){return e.size==="small"?2:14}),o=de(function(){for(var r=e.steps,f=e.strokeWidth,v=f===void 0?8:f,b=e.strokeColor,Z=e.trailColor,p=e.prefixCls,y=[],X=0;X=100?"success":Z||"normal"}),b=function(){var p=e.showInfo,y=e.format,X=e.type,m=e.percent,N=e.title,G=d0(e);if(!p)return null;var d,u=y||(i==null?void 0:i.format)||function(h){return"".concat(h,"%")},s=X==="line";return y||i!=null&&i.format||v.value!=="exception"&&v.value!=="success"?d=u(pc(m),pc(G)):v.value==="exception"?d=D(s?So:Ar,null,null):v.value==="success"&&(d=D(s?zh:ep,null,null)),D("span",{class:"".concat(l.value,"-text"),title:N===void 0&&typeof d=="string"?d:void 0},[d])};return function(){var Z=e.type,p=e.steps,y=e.strokeColor,X=e.title,m=b(),N;Z==="line"?N=p?D(dde,P(P({},e),{},{strokeColor:typeof y=="string"?y:void 0,prefixCls:l.value,steps:p}),{default:function(){return[m]}}):D(tde,P(P({},e),{},{prefixCls:l.value}),{default:function(){return[m]}}):(Z==="circle"||Z==="dashboard")&&(N=D(cde,P(P({},e),{},{prefixCls:l.value}),{default:function(){return[m]}}));var G=P(P({},r.value),{},ce({},"".concat(l.value,"-status-").concat(v.value),!0));return D("div",{class:G,title:X},[N])}}}),GX=wi(hde);function fde(n){var e=n.pageXOffset,t="scrollLeft";if(typeof e!="number"){var i=n.document;e=i.documentElement[t],typeof e!="number"&&(e=i.body[t])}return e}function bde(n){var e,t,i=n.ownerDocument,a=i.body,l=i&&i.documentElement,o=n.getBoundingClientRect();return e=o.left,t=o.top,e-=l.clientLeft||a.clientLeft||0,t-=l.clientTop||a.clientTop||0,{left:e,top:t}}function mde(n){var e=bde(n),t=n.ownerDocument,i=t.defaultView||t.parentWindow;return e.left+=fde(i),e.left}var pde={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const yde=pde;function $g(n){for(var e=1;e=X&&Zp?"true":"false","aria-posinset":p+1,"aria-setsize":y,tabindex:v?-1:0},[D("div",{class:"".concat(b,"-first")},[m]),D("div",{class:"".concat(b,"-second")},[m])])]);return Z&&(N=Z(N,e)),N}}});var Xde=function(){return{prefixCls:String,count:Number,value:Number,allowHalf:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},tooltips:Array,disabled:{type:Boolean,default:void 0},character:We.any,autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),direction:String,id:String,onChange:Function,onHoverChange:Function,"onUpdate:value":Function,onFocus:Function,onBlur:Function,onKeydown:Function}},Nde=He({compatConfig:{MODE:3},name:"ARate",inheritAttrs:!1,props:pn(Xde(),{value:0,count:5,allowHalf:!1,allowClear:!0,tabindex:0,direction:"ltr"}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.emit,o=t.expose,r=Nt("rate",e),f=r.prefixCls,v=r.direction,b=Hi(),Z=Ne(),p=R1(),y=ft(p,2),X=y[0],m=y[1],N=zn({value:e.value,focused:!1,cleanedValue:null,hoverValue:void 0});rt(function(){return e.value},function(){N.value=e.value});var G=function(S){return ds(m.value.get(S))},d=function(S,L){var V=v.value==="rtl",Y=S+1;if(e.allowHalf){var T=G(S),J=mde(T),U=T.clientWidth;(V&&L-J>U/2||!V&&L-J0&&!T||L===bt.RIGHT&&N.value>0&&T?(Y?N.value-=.5:N.value-=1,u(N.value),S.preventDefault()):L===bt.LEFT&&N.value0:!0,"Slider","`Slider[step]` should be a positive number in order to make Slider[dots] work.");var r=Object.keys(t).map(parseFloat).sort(function(v,b){return v-b});if(i&&a)for(var f=l;f<=o;f+=a)r.indexOf(f)===-1&&r.push(f);return r},B9=function(e,t){var i=t.attrs,a=i.prefixCls,l=i.vertical,o=i.reverse,r=i.marks,f=i.dots,v=i.step,b=i.included,Z=i.lowerBound,p=i.upperBound,y=i.max,X=i.min,m=i.dotStyle,N=i.activeDotStyle,G=y-X,d=Qde(l,r,f,v,X,y).map(function(u){var s,h="".concat(Math.abs(u-X)/G*100,"%"),c=!b&&u===p||b&&u<=p&&u>=Z,W=l?P(P({},m),{},ce({},o?"top":"bottom",h)):P(P({},m),{},ce({},o?"right":"left",h));c&&(W=P(P({},W),N));var M=_e((s={},ce(s,"".concat(a,"-dot"),!0),ce(s,"".concat(a,"-dot-active"),c),ce(s,"".concat(a,"-dot-reverse"),o),s));return D("span",{class:M,style:W,key:u},null)});return D("div",{class:"".concat(a,"-step")},[d])};B9.inheritAttrs=!1;const Bde=B9;var A9=function(e,t){var i=t.attrs,a=t.slots,l=i.class,o=i.vertical,r=i.reverse,f=i.marks,v=i.included,b=i.upperBound,Z=i.lowerBound,p=i.max,y=i.min,X=i.onClickLabel,m=Object.keys(f),N=a.mark,G=p-y,d=m.map(parseFloat).sort(function(u,s){return u-s}).map(function(u){var s,h=typeof f[u]=="function"?f[u]():f[u],c=Yt(h)==="object"&&!Si(h),W=c?h.label:h;if(!W&&W!==0)return null;N&&(W=N({point:u,label:W}));var M=!v&&u===b||v&&u<=b&&u>=Z,I=_e((s={},ce(s,"".concat(l,"-text"),!0),ce(s,"".concat(l,"-text-active"),M),s)),w=ce({marginBottom:"-50%"},r?"top":"bottom","".concat((u-y)/G*100,"%")),C=ce({transform:"translateX(".concat(r?"50%":"-50%",")"),msTransform:"translateX(".concat(r?"50%":"-50%",")")},r?"right":"left","".concat((u-y)/G*100,"%")),x=o?w:C,R=c?P(P({},x),h.style):x,g=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(S){return X(S,u)});return D("span",P({class:I,style:R,key:u,onMousedown:function(L){return X(L,u)}},g),[W])});return D("div",{class:l},[d])};A9.inheritAttrs=!1;const Ade=A9,_9=He({compatConfig:{MODE:3},name:"Handle",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o=Ne(!1),r=Ne(),f=function(){document.activeElement===r.value&&(o.value=!0)},v=function(d){o.value=!1,a("blur",d)},b=function(){o.value=!1},Z=function(){var d;(d=r.value)===null||d===void 0||d.focus()},p=function(){var d;(d=r.value)===null||d===void 0||d.blur()},y=function(){o.value=!0,Z()},X=function(d){d.preventDefault(),Z(),a("mousedown",d)};l({focus:Z,blur:p,clickFocus:y,ref:r});var m=null;Kt(function(){m=hi(document,"mouseup",f)}),fn(function(){var G;(G=m)===null||G===void 0||G.remove()});var N=de(function(){var G,d,u=e.vertical,s=e.offset,h=e.reverse;return u?(G={},ce(G,h?"top":"bottom","".concat(s,"%")),ce(G,h?"bottom":"top","auto"),ce(G,"transform",h?null:"translateY(+50%)"),G):(d={},ce(d,h?"right":"left","".concat(s,"%")),ce(d,h?"left":"right","auto"),ce(d,"transform","translateX(".concat(h?"+":"-","50%)")),d)});return function(){var G=e.prefixCls,d=e.disabled,u=e.min,s=e.max,h=e.value,c=e.tabindex,W=e.ariaLabel,M=e.ariaLabelledBy,I=e.ariaValueTextFormatter,w=e.onMouseenter,C=e.onMouseleave,x=_e(i.class,ce({},"".concat(G,"-handle-click-focused"),o.value)),R={"aria-valuemin":u,"aria-valuemax":s,"aria-valuenow":h,"aria-disabled":!!d},g=[i.style,N.value],S=c||0;(d||c===null)&&(S=null);var L;I&&(L=I(h));var V=P(P(P({},i),{},{role:"slider",tabindex:S},R),{},{class:x,onBlur:v,onKeydown:b,onMousedown:X,onMouseenter:w,onMouseleave:C,ref:r,style:g});return D("div",P(P({},V),{},{"aria-label":W,"aria-labelledby":M,"aria-valuetext":L}),null)}}});function EZ(n,e){try{return Object.keys(e).some(function(t){return n.target===e[t].ref})}catch{return!1}}function $9(n,e){var t=e.min,i=e.max;return ni}function eV(n){return n.touches.length>1||n.type.toLowerCase()==="touchend"&&n.touches.length>0}function tV(n,e){var t=e.marks,i=e.step,a=e.min,l=e.max,o=Object.keys(t).map(parseFloat);if(i!==null){var r=Math.pow(10,q9(i)),f=Math.floor((l*r-a*r)/(i*r)),v=Math.min((n-a)/i,f),b=Math.round(v)*i+a;o.push(b)}var Z=o.map(function(p){return Math.abs(n-p)});return o[Z.indexOf(Math.min.apply(Math,yt(Z)))]}function q9(n){var e=n.toString(),t=0;return e.indexOf(".")>=0&&(t=e.length-e.indexOf(".")-1),t}function nV(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.clientY:e.pageX)/t}function iV(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.touches[0].clientY:e.touches[0].pageX)/t}function lV(n,e){var t=e.getBoundingClientRect();return n?t.top+t.height*.5:window.pageXOffset+t.left+t.width*.5}function gX(n,e){var t=e.max,i=e.min;return n<=i?i:n>=t?t:n}function eS(n,e){var t=e.step,i=isFinite(tV(n,e))?tV(n,e):0;return t===null?i:parseFloat(i.toFixed(q9(t)))}function ku(n){n.stopPropagation(),n.preventDefault()}function _de(n,e,t){var i={increase:function(r,f){return r+f},decrease:function(r,f){return r-f}},a=i[n](Object.keys(t.marks).indexOf(JSON.stringify(e)),1),l=Object.keys(t.marks)[a];return t.step?i[n](e,t.step):Object.keys(t.marks).length&&t.marks[l]?t.marks[l]:e}function tS(n,e,t){var i="increase",a="decrease",l=i;switch(n.keyCode){case bt.UP:l=e&&t?a:i;break;case bt.RIGHT:l=!e&&t?a:i;break;case bt.DOWN:l=e&&t?i:a;break;case bt.LEFT:l=!e&&t?i:a;break;case bt.END:return function(o,r){return r.max};case bt.HOME:return function(o,r){return r.min};case bt.PAGE_UP:return function(o,r){return o+r.step*2};case bt.PAGE_DOWN:return function(o,r){return o-r.step*2};default:return}return function(o,r){return _de(l,o,r)}}var $de=["index","directives","className","style"];function Ps(){}function nS(n){var e={id:String,min:Number,max:Number,step:Number,marks:We.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:We.object,maximumTrackStyle:We.object,handleStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),trackStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),railStyle:We.object,dotStyle:We.object,activeDotStyle:We.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return He({compatConfig:{MODE:3},name:"CreateSlider",mixins:[Rc,n],inheritAttrs:!1,slots:["mark"],props:pn(e,{prefixCls:"rc-slider",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:["change","blur","focus"],data:function(){var i=this.step,a=this.max,l=this.min,o=isFinite(a-l)?(a-l)%i===0:!0;return Ci(i&&Math.floor(i)===i?o:!0,"Slider[max] - Slider[min] (".concat(a-l,") should be a multiple of Slider[step] (").concat(i,")")),this.handlesRefs={},{}},mounted:function(){var i=this;this.$nextTick(function(){i.document=i.sliderRef&&i.sliderRef.ownerDocument;var a=i.autofocus,l=i.disabled;a&&!l&&i.focus()})},beforeUnmount:function(){var i=this;this.$nextTick(function(){i.removeDocumentEvents()})},methods:{defaultHandle:function(i){var a=i.index;i.directives;var l=i.className,o=i.style,r=jt(i,$de);if(delete r.dragging,r.value===null)return null;var f=P(P({},r),{},{class:l,style:o,key:a});return D(_9,f,null)},onDown:function(i,a){var l=a,o=this.$props,r=o.draggableTrack,f=o.vertical,v=this.$data.bounds,b=r&&this.positionGetValue?this.positionGetValue(l)||[]:[],Z=EZ(i,this.handlesRefs);if(this.dragTrack=r&&v.length>=2&&!Z&&!b.map(function(y,X){var m=X?!0:y>=v[X];return X===b.length-1?y<=v[X]:m}).some(function(y){return!y}),this.dragTrack)this.dragOffset=l,this.startBounds=yt(v);else{if(!Z)this.dragOffset=0;else{var p=lV(f,i.target);this.dragOffset=l-p,l=p}this.onStart(l)}},onMouseDown:function(i){if(i.button===0){this.removeDocumentEvents();var a=this.$props.vertical,l=nV(a,i);this.onDown(i,l),this.addDocumentMouseEvents()}},onTouchStart:function(i){if(!eV(i)){var a=this.vertical,l=iV(a,i);this.onDown(i,l),this.addDocumentTouchEvents(),ku(i)}},onFocus:function(i){var a=this.vertical;if(EZ(i,this.handlesRefs)&&!this.dragTrack){var l=lV(a,i.target);this.dragOffset=0,this.onStart(l),ku(i),this.$emit("focus",i)}},onBlur:function(i){this.dragTrack||this.onEnd(),this.$emit("blur",i)},onMouseUp:function(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove:function(i){if(!this.sliderRef){this.onEnd();return}var a=nV(this.vertical,i);this.onMove(i,a-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove:function(i){if(eV(i)||!this.sliderRef){this.onEnd();return}var a=iV(this.vertical,i);this.onMove(i,a-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown:function(i){this.sliderRef&&EZ(i,this.handlesRefs)&&this.onKeyboard(i)},onClickMarkLabel:function(i,a){var l=this;i.stopPropagation(),this.onChange({sValue:a}),this.setState({sValue:a},function(){return l.onEnd(!0)})},getSliderStart:function(){var i=this.sliderRef,a=this.vertical,l=this.reverse,o=i.getBoundingClientRect();return a?l?o.bottom:o.top:window.pageXOffset+(l?o.right:o.left)},getSliderLength:function(){var i=this.sliderRef;if(!i)return 0;var a=i.getBoundingClientRect();return this.vertical?a.height:a.width},addDocumentTouchEvents:function(){this.onTouchMoveListener=hi(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=hi(this.document,"touchend",this.onEnd)},addDocumentMouseEvents:function(){this.onMouseMoveListener=hi(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=hi(this.document,"mouseup",this.onEnd)},removeDocumentEvents:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus:function(){var i;this.$props.disabled||(i=this.handlesRefs[0])===null||i===void 0||i.focus()},blur:function(){var i=this;this.$props.disabled||Object.keys(this.handlesRefs).forEach(function(a){var l,o;(l=i.handlesRefs[a])===null||l===void 0||(o=l.blur)===null||o===void 0||o.call(l)})},calcValue:function(i){var a=this.vertical,l=this.min,o=this.max,r=Math.abs(Math.max(i,0)/this.getSliderLength()),f=a?(1-r)*(o-l)+l:r*(o-l)+l;return f},calcValueByPos:function(i){var a=this.reverse?-1:1,l=a*(i-this.getSliderStart()),o=this.trimAlignValue(this.calcValue(l));return o},calcOffset:function(i){var a=this.min,l=this.max,o=(i-a)/(l-a);return Math.max(0,o*100)},saveSlider:function(i){this.sliderRef=i},saveHandle:function(i,a){this.handlesRefs[i]=a}},render:function(){var i,a=this.prefixCls,l=this.marks,o=this.dots,r=this.step,f=this.included,v=this.disabled,b=this.vertical,Z=this.reverse,p=this.min,y=this.max,X=this.maximumTrackStyle,m=this.railStyle,N=this.dotStyle,G=this.activeDotStyle,d=this.id,u=this.$attrs,s=u.class,h=u.style,c=this.renderSlider(),W=c.tracks,M=c.handles,I=_e(a,s,(i={},ce(i,"".concat(a,"-with-marks"),Object.keys(l).length),ce(i,"".concat(a,"-disabled"),v),ce(i,"".concat(a,"-vertical"),b),i)),w={vertical:b,marks:l,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,reverse:Z,class:"".concat(a,"-mark"),onClickLabel:v?Ps:this.onClickMarkLabel},C=ce({},Ui?"onTouchstartPassive":"onTouchstart",v?Ps:this.onTouchStart);return D("div",P(P({id:d,ref:this.saveSlider,tabindex:"-1",class:I},C),{},{onMousedown:v?Ps:this.onMouseDown,onMouseup:v?Ps:this.onMouseUp,onKeydown:v?Ps:this.onKeyDown,onFocus:v?Ps:this.onFocus,onBlur:v?Ps:this.onBlur,style:h}),[D("div",{class:"".concat(a,"-rail"),style:P(P({},X),m)},null),W,D(Bde,{prefixCls:a,vertical:b,reverse:Z,marks:l,dots:o,step:r,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,dotStyle:N,activeDotStyle:G},null),M,D(Ade,w,{mark:this.$slots.mark}),xh(this)])}})}var qde=He({compatConfig:{MODE:3},name:"Slider",mixins:[Rc],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:["beforeChange","afterChange","change"],data:function(){var e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler:function(e){this.setChangeValue(e)},deep:!0},min:function(){var e=this.sValue;this.setChangeValue(e)},max:function(){var e=this.sValue;this.setChangeValue(e)}},methods:{setChangeValue:function(e){var t=e!==void 0?e:this.sValue,i=this.trimAlignValue(t,this.$props);i!==this.sValue&&(this.setState({sValue:i}),$9(t,this.$props)&&this.$emit("change",i))},onChange:function(e){var t=!Mo(this,"value"),i=e.sValue>this.max?P(P({},e),{},{sValue:this.max}):e;t&&this.setState(i);var a=i.sValue;this.$emit("change",a)},onStart:function(e){this.setState({dragging:!0});var t=this.sValue;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e,i!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:i}))},onEnd:function(e){var t=this.dragging;this.removeDocumentEvents(),(t||e)&&this.$emit("afterChange",this.sValue),this.setState({dragging:!1})},onMove:function(e,t){ku(e);var i=this.sValue,a=this.calcValueByPos(t);a!==i&&this.onChange({sValue:a})},onKeyboard:function(e){var t=this.$props,i=t.reverse,a=t.vertical,l=tS(e,a,i);if(l){ku(e);var o=this.sValue,r=l(o,this.$props),f=this.trimAlignValue(r);if(f===o)return;this.onChange({sValue:f}),this.$emit("afterChange",f),this.onEnd()}},getLowerBound:function(){var e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound:function(){return this.$data.sValue1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;var i=P(P({},this.$props),t),a=gX(e,i);return eS(a,i)},getTrack:function(e){var t=e.prefixCls,i=e.reverse,a=e.vertical,l=e.included,o=e.minimumTrackStyle,r=e.mergedTrackStyle,f=e.length,v=e.offset;return D(Q9,{class:"".concat(t,"-track"),vertical:a,included:l,offset:v,reverse:i,length:f,style:P(P({},o),r)},null)},renderSlider:function(){var e=this,t=this.prefixCls,i=this.vertical,a=this.included,l=this.disabled,o=this.minimumTrackStyle,r=this.trackStyle,f=this.handleStyle,v=this.tabindex,b=this.ariaLabelForHandle,Z=this.ariaLabelledByForHandle,p=this.ariaValueTextFormatterForHandle,y=this.min,X=this.max,m=this.startPoint,N=this.reverse,G=this.handle,d=this.defaultHandle,u=G||d,s=this.sValue,h=this.dragging,c=this.calcOffset(s),W=u({class:"".concat(t,"-handle"),prefixCls:t,vertical:i,offset:c,value:s,dragging:h,disabled:l,min:y,max:X,reverse:N,index:0,tabindex:v,ariaLabel:b,ariaLabelledBy:Z,ariaValueTextFormatter:p,style:f[0]||f,ref:function(C){return e.saveHandle(0,C)},onFocus:this.onFocus,onBlur:this.onBlur}),M=m!==void 0?this.calcOffset(m):0,I=r[0]||r;return{tracks:this.getTrack({prefixCls:t,reverse:N,vertical:i,included:a,offset:M,minimumTrackStyle:o,mergedTrackStyle:I,length:c-M}),handles:W}}}});const ehe=nS(qde);var wd=function(e){var t=e.value,i=e.handle,a=e.bounds,l=e.props,o=l.allowCross,r=l.pushable,f=Number(r),v=gX(t,l),b=v;return!o&&i!=null&&a!==void 0&&(i>0&&v<=a[i-1]+f&&(b=a[i-1]+f),i=a[i+1]-f&&(b=a[i+1]-f)),eS(b,l)},the={defaultValue:We.arrayOf(We.number),value:We.arrayOf(We.number),count:Number,pushable:yT(We.oneOfType([We.looseBool,We.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:We.arrayOf(We.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},nhe=He({compatConfig:{MODE:3},name:"Range",mixins:[Rc],inheritAttrs:!1,props:pn(the,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:["beforeChange","afterChange","change"],displayName:"Range",data:function(){var e=this,t=this.count,i=this.min,a=this.max,l=Array.apply(void 0,yt(Array(t+1))).map(function(){return i}),o=Mo(this,"defaultValue")?this.defaultValue:l,r=this.value;r===void 0&&(r=o);var f=r.map(function(b,Z){return wd({value:b,handle:Z,props:e.$props})}),v=f[0]===a?0:f.length-1;return{sHandle:null,recent:v,bounds:f}},watch:{value:{handler:function(e){var t=this.bounds;this.setChangeValue(e||t)},deep:!0},min:function(){var e=this.value;this.setChangeValue(e||this.bounds)},max:function(){var e=this.value;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue:function(e){var t=this,i=this.bounds,a=e.map(function(o,r){return wd({value:o,handle:r,bounds:i,props:t.$props})});if(i.length===a.length){if(a.every(function(o,r){return o===i[r]}))return null}else a=e.map(function(o,r){return wd({value:o,handle:r,props:t.$props})});if(this.setState({bounds:a}),e.some(function(o){return $9(o,t.$props)})){var l=e.map(function(o){return gX(o,t.$props)});this.$emit("change",l)}},onChange:function(e){var t=!Mo(this,"value");if(t)this.setState(e);else{var i={};["sHandle","recent"].forEach(function(o){e[o]!==void 0&&(i[o]=e[o])}),Object.keys(i).length&&this.setState(i)}var a=P(P({},this.$data),e),l=a.bounds;this.$emit("change",l)},positionGetValue:function(e){var t=this.getValue(),i=this.calcValueByPos(e),a=this.getClosestBound(i),l=this.getBoundNeedMoving(i,a),o=t[l];if(i===o)return null;var r=yt(t);return r[l]=i,r},onStart:function(e){var t=this.bounds;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e;var a=this.getClosestBound(i);this.prevMovedHandleIndex=this.getBoundNeedMoving(i,a),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});var l=t[this.prevMovedHandleIndex];if(i!==l){var o=yt(t);o[this.prevMovedHandleIndex]=i,this.onChange({bounds:o})}},onEnd:function(e){var t=this.sHandle;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit("afterChange",this.bounds),this.setState({sHandle:null})},onMove:function(e,t,i,a){ku(e);var l=this.$data,o=this.$props,r=o.max||100,f=o.min||0;if(i){var v=o.vertical?-t:t;v=o.reverse?-v:v;var b=r-Math.max.apply(Math,yt(a)),Z=f-Math.min.apply(Math,yt(a)),p=Math.min(Math.max(v/(this.getSliderLength()/100),Z),b),y=a.map(function(d){return Math.floor(Math.max(Math.min(d+p,r),f))});l.bounds.map(function(d,u){return d===y[u]}).some(function(d){return!d})&&this.onChange({bounds:y});return}var X=this.bounds,m=this.sHandle,N=this.calcValueByPos(t),G=X[m];N!==G&&this.moveTo(N)},onKeyboard:function(e){var t=this.$props,i=t.reverse,a=t.vertical,l=tS(e,a,i);if(l){ku(e);var o=this.bounds,r=this.sHandle,f=o[r===null?this.recent:r],v=l(f,this.$props),b=wd({value:v,handle:r,bounds:o,props:this.$props});if(b===f)return;var Z=!0;this.moveTo(b,Z)}},getClosestBound:function(e){for(var t=this.bounds,i=0,a=1;a=t[a]&&(i=a);return Math.abs(t[i+1]-e)=a.length||o<0)return!1;var r=t+i,f=a[o],v=this.pushable,b=Number(v),Z=i*(e[r]-f);return this.pushHandle(e,r,i,b-Z)?(e[t]=f,!0):!1},trimAlignValue:function(e){var t=this.sHandle,i=this.bounds;return wd({value:e,handle:t,bounds:i,props:this.$props})},ensureValueNotConflict:function(e,t,i){var a=i.allowCross,l=i.pushable,o=this.$data||{},r=o.bounds;if(e=e===void 0?o.sHandle:e,l=Number(l),!a&&e!=null&&r!==void 0){if(e>0&&t<=r[e-1]+l)return r[e-1]+l;if(e=r[e+1]-l)return r[e+1]-l}return t},getTrack:function(e){var t=e.bounds,i=e.prefixCls,a=e.reverse,l=e.vertical,o=e.included,r=e.offsets,f=e.trackStyle;return t.slice(0,-1).map(function(v,b){var Z,p=b+1,y=_e((Z={},ce(Z,"".concat(i,"-track"),!0),ce(Z,"".concat(i,"-track-").concat(p),!0),Z));return D(Q9,{class:y,vertical:l,reverse:a,included:o,offset:r[p-1],length:r[p]-r[p-1],style:f[b],key:p},null)})},renderSlider:function(){var e=this,t=this.sHandle,i=this.bounds,a=this.prefixCls,l=this.vertical,o=this.included,r=this.disabled,f=this.min,v=this.max,b=this.reverse,Z=this.handle,p=this.defaultHandle,y=this.trackStyle,X=this.handleStyle,m=this.tabindex,N=this.ariaLabelGroupForHandles,G=this.ariaLabelledByGroupForHandles,d=this.ariaValueTextFormatterGroupForHandles,u=Z||p,s=i.map(function(W){return e.calcOffset(W)}),h="".concat(a,"-handle"),c=i.map(function(W,M){var I,w=m[M]||0;(r||m[M]===null)&&(w=null);var C=t===M;return u({class:_e((I={},ce(I,h,!0),ce(I,"".concat(h,"-").concat(M+1),!0),ce(I,"".concat(h,"-dragging"),C),I)),prefixCls:a,vertical:l,dragging:C,offset:s[M],value:W,index:M,tabindex:w,min:f,max:v,reverse:b,disabled:r,style:X[M],ref:function(R){return e.saveHandle(M,R)},onFocus:e.onFocus,onBlur:e.onBlur,ariaLabel:N[M],ariaLabelledBy:G[M],ariaValueTextFormatter:d[M]})});return{tracks:this.getTrack({bounds:i,prefixCls:a,reverse:b,vertical:l,included:o,offsets:s,trackStyle:y}),handles:c}}}});const ihe=nS(nhe),lhe=He({compatConfig:{MODE:3},name:"SliderTooltip",inheritAttrs:!1,props:jx(),setup:function(e,t){var i=t.attrs,a=t.slots,l=Ne(null),o=Ne(null);function r(){At.cancel(o.value),o.value=null}function f(){o.value=At(function(){var b;(b=l.value)===null||b===void 0||b.forcePopupAlign(),o.value=null})}var v=function(){r(),e.visible&&f()};return rt([function(){return e.visible},function(){return e.title}],function(){v()},{flush:"post",immediate:!0}),T0(function(){v()}),fn(function(){r()}),function(){return D(Xr,P(P({ref:l},e),i),a)}}});var ahe=["value","dragging","index"],rhe=["tooltipPrefixCls","range","id"],ohe=function(e){return typeof e=="number"?e.toString():""},she=function(){return{id:String,prefixCls:String,tooltipPrefixCls:String,range:{type:[Boolean,Object],default:void 0},reverse:{type:Boolean,default:void 0},min:Number,max:Number,step:{type:[Number,Object]},marks:{type:Object},dots:{type:Boolean,default:void 0},value:{type:[Number,Array]},defaultValue:{type:[Number,Array]},included:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},tipFormatter:{type:[Function,Object],default:function(){return ohe}},tooltipVisible:{type:Boolean,default:void 0},tooltipPlacement:{type:String},getTooltipPopupContainer:{type:Function},autofocus:{type:Boolean,default:void 0},handleStyle:{type:[Object,Array]},trackStyle:{type:[Object,Array]},onChange:{type:Function},onAfterChange:{type:Function},onFocus:{type:Function},onBlur:{type:Function},"onUpdate:value":{type:Function}}},che=He({compatConfig:{MODE:3},name:"ASlider",inheritAttrs:!1,props:she(),slots:["mark"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=t.expose,r=Nt("slider",e),f=r.prefixCls,v=r.rootPrefixCls,b=r.direction,Z=r.getPopupContainer,p=r.configProvider,y=Hi(),X=Ne(),m=Ne({}),N=function(M,I){m.value[M]=I},G=de(function(){return e.tooltipPlacement?e.tooltipPlacement:e.vertical?b.value==="rtl"?"left":"right":"top"}),d=function(){var M;(M=X.value)===null||M===void 0||M.focus()},u=function(){var M;(M=X.value)===null||M===void 0||M.blur()},s=function(M){l("update:value",M),l("change",M),y.onFieldChange()},h=function(M){l("blur",M)};o({focus:d,blur:u});var c=function(M){var I=M.tooltipPrefixCls,w=M.info,C=w.value,x=w.dragging,R=w.index,g=jt(w,ahe),S=e.tipFormatter,L=e.tooltipVisible,V=e.getTooltipPopupContainer,Y=S?m.value[R]||x:!1,T=L||L===void 0&&Y;return D(lhe,{prefixCls:I,title:S?S(C):"",visible:T,placement:G.value,transitionName:"".concat(v.value,"-zoom-down"),key:R,overlayClassName:"".concat(f.value,"-tooltip"),getPopupContainer:V||Z.value},{default:function(){return[D(_9,P(P({},g),{},{value:C,onMouseenter:function(){return N(R,!0)},onMouseleave:function(){return N(R,!1)}}),null)]}})};return function(){var W=e.tooltipPrefixCls,M=e.range,I=e.id,w=I===void 0?y.id.value:I,C=jt(e,rhe),x=p.getPrefixCls("tooltip",W),R=_e(i.class,ce({},"".concat(f.value,"-rtl"),b.value==="rtl"));b.value==="rtl"&&!C.vertical&&(C.reverse=!C.reverse);var g;return Yt(M)==="object"&&(g=M.draggableTrack),M?D(ihe,P(P({},C),{},{step:C.step,draggableTrack:g,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:a.mark}):D(ehe,P(P({},C),{},{id:w,step:C.step,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:a.mark})}}});const uhe=wi(che);var dhe={small:8,middle:16,large:24},hhe=function(){return{prefixCls:String,size:{type:[String,Number,Array]},direction:We.oneOf(pi("horizontal","vertical")).def("horizontal"),align:We.oneOf(pi("start","end","center","baseline")),wrap:{type:Boolean,default:void 0}}};function fhe(n){return typeof n=="string"?dhe[n]:n||0}var bhe=He({compatConfig:{MODE:3},name:"ASpace",props:hhe(),slots:["split"],setup:function(e,t){var i=t.slots,a=Nt("space",e),l=a.prefixCls,o=a.space,r=a.direction,f=hC(),v=de(function(){var N,G,d;return(N=(G=e.size)!==null&&G!==void 0?G:(d=o.value)===null||d===void 0?void 0:d.size)!==null&&N!==void 0?N:"small"}),b=Ne(),Z=Ne();rt(v,function(){var N=(Array.isArray(v.value)?v.value:[v.value,v.value]).map(function(d){return fhe(d)}),G=ft(N,2);b.value=G[0],Z.value=G[1]},{immediate:!0});var p=de(function(){return e.align===void 0&&e.direction==="horizontal"?"center":e.align}),y=de(function(){var N;return _e(l.value,"".concat(l.value,"-").concat(e.direction),(N={},ce(N,"".concat(l.value,"-rtl"),r.value==="rtl"),ce(N,"".concat(l.value,"-align-").concat(p.value),p.value),N))}),X=de(function(){return r.value==="rtl"?"marginLeft":"marginRight"}),m=de(function(){var N={};return f.value&&(N.columnGap="".concat(b.value,"px"),N.rowGap="".concat(Z.value,"px")),P(P({},N),e.wrap&&{flexWrap:"wrap",marginBottom:"".concat(-Z.value,"px")})});return function(){var N,G,d=e.wrap,u=e.direction,s=u===void 0?"horizontal":u,h=Ri((N=i.default)===null||N===void 0?void 0:N.call(i)),c=h.length;if(c===0)return null;var W=(G=i.split)===null||G===void 0?void 0:G.call(i),M="".concat(l.value,"-item"),I=b.value,w=c-1;return D("div",{class:y.value,style:m.value},[h.map(function(C,x){var R={};return f.value||(s==="vertical"?x=t}function Fhe(n){return n&&Yt(n)==="object"&&!Array.isArray(n)&&!Zl(n)}const Vp=He({name:"Cell",props:["prefixCls","record","index","renderIndex","dataIndex","customRender","component","colSpan","rowSpan","fixLeft","fixRight","firstFixLeft","lastFixLeft","firstFixRight","lastFixRight","appendNode","additionalProps","ellipsis","align","rowType","isSticky","column","cellType","transformCellText"],slots:["appendNode"],setup:function(e,t){var i=t.slots,a=sS(),l=xhe(),o=l.onHover,r=l.startRow,f=l.endRow,v=de(function(){var N,G,d,u;return(N=(G=e.colSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.colSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.colspan}),b=de(function(){var N,G,d,u;return(N=(G=e.rowSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.rowSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.rowspan}),Z=Sa(function(){var N=e.index;return khe(N,b.value||1,r.value,f.value)}),p=She(),y=function(G,d){var u,s=e.record,h=e.index,c=e.additionalProps;s&&o(h,h+d-1),c==null||(u=c.onMouseenter)===null||u===void 0||u.call(c,G)},X=function(G){var d,u=e.record,s=e.additionalProps;u&&o(-1,-1),s==null||(d=s.onMouseleave)===null||d===void 0||d.call(s,G)},m=function N(G){var d=Ri(G)[0];return Zl(d)?d.type===Ms?d.children:Array.isArray(d.children)?N(d.children):void 0:d};return function(){var N,G,d,u,s,h,c=e.prefixCls,W=e.record,M=e.index,I=e.renderIndex,w=e.dataIndex,C=e.customRender,x=e.component,R=x===void 0?"td":x,g=e.fixLeft,S=e.fixRight,L=e.firstFixLeft,V=e.lastFixLeft,Y=e.firstFixRight,T=e.lastFixRight,J=e.appendNode,U=J===void 0?(N=i.appendNode)===null||N===void 0?void 0:N.call(i):J,K=e.additionalProps,H=K===void 0?{}:K,k=e.ellipsis,F=e.align,O=e.rowType,Q=e.isSticky,oe=e.column,se=oe===void 0?{}:oe,he=e.cellType,pe="".concat(c,"-cell"),re,_,E=(G=i.default)===null||G===void 0?void 0:G.call(i);if(Uv(E)||he==="header")_=E;else{var $,ae=rS(W,w);if(_=ae,C){var le=C({text:ae,value:ae,record:W,index:M,renderIndex:I,column:se.__originColumn__});Fhe(le)?(_=le.children,re=le.props):_=le}if(!(Iu in se)&&he==="body"&&a.value.bodyCell&&!(($=se.slots)!==null&&$!==void 0&&$.customRender)){var ee=S0(a.value,"bodyCell",{text:ae,value:ae,record:W,index:M,column:se.__originColumn__},function(){var Se=_===void 0?ae:_;return[Yt(Se)==="object"&&Si(Se)||Yt(Se)!=="object"?Se:null]});_=ti(ee)}e.transformCellText&&(_=e.transformCellText({text:_,record:W,index:M,column:se.__originColumn__}))}Yt(_)==="object"&&!Array.isArray(_)&&!Zl(_)&&(_=null),k&&(V||Y)&&(_=D("span",{class:"".concat(pe,"-content")},[_])),Array.isArray(_)&&_.length===1&&(_=_[0]);var te=re||{},be=te.colSpan,ne=te.rowSpan,B=te.style,q=te.class,ue=jt(te,zhe),ve=(d=be!==void 0?be:v.value)!==null&&d!==void 0?d:1,Ge=(u=ne!==void 0?ne:b.value)!==null&&u!==void 0?u:1;if(ve===0||Ge===0)return null;var Je={},xe=typeof g=="number"&&p.value,ke=typeof S=="number"&&p.value;xe&&(Je.position="sticky",Je.left="".concat(g,"px")),ke&&(Je.position="sticky",Je.right="".concat(S,"px"));var Pe={};F&&(Pe.textAlign=F);var Be,Te=k===!0?{showTitle:!0}:k;Te&&(Te.showTitle||O==="header")&&(typeof _=="string"||typeof _=="number"?Be=_.toString():Zl(_)&&(Be=m([_])));var we=P(P(P({title:Be},ue),H),{},{colSpan:ve!==1?ve:null,rowSpan:Ge!==1?Ge:null,class:_e(pe,(s={},ce(s,"".concat(pe,"-fix-left"),xe&&p.value),ce(s,"".concat(pe,"-fix-left-first"),L&&p.value),ce(s,"".concat(pe,"-fix-left-last"),V&&p.value),ce(s,"".concat(pe,"-fix-right"),ke&&p.value),ce(s,"".concat(pe,"-fix-right-first"),Y&&p.value),ce(s,"".concat(pe,"-fix-right-last"),T&&p.value),ce(s,"".concat(pe,"-ellipsis"),k),ce(s,"".concat(pe,"-with-append"),U),ce(s,"".concat(pe,"-fix-sticky"),(xe||ke)&&Q&&p.value),ce(s,"".concat(pe,"-row-hover"),!re&&Z.value),s),H.class,q),onMouseenter:function(De){y(De,Ge)},onMouseleave:X,style:P(P(P(P({},QW(H.style)),Pe),Je),B)});return D(R,we,{default:function(){return[U,_,(h=i.dragHandle)===null||h===void 0?void 0:h.call(i)]}})}}});function VX(n,e,t,i,a){var l=t[n]||{},o=t[e]||{},r,f;l.fixed==="left"?r=i.left[n]:o.fixed==="right"&&(f=i.right[e]);var v=!1,b=!1,Z=!1,p=!1,y=t[e+1],X=t[n-1];if(a==="rtl"){if(r!==void 0){var m=X&&X.fixed==="left";p=!m}else if(f!==void 0){var N=y&&y.fixed==="right";Z=!N}}else if(r!==void 0){var G=y&&y.fixed==="left";v=!G}else if(f!==void 0){var d=X&&X.fixed==="right";b=!d}return{fixLeft:r,fixRight:f,lastFixLeft:v,firstFixRight:b,lastFixRight:Z,firstFixLeft:p,isSticky:i.isSticky}}var rV={mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"},touch:{start:"touchstart",move:"touchmove",stop:"touchend"}},oV=50;const Jhe=He({compatConfig:{MODE:3},name:"DragHandle",props:{prefixCls:String,width:{type:Number,required:!0},minWidth:{type:Number,default:oV},maxWidth:{type:Number,default:1/0},column:{type:Object,default:void 0}},setup:function(e){var t=0,i={remove:function(){}},a={remove:function(){}},l=function(){i.remove(),a.remove()};la(function(){l()}),qt(function(){jn(!isNaN(e.width),"Table","width must be a number when use resizable")});var o=Rhe(),r=o.onResizeColumn,f=de(function(){return typeof e.minWidth=="number"&&!isNaN(e.minWidth)?e.minWidth:oV}),v=de(function(){return typeof e.maxWidth=="number"&&!isNaN(e.maxWidth)?e.maxWidth:1/0}),b=Wl(),Z=0,p=Ne(!1),y,X=function(c){var W=0;c.touches?c.touches.length?W=c.touches[0].pageX:W=c.changedTouches[0].pageX:W=c.pageX;var M=t-W,I=Math.max(Z-M,f.value);I=Math.min(I,v.value),At.cancel(y),y=At(function(){r(I,e.column.__originColumn__)})},m=function(c){X(c)},N=function(c){p.value=!1,X(c),l()},G=function(c,W){p.value=!0,l(),Z=b.vnode.el.parentNode.getBoundingClientRect().width,!(c instanceof MouseEvent&&c.which!==1)&&(c.stopPropagation&&c.stopPropagation(),t=c.touches?c.touches[0].pageX:c.pageX,i=hi(document.documentElement,W.move,m),a=hi(document.documentElement,W.stop,N))},d=function(c){c.stopPropagation(),c.preventDefault(),G(c,rV.mouse)},u=function(c){c.stopPropagation(),c.preventDefault(),G(c,rV.touch)},s=function(c){c.stopPropagation(),c.preventDefault()};return function(){var h=e.prefixCls,c=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(W){return u(W)});return D("div",P(P({class:"".concat(h,"-resize-handle ").concat(p.value?"dragging":""),onMousedown:d},c),{},{onClick:s}),[D("div",{class:"".concat(h,"-resize-handle-line")},null)])}}}),Dhe=He({name:"HeaderRow",props:["cells","stickyOffsets","flattenColumns","rowComponent","cellComponent","index","customHeaderRow"],setup:function(e){var t=$r();return function(){var i=t.prefixCls,a=t.direction,l=e.cells,o=e.stickyOffsets,r=e.flattenColumns,f=e.rowComponent,v=e.cellComponent,b=e.customHeaderRow,Z=e.index,p;b&&(p=b(l.map(function(X){return X.column}),Z));var y=gp(l.map(function(X){return X.column}));return D(f,p,{default:function(){return[l.map(function(m,N){var G=m.column,d=VX(m.colStart,m.colEnd,r,o,a),u;G&&G.customHeaderCell&&(u=m.column.customHeaderCell(G));var s=G;return D(Vp,P(P(P({},m),{},{cellType:"header",ellipsis:G.ellipsis,align:G.align,component:v,prefixCls:i,key:y[N]},d),{},{additionalProps:u,rowType:"header",column:G}),{default:function(){return G.title},dragHandle:function(){return s.resizable?D(Jhe,{prefixCls:i,width:s.width,minWidth:s.minWidth,maxWidth:s.maxWidth,column:s},null):null}})})]}})}}});function Ohe(n){var e=[];function t(o,r){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;e[f]=e[f]||[];var v=r,b=o.filter(Boolean).map(function(Z){var p={key:Z.key,class:_e(Z.className,Z.class),column:Z,colStart:v},y=1,X=Z.children;return X&&X.length>0&&(y=t(X,v,f+1).reduce(function(m,N){return m+N},0),p.hasSubColumns=!0),"colSpan"in Z&&(y=Z.colSpan),"rowSpan"in Z&&(p.rowSpan=Z.rowSpan),p.colSpan=y,p.colEnd=p.colStart+y-1,e[f].push(p),v+=y,y});return b}t(n,0);for(var i=e.length,a=function(r){e[r].forEach(function(f){!("rowSpan"in f)&&!f.hasSubColumns&&(f.rowSpan=i-r)})},l=0;l1?h-1:0),W=1;W0?[].concat(yt(e),yt(Kv(l).map(function(o){return P({fixed:a},o)}))):[].concat(yt(e),[P(P({},t),{},{fixed:a})])},[])}function $he(n){return n.map(function(e){var t=e.fixed,i=jt(e,_he),a=t;return t==="left"?a="right":t==="right"&&(a="left"),P({fixed:a},i)})}function qhe(n,e){var t=n.prefixCls,i=n.columns,a=n.expandable,l=n.expandedKeys,o=n.getRowKey,r=n.onTriggerExpand,f=n.expandIcon,v=n.rowExpandable,b=n.expandIconColumnIndex,Z=n.direction,p=n.expandRowByClick,y=n.expandColumnWidth,X=n.expandFixed,m=de(function(){if(a.value){var d,u=i.value.slice();if(!u.includes(os)){var s=b.value||0;s>=0&&u.splice(s,0,os)}var h=u.indexOf(os);u=u.filter(function(g,S){return g!==os||S===h});var c=i.value[h],W;(X.value==="left"||X.value)&&!b.value?W="left":(X.value==="right"||X.value)&&b.value===i.value.length?W="right":W=c?c.fixed:null;var M=l.value,I=v.value,w=f.value,C=t.value,x=p.value,R=(d={},ce(d,Iu,{class:"".concat(t.value,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),ce(d,"title",""),ce(d,"fixed",W),ce(d,"class","".concat(t.value,"-row-expand-icon-cell")),ce(d,"width",y.value),ce(d,"customRender",function(S){var L=S.record,V=S.index,Y=o.value(L,V),T=M.has(Y),J=I?I(L):!0,U=w({prefixCls:C,expanded:T,expandable:J,record:L,onExpand:r});return x?D("span",{onClick:function(H){return H.stopPropagation()}},[U]):U}),d);return u.map(function(g){return g===os?R:g})}return i.value.filter(function(g){return g!==os})}),N=de(function(){var d=m.value;return e.value&&(d=e.value(d)),d.length||(d=[{customRender:function(){return null}}]),d}),G=de(function(){return Z.value==="rtl"?$he(Kv(N.value)):Kv(N.value)});return[N,G]}function yS(n){var e=Gn(n),t,i=Gn([]);function a(l){i.value.push(l),At.cancel(t),t=At(function(){var o=i.value;i.value=[],o.forEach(function(r){e.value=r(e.value)})})}return fn(function(){At.cancel(t)}),[e,a]}function efe(n){var e=Ne(n||null),t=Ne();function i(){clearTimeout(t.value)}function a(o){e.value=o,i(),t.value=setTimeout(function(){e.value=null,t.value=void 0},100)}function l(){return e.value}return fn(function(){i()}),[a,l]}function tfe(n,e,t){var i=de(function(){for(var a=[],l=[],o=0,r=0,f=n.value,v=e.value,b=t.value,Z=0;Z=0;r-=1){var f=e[r],v=t&&t[r],b=v&&v[Iu];if(f||b||o){var Z=b||{};Z.columnType;var p=jt(Z,nfe);a.unshift(D("col",P({key:r,style:{width:typeof f=="number"?"".concat(f,"px"):f}},p),null)),o=!0}}return D("colgroup",null,[a])}function Hv(n,e){var t,i=e.slots;return D("div",null,[(t=i.default)===null||t===void 0?void 0:t.call(i)])}Hv.displayName="Panel";var ife=0,lfe=He({name:"Summary",props:["fixed"],setup:function(e,t){var i=t.slots,a=$r(),l="table-summary-uni-key-".concat(++ife),o=de(function(){return e.fixed===""||e.fixed});return qt(function(){a.summaryCollect(l,o.value)}),fn(function(){a.summaryCollect(l,!1)}),function(){var r;return(r=i.default)===null||r===void 0?void 0:r.call(i)}}});const afe=lfe,rfe=He({compatConfig:{MODE:3},name:"FooterRow",setup:function(e,t){var i=t.slots;return function(){var a;return D("tr",null,[(a=i.default)===null||a===void 0?void 0:a.call(i)])}}});var vS=Symbol("SummaryContextProps"),ofe=function(e){hn(vS,e)},sfe=function(){return un(vS,{})};const cfe=He({name:"SummaryCell",props:["index","colSpan","rowSpan","align"],setup:function(e,t){var i=t.attrs,a=t.slots,l=$r(),o=sfe();return function(){var r=e.index,f=e.colSpan,v=f===void 0?1:f,b=e.rowSpan,Z=e.align,p=l.prefixCls,y=l.direction,X=o.scrollColumnIndex,m=o.stickyOffsets,N=o.flattenColumns,G=r+v-1,d=G+1===X?v+1:v,u=VX(r,r+d-1,N,m,y);return D(Vp,P({class:i.class,index:r,component:"td",prefixCls:p,record:null,dataIndex:null,align:Z,colSpan:d,rowSpan:b,customRender:function(){var h;return(h=a.default)===null||h===void 0?void 0:h.call(a)}},u),null)}}}),Wb=He({name:"Footer",inheritAttrs:!1,props:["stickyOffsets","flattenColumns"],setup:function(e,t){var i=t.slots,a=$r();return ofe(zn({stickyOffsets:Ot(e,"stickyOffsets"),flattenColumns:Ot(e,"flattenColumns"),scrollColumnIndex:de(function(){var l=e.flattenColumns.length-1,o=e.flattenColumns[l];return o!=null&&o.scrollbar?l:null})})),function(){var l,o=a.prefixCls;return D("tfoot",{class:"".concat(o,"-summary")},[(l=i.default)===null||l===void 0?void 0:l.call(i)])}}});var ufe=afe;function dfe(n){var e,t=n.prefixCls,i=n.record,a=n.onExpand,l=n.expanded,o=n.expandable,r="".concat(t,"-row-expand-icon");if(!o)return D("span",{class:[r,"".concat(t,"-row-spaced")]},null);var f=function(b){a(i,b),b.stopPropagation()};return D("span",{class:(e={},ce(e,r,!0),ce(e,"".concat(t,"-row-expanded"),l),ce(e,"".concat(t,"-row-collapsed"),!l),e),onClick:f},null)}function hfe(n,e,t){var i=[];function a(l){(l||[]).forEach(function(o,r){i.push(e(o,r)),a(o[t])})}return a(n),i}const ffe=He({name:"StickyScrollBar",inheritAttrs:!1,props:["offsetScroll","container","scrollBodyRef","scrollBodySizeInfo"],emits:["scroll"],setup:function(e,t){var i=t.emit,a=t.expose,l=$r(),o=Ne(0),r=Ne(0),f=Ne(0);qt(function(){o.value=e.scrollBodySizeInfo.scrollWidth||0,r.value=e.scrollBodySizeInfo.clientWidth||0,f.value=o.value&&r.value*(r.value/o.value)},{flush:"post"});var v=Ne(),b=yS({scrollLeft:0,isHiddenScrollBar:!0}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne({delta:0,x:0}),m=Ne(!1),N=function(){m.value=!1},G=function(C){X.value={delta:C.pageX-p.value.scrollLeft,x:0},m.value=!0,C.preventDefault()},d=function(C){var x,R=C||((x=window)===null||x===void 0?void 0:x.event),g=R.buttons;if(!m.value||g===0){m.value&&(m.value=!1);return}var S=X.value.x+C.pageX-X.value.x-X.value.delta;S<=0&&(S=0),S+f.value>=r.value&&(S=r.value-f.value),i("scroll",{scrollLeft:S/r.value*(o.value+2)}),X.value.x=C.pageX},u=function(){if(e.scrollBodyRef.value){var C=c0(e.scrollBodyRef.value).top,x=C+e.scrollBodyRef.value.offsetHeight,R=e.container===window?document.documentElement.scrollTop+window.innerHeight:c0(e.container).top+e.container.clientHeight;x-Su()<=R||C>=R-e.offsetScroll?y(function(g){return P(P({},g),{},{isHiddenScrollBar:!0})}):y(function(g){return P(P({},g),{},{isHiddenScrollBar:!1})})}},s=function(C){y(function(x){return P(P({},x),{},{scrollLeft:C/o.value*r.value||0})})};a({setScrollLeft:s});var h=null,c=null,W=null,M=null;Kt(function(){h=hi(document.body,"mouseup",N,!1),c=hi(document.body,"mousemove",d,!1),W=hi(window,"resize",u,!1)}),T0(function(){cn(function(){u()})}),Kt(function(){setTimeout(function(){rt([f,m],function(){u()},{immediate:!0,flush:"post"})})}),rt(function(){return e.container},function(){var w;(w=M)===null||w===void 0||w.remove(),M=hi(e.container,"scroll",u,!1)},{immediate:!0,flush:"post"}),fn(function(){var w,C,x,R;(w=h)===null||w===void 0||w.remove(),(C=c)===null||C===void 0||C.remove(),(x=M)===null||x===void 0||x.remove(),(R=W)===null||R===void 0||R.remove()}),rt(function(){return P({},p.value)},function(w,C){w.isHiddenScrollBar!==(C==null?void 0:C.isHiddenScrollBar)&&!w.isHiddenScrollBar&&y(function(x){var R=e.scrollBodyRef.value;return R?P(P({},x),{},{scrollLeft:R.scrollLeft/R.scrollWidth*R.clientWidth}):x})},{immediate:!0});var I=Su();return function(){if(o.value<=r.value||!f.value||p.value.isHiddenScrollBar)return null;var w=l.prefixCls;return D("div",{style:{height:"".concat(I,"px"),width:"".concat(r.value,"px"),bottom:"".concat(e.offsetScroll,"px")},class:"".concat(w,"-sticky-scroll")},[D("div",{onMousedown:G,ref:v,class:_e("".concat(w,"-sticky-scroll-bar"),ce({},"".concat(w,"-sticky-scroll-bar-active"),m)),style:{width:"".concat(f.value,"px"),transform:"translate3d(".concat(p.value.scrollLeft,"px, 0, 0)")}},null)])}}});var cV=gc()?window:null;function bfe(n,e){return de(function(){var t=Yt(n.value)==="object"?n.value:{},i=t.offsetHeader,a=i===void 0?0:i,l=t.offsetSummary,o=l===void 0?0:l,r=t.offsetScroll,f=r===void 0?0:r,v=t.getContainer,b=v===void 0?function(){return cV}:v,Z=b()||cV,p=!!n.value;return{isSticky:p,stickyClassName:p?"".concat(e.value,"-sticky-holder"):"",offsetHeader:a,offsetSummary:o,offsetScroll:f,container:Z}})}function mfe(n,e){return de(function(){for(var t=[],i=n.value,a=e.value,l=0;l1?e-1:0),i=1;i0)):(L(qe>0),J(qe0?a.value:n.value}),y=Math.ceil((a.value||n.value)/p.pageSize);return p.current>y&&(p.current=y||1),p}),b=function(y,X){i.value!==!1&&f({current:y??1,pageSize:X||v.value.pageSize})},Z=function(y,X){if(i.value){var m,N;(m=(N=i.value).onChange)===null||m===void 0||m.call(N,y,X)}b(y,X),t(y,X||v.value.pageSize)};return[de(function(){return i.value===!1?{}:P(P({},v.value),{},{onChange:Z})}),b]}function Nfe(n,e,t){var i=Gn({});rt([n,e,t],function(){var l=new Map,o=t.value,r=e.value;function f(v){v.forEach(function(b,Z){var p=o(b,Z);l.set(p,b),b&&Yt(b)==="object"&&r in b&&f(b[r]||[])})}f(n.value),i.value={kvMap:l}},{deep:!0,immediate:!0});function a(l){return i.value.kvMap.get(l)}return[a]}var Xo={},Bv="SELECT_ALL",Av="SELECT_INVERT",_v="SELECT_NONE",Mfe=[];function WS(n,e){var t=[];return(n||[]).forEach(function(i){t.push(i),i&&Yt(i)==="object"&&e in i&&(t=[].concat(yt(t),yt(WS(i[e],e))))}),t}function Ife(n,e){var t=de(function(){var g=n.value||{},S=g.checkStrictly,L=S===void 0?!0:S;return P(P({},g),{},{checkStrictly:L})}),i=Wi(t.value.selectedRowKeys||t.value.defaultSelectedRowKeys||Mfe,{value:de(function(){return t.value.selectedRowKeys})}),a=ft(i,2),l=a[0],o=a[1],r=Gn(new Map),f=function(S){if(t.value.preserveSelectedRowKeys){var L=new Map;S.forEach(function(V){var Y=e.getRecordByKey(V);!Y&&r.value.has(V)&&(Y=r.value.get(V)),L.set(V,Y)}),r.value=L}};qt(function(){f(l.value)});var v=de(function(){return t.value.checkStrictly?null:Kh(e.data.value,{externalGetKey:e.getRowKey.value,childrenPropName:e.childrenColumnName.value}).keyEntities}),b=de(function(){return WS(e.pageData.value,e.childrenColumnName.value)}),Z=de(function(){var g=new Map,S=e.getRowKey.value,L=t.value.getCheckboxProps;return b.value.forEach(function(V,Y){var T=S(V,Y),J=(L?L(V):null)||{};g.set(T,J)}),g}),p=Zp(v),y=p.maxLevel,X=p.levelEntities,m=function(S){var L;return!!((L=Z.value.get(e.getRowKey.value(S)))!==null&&L!==void 0&&L.disabled)},N=de(function(){if(t.value.checkStrictly)return[l.value||[],[]];var g=ir(l.value,!0,v.value,y.value,X.value,m),S=g.checkedKeys,L=g.halfCheckedKeys;return[S||[],L]}),G=de(function(){return N.value[0]}),d=de(function(){return N.value[1]}),u=de(function(){var g=t.value.type==="radio"?G.value.slice(0,1):G.value;return new Set(g)}),s=de(function(){return t.value.type==="radio"?new Set:new Set(d.value)}),h=di(null),c=ft(h,2),W=c[0],M=c[1],I=function(S){var L,V;f(S);var Y=t.value,T=Y.preserveSelectedRowKeys,J=Y.onChange,U=e.getRecordByKey;T?(L=S,V=S.map(function(K){return r.value.get(K)})):(L=[],V=[],S.forEach(function(K){var H=U(K);H!==void 0&&(L.push(K),V.push(H))})),o(L),J==null||J(L,V)},w=function(S,L,V,Y){var T=t.value.onSelect,J=e||{},U=J.getRecordByKey;if(T){var K=V.map(function(H){return U(H)});T(U(S),L,K,Y)}I(V)},C=de(function(){var g=t.value,S=g.onSelectInvert,L=g.onSelectNone,V=g.selections,Y=g.hideSelectAll,T=e.data,J=e.pageData,U=e.getRowKey,K=e.locale;if(!V||Y)return null;var H=V===!0?[Bv,Av,_v]:V;return H.map(function(k){return k===Bv?{key:"all",text:K.value.selectionAll,onSelect:function(){I(T.value.map(function(O,Q){return U.value(O,Q)}).filter(function(O){var Q=Z.value.get(O);return!(Q!=null&&Q.disabled)||u.value.has(O)}))}}:k===Av?{key:"invert",text:K.value.selectInvert,onSelect:function(){var O=new Set(u.value);J.value.forEach(function(oe,se){var he=U.value(oe,se),pe=Z.value.get(he);pe!=null&&pe.disabled||(O.has(he)?O.delete(he):O.add(he))});var Q=Array.from(O);S&&(jn(!1,"Table","`onSelectInvert` will be removed in future. Please use `onChange` instead."),S(Q)),I(Q)}}:k===_v?{key:"none",text:K.value.selectNone,onSelect:function(){L==null||L(),I(Array.from(u.value).filter(function(O){var Q=Z.value.get(O);return Q==null?void 0:Q.disabled}))}}:k})}),x=de(function(){return b.value.length}),R=function(S){var L,V=t.value,Y=V.onSelectAll,T=V.onSelectMultiple,J=V.columnWidth,U=V.type,K=V.fixed,H=V.renderCell,k=V.hideSelectAll,F=V.checkStrictly,O=e.prefixCls,Q=e.getRecordByKey,oe=e.getRowKey,se=e.expandType,he=e.getPopupContainer;if(!n.value)return S.filter(function(De){return De!==Xo});var pe=S.slice(),re=new Set(u.value),_=b.value.map(oe.value).filter(function(De){return!Z.value.get(De).disabled}),E=_.every(function(De){return re.has(De)}),$=_.some(function(De){return re.has(De)}),ae=function(){var me=[];E?_.forEach(function(Me){re.delete(Me),me.push(Me)}):_.forEach(function(Me){re.has(Me)||(re.add(Me),me.push(Me))});var Ve=Array.from(re);Y==null||Y(!E,Ve.map(function(Me){return Q(Me)}),me.map(function(Me){return Q(Me)})),I(Ve)},le;if(U!=="radio"){var ee;if(C.value){var te=D(Yi,{getPopupContainer:he.value},{default:function(){return[C.value.map(function(me,Ve){var Me=me.key,Ie=me.text,Ze=me.onSelect;return D(Yi.Item,{key:Me||Ve,onClick:function(){Ze==null||Ze(_)}},{default:function(){return[Ie]}})})]}});ee=D("div",{class:"".concat(O.value,"-selection-extra")},[D(Pr,{overlay:te,getPopupContainer:he.value},{default:function(){return[D("span",null,[D(Dh,null,null)])]}})])}var be=b.value.map(function(De,me){var Ve=oe.value(De,me),Me=Z.value.get(Ve)||{};return P({checked:re.has(Ve)},Me)}).filter(function(De){var me=De.disabled;return me}),ne=!!be.length&&be.length===x.value,B=ne&&be.every(function(De){var me=De.checked;return me}),q=ne&&be.some(function(De){var me=De.checked;return me});le=!k&&D("div",{class:"".concat(O.value,"-selection")},[D(lr,{checked:ne?B:!!x.value&&E,indeterminate:ne?!B&&q:!E&&$,onChange:ae,disabled:x.value===0||ne,skipGroup:!0},null),ee])}var ue;U==="radio"?ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie);return{node:D(ta,P(P({},Z.value.get(Ie)),{},{checked:Ze,onClick:function(ye){return ye.stopPropagation()},onChange:function(ye){re.has(Ie)||w(Ie,!0,[Ie],ye.nativeEvent)}}),null),checked:Ze}}:ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie),Ce=s.value.has(Ie),ye=Z.value.get(Ie),Ue;if(se.value==="nest")Ue=Ce,jn(typeof(ye==null?void 0:ye.indeterminate)!="boolean","Table","set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.");else{var qe;Ue=(qe=ye==null?void 0:ye.indeterminate)!==null&&qe!==void 0?qe:Ce}return{node:D(lr,P(P({},ye),{},{indeterminate:Ue,checked:Ze,skipGroup:!0,onClick:function(Oe){return Oe.stopPropagation()},onChange:function(Oe){var Ke=Oe.nativeEvent,Xe=Ke.shiftKey,Re=-1,Ae=-1;if(Xe&&F){var ct=new Set([W.value,Ie]);_.some(function(Pt,Ut){if(ct.has(Pt))if(Re===-1)Re=Ut;else return Ae=Ut,!0;return!1})}if(Ae!==-1&&Re!==Ae&&F){var lt=_.slice(Re,Ae+1),ot=[];Ze?lt.forEach(function(Pt){re.has(Pt)&&(ot.push(Pt),re.delete(Pt))}):lt.forEach(function(Pt){re.has(Pt)||(ot.push(Pt),re.add(Pt))});var wt=Array.from(re);T==null||T(!Ze,wt.map(function(Pt){return Q(Pt)}),ot.map(function(Pt){return Q(Pt)})),I(wt)}else{var Mt=G.value;if(F){var xt=Ze?Wo(Mt,Ie):is(Mt,Ie);w(Ie,!Ze,xt,Ke)}else{var Gt=ir([].concat(yt(Mt),[Ie]),!0,v.value,y.value,X.value,m),Zt=Gt.checkedKeys,Tt=Gt.halfCheckedKeys,Ct=Zt;if(Ze){var St=new Set(Zt);St.delete(Ie),Ct=ir(Array.from(St),{checked:!1,halfCheckedKeys:Tt},v.value,y.value,X.value,m).checkedKeys}w(Ie,!Ze,Ct,Ke)}}M(Ie)}}),null),checked:Ze}};var ve=function(me){var Ve=me.record,Me=me.index,Ie=ue({record:Ve,index:Me}),Ze=Ie.node,Ce=Ie.checked;return H?H(Ce,Ve,Me,Ze):Ze};if(!pe.includes(Xo))if(pe.findIndex(function(De){var me;return((me=De[Iu])===null||me===void 0?void 0:me.columnType)==="EXPAND_COLUMN"})===0){var Ge=pe,Je=vG(Ge),xe=Je[0],ke=Je.slice(1);pe=[xe,Xo].concat(yt(ke))}else pe=[Xo].concat(yt(pe));var Pe=pe.indexOf(Xo);pe=pe.filter(function(De,me){return De!==Xo||me===Pe});var Be=pe[Pe-1],Te=pe[Pe+1],we=K;we===void 0&&((Te==null?void 0:Te.fixed)!==void 0?we=Te.fixed:(Be==null?void 0:Be.fixed)!==void 0&&(we=Be.fixed)),we&&Be&&((L=Be[Iu])===null||L===void 0?void 0:L.columnType)==="EXPAND_COLUMN"&&Be.fixed===void 0&&(Be.fixed=we);var Se=ce({fixed:we,width:J,className:"".concat(O.value,"-selection-column"),title:t.value.columnTitle||le,customRender:ve},Iu,{class:"".concat(O.value,"-selection-col")});return pe.map(function(De){return De===Xo?Se:De})};return[R,u]}var Yfe={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"};const wfe=Yfe;function hV(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:[],e=ti(n),t=[];return e.forEach(function(i){var a,l,o;if(i){for(var r=i.key,f=((a=i.props)===null||a===void 0?void 0:a.style)||{},v=((l=i.props)===null||l===void 0?void 0:l.class)||"",b=i.props||{},Z=0,p=Object.entries(b);Z0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=n.length,i=e.length;if(Math.abs(t-i)!==1)return{add:!1,key:null};function a(l,o){var r=new Map;l.forEach(function(v){r.set(v,!0)});var f=o.filter(function(v){return!r.has(v)});return f.length===1?f[0]:null}return t ").concat(e);return e}const Bfe=He({compatConfig:{MODE:3},name:"NodeList",inheritAttrs:!1,props:Zne,setup:function(e,t){var i=t.expose,a=t.attrs,l=Ne(),o=Ne(),r=gC(),f=r.expandedKeys,v=r.flattenNodes;i({scrollTo:function(d){l.value.scrollTo(d)},getIndentWidth:function(){return o.value.offsetWidth}});var b=Gn(v.value),Z=Gn([]),p=Ne(null);function y(){b.value=v.value,Z.value=[],p.value=null,e.onListChangeEnd()}var X=j1();rt([function(){return f.value.slice()},v],function(G,d){var u=ft(G,2),s=u[0],h=u[1],c=ft(d,2),W=c[0],M=c[1],I=Kfe(W,s);if(I.key!==null){var w=e.virtual,C=e.height,x=e.itemHeight;if(I.add){var R=M.findIndex(function(T){var J=T.key;return J===I.key}),g=XV(vV(M,h,I.key),w,C,x),S=M.slice();S.splice(R+1,0,GV),b.value=S,Z.value=g,p.value="show"}else{var L=h.findIndex(function(T){var J=T.key;return J===I.key}),V=XV(vV(h,M,I.key),w,C,x),Y=h.slice();Y.splice(L+1,0,GV),b.value=Y,Z.value=V,p.value="hide"}}else M!==h&&(b.value=h)}),rt(function(){return X.value.dragging},function(G){G||y()});var m=de(function(){return e.motion===void 0?b.value:v.value}),N=function(){e.onActiveChange(null)};return function(){var G=P(P({},e),a),d=G.prefixCls;G.selectable,G.checkable;var u=G.disabled,s=G.motion,h=G.height,c=G.itemHeight,W=G.virtual,M=G.focusable,I=G.activeItem,w=G.focused,C=G.tabindex,x=G.onKeydown,R=G.onFocus,g=G.onBlur,S=G.onListChangeStart;G.onListChangeEnd;var L=jt(G,Hfe);return D(ln,null,[w&&I&&D("span",{style:WV,"aria-live":"assertive"},[Qfe(I)]),D("div",null,[D("input",{style:WV,disabled:M===!1||u,tabindex:M!==!1?C:null,onKeydown:x,onFocus:R,onBlur:g,value:"",onChange:Pfe,"aria-label":"for screen reader"},null)]),D("div",{class:"".concat(d,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden"}},[D("div",{class:"".concat(d,"-indent")},[D("div",{ref:o,class:"".concat(d,"-indent-unit")},null)])]),D(xx,P(P({},dn(L,["onActiveChange"])),{},{data:m.value,itemKey:NV,height:h,fullHeight:!1,virtual:W,itemHeight:c,prefixCls:"".concat(d,"-list"),ref:l,onVisibleChange:function(Y,T){var J=new Set(Y),U=T.filter(function(K){return!J.has(K)});U.some(function(K){return NV(K)===Mc})&&y()}}),{default:function(Y){var T=Y.pos,J=Xn({},(Gp(Y.data),Y.data)),U=Y.title,K=Y.key,H=Y.isStart,k=Y.isEnd,F=Eh(K,T);return delete J.key,delete J.children,D(Efe,P(P({},J),{},{eventKey:F,title:U,active:!!I&&K===I.key,data:Y.data,isStart:H,isEnd:k,motion:s,motionNodes:K===Mc?Z.value:null,motionType:p.value,onMotionStart:S,onMotionEnd:y,onMousemove:N}),null)}})])}}});function Afe(n){var e=n.dropPosition,t=n.dropLevelOffset,i=n.indent,a={pointerEvents:"none",position:"absolute",right:0,backgroundColor:"red",height:"".concat(2,"px")};switch(e){case-1:a.top=0,a.left="".concat(-t*i,"px");break;case 1:a.bottom=0,a.left="".concat(-t*i,"px");break;case 0:a.bottom=0,a.left="".concat(i);break}return D("div",{style:a},null)}var _fe=10;const MS=He({compatConfig:{MODE:3},name:"Tree",inheritAttrs:!1,slots:["checkable","title","icon","titleRender"],props:pn(VC(),{prefixCls:"vc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:Afe,allowDrop:function(){return!0}}),setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne(!1),r={},f=Ne(),v=Gn([]),b=Gn([]),Z=Gn([]),p=Gn([]),y=Gn([]),X=Gn([]),m={},N=zn({draggingNodeKey:null,dragChildrenKeys:[],dropTargetKey:null,dropPosition:null,dropContainerKey:null,dropLevelOffset:null,dropTargetPos:null,dropAllowed:!0,dragOverNodeKey:null}),G=Gn([]);rt([function(){return e.treeData},function(){return e.children}],function(){G.value=e.treeData!==void 0?on(e.treeData).slice():Iv(on(e.children))},{immediate:!0,deep:!0});var d=Gn({}),u=Ne(!1),s=Ne(null),h=Ne(!1),c=de(function(){return bp(e.fieldNames)}),W=Ne(),M=null,I=null,w=null,C=de(function(){return{expandedKeysSet:x.value,selectedKeysSet:R.value,loadedKeysSet:g.value,loadingKeysSet:S.value,checkedKeysSet:L.value,halfCheckedKeysSet:V.value,dragOverNodeKey:N.dragOverNodeKey,dropPosition:N.dropPosition,keyEntities:d.value}}),x=de(function(){return new Set(X.value)}),R=de(function(){return new Set(v.value)}),g=de(function(){return new Set(p.value)}),S=de(function(){return new Set(y.value)}),L=de(function(){return new Set(b.value)}),V=de(function(){return new Set(Z.value)});qt(function(){if(G.value){var Te=Kh(G.value,{fieldNames:c.value});d.value=P(ce({},Mc,NS),Te.keyEntities)}});var Y=!1;rt([function(){return e.expandedKeys},function(){return e.autoExpandParent},d],function(Te,we){var Se=ft(Te,2);Se[0];var De=Se[1],me=ft(we,2);me[0];var Ve=me[1],Me=X.value;if(e.expandedKeys!==void 0||Y&&De!==Ve)Me=e.autoExpandParent||!Y&&e.defaultExpandParent?Mv(e.expandedKeys,d.value):e.expandedKeys;else if(!Y&&e.defaultExpandAll){var Ie=P({},d.value);delete Ie[Mc],Me=Object.keys(Ie).map(function(Ze){return Ie[Ze].key})}else!Y&&e.defaultExpandedKeys&&(Me=e.autoExpandParent||e.defaultExpandParent?Mv(e.defaultExpandedKeys,d.value):e.defaultExpandedKeys);Me&&(X.value=Me),Y=!0},{immediate:!0});var T=Gn([]);qt(function(){T.value=Yne(G.value,X.value,c.value)}),qt(function(){e.selectable&&(e.selectedKeys!==void 0?v.value=gw(e.selectedKeys,e):!Y&&e.defaultSelectedKeys&&(v.value=gw(e.defaultSelectedKeys,e)))});var J=Zp(d),U=J.maxLevel,K=J.levelEntities;qt(function(){if(e.checkable){var Te;if(e.checkedKeys!==void 0?Te=GZ(e.checkedKeys)||{}:!Y&&e.defaultCheckedKeys?Te=GZ(e.defaultCheckedKeys)||{}:G.value&&(Te=GZ(e.checkedKeys)||{checkedKeys:b.value,halfCheckedKeys:Z.value}),Te){var we=Te,Se=we.checkedKeys,De=Se===void 0?[]:Se,me=we.halfCheckedKeys,Ve=me===void 0?[]:me;if(!e.checkStrictly){var Me=ir(De,!0,d.value,U.value,K.value);De=Me.checkedKeys,Ve=Me.halfCheckedKeys}b.value=De,Z.value=Ve}}}),qt(function(){e.loadedKeys&&(p.value=e.loadedKeys)});var H=function(){Xn(N,{dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})},k=function(we){W.value.scrollTo(we)};rt(function(){return e.activeKey},function(){e.activeKey!==void 0&&(s.value=e.activeKey)},{immediate:!0}),rt(s,function(Te){cn(function(){Te!==null&&k({key:Te})})},{immediate:!0,flush:"post"});var F=function(we){e.expandedKeys===void 0&&(X.value=we)},O=function(){N.draggingNodeKey!==null&&Xn(N,{draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),M=null,w=null},Q=function(we,Se){var De=e.onDragend;N.dragOverNodeKey=null,O(),De==null||De({event:we,node:Se.eventData}),I=null},oe=function Te(we){Q(we,null),window.removeEventListener("dragend",Te)},se=function(we,Se){var De=e.onDragstart,me=Se.eventKey,Ve=Se.eventData;I=Se,M={x:we.clientX,y:we.clientY};var Me=Wo(X.value,me);N.draggingNodeKey=me,N.dragChildrenKeys=Xne(me,d.value),f.value=W.value.getIndentWidth(),F(Me),window.addEventListener("dragend",oe),De&&De({event:we,node:Ve})},he=function(we,Se){var De=e.onDragenter,me=e.onExpand,Ve=e.allowDrop,Me=e.direction,Ie=Se.pos,Ze=Se.eventKey;if(w!==Ze&&(w=Ze),!I){H();return}var Ce=ww(we,I,Se,f.value,M,Ve,T.value,d.value,x.value,Me),ye=Ce.dropPosition,Ue=Ce.dropLevelOffset,qe=Ce.dropTargetKey,ie=Ce.dropContainerKey,Oe=Ce.dropTargetPos,Ke=Ce.dropAllowed,Xe=Ce.dragOverNodeKey;if(N.dragChildrenKeys.indexOf(qe)!==-1||!Ke){H();return}if(r||(r={}),Object.keys(r).forEach(function(Re){clearTimeout(r[Re])}),I.eventKey!==Se.eventKey&&(r[Ie]=window.setTimeout(function(){if(N.draggingNodeKey!==null){var Re=X.value.slice(),Ae=d.value[Se.eventKey];Ae&&(Ae.children||[]).length&&(Re=is(X.value,Se.eventKey)),F(Re),me&&me(Re,{node:Se.eventData,expanded:!0,nativeEvent:we})}},800)),I.eventKey===qe&&Ue===0){H();return}Xn(N,{dragOverNodeKey:Xe,dropPosition:ye,dropLevelOffset:Ue,dropTargetKey:qe,dropContainerKey:ie,dropTargetPos:Oe,dropAllowed:Ke}),De&&De({event:we,node:Se.eventData,expandedKeys:X.value})},pe=function(we,Se){var De=e.onDragover,me=e.allowDrop,Ve=e.direction;if(I){var Me=ww(we,I,Se,f.value,M,me,T.value,d.value,x.value,Ve),Ie=Me.dropPosition,Ze=Me.dropLevelOffset,Ce=Me.dropTargetKey,ye=Me.dropContainerKey,Ue=Me.dropAllowed,qe=Me.dropTargetPos,ie=Me.dragOverNodeKey;N.dragChildrenKeys.indexOf(Ce)!==-1||!Ue||(I.eventKey===Ce&&Ze===0?N.dropPosition===null&&N.dropLevelOffset===null&&N.dropTargetKey===null&&N.dropContainerKey===null&&N.dropTargetPos===null&&N.dropAllowed===!1&&N.dragOverNodeKey===null||H():Ie===N.dropPosition&&Ze===N.dropLevelOffset&&Ce===N.dropTargetKey&&ye===N.dropContainerKey&&qe===N.dropTargetPos&&Ue===N.dropAllowed&&ie===N.dragOverNodeKey||Xn(N,{dropPosition:Ie,dropLevelOffset:Ze,dropTargetKey:Ce,dropContainerKey:ye,dropTargetPos:qe,dropAllowed:Ue,dragOverNodeKey:ie}),De&&De({event:we,node:Se.eventData}))}},re=function(we,Se){w===Se.eventKey&&!we.currentTarget.contains(we.relatedTarget)&&(H(),w=null);var De=e.onDragleave;De&&De({event:we,node:Se.eventData})},_=function(we,Se){var De,me=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Ve=N.dragChildrenKeys,Me=N.dropPosition,Ie=N.dropTargetKey,Ze=N.dropTargetPos,Ce=N.dropAllowed;if(Ce){var ye=e.onDrop;if(N.dragOverNodeKey=null,O(),Ie!==null){var Ue=P(P({},Yv(Ie,on(C.value))),{},{active:((De=xe.value)===null||De===void 0?void 0:De.key)===Ie,data:d.value[Ie].node});Ve.indexOf(Ie);var qe=E1(Ze),ie={event:we,node:wv(Ue),dragNode:I?I.eventData:null,dragNodesKeys:[I.eventKey].concat(Ve),dropToGap:Me!==0,dropPosition:Me+Number(qe[qe.length-1])};me||ye==null||ye(ie),I=null}}},E=function(we,Se){var De=e.onClick;De&&De(we,Se)},$=function(we,Se){var De=e.onDblclick;De&&De(we,Se)},ae=function(we,Se){var De=v.value,me=e.onSelect,Ve=e.multiple,Me=Se.selected,Ie=Se[c.value.key],Ze=!Me;Ze?Ve?De=is(De,Ie):De=[Ie]:De=Wo(De,Ie);var Ce=d.value,ye=De.map(function(Ue){var qe=Ce[Ue];return qe?qe.node:null}).filter(function(Ue){return Ue});e.selectedKeys===void 0&&(v.value=De),me&&me(De,{event:"select",selected:Ze,node:Se,selectedNodes:ye,nativeEvent:we})},le=function(we,Se,De){var me=e.checkStrictly,Ve=e.onCheck,Me=Se[c.value.key],Ie,Ze={event:"check",node:Se,checked:De,nativeEvent:we},Ce=d.value;if(me){var ye=De?is(b.value,Me):Wo(b.value,Me),Ue=Wo(Z.value,Me);Ie={checked:ye,halfChecked:Ue},Ze.checkedNodes=ye.map(function(Re){return Ce[Re]}).filter(function(Re){return Re}).map(function(Re){return Re.node}),e.checkedKeys===void 0&&(b.value=ye)}else{var qe=ir([].concat(yt(b.value),[Me]),!0,Ce,U.value,K.value),ie=qe.checkedKeys,Oe=qe.halfCheckedKeys;if(!De){var Ke=new Set(ie);Ke.delete(Me);var Xe=ir(Array.from(Ke),{checked:!1,halfCheckedKeys:Oe},Ce,U.value,K.value);ie=Xe.checkedKeys,Oe=Xe.halfCheckedKeys}Ie=ie,Ze.checkedNodes=[],Ze.checkedNodesPositions=[],Ze.halfCheckedKeys=Oe,ie.forEach(function(Re){var Ae=Ce[Re];if(Ae){var ct=Ae.node,lt=Ae.pos;Ze.checkedNodes.push(ct),Ze.checkedNodesPositions.push({node:ct,pos:lt})}}),e.checkedKeys===void 0&&(b.value=ie,Z.value=Oe)}Ve&&Ve(Ie,Ze)},ee=function(we){var Se=we[c.value.key],De=new Promise(function(me,Ve){var Me=e.loadData,Ie=e.onLoad;if(!Me||g.value.has(Se)||S.value.has(Se))return null;var Ze=Me(we);Ze.then(function(){var Ce=is(p.value,Se),ye=Wo(y.value,Se);Ie&&Ie(Ce,{event:"load",node:we}),e.loadedKeys===void 0&&(p.value=Ce),y.value=ye,me()}).catch(function(Ce){var ye=Wo(y.value,Se);if(y.value=ye,m[Se]=(m[Se]||0)+1,m[Se]>=_fe){var Ue=is(p.value,Se);e.loadedKeys===void 0&&(p.value=Ue),me()}Ve(Ce)}),y.value=is(y.value,Se)});return De.catch(function(){}),De},te=function(we,Se){var De=e.onMouseenter;De&&De({event:we,node:Se})},be=function(we,Se){var De=e.onMouseleave;De&&De({event:we,node:Se})},ne=function(we,Se){var De=e.onRightClick;De&&(we.preventDefault(),De({event:we,node:Se}))},B=function(we){var Se=e.onFocus;u.value=!0,Se&&Se(we)},q=function(we){var Se=e.onBlur;u.value=!1,Je(null),Se&&Se(we)},ue=function(we,Se){var De=X.value,me=e.onExpand,Ve=e.loadData,Me=Se.expanded,Ie=Se[c.value.key];if(!h.value){De.indexOf(Ie);var Ze=!Me;if(Ze?De=is(De,Ie):De=Wo(De,Ie),F(De),me&&me(De,{node:Se,expanded:Ze,nativeEvent:we}),Ze&&Ve){var Ce=ee(Se);Ce&&Ce.then(function(){}).catch(function(ye){var Ue=Wo(X.value,Ie);F(Ue),Promise.reject(ye)})}}},ve=function(){h.value=!0},Ge=function(){setTimeout(function(){h.value=!1})},Je=function(we){var Se=e.onActiveChange;s.value!==we&&(e.activeKey!==void 0&&(s.value=we),we!==null&&k({key:we}),Se&&Se(we))},xe=de(function(){return s.value===null?null:T.value.find(function(Te){var we=Te.key;return we===s.value})||null}),ke=function(we){var Se=T.value.findIndex(function(Ve){var Me=Ve.key;return Me===s.value});Se===-1&&we<0&&(Se=T.value.length),Se=(Se+we+T.value.length)%T.value.length;var De=T.value[Se];if(De){var me=De.key;Je(me)}else Je(null)},Pe=de(function(){return wv(P(P({},Yv(s.value,C.value)),{},{data:xe.value.data,active:!0}))}),Be=function(we){var Se=e.onKeydown,De=e.checkable,me=e.selectable;switch(we.which){case bt.UP:{ke(-1),we.preventDefault();break}case bt.DOWN:{ke(1),we.preventDefault();break}}var Ve=xe.value;if(Ve&&Ve.data){var Me=Ve.data.isLeaf===!1||!!(Ve.data.children||[]).length,Ie=Pe.value;switch(we.which){case bt.LEFT:{Me&&x.value.has(s.value)?ue({},Ie):Ve.parent&&Je(Ve.parent.key),we.preventDefault();break}case bt.RIGHT:{Me&&!x.value.has(s.value)?ue({},Ie):Ve.children&&Ve.children.length&&Je(Ve.children[0].key),we.preventDefault();break}case bt.ENTER:case bt.SPACE:{De&&!Ie.disabled&&Ie.checkable!==!1&&!Ie.disableCheckbox?le({},Ie,!L.value.has(s.value)):!De&&me&&!Ie.disabled&&Ie.selectable!==!1&&ae({},Ie);break}}}Se&&Se(we)};return l({onNodeExpand:ue,scrollTo:k,onKeydown:Be,selectedKeys:de(function(){return v.value}),checkedKeys:de(function(){return b.value}),halfCheckedKeys:de(function(){return Z.value}),loadedKeys:de(function(){return p.value}),loadingKeys:de(function(){return y.value}),expandedKeys:de(function(){return X.value})}),la(function(){window.removeEventListener("dragend",oe),o.value=!0}),mne({expandedKeys:X,selectedKeys:v,loadedKeys:p,loadingKeys:y,checkedKeys:b,halfCheckedKeys:Z,expandedKeysSet:x,selectedKeysSet:R,loadedKeysSet:g,loadingKeysSet:S,checkedKeysSet:L,halfCheckedKeysSet:V,flattenNodes:T}),function(){var Te,we=N.draggingNodeKey,Se=N.dropLevelOffset,De=N.dropContainerKey,me=N.dropTargetKey,Ve=N.dropPosition,Me=N.dragOverNodeKey,Ie=e.prefixCls,Ze=e.showLine,Ce=e.focusable,ye=e.tabindex,Ue=ye===void 0?0:ye,qe=e.selectable,ie=e.showIcon,Oe=e.icon,Ke=Oe===void 0?a.icon:Oe,Xe=e.switcherIcon,Re=e.draggable,Ae=e.checkable,ct=e.checkStrictly,lt=e.disabled,ot=e.motion,wt=e.loadData,Mt=e.filterTreeNode,xt=e.height,Gt=e.itemHeight,Zt=e.virtual,Tt=e.dropIndicatorRender,Ct=e.onContextmenu,St=e.onScroll,Pt=e.direction,Ut=i.class,kt=i.style,en=ws(P(P({},e),i),{aria:!0,data:!0}),nn;return Re&&(Yt(Re)==="object"?nn=Re:typeof Re=="function"?nn={nodeDraggable:Re}:nn={}),D(bne,{value:{prefixCls:Ie,selectable:qe,showIcon:ie,icon:Ke,switcherIcon:Xe,draggable:nn,draggingNodeKey:we,checkable:Ae,customCheckable:a.checkable,checkStrictly:ct,disabled:lt,keyEntities:d.value,dropLevelOffset:Se,dropContainerKey:De,dropTargetKey:me,dropPosition:Ve,dragOverNodeKey:Me,dragging:we!==null,indent:f.value,direction:Pt,dropIndicatorRender:Tt,loadData:wt,filterTreeNode:Mt,onNodeClick:E,onNodeDoubleClick:$,onNodeExpand:ue,onNodeSelect:ae,onNodeCheck:le,onNodeLoad:ee,onNodeMouseEnter:te,onNodeMouseLeave:be,onNodeContextMenu:ne,onNodeDragStart:se,onNodeDragEnter:he,onNodeDragOver:pe,onNodeDragLeave:re,onNodeDragEnd:Q,onNodeDrop:_,slots:a}},{default:function(){return[D("div",{role:"tree",class:_e(Ie,Ut,(Te={},ce(Te,"".concat(Ie,"-show-line"),Ze),ce(Te,"".concat(Ie,"-focused"),u.value),ce(Te,"".concat(Ie,"-active-focused"),s.value!==null),Te))},[D(Bfe,P({ref:W,prefixCls:Ie,style:kt,disabled:lt,selectable:qe,checkable:!!Ae,motion:ot,height:xt,itemHeight:Gt,virtual:Zt,focusable:Ce,focused:u.value,tabindex:Ue,activeItem:xe.value,onFocus:B,onBlur:q,onKeydown:Be,onActiveChange:Je,onListChangeStart:ve,onListChangeEnd:Ge,onContextmenu:Ct,onScroll:St},en),null)])]}})}}});var $fe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"};const qfe=$fe;function MV(n){for(var e=1;e0})}function VS(n,e){return typeof e=="string"||typeof e=="number"?e==null?void 0:e.toString().toLowerCase().includes(n.trim().toLowerCase()):!1}function LS(n){var e=n.filters,t=n.prefixCls,i=n.filteredKeys,a=n.filterMultiple,l=n.searchValue,o=n.filterSearch;return e.map(function(r,f){var v=String(r.value);if(r.children)return D(Ybe,{key:v||f,title:r.text,popupClassName:"".concat(t,"-dropdown-submenu")},{default:function(){return[LS({filters:r.children,prefixCls:t,filteredKeys:i,filterMultiple:a,searchValue:l,filterSearch:o})]}});var b=a?lr:ta,Z=D(wbe,{key:r.value!==void 0?v:f},{default:function(){return[D(b,{checked:i.includes(v)},null),D("span",null,[r.text])]}});return l.trim()?typeof o=="function"?o(l,r)?Z:void 0:VS(l,r.text)?Z:void 0:Z})}const Vbe=He({name:"FilterDropdown",props:["tablePrefixCls","prefixCls","dropdownPrefixCls","column","filterState","filterMultiple","filterMode","filterSearch","columnKey","triggerFilter","locale","getPopupContainer"],setup:function(e,t){var i=t.slots,a=sS(),l=de(function(){var U;return(U=e.filterMode)!==null&&U!==void 0?U:"menu"}),o=de(function(){var U;return(U=e.filterSearch)!==null&&U!==void 0?U:!1}),r=de(function(){return e.column.filterDropdownVisible}),f=Ne(!1),v=de(function(){var U;return!!(e.filterState&&((U=e.filterState.filteredKeys)!==null&&U!==void 0&&U.length||e.filterState.forceFiltered))}),b=de(function(){var U;return Rp((U=e.column)===null||U===void 0?void 0:U.filters)}),Z=de(function(){var U=e.column,K=U.filterDropdown,H=U.slots,k=H===void 0?{}:H,F=U.customFilterDropdown;return K||k.filterDropdown&&a.value[k.filterDropdown]||F&&a.value.customFilterDropdown}),p=de(function(){var U=e.column,K=U.filterIcon,H=U.slots,k=H===void 0?{}:H;return K||k.filterIcon&&a.value[k.filterIcon]||a.value.customFilterIcon}),y=function(K){var H,k;f.value=K,(H=(k=e.column).onFilterDropdownVisibleChange)===null||H===void 0||H.call(k,K)},X=de(function(){return typeof r.value=="boolean"?r.value:f.value}),m=de(function(){var U;return(U=e.filterState)===null||U===void 0?void 0:U.filteredKeys}),N=Gn([]),G=function(K){var H=K.selectedKeys;N.value=H},d=function(K,H){var k=H.node,F=H.checked;e.filterMultiple?G({selectedKeys:K}):G({selectedKeys:F&&k.key?[k.key]:[]})};rt(m,function(){f.value&&G({selectedKeys:m.value||[]})},{immediate:!0});var u=Gn([]),s=Ne(),h=function(K){s.value=setTimeout(function(){u.value=K})},c=function(){clearTimeout(s.value)};fn(function(){clearTimeout(s.value)});var W=Ne(""),M=function(K){var H=K.target.value;W.value=H};rt(f,function(){f.value||(W.value="")});var I=function(K){var H=e.column,k=e.columnKey,F=e.filterState,O=K&&K.length?K:null;if(O===null&&(!F||!F.filteredKeys)||Q0(O,F==null?void 0:F.filteredKeys))return null;e.triggerFilter({column:H,key:k,filteredKeys:O})},w=function(){y(!1),I(N.value)},C=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1},H=K.confirm,k=K.closeDropdown;H&&I([]),k&&y(!1),W.value="",N.value=[]},x=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0},H=K.closeDropdown;H&&y(!1),I(N.value)},R=function(K){K&&m.value!==void 0&&(N.value=m.value||[]),y(K),!K&&!Z.value&&w()},g=Nt("",e),S=g.direction,L=function(K){if(K.target.checked){var H=b.value;N.value=H}else N.value=[]},V=function U(K){var H=K.filters;return(H||[]).map(function(k,F){var O=String(k.value),Q={title:k.text,key:k.value!==void 0?O:F};return k.children&&(Q.children=U({filters:k.children})),Q})},Y=de(function(){return V({filters:e.column.filters})}),T=de(function(){return _e(ce({},"".concat(e.dropdownPrefixCls,"-menu-without-submenu"),!gbe(e.column.filters||[])))}),J=function(){var K=N.value,H=e.column,k=e.locale,F=e.tablePrefixCls,O=e.filterMultiple,Q=e.dropdownPrefixCls,oe=e.getPopupContainer,se=e.prefixCls;return(H.filters||[]).length===0?D(cs,{image:cs.PRESENTED_IMAGE_SIMPLE,description:k.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}},null):l.value==="tree"?D(ln,null,[D(ZV,{filterSearch:o.value,value:W.value,onChange:M,tablePrefixCls:F,locale:k},null),D("div",{class:"".concat(F,"-filter-dropdown-tree")},[O?D(lr,{class:"".concat(F,"-filter-dropdown-checkall"),onChange:L,checked:K.length===b.value.length,indeterminate:K.length>0&&K.length1),"Table","`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected."),Vhe(de(function(){return e.contextSlots})),Lhe({onResizeColumn:function(we,Se){o("resizeColumn",we,Se)}});var r=Au(),f=de(function(){var Te=new Set(Object.keys(r.value).filter(function(we){return r.value[we]}));return e.columns.filter(function(we){return!we.responsive||we.responsive.some(function(Se){return Te.has(Se)})})}),v=Nt("table",e),b=v.size,Z=v.renderEmpty,p=v.direction,y=v.prefixCls,X=v.configProvider,m=de(function(){return e.transformCellText||X.transformCellText}),N=Br("Table",Mr.Table,Ot(e,"locale")),G=ft(N,1),d=G[0],u=de(function(){return e.dataSource||Cbe}),s=de(function(){return X.getPrefixCls("dropdown",e.dropdownPrefixCls)}),h=de(function(){return e.childrenColumnName||"children"}),c=de(function(){return u.value.some(function(Te){return Te==null?void 0:Te[h.value]})?"nest":e.expandedRowRender?"row":null}),W=zn({body:null}),M=function(we){Xn(W,we)},I=de(function(){return typeof e.rowKey=="function"?e.rowKey:function(Te){return Te==null?void 0:Te[e.rowKey]}}),w=Nfe(u,h,I),C=ft(w,1),x=C[0],R={},g=function(we,Se){var De=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,me=e.pagination,Ve=e.scroll,Me=e.onChange,Ie=P(P({},R),we);De&&(R.resetPagination(),Ie.pagination.current&&(Ie.pagination.current=1),me&&me.onChange&&me.onChange(1,Ie.pagination.pageSize)),Ve&&Ve.scrollToFirstRowOnChange!==!1&&W.body&&ZG(0,{getContainer:function(){return W.body}}),Me==null||Me(Ie.pagination,Ie.filters,Ie.sorter,{currentDataSource:TV(eW(u.value,Ie.sorterStates,h.value),Ie.filterStates),action:Se})},S=function(we,Se){g({sorter:we,sorterStates:Se},"sort",!1)},L=zfe({prefixCls:y,mergedColumns:f,onSorterChange:S,sortDirections:de(function(){return e.sortDirections||["ascend","descend"]}),tableLocale:d,showSorterTooltip:Ot(e,"showSorterTooltip")}),V=ft(L,4),Y=V[0],T=V[1],J=V[2],U=V[3],K=de(function(){return eW(u.value,T.value,h.value)}),H=function(we,Se){g({filters:we,filterStates:Se},"filter",!0)},k=Lbe({prefixCls:y,locale:d,dropdownPrefixCls:s,mergedColumns:f,onFilterChange:H,getPopupContainer:Ot(e,"getPopupContainer")}),F=ft(k,3),O=F[0],Q=F[1],oe=F[2],se=de(function(){return TV(K.value,Q.value)}),he=xbe(Ot(e,"contextSlots")),pe=ft(he,1),re=pe[0],_=de(function(){return P({},J.value)}),E=Rbe(_),$=ft(E,1),ae=$[0],le=function(we,Se){g({pagination:P(P({},R.pagination),{},{current:we,pageSize:Se})},"paginate")},ee=Xfe(de(function(){return se.value.length}),Ot(e,"pagination"),le),te=ft(ee,2),be=te[0],ne=te[1];qt(function(){R.sorter=U.value,R.sorterStates=T.value,R.filters=oe.value,R.filterStates=Q.value,R.pagination=e.pagination===!1?{}:Wfe(e.pagination,be.value),R.resetPagination=ne});var B=de(function(){if(e.pagination===!1||!be.value.pageSize)return se.value;var Te=be.value,we=Te.current,Se=we===void 0?1:we,De=Te.total,me=Te.pageSize,Ve=me===void 0?Qv:me;return jn(Se>0,"Table","`current` should be positive number."),se.value.lengthVe?se.value.slice((Se-1)*Ve,Se*Ve):se.value:se.value.slice((Se-1)*Ve,Se*Ve)});qt(function(){cn(function(){var Te=be.value,we=Te.total,Se=Te.pageSize,De=Se===void 0?Qv:Se;se.value.lengthDe&&jn(!1,"Table","`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.")})},{flush:"post"});var q=de(function(){return e.showExpandColumn===!1?-1:c.value==="nest"&&e.expandIconColumnIndex===void 0?e.rowSelection?1:0:e.expandIconColumnIndex>0&&e.rowSelection?e.expandIconColumnIndex-1:e.expandIconColumnIndex}),ue=Ne();rt(function(){return e.rowSelection},function(){ue.value=e.rowSelection?P({},e.rowSelection):e.rowSelection},{deep:!0,immediate:!0});var ve=Ife(ue,{prefixCls:y,data:se,pageData:B,getRowKey:I,getRecordByKey:x,expandType:c,childrenColumnName:h,locale:d,getPopupContainer:de(function(){return e.getPopupContainer})}),Ge=ft(ve,2),Je=Ge[0],xe=Ge[1],ke=function(we,Se,De){var me,Ve=e.rowClassName;return typeof Ve=="function"?me=_e(Ve(we,Se,De)):me=_e(Ve),_e(ce({},"".concat(y.value,"-row-selected"),xe.value.has(I.value(we,Se))),me)};l({selectedKeySet:xe});var Pe=de(function(){return typeof e.indentSize=="number"?e.indentSize:15}),Be=function(we){var Se=ae(Je(O(Y(re(we)))));return Se};return function(){var Te,we,Se=e.expandIcon,De=Se===void 0?a.expandIcon||Tbe(d.value):Se,me=e.pagination,Ve=e.loading,Me=e.bordered,Ie,Ze;if(me!==!1&&(Te=be.value)!==null&&Te!==void 0&&Te.total){var Ce;be.value.size?Ce=be.value.size:Ce=b.value==="small"||b.value==="middle"?"small":void 0;var ye=function(lt){return D(Np,P(P({},be.value),{},{class:["".concat(y.value,"-pagination ").concat(y.value,"-pagination-").concat(lt),be.value.class],size:Ce}),null)},Ue=p.value==="rtl"?"left":"right",qe=be.value.position;if(qe!==null&&Array.isArray(qe)){var ie=qe.find(function(ct){return ct.indexOf("top")!==-1}),Oe=qe.find(function(ct){return ct.indexOf("bottom")!==-1}),Ke=qe.every(function(ct){return"".concat(ct)==="none"});!ie&&!Oe&&!Ke&&(Ze=ye(Ue)),ie&&(Ie=ye(ie.toLowerCase().replace("top",""))),Oe&&(Ze=ye(Oe.toLowerCase().replace("bottom","")))}else Ze=ye(Ue)}var Xe;typeof Ve=="boolean"?Xe={spinning:Ve}:Yt(Ve)==="object"&&(Xe=P({spinning:!0},Ve));var Re=_e("".concat(y.value,"-wrapper"),ce({},"".concat(y.value,"-wrapper-rtl"),p.value==="rtl"),i.class),Ae=dn(e,["columns"]);return D("div",{class:Re,style:i.style},[D(Ws,P({spinning:!1},Xe),{default:function(){return[Ie,D(vfe,P(P(P({},i),Ae),{},{expandedRowKeys:e.expandedRowKeys,defaultExpandedRowKeys:e.defaultExpandedRowKeys,expandIconColumnIndex:q.value,indentSize:Pe.value,expandIcon:De,columns:f.value,direction:p.value,prefixCls:y.value,class:_e((we={},ce(we,"".concat(y.value,"-middle"),b.value==="middle"),ce(we,"".concat(y.value,"-small"),b.value==="small"),ce(we,"".concat(y.value,"-bordered"),Me),ce(we,"".concat(y.value,"-empty"),u.value.length===0),we)),data:B.value,rowKey:I.value,rowClassName:ke,internalHooks:Pv,internalRefs:W,onUpdateInternalRefs:M,transformColumns:Be,transformCellText:m.value}),P(P({},a),{},{emptyText:function(){var ot,wt;return((ot=a.emptyText)===null||ot===void 0?void 0:ot.call(a))||((wt=e.locale)===null||wt===void 0?void 0:wt.emptyText)||Z.value("Table")}})),Ze]}})])}}}),kbe=He({name:"ATable",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne();return l({table:o}),function(){var r,f=i,v=f.columns||GS((r=a.default)===null||r===void 0?void 0:r.call(a));return D(zbe,P(P({ref:o},i),{},{columns:v||[],expandedRowRender:a.expandedRowRender,contextSlots:P({},a)}),a)}}});const QZ=kbe,cm=He({name:"ATableColumn",slots:["title","filterIcon"],render:function(){return null}}),um=He({name:"ATableColumnGroup",slots:["title"],__ANT_TABLE_COLUMN_GROUP:!0,render:function(){return null}});var h0=He(P(P({},rfe),{},{name:"ATableSummaryRow"})),f0=He(P(P({},cfe),{},{name:"ATableSummaryCell"})),dm=Xn(ufe,{Cell:f0,Row:h0,name:"ATableSummary"});const Fbe=Xn(QZ,{SELECTION_ALL:Bv,SELECTION_INVERT:Av,SELECTION_NONE:_v,SELECTION_COLUMN:Xo,EXPAND_COLUMN:os,Column:cm,ColumnGroup:um,Summary:dm,install:function(e){return e.component(dm.name,dm),e.component(f0.name,f0),e.component(h0.name,h0),e.component(QZ.name,QZ),e.component(cm.name,cm),e.component(um.name,um),e}});var Jbe={prefixCls:String,placeholder:String,value:String,handleClear:Function,disabled:{type:Boolean,default:void 0},onChange:Function};const Dbe=He({compatConfig:{MODE:3},name:"Search",inheritAttrs:!1,props:pn(Jbe,{placeholder:""}),emits:["change"],setup:function(e,t){var i=t.emit,a=function(o){if(i("change",o),o.target.value===""){var r;(r=e.handleClear)===null||r===void 0||r.call(e)}};return function(){var l=e.placeholder,o=e.value,r=e.prefixCls,f=e.disabled;return D(Ai,{placeholder:l,class:r,value:o,onChange:a,disabled:f,allowClear:!0},{prefix:function(){return D(tp,null,null)}})}}});var Obe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"};const jbe=Obe;function xV(n){for(var e=1;e=0;i("itemSelect",y.key,!m)},r=function(y){i("itemRemove",[y.key])},f=function(y){i("scroll",y)},v=de(function(){return Qbe(e.pagination)});rt([v,function(){return e.filteredRenderItems}],function(){if(v.value){var p=Math.ceil(e.filteredRenderItems.length/v.value.pageSize);l.value>p&&(l.value=p)}},{immediate:!0});var b=de(function(){var p=e.filteredRenderItems,y=p;return v.value&&(y=p.slice((l.value-1)*v.value.pageSize,l.value*v.value.pageSize)),y}),Z=function(y){l.value=y};return a({items:b}),function(){var p=e.prefixCls,y=e.filteredRenderItems,X=e.selectedKeys,m=e.disabled,N=e.showRemove,G=null;v.value&&(G=D(Np,{simple:!0,size:"small",disabled:m,class:"".concat(p,"-pagination"),total:y.length,pageSize:v.value.pageSize,current:l.value,onChange:Z},null));var d=b.value.map(function(u){var s=u.renderedEl,h=u.renderedText,c=u.item,W=c.disabled,M=X.indexOf(c.key)>=0;return D(Hbe,{disabled:m||W,key:c.key,item:c,renderedText:h,renderedEl:s,checked:M,prefixCls:p,onClick:o,onRemove:r,showRemove:N},null)});return D(ln,null,[D("ul",{class:_e("".concat(p,"-content"),ce({},"".concat(p,"-content-show-remove"),N)),onScroll:f},[d]),G])}}});const Abe=Bbe;var _be=function(){return null};function $be(n){return n&&!Si(n)&&Object.prototype.toString.call(n)==="[object Object]"}function Gb(n){return n.filter(function(e){return!e.disabled}).map(function(e){return e.key})}var qbe={prefixCls:String,dataSource:{type:Array,default:[]},filter:String,filterOption:Function,checkedKeys:We.arrayOf(We.string),handleFilter:Function,handleClear:Function,renderItem:Function,showSearch:{type:Boolean,default:!1},searchPlaceholder:String,notFoundContent:We.any,itemUnit:String,itemsUnit:String,renderList:We.any,disabled:{type:Boolean,default:void 0},direction:String,showSelectAll:{type:Boolean,default:void 0},remove:String,selectAll:String,selectCurrent:String,selectInvert:String,removeAll:String,removeCurrent:String,selectAllLabel:We.any,showRemove:{type:Boolean,default:void 0},pagination:We.any,onItemSelect:Function,onItemSelectAll:Function,onItemRemove:Function,onScroll:Function};const CV=He({compatConfig:{MODE:3},name:"TransferList",inheritAttrs:!1,props:qbe,slots:["footer","titleText"],setup:function(e,t){var i=t.attrs,a=t.slots,l=Ne(""),o=Ne(),r=Ne(),f=function(c,W){var M=c?c(W):null,I=!!M&&Ri(M).length>0;return I||(M=D(Abe,P(P({},W),{},{ref:r}),null)),{customize:I,bodyContent:M}},v=function(c){var W=e.renderItem,M=W===void 0?_be:W,I=M(c),w=$be(I);return{renderedText:w?I.value:I,renderedEl:w?I.label:I,item:c}},b=Ne([]),Z=Ne([]);qt(function(){var h=[],c=[];e.dataSource.forEach(function(W){var M=v(W),I=M.renderedText;if(l.value&&l.value.trim()&&!d(I,W))return null;h.push(W),c.push(M)}),b.value=h,Z.value=c});var p=de(function(){var h=e.checkedKeys;return h.length===0?"none":b.value.every(function(c){return h.indexOf(c.key)>=0||!!c.disabled})?"all":"part"}),y=de(function(){return Gb(b.value)}),X=function(c,W){return Array.from(new Set([].concat(yt(c),yt(e.checkedKeys)))).filter(function(M){return W.indexOf(M)===-1})},m=function(c){var W=c.disabled,M=c.prefixCls,I=p.value==="all",w=D(lr,{disabled:W,checked:I,indeterminate:p.value==="part",class:"".concat(M,"-checkbox"),onChange:function(){var x=y.value;e.onItemSelectAll(X(I?[]:x,I?e.checkedKeys:[]))}},null);return w},N=function(c){var W,M=c.target.value;l.value=M,(W=e.handleFilter)===null||W===void 0||W.call(e,c)},G=function(c){var W;l.value="",(W=e.handleClear)===null||W===void 0||W.call(e,c)},d=function(c,W){var M=e.filterOption;return M?M(l.value,W):c.indexOf(l.value)>=0},u=function(c,W){var M=e.itemsUnit,I=e.itemUnit,w=e.selectAllLabel;if(w)return typeof w=="function"?w({selectedCount:c,totalCount:W}):w;var C=W>1?M:I;return D(ln,null,[(c>0?"".concat(c,"/"):"")+W,Fl(" "),C])},s=function(c,W,M,I,w,C){var x=w?D("div",{class:"".concat(c,"-body-search-wrapper")},[D(Dbe,{prefixCls:"".concat(c,"-search"),onChange:N,handleClear:G,placeholder:W,value:l.value,disabled:C},null)]):null,R,g=PW(i),S=g.onEvents,L=f(I,P(P({},e),{},{filteredItems:b.value,filteredRenderItems:Z.value,selectedKeys:M},S)),V=L.bodyContent,Y=L.customize;return Y?R=D("div",{class:"".concat(c,"-body-customize-wrapper")},[V]):R=b.value.length?V:D("div",{class:"".concat(c,"-body-not-found")},[e.notFoundContent]),D("div",{class:w?"".concat(c,"-body ").concat(c,"-body-with-search"):"".concat(c,"-body"),ref:o},[x,R])};return function(){var h,c,W,M=e.prefixCls,I=e.checkedKeys,w=e.disabled,C=e.showSearch,x=e.searchPlaceholder,R=e.selectAll,g=e.selectCurrent,S=e.selectInvert,L=e.removeAll,V=e.removeCurrent,Y=e.renderList,T=e.onItemSelectAll,J=e.onItemRemove,U=e.showSelectAll,K=U===void 0?!0:U,H=e.showRemove,k=e.pagination,F=(h=a.footer)===null||h===void 0?void 0:h.call(a,P({},e)),O=_e(M,(c={},ce(c,"".concat(M,"-with-pagination"),!!k),ce(c,"".concat(M,"-with-footer"),!!F),c)),Q=s(M,x,I,Y,C,w),oe=F?D("div",{class:"".concat(M,"-footer")},[F]):null,se=!H&&!k&&m({disabled:w,prefixCls:M}),he=null;H?he=D(Yi,null,{default:function(){return[k&&D(Yi.Item,{key:"removeCurrent",onClick:function(){var E=Gb((r.value.items||[]).map(function($){return $.item}));J==null||J(E)}},{default:function(){return[V]}}),D(Yi.Item,{key:"removeAll",onClick:function(){J==null||J(y.value)}},{default:function(){return[L]}})]}}):he=D(Yi,null,{default:function(){return[D(Yi.Item,{key:"selectAll",onClick:function(){var E=y.value;T(X(E,[]))}},{default:function(){return[R]}}),k&&D(Yi.Item,{onClick:function(){var E=Gb((r.value.items||[]).map(function($){return $.item}));T(X(E,[]))}},{default:function(){return[g]}}),D(Yi.Item,{key:"selectInvert",onClick:function(){var E;k?E=Gb((r.value.items||[]).map(function(ee){return ee.item})):E=y.value;var $=new Set(I),ae=[],le=[];E.forEach(function(ee){$.has(ee)?le.push(ee):ae.push(ee)}),T(X(ae,le))}},{default:function(){return[S]}})]}});var pe=D(Pr,{class:"".concat(M,"-header-dropdown"),overlay:he,disabled:w},{default:function(){return[D(Dh,null,null)]}});return D("div",{class:O,style:i.style},[D("div",{class:"".concat(M,"-header")},[K?D(ln,null,[se,pe]):null,D("span",{class:"".concat(M,"-header-selected")},[D("span",null,[u(I.length,b.value.length)]),D("span",{class:"".concat(M,"-header-title")},[(W=a.titleText)===null||W===void 0?void 0:W.call(a)])])]),Q,oe])}}});function SV(){}var jX=function(e){var t=e.disabled,i=e.moveToLeft,a=i===void 0?SV:i,l=e.moveToRight,o=l===void 0?SV:l,r=e.leftArrowText,f=r===void 0?"":r,v=e.rightArrowText,b=v===void 0?"":v,Z=e.leftActive,p=e.rightActive,y=e.class,X=e.style,m=e.direction,N=e.oneWay;return D("div",{class:y,style:X},[D(qi,{type:"primary",size:"small",disabled:t||!p,onClick:o,icon:D(m!=="rtl"?xo:Nc,null,null)},{default:function(){return[b]}}),!N&&D(qi,{type:"primary",size:"small",disabled:t||!Z,onClick:a,icon:D(m!=="rtl"?Nc:xo,null,null)},{default:function(){return[f]}})])};jX.displayName="Operation";jX.inheritAttrs=!1;const eme=jX;var tme=function(){return{id:String,prefixCls:String,dataSource:{type:Array,default:[]},disabled:{type:Boolean,default:void 0},targetKeys:{type:Array,default:void 0},selectedKeys:{type:Array,default:void 0},render:{type:Function},listStyle:{type:[Function,Object],default:function(){return{}}},operationStyle:{type:Object,default:void 0},titles:{type:Array},operations:{type:Array},showSearch:{type:Boolean,default:!1},filterOption:{type:Function},searchPlaceholder:String,notFoundContent:We.any,locale:{type:Object,default:function(){return{}}},rowKey:{type:Function},showSelectAll:{type:Boolean,default:void 0},selectAllLabels:{type:Array},children:{type:Function},oneWay:{type:Boolean,default:void 0},pagination:{type:[Object,Boolean],default:void 0},onChange:Function,onSelectChange:Function,onSearch:Function,onScroll:Function,"onUpdate:targetKeys":Function,"onUpdate:selectedKeys":Function}},nme=He({compatConfig:{MODE:3},name:"ATransfer",inheritAttrs:!1,props:tme(),slots:["leftTitle","rightTitle","children","render","notFoundContent","leftSelectAllLabel","rightSelectAllLabel","footer"],setup:function(e,t){var i=t.emit,a=t.attrs,l=t.slots,o=t.expose,r=Nt("transfer",e),f=r.configProvider,v=r.prefixCls,b=r.direction,Z=Ne([]),p=Ne([]),y=Hi();rt(function(){return e.selectedKeys},function(){var H,k;Z.value=((H=e.selectedKeys)===null||H===void 0?void 0:H.filter(function(F){return e.targetKeys.indexOf(F)===-1}))||[],p.value=((k=e.selectedKeys)===null||k===void 0?void 0:k.filter(function(F){return e.targetKeys.indexOf(F)>-1}))||[]},{immediate:!0});var X=function(k,F){var O={notFoundContent:F("Transfer")},Q=ui(l,e,"notFoundContent");return Q&&(O.notFoundContent=Q),e.searchPlaceholder!==void 0&&(O.searchPlaceholder=e.searchPlaceholder),P(P(P({},k),O),e.locale)},m=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=e.dataSource,oe=Q===void 0?[]:Q,se=k==="right"?Z.value:p.value,he=se.filter(function(_){return!oe.some(function(E){return!!(_===E.key&&E.disabled)})}),pe=k==="right"?he.concat(O):O.filter(function(_){return he.indexOf(_)===-1}),re=k==="right"?"left":"right";k==="right"?Z.value=[]:p.value=[],i("update:targetKeys",pe),h(re,[]),i("change",pe,k,he),y.onFieldChange()},N=function(){m("left")},G=function(){m("right")},d=function(k,F){h(k,F)},u=function(k){return d("left",k)},s=function(k){return d("right",k)},h=function(k,F){k==="left"?(e.selectedKeys||(Z.value=F),i("update:selectedKeys",[].concat(yt(F),yt(p.value))),i("selectChange",F,on(p.value))):(e.selectedKeys||(p.value=F),i("update:selectedKeys",[].concat(yt(F),yt(Z.value))),i("selectChange",on(Z.value),F))},c=function(k,F){var O=F.target.value;i("search",k,O)},W=function(k){c("left",k)},M=function(k){c("right",k)},I=function(k){i("search",k,"")},w=function(){I("left")},C=function(){I("right")},x=function(k,F,O){var Q=yt(k==="left"?Z.value:p.value),oe=Q.indexOf(F);oe>-1&&Q.splice(oe,1),O&&Q.push(F),h(k,Q)},R=function(k,F){return x("left",k,F)},g=function(k,F){return x("right",k,F)},S=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=O.filter(function(oe){return!k.includes(oe)});i("update:targetKeys",Q),i("change",Q,"left",yt(k))},L=function(k,F){i("scroll",k,F)},V=function(k){L("left",k)},Y=function(k){L("right",k)},T=function(k,F){return typeof k=="function"?k({direction:F}):k},J=Ne([]),U=Ne([]);qt(function(){var H=e.dataSource,k=e.rowKey,F=e.targetKeys,O=F===void 0?[]:F,Q=[],oe=new Array(O.length);H.forEach(function(se){k&&(se.key=k(se));var he=O.indexOf(se.key);he!==-1?oe[he]=se:Q.push(se)}),J.value=Q,U.value=oe}),o({handleSelectChange:h});var K=function(k){var F,O,Q,oe,se,he,pe,re=e.disabled,_=e.operations,E=_===void 0?[]:_,$=e.showSearch,ae=e.listStyle,le=e.operationStyle,ee=e.filterOption,te=e.showSelectAll,be=e.selectAllLabels,ne=be===void 0?[]:be,B=e.oneWay,q=e.pagination,ue=e.id,ve=ue===void 0?y.id.value:ue,Ge=a.class,Je=a.style,xe=l.children,ke=!xe&&q,Pe=f.renderEmpty,Be=X(k,Pe),Te=l.footer,we=e.render||l.render,Se=p.value.length>0,De=Z.value.length>0,me=_e(v.value,Ge,(F={},ce(F,"".concat(v.value,"-disabled"),re),ce(F,"".concat(v.value,"-customize-list"),!!xe),F)),Ve=e.titles,Me=(O=(Q=Ve&&Ve[0])!==null&&Q!==void 0?Q:(oe=l.leftTitle)===null||oe===void 0?void 0:oe.call(l))!==null&&O!==void 0?O:(Be.titles||["",""])[0],Ie=(se=(he=Ve&&Ve[1])!==null&&he!==void 0?he:(pe=l.rightTitle)===null||pe===void 0?void 0:pe.call(l))!==null&&se!==void 0?se:(Be.titles||["",""])[1];return D("div",{class:me,style:Je,id:ve},[D(CV,P({key:"leftList",prefixCls:"".concat(v.value,"-list"),dataSource:J.value,filterOption:ee,style:T(ae,"left"),checkedKeys:Z.value,handleFilter:W,handleClear:w,onItemSelect:R,onItemSelectAll:u,renderItem:we,showSearch:$,renderList:xe,onScroll:V,disabled:re,direction:b.value==="rtl"?"right":"left",showSelectAll:te,selectAllLabel:ne[0]||l.leftSelectAllLabel,pagination:ke},Be),{titleText:function(){return Me},footer:Te}),D(eme,{key:"operation",class:"".concat(v.value,"-operation"),rightActive:De,rightArrowText:E[0],moveToRight:G,leftActive:Se,leftArrowText:E[1],moveToLeft:N,style:le,disabled:re,direction:b.value,oneWay:B},null),D(CV,P({key:"rightList",prefixCls:"".concat(v.value,"-list"),dataSource:U.value,filterOption:ee,style:T(ae,"right"),checkedKeys:p.value,handleFilter:M,handleClear:C,onItemSelect:g,onItemSelectAll:s,onItemRemove:S,renderItem:we,showSearch:$,renderList:xe,onScroll:Y,disabled:re,direction:b.value==="rtl"?"left":"right",showSelectAll:te,selectAllLabel:ne[1]||l.rightSelectAllLabel,showRemove:B,pagination:ke},Be),{titleText:function(){return Ie},footer:Te})])};return function(){return D(Uu,{componentName:"Transfer",defaultLocale:Mr.Transfer,children:K},null)}}});const ime=wi(nme);function lme(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function ame(n){var e=n||{},t=e.label,i=e.value,a=e.children,l=i||"value";return{_title:t?[t]:["title","label"],value:l,key:l,children:a||"children"}}function iW(n){return n.disabled||n.disableCheckbox||n.checkable===!1}function rme(n,e){var t=[];function i(a){a.forEach(function(l){t.push(l[e.value]);var o=l[e.children];o&&i(o)})}return i(n),t}function zV(n){return n==null}var SS=Symbol("TreeSelectContextPropsKey");function ome(n){return hn(SS,n)}function sme(){return un(SS,{})}var cme={width:0,height:0,display:"flex",overflow:"hidden",opacity:0,border:0,padding:0,margin:0};const ume=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["notFoundContent","menuItemSelectedIcon"],setup:function(e,t){var i=t.slots,a=t.expose,l=Jh(),o=_0(),r=sme(),f=Ne(),v=JG(function(){return r.treeData},[function(){return l.open},function(){return r.treeData}],function(c){return c[0]}),b=de(function(){var c=o.checkable,W=o.halfCheckedKeys,M=o.checkedKeys;return c?{checked:M,halfChecked:W}:null});rt(function(){return l.open},function(){cn(function(){if(l.open&&!l.multiple&&o.checkedKeys.length){var c;(c=f.value)===null||c===void 0||c.scrollTo({key:o.checkedKeys[0]})}})},{immediate:!0,flush:"post"});var Z=de(function(){return String(l.searchValue).toLowerCase()}),p=function(W){return Z.value?String(W[o.treeNodeFilterProp]).toLowerCase().includes(Z.value):!1},y=Gn(o.treeDefaultExpandedKeys),X=Gn(null);rt(function(){return l.searchValue},function(){l.searchValue&&(X.value=rme(on(r.treeData),on(r.fieldNames)))},{immediate:!0});var m=de(function(){return o.treeExpandedKeys?o.treeExpandedKeys.slice():l.searchValue?X.value:y.value}),N=function(W){var M;y.value=W,X.value=W,(M=o.onTreeExpand)===null||M===void 0||M.call(o,W)},G=function(W){W.preventDefault()},d=function(W,M){var I,w=M.node,C=o.checkable,x=o.checkedKeys;if(!(C&&iW(w))&&((I=r.onSelect)===null||I===void 0||I.call(r,w.key,{selected:!x.includes(w.key)}),!l.multiple)){var R;(R=l.toggleOpen)===null||R===void 0||R.call(l,!1)}},u=Ne(null),s=de(function(){return o.keyEntities[u.value]}),h=function(W){u.value=W};return a({scrollTo:function(){for(var W,M,I=arguments.length,w=new Array(I),C=0;C0&&arguments[0]!==void 0?arguments[0]:[];return Ri(t).map(function(i){var a,l,o;if(!fme(i))return null;for(var r=i.children||{},f=i.key,v={},b=0,Z=Object.entries(i.props);b1&&arguments[1]!==void 0?arguments[1]:"0",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return b.map(function(y,X){var m="".concat(Z,"-").concat(X),N=y[l.value],G=t.includes(N),d=v(y[l.children]||[],m,G),u=D(EX,y,{default:function(){return[d.map(function(c){return c.node})]}});if(e===N&&(o=u),G){var s={pos:m,node:u,children:d};return p||r.push(s),s}return null}).filter(function(y){return y})}r||(r=[],v(i),r.sort(function(b,Z){var p=b.node.props.value,y=Z.node.props.value,X=t.indexOf(p),m=t.indexOf(y);return X-m}))}Object.defineProperty(n,"triggerNode",{get:function(){return f(),o}}),Object.defineProperty(n,"allCheckedNodes",{get:function(){return f(),a?r:r.map(function(b){var Z=b.node;return Z})}})}function pme(n,e){var t=e.id,i=e.pId,a=e.rootPId,l={},o=[],r=n.map(function(f){var v=P({},f),b=v[t];return l[b]=v,v.key=v.key||b,v});return r.forEach(function(f){var v=f[i],b=l[v];b&&(b.children=b.children||[],b.children.push(f)),(v===a||!b&&a===null)&&o.push(f)}),o}function yme(n,e,t){var i=Gn();return rt([t,n,e],function(){var a=t.value;n.value?i.value=t.value?pme(on(n.value),P({id:"id",pId:"pId",rootPId:null},a!==!0?a:{})):on(n.value).slice():i.value=bme(on(e.value))},{immediate:!0,deep:!0}),i}const Zme=function(n){var e=Gn({valueLabels:new Map}),t=Gn();rt(n,function(){t.value=on(n.value)},{immediate:!0});var i=de(function(){var a=e.value.valueLabels,l=new Map,o=t.value.map(function(r){var f,v=r.value,b=(f=r.label)!==null&&f!==void 0?f:a.get(v);return l.set(v,b),P(P({},r),{},{label:b})});return e.value.valueLabels=l,o});return[i]},vme=function(n,e){var t=Gn(new Map),i=Gn({});return qt(function(){var a=e.value,l=Kh(n.value,{fieldNames:a,initWrapper:function(r){return P(P({},r),{},{valueEntities:new Map})},processEntity:function(r,f){var v=r.node[a.value];f.valueEntities.set(v,r)}});t.value=l.valueEntities,i.value=l.keyEntities}),{valueEntities:t,keyEntities:i}},Wme=function(n,e,t,i,a,l){var o=Gn([]),r=Gn([]);return qt(function(){var f=n.value.map(function(p){var y=p.value;return y}),v=e.value.map(function(p){var y=p.value;return y}),b=f.filter(function(p){return!i.value[p]});if(t.value){var Z=ir(f,!0,i.value,a.value,l.value);f=Z.checkedKeys,v=Z.halfCheckedKeys}o.value=Array.from(new Set([].concat(yt(b),yt(f)))),r.value=v}),[o,r]},Gme=function(n,e,t){var i=t.treeNodeFilterProp,a=t.filterTreeNode,l=t.fieldNames;return de(function(){var o=l.value.children,r=e.value,f=i==null?void 0:i.value;if(!r||a.value===!1)return n.value;var v;if(typeof a.value=="function")v=a.value;else{var b=r.toUpperCase();v=function(y,X){var m=X[f];return String(m).toUpperCase().includes(b)}}function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=[],m=0,N=p.length;m2&&arguments[2]!==void 0?arguments[2]:0,W=arguments.length>3&&arguments[3]!==void 0?arguments[3]:h.length,M=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,I=Math.floor((c+W)/2),w=h.slice(0,I);if(s.textContent=w,c>=W-1)for(var C=W;C>=c;C-=1){var x=h.slice(0,C);if(s.textContent=x,Z()||!x)return C===h.length?{finished:!1,vNode:h}:{finished:!0,vNode:x}}return Z()?d(s,h,I,W,I):d(s,h,c,I,M)}function u(s){var h=s.nodeType;if(h===kme){var c=s.textContent||"",W=document.createTextNode(c);return G(W),d(W,c)}return{finished:!1,vNode:null}}return p.some(function(s){var h=u(s),c=h.finished,W=h.vNode;return W&&X.push(W),c}),{content:X,text:ha.innerHTML,ellipsis:!0}};var jme=["prefixCls","class","direction","component"],Ume=function(){return{prefixCls:String,direction:String,component:String}},Eme=He({name:"ATypography",inheritAttrs:!1,props:Ume(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("typography",e),o=l.prefixCls,r=l.direction;return function(){var f,v=P(P({},e),a);v.prefixCls,v.class,v.direction;var b=v.component,Z=b===void 0?"article":b,p=jt(v,jme);return D(Z,P({class:_e(o.value,ce({},"".concat(o.value,"-rtl"),r.value==="rtl"),a.class)},p),{default:function(){return[(f=i.default)===null||f===void 0?void 0:f.call(i)]}})}}});const ma=Eme;var Kme=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,i=[],a=0;a"u"){f&&console.warn("unable to use e.clipboardData"),f&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var Z=DV[e.format]||DV.default;window.clipboardData.setData(Z,n)}else b.clipboardData.clearData(),b.clipboardData.setData(e.format,n);e.onCopy&&(b.preventDefault(),e.onCopy(b.clipboardData))}),document.body.appendChild(o),a.selectNodeContents(o),l.addRange(a);var v=document.execCommand("copy");if(!v)throw new Error("copy command was unsuccessful");r=!0}catch(b){f&&console.error("unable to copy using execCommand: ",b),f&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",n),e.onCopy&&e.onCopy(window.clipboardData),r=!0}catch(Z){f&&console.error("unable to copy using clipboardData: ",Z),f&&console.error("falling back to prompt"),t=Qme("message"in e?e.message:Pme),window.prompt(t,n)}}finally{l&&(typeof l.removeRange=="function"?l.removeRange(a):l.removeAllRanges()),o&&document.body.removeChild(o),i()}return r}var Ame={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"};const _me=Ame;function OV(n){for(var e=1;e1&&ne,ue=K,ve;if(_&&v.isEllipsis&&!v.expanded&&!ne){var Ge,Je=pe.title,xe=Je||"";!Je&&(typeof K=="string"||typeof K=="number")&&(xe=String(K)),xe=(Ge=xe)===null||Ge===void 0?void 0:Ge.slice(String(v.ellipsisContent||"").length),ue=D(ln,null,[on(v.ellipsisContent),D("span",{title:xe,"aria-hidden":"true"},[UV]),E])}else ue=D(ln,null,[K,E]);ue=R(e,ue);var ke=$&&_&&v.isEllipsis&&!v.expanded&&!ne,Pe=i.ellipsisTooltip?i.ellipsisTooltip():$;return D(rr,{onResize:w,disabled:!_},{default:function(){return[D(ma,P({ref:b,class:[(F={},ce(F,"".concat(r.value,"-").concat(Q),Q),ce(F,"".concat(r.value,"-disabled"),oe),ce(F,"".concat(r.value,"-ellipsis"),_),ce(F,"".concat(r.value,"-single-line"),_===1&&!v.isEllipsis),ce(F,"".concat(r.value,"-ellipsis-single-line"),B),ce(F,"".concat(r.value,"-ellipsis-multiple-line"),q),F),se],style:P(P({},he),{},{WebkitLineClamp:q?_:void 0}),"aria-label":ve,direction:f.value,onClick:U.indexOf("text")!==-1?m:function(){}},be),{default:function(){return[ke?D(Xr,{title:$===!0?K:Pe},{default:function(){return[D("span",null,[ue])]}}):ue,Y()]}})]}})}},null)}}});const _h=o0e;var s0e=["ellipsis","rel"],c0e=function(){return dn(P(P({},Ah()),{},{ellipsis:{type:Boolean,default:void 0}}),["component"])},xp=function(e,t){var i=t.slots,a=t.attrs,l=P(P({},e),a),o=l.ellipsis,r=l.rel,f=jt(l,s0e);Ci(Yt(o)!=="object","Typography.Link","`ellipsis` only supports boolean value.");var v=P(P({},f),{},{rel:r===void 0&&f.target==="_blank"?"noopener noreferrer":r,ellipsis:!!o,component:"a"});return delete v.navigate,D(_h,v,i)};xp.displayName="ATypographyLink";xp.inheritAttrs=!1;xp.props=c0e();const QX=xp;var u0e=function(){return dn(Ah(),["component"])},Cp=function(e,t){var i=t.slots,a=t.attrs,l=P(P({},e),{},{component:"div"},a);return D(_h,l,i)};Cp.displayName="ATypographyParagraph";Cp.inheritAttrs=!1;Cp.props=u0e();const BX=Cp;var d0e=function(){return P(P({},dn(Ah(),["component"])),{},{ellipsis:{type:[Boolean,Object],default:void 0}})},Sp=function(e,t){var i=t.slots,a=t.attrs,l=e.ellipsis;Ci(Yt(l)!=="object"||!l||!("expandable"in l)&&!("rows"in l),"Typography.Text","`ellipsis` do not support `expandable` or `rows` props.");var o=P(P({},e),{},{ellipsis:l&&Yt(l)==="object"?dn(l,["expandable","rows"]):l,component:"span"},a);return D(_h,o,i)};Sp.displayName="ATypographyText";Sp.inheritAttrs=!1;Sp.props=d0e();const AX=Sp;var h0e=["level"],f0e=MK(1,2,3,4,5),b0e=function(){return P(P({},dn(Ah(),["component","strong"])),{},{level:Number})},zp=function(e,t){var i=t.slots,a=t.attrs,l=e.level,o=l===void 0?1:l,r=jt(e,h0e),f;f0e.indexOf(o)!==-1?f="h".concat(o):(Ci(!1,"Typography","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."),f="h1");var v=P(P({},r),{},{component:f},a);return D(_h,v,i)};zp.displayName="ATypographyTitle";zp.inheritAttrs=!1;zp.props=b0e();const _X=zp;ma.Text=AX;ma.Title=_X;ma.Paragraph=BX;ma.Link=QX;ma.Base=_h;ma.install=function(n){return n.component(ma.name,ma),n.component(ma.Text.displayName,AX),n.component(ma.Title.displayName,_X),n.component(ma.Paragraph.displayName,BX),n.component(ma.Link.displayName,QX),n};function m0e(n,e){var t="cannot ".concat(n.method," ").concat(n.action," ").concat(e.status,"'"),i=new Error(t);return i.status=e.status,i.method=n.method,i.url=n.action,i}function EV(n){var e=n.responseText||n.response;if(!e)return e;try{return JSON.parse(e)}catch{return e}}function p0e(n){var e=new XMLHttpRequest;n.onProgress&&e.upload&&(e.upload.onprogress=function(l){l.total>0&&(l.percent=l.loaded/l.total*100),n.onProgress(l)});var t=new FormData;n.data&&Object.keys(n.data).forEach(function(a){var l=n.data[a];if(Array.isArray(l)){l.forEach(function(o){t.append("".concat(a,"[]"),o)});return}t.append(a,l)}),n.file instanceof Blob?t.append(n.filename,n.file,n.file.name):t.append(n.filename,n.file),e.onerror=function(l){n.onError(l)},e.onload=function(){return e.status<200||e.status>=300?n.onError(m0e(n,e),EV(e)):n.onSuccess(EV(e),e)},e.open(n.method,n.action,!0),n.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var i=n.headers||{};return i["X-Requested-With"]!==null&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(i).forEach(function(a){i[a]!==null&&e.setRequestHeader(a,i[a])}),e.send(t),{abort:function(){e.abort()}}}var y0e=+new Date,Z0e=0;function $Z(){return"vc-upload-".concat(y0e,"-").concat(++Z0e)}const qZ=function(n,e){if(n&&e){var t=Array.isArray(e)?e:e.split(","),i=n.name||"",a=n.type||"",l=a.replace(/\/.*$/,"");return t.some(function(o){var r=o.trim();if(/^\*(\/\*)?$/.test(o))return!0;if(r.charAt(0)==="."){var f=i.toLowerCase(),v=r.toLowerCase(),b=[v];return(v===".jpg"||v===".jpeg")&&(b=[".jpg",".jpeg"]),b.some(function(Z){return f.endsWith(Z)})}return/\/\*$/.test(r)?l===r.replace(/\/.*$/,""):!!(a===r||/^\w+$/.test(r))})}return!0};function v0e(n,e){var t=n.createReader(),i=[];function a(){t.readEntries(function(l){var o=Array.prototype.slice.apply(l);i=i.concat(o);var r=!o.length;r?e(i):a()})}a()}var W0e=function(e,t,i){var a=function l(o,r){o.path=r||"",o.isFile?o.file(function(f){i(f)&&(o.fullPath&&!f.webkitRelativePath&&(Object.defineProperties(f,{webkitRelativePath:{writable:!0}}),f.webkitRelativePath=o.fullPath.replace(/^\//,""),Object.defineProperties(f,{webkitRelativePath:{writable:!1}})),t([f]))}):o.isDirectory&&v0e(o,function(f){f.forEach(function(v){l(v,"".concat(r).concat(o.name,"/"))})})};e.forEach(function(l){a(l.webkitGetAsEntry())})};const G0e=W0e;var DS=function(){return{capture:[Boolean,String],multipart:{type:Boolean,default:void 0},name:String,disabled:{type:Boolean,default:void 0},componentTag:String,action:[String,Function],method:String,directory:{type:Boolean,default:void 0},data:[Object,Function],headers:Object,accept:String,multiple:{type:Boolean,default:void 0},onBatchStart:Function,onReject:Function,onStart:Function,onError:Function,onSuccess:Function,onProgress:Function,beforeUpload:Function,customRequest:Function,withCredentials:{type:Boolean,default:void 0},openFileDialogOnClick:{type:Boolean,default:void 0},prefixCls:String,id:String,onMouseenter:Function,onMouseleave:Function,onClick:Function}};function X0e(n,e,t,i){for(var a=-1,l=n==null?0:n.length;++a0&&arguments[0]!==void 0?arguments[0]:"",t=e.split("/"),i=t[t.length-1],a=i.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(a)||[""])[0]},jS=function(e){return e.indexOf("image/")===0},_0e=function(e){if(e.type&&!e.thumbUrl)return jS(e.type);var t=e.thumbUrl||e.url||"",i=A0e(t);return/^data:image\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(i)?!0:!(/^data:/.test(t)||i)},es=200;function $0e(n){return new Promise(function(e){if(!n.type||!jS(n.type)){e("");return}var t=document.createElement("canvas");t.width=es,t.height=es,t.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(es,"px; height: ").concat(es,"px; z-index: 9999; display: none;"),document.body.appendChild(t);var i=t.getContext("2d"),a=new Image;a.onload=function(){var l=a.width,o=a.height,r=es,f=es,v=0,b=0;l>o?(f=o*(es/l),b=-(f-r)/2):(r=l*(es/o),v=-(r-f)/2),i.drawImage(a,v,b,r,f);var Z=t.toDataURL();document.body.removeChild(t),e(Z)},a.src=window.URL.createObjectURL(n)})}var q0e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"};const epe=q0e;function BV(n){for(var e=1;e"u"||typeof window>"u"||!window.FileReader||!window.File||!(G.originFileObj instanceof File||G.originFileObj instanceof Blob)||G.thumbUrl!==void 0||(G.thumbUrl="",e.previewFile&&e.previewFile(G.originFileObj).then(function(d){G.thumbUrl=d||"",o.update()}))})});var r=function(d,u){if(e.onPreview)return u==null||u.preventDefault(),e.onPreview(d)},f=function(d){typeof e.onDownload=="function"?e.onDownload(d):d.url&&window.open(d.url)},v=function(d){var u;(u=e.onRemove)===null||u===void 0||u.call(e,d)},b=function(d){var u=d.file,s=e.iconRender||i.iconRender;if(s)return s({file:u,listType:e.listType});var h=u.status==="uploading",c=e.isImageUrl&&e.isImageUrl(u)?D(U0e,null,null):D(P0e,null,null),W=D(h?Yr:J0e,null,null);return e.listType==="picture"?W=h?D(Yr,null,null):c:e.listType==="picture-card"&&(W=h?e.locale.uploading:c),W},Z=function(d){var u=d.customIcon,s=d.callback,h=d.prefixCls,c=d.title,W={type:"text",size:"small",title:c,onClick:function(){s()},class:"".concat(h,"-list-item-card-actions-btn")};return Si(u)?D(qi,W,{icon:function(){return u}}):D(qi,W,{default:function(){return[D("span",null,[u])]}})};a({handlePreview:r,handleDownload:f});var p=Nt("upload",e),y=p.prefixCls,X=p.direction,m=de(function(){var G;return G={},ce(G,"".concat(y.value,"-list"),!0),ce(G,"".concat(y.value,"-list-").concat(e.listType),!0),ce(G,"".concat(y.value,"-list-rtl"),X.value==="rtl"),G}),N=de(function(){return P(P(P({},Oh("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),$W("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),{},{class:m.value,appear:l.value})});return function(){var G=e.listType,d=e.locale,u=e.isImageUrl,s=e.items,h=s===void 0?[]:s,c=e.showPreviewIcon,W=e.showRemoveIcon,M=e.showDownloadIcon,I=e.removeIcon,w=e.previewIcon,C=e.downloadIcon,x=e.progress,R=e.appendAction,g=e.itemRender,S=e.appendActionVisible,L=R==null?void 0:R();return D(jW,P(P({},N.value),{},{tag:"div"}),{default:function(){return[h.map(function(Y){var T=Y.uid;return D(lpe,{key:T,locale:d,prefixCls:y.value,file:Y,items:h,progress:x,listType:G,isImgUrl:u,showPreviewIcon:c,showRemoveIcon:W,showDownloadIcon:M,onPreview:r,onDownload:f,onClose:v,removeIcon:I,previewIcon:w,downloadIcon:C,itemRender:g},P(P({},i),{},{iconRender:b,actionIconRender:Z}))}),R?cl(D(ape,{key:"__ant_upload_appendAction"},{default:function(){return L}}),[[gr,!!S]]):null]}})}}});var ope=["class","style"],kd="__LIST_IGNORE_".concat(Date.now(),"__");const fm=He({compatConfig:{MODE:3},name:"AUpload",inheritAttrs:!1,props:pn(OS(),{type:"select",multiple:!1,action:"",data:{},accept:"",showUploadList:!0,listType:"text",disabled:!1,supportServerRender:!0}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=Hi(),r=Wi(e.defaultFileList||[],{value:Ot(e,"fileList"),postState:function(R){var g=Date.now();return(R??[]).map(function(S,L){return!S.uid&&!Object.isFrozen(S)&&(S.uid="__AUTO__".concat(g,"_").concat(L,"__")),S})}}),f=ft(r,2),v=f[0],b=f[1],Z=Ne("drop"),p=Ne();Kt(function(){jn(e.fileList!==void 0||a.value===void 0,"Upload","`value` is not a valid prop, do you mean `fileList`?"),jn(e.transformFile===void 0,"Upload","`transformFile` is deprecated. Please use `beforeUpload` directly."),jn(e.remove===void 0,"Upload","`remove` props is deprecated. Please use `remove` event.")});var y=function(R,g,S){var L,V,Y=yt(g);e.maxCount===1?Y=Y.slice(-1):e.maxCount&&(Y=Y.slice(0,e.maxCount)),b(Y);var T={file:R,fileList:Y};S&&(T.event=S),(L=e["onUpdate:fileList"])===null||L===void 0||L.call(e,T.fileList),(V=e.onChange)===null||V===void 0||V.call(e,T),o.onFieldChange()},X=function(){var x=wc(Xa.mark(function R(g,S){var L,V,Y,T;return Xa.wrap(function(U){for(;;)switch(U.prev=U.next){case 0:if(L=e.beforeUpload,V=e.transformFile,Y=g,!L){U.next=13;break}return U.next=5,L(g,S);case 5:if(T=U.sent,T!==!1){U.next=8;break}return U.abrupt("return",!1);case 8:if(delete g[kd],T!==kd){U.next=12;break}return Object.defineProperty(g,kd,{value:!0,configurable:!0}),U.abrupt("return",!1);case 12:Yt(T)==="object"&&T&&(Y=T);case 13:if(!V){U.next=17;break}return U.next=16,V(Y);case 16:Y=U.sent;case 17:return U.abrupt("return",Y);case 18:case"end":return U.stop()}},R)}));return function(g,S){return x.apply(this,arguments)}}(),m=function(R){var g=R.filter(function(V){return!V.file[kd]});if(g.length){var S=g.map(function(V){return Nb(V.file)}),L=yt(v.value);S.forEach(function(V){L=Mb(V,L)}),S.forEach(function(V,Y){var T=V;if(g[Y].parsedFile)V.status="uploading";else{var J=V.originFileObj,U;try{U=new File([J],J.name,{type:J.type})}catch{U=new Blob([J],{type:J.type}),U.name=J.name,U.lastModifiedDate=new Date,U.lastModified=new Date().getTime()}U.uid=V.uid,T=U}y(T,L)})}},N=function(R,g,S){try{typeof R=="string"&&(R=JSON.parse(R))}catch{}if(t2(g,v.value)){var L=Nb(g);L.status="done",L.percent=100,L.response=R,L.xhr=S;var V=Mb(L,v.value);y(L,V)}},G=function(R,g){if(t2(g,v.value)){var S=Nb(g);S.status="uploading",S.percent=R.percent;var L=Mb(S,v.value);y(S,L,R)}},d=function(R,g,S){if(t2(S,v.value)){var L=Nb(S);L.error=R,L.response=g,L.status="error";var V=Mb(L,v.value);y(L,V)}},u=function(R){var g,S=e.onRemove||e.remove;Promise.resolve(typeof S=="function"?S(R):S).then(function(L){if(L!==!1){var V=B0e(R,v.value);if(V){var Y,T;g=P(P({},R),{},{status:"removed"}),(Y=v.value)===null||Y===void 0||Y.forEach(function(J){var U=g.uid!==void 0?"uid":"name";J[U]===g[U]&&!Object.isFrozen(J)&&(J.status="removed")}),(T=p.value)===null||T===void 0||T.abort(g),y(g,V)}}})},s=function(R){if(Z.value=R.type,R.type==="drop"){var g;(g=e.onDrop)===null||g===void 0||g.call(e,R)}};l({onBatchStart:m,onSuccess:N,onProgress:G,onError:d,fileList:v,upload:p});var h=Nt("upload",e),c=h.prefixCls,W=h.direction,M=Br("Upload",Mr.Upload,de(function(){return e.locale})),I=ft(M,1),w=I[0],C=function(R,g){var S=e.removeIcon,L=e.previewIcon,V=e.downloadIcon,Y=e.previewFile,T=e.onPreview,J=e.onDownload,U=e.disabled,K=e.isImageUrl,H=e.progress,k=e.itemRender,F=e.iconRender,O=e.showUploadList,Q=typeof O=="boolean"?{}:O,oe=Q.showDownloadIcon,se=Q.showPreviewIcon,he=Q.showRemoveIcon;return O?D(rpe,{listType:e.listType,items:v.value,previewFile:Y,onPreview:T,onDownload:J,onRemove:u,showRemoveIcon:!U&&he,showPreviewIcon:se,showDownloadIcon:oe,removeIcon:S,previewIcon:L,downloadIcon:V,iconRender:F,locale:w.value,isImageUrl:K,progress:H,itemRender:k,appendActionVisible:g,appendAction:R},P({},i)):R==null?void 0:R()};return function(){var x,R,g,S=e.listType,L=e.disabled,V=e.type;a.class,a.style;var Y=jt(a,ope),T=P(P(P({onBatchStart:m,onError:d,onProgress:G,onSuccess:N},Y),e),{},{id:(x=e.id)!==null&&x!==void 0?x:o.id.value,prefixCls:c.value,beforeUpload:X,onChange:void 0});if(delete T.remove,(!i.default||L)&&delete T.id,V==="drag"){var J,U,K=_e(c.value,(J={},ce(J,"".concat(c.value,"-drag"),!0),ce(J,"".concat(c.value,"-drag-uploading"),v.value.some(function(O){return O.status==="uploading"})),ce(J,"".concat(c.value,"-drag-hover"),Z.value==="dragover"),ce(J,"".concat(c.value,"-disabled"),L),ce(J,"".concat(c.value,"-rtl"),W.value==="rtl"),J),a.class);return D("span",null,[D("div",{class:K,onDrop:s,onDragover:s,onDragleave:s,style:a.style},[D(KV,P(P({},T),{},{ref:p,class:"".concat(c.value,"-btn")}),P({default:function(){return[D("div",{class:"".concat(c,"-drag-container")},[(U=i.default)===null||U===void 0?void 0:U.call(i)])]}},i))]),C()])}var H=_e(c.value,(R={},ce(R,"".concat(c.value,"-select"),!0),ce(R,"".concat(c.value,"-select-").concat(S),!0),ce(R,"".concat(c.value,"-disabled"),L),ce(R,"".concat(c.value,"-rtl"),W.value==="rtl"),R)),k=ti((g=i.default)===null||g===void 0?void 0:g.call(i)),F=function(Q){return D("div",{class:H,style:Q},[D(KV,P(P({},T),{},{ref:p}),i)])};return S==="picture-card"?D("span",{class:_e("".concat(c.value,"-picture-card-wrapper"),a.class)},[C(F,!!(k&&k.length))]):D("span",{class:a.class},[F(k&&k.length?void 0:{display:"none"}),C()])}}});var spe=["height"],cpe=["style"];const bm=He({compatConfig:{MODE:3},name:"AUploadDragger",inheritAttrs:!1,props:OS(),setup:function(e,t){var i=t.slots,a=t.attrs;return function(){var l=e.height,o=jt(e,spe),r=a.style,f=jt(a,cpe),v=P(P(P({},o),f),{},{type:"drag",style:P(P({},r),{},{height:typeof l=="number"?"".concat(l,"px"):l})});return D(fm,v,i)}}});var upe=bm;const dpe=Xn(fm,{Dragger:bm,LIST_IGNORE:kd,install:function(e){return e.component(fm.name,fm),e.component(bm.name,bm),e}}),AV=Object.freeze(Object.defineProperty({__proto__:null,Affix:AT,Alert:w6,Anchor:nc,AnchorLink:$T,AutoComplete:G6,AutoCompleteOptGroup:W6,AutoCompleteOption:v6,Avatar:fc,AvatarGroup:Um,BackTop:$6,Badge:Ob,BadgeRibbon:Em,Breadcrumb:bc,BreadcrumbItem:Ih,BreadcrumbSeparator:Am,Button:qi,ButtonGroup:Hm,Calendar:yee,Card:Nu,CardGrid:n0,CardMeta:t0,Carousel:sne,Cascader:ure,CheckableTag:r0,Checkbox:lr,CheckboxGroup:a0,Col:mr,Collapse:$d,CollapsePanel:i0,Comment:Wre,ConfigProvider:pG,DatePicker:Qre,Descriptions:noe,DescriptionsItem:s9,DirectoryTree:om,Divider:aoe,Drawer:Yoe,Dropdown:Pr,DropdownButton:Mh,Empty:cs,Form:us,FormItem:_C,FormItemRest:Om,Grid:Wte,Image:Vse,ImagePreviewGroup:R9,Input:Ai,InputGroup:W9,InputNumber:Kse,InputPassword:N9,InputSearch:G9,Layout:lce,LayoutContent:ice,LayoutFooter:tce,LayoutHeader:ece,LayoutSider:nce,List:Rce,ListItem:S9,ListItemMeta:x9,LocaleProvider:NT,Mentions:qce,MentionsOption:im,Menu:Yi,MenuDivider:Bm,MenuItem:Ro,MenuItemGroup:Qm,Modal:yl,MonthPicker:Bb,PageHeader:Eue,Pagination:Np,Popconfirm:Que,Popover:Ex,Progress:GX,QuarterPicker:Ab,Radio:ta,RadioButton:$m,RadioGroup:L1,RangePicker:_b,Rate:Mde,Result:Dde,Row:ou,Select:Ns,SelectOptGroup:p6,SelectOption:m6,Skeleton:ea,SkeletonAvatar:wX,SkeletonButton:MX,SkeletonImage:YX,SkeletonInput:IX,SkeletonTitle:Mp,Slider:uhe,Space:mhe,Spin:Ws,Statistic:Io,StatisticCountdown:Lue,Step:lm,Steps:Ghe,SubMenu:Cu,Switch:Ihe,TabPane:e0,Table:Fbe,TableColumn:cm,TableColumnGroup:um,TableSummary:dm,TableSummaryCell:f0,TableSummaryRow:h0,Tabs:mc,Tag:t9,Textarea:tX,TimePicker:wme,TimeRangePicker:hm,Timeline:rh,TimelineItem:Rh,Tooltip:Xr,Transfer:ime,Tree:gS,TreeNode:sm,TreeSelect:Ime,TreeSelectNode:aW,Typography:ma,TypographyLink:QX,TypographyParagraph:BX,TypographyText:AX,TypographyTitle:_X,Upload:dpe,UploadDragger:upe,WeekPicker:Qb,message:O0,notification:fG},Symbol.toStringTag,{value:"Module"})),hpe="3.2.15";var fpe=function(e){return Object.keys(AV).forEach(function(t){var i=AV[t];i.install&&e.use(i)}),e.config.globalProperties.$message=O0,e.config.globalProperties.$notification=fG,e.config.globalProperties.$info=yl.info,e.config.globalProperties.$success=yl.success,e.config.globalProperties.$error=yl.error,e.config.globalProperties.$warning=yl.warning,e.config.globalProperties.$confirm=yl.confirm,e.config.globalProperties.$destroyAll=yl.destroyAll,e};const bpe={version:hpe,install:fpe};var rW={},mpe={get exports(){return rW},set exports(n){rW=n}};function ms(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var b0={},ppe={get exports(){return b0},set exports(n){b0=n}};/*! JSZip v3.10.1 - A JavaScript class for generating and reading zip files @@ -124,8 +124,8 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/main/LICENSE -*/var BV;function bpe(){return BV||(BV=1,function(n,e){(function(t){n.exports=t()})(function(){return function t(i,a,l){function o(v,b){if(!a[v]){if(!i[v]){var Z=typeof ms=="function"&&ms;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=a[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,a,l)}return a[v].exports}for(var r=typeof ms=="function"&&ms,f=0;f>2,y=(3&v)<<4|b>>4,X=1>6:64,m=2>4,b=(15&p)<<4|(y=r.indexOf(f.charAt(m++)))>>2,Z=(3&y)<<6|(X=r.indexOf(f.charAt(m++))),d[N++]=v,y!==64&&(d[N++]=b),X!==64&&(d[N++]=Z);return d}},{"./support":30,"./utils":32}],2:[function(t,i,a){var l=t("./external"),o=t("./stream/DataWorker"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var b=new o(l.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),Z=this;return b.on("end",function(){if(this.streamInfo.data_length!==Z.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),b},getCompressedWorker:function(){return new o(l.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,i,a){var l=t("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new l("STORE compression")},uncompressWorker:function(){return new l("STORE decompression")}},a.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,i,a){var l=t("./utils"),o=function(){for(var r,f=[],v=0;v<256;v++){r=v;for(var b=0;b<8;b++)r=1&r?3988292384^r>>>1:r>>>1;f[v]=r}return f}();i.exports=function(r,f){return r!==void 0&&r.length?l.getTypeOf(r)!=="string"?function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b[m])];return-1^v}(0|f,r,r.length,0):function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b.charCodeAt(m))];return-1^v}(0|f,r,r.length,0):0}},{"./utils":32}],5:[function(t,i,a){a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(t,i,a){var l=null;l=typeof Promise<"u"?Promise:t("lie"),i.exports={Promise:l}},{lie:37}],7:[function(t,i,a){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=l?"uint8array":"array";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}a.magic="\b\0",r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},a.compressWorker=function(Z){return new b("Deflate",Z)},a.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,i,a){function l(y,X){var m,N="";for(m=0;m>>=8;return N}function o(y,X,m,N,G,d){var u,s,h=y.file,c=y.compression,W=d!==v.utf8encode,M=r.transformTo("string",d(h.name)),I=r.transformTo("string",v.utf8encode(h.name)),w=h.comment,C=r.transformTo("string",d(w)),x=r.transformTo("string",v.utf8encode(w)),R=I.length!==h.name.length,g=x.length!==w.length,S="",L="",V="",Y=h.dir,T=h.date,J={crc32:0,compressedSize:0,uncompressedSize:0};X&&!m||(J.crc32=y.crc32,J.compressedSize=y.compressedSize,J.uncompressedSize=y.uncompressedSize);var U=0;X&&(U|=8),W||!R&&!g||(U|=2048);var K=0,H=0;Y&&(K|=16),G==="UNIX"?(H=798,K|=function(F,O){var Q=F;return F||(Q=O?16893:33204),(65535&Q)<<16}(h.unixPermissions,Y)):(H=20,K|=function(F){return 63&(F||0)}(h.dosPermissions)),u=T.getUTCHours(),u<<=6,u|=T.getUTCMinutes(),u<<=5,u|=T.getUTCSeconds()/2,s=T.getUTCFullYear()-1980,s<<=4,s|=T.getUTCMonth()+1,s<<=5,s|=T.getUTCDate(),R&&(L=l(1,1)+l(b(M),4)+I,S+="up"+l(L.length,2)+L),g&&(V=l(1,1)+l(b(C),4)+x,S+="uc"+l(V.length,2)+V);var k="";return k+=` -\0`,k+=l(U,2),k+=c.magic,k+=l(u,2),k+=l(s,2),k+=l(J.crc32,4),k+=l(J.compressedSize,4),k+=l(J.uncompressedSize,4),k+=l(M.length,2),k+=l(S.length,2),{fileRecord:Z.LOCAL_FILE_HEADER+k+M+S,dirRecord:Z.CENTRAL_FILE_HEADER+l(H,2)+k+l(C.length,2)+"\0\0\0\0"+l(K,4)+l(N,4)+M+S+C}}var r=t("../utils"),f=t("../stream/GenericWorker"),v=t("../utf8"),b=t("../crc32"),Z=t("../signature");function p(y,X,m,N){f.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=X,this.zipPlatform=m,this.encodeFileName=N,this.streamFiles=y,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(p,f),p.prototype.push=function(y){var X=y.meta.percent||0,m=this.entriesCount,N=this._sources.length;this.accumulate?this.contentBuffer.push(y):(this.bytesWritten+=y.data.length,f.prototype.push.call(this,{data:y.data,meta:{currentFile:this.currentFile,percent:m?(X+100*(m-N-1))/m:100}}))},p.prototype.openedSource=function(y){this.currentSourceOffset=this.bytesWritten,this.currentFile=y.file.name;var X=this.streamFiles&&!y.file.dir;if(X){var m=o(y,X,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:m.fileRecord,meta:{percent:0}})}else this.accumulate=!0},p.prototype.closedSource=function(y){this.accumulate=!1;var X=this.streamFiles&&!y.file.dir,m=o(y,X,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(m.dirRecord),X)this.push({data:function(N){return Z.DATA_DESCRIPTOR+l(N.crc32,4)+l(N.compressedSize,4)+l(N.uncompressedSize,4)}(y),meta:{percent:100}});else for(this.push({data:m.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},p.prototype.flush=function(){for(var y=this.bytesWritten,X=0;X=this.index;f--)v=(v<<8)+this.byteAt(f);return this.index+=r,v},readString:function(r){return l.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},i.exports=o},{"../utils":32}],19:[function(t,i,a){var l=t("./Uint8ArrayReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,i,a){var l=t("./DataReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},o.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},o.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./DataReader":18}],21:[function(t,i,a){var l=t("./ArrayReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var f=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./ArrayReader":17}],22:[function(t,i,a){var l=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=l.getTypeOf(Z);return l.checkSupport(p),p!=="string"||o.uint8array?p==="nodebuffer"?new v(Z):o.uint8array?new b(l.transformTo("uint8array",Z)):new r(l.transformTo("array",Z)):new f(Z)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,i,a){a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,i,a){var l=t("./GenericWorker"),o=t("../utils");function r(f){l.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,l),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(t,i,a){var l=t("./GenericWorker"),o=t("../crc32");function r(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(r,l),r.prototype.processChunk=function(f){this.streamInfo.crc32=o(f.data,this.streamInfo.crc32||0),this.push(f)},i.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}l.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataWorker");var v=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,f.then(function(b){v.dataIsReady=!0,v.data=b,v.max=b&&b.length||0,v.type=l.getTypeOf(b),v.isPaused||v._tickAndRepeat()},function(b){v.error(b)})}l.inherits(r,o),r.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var f=null,v=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":f=this.data.substring(this.index,v);break;case"uint8array":f=this.data.subarray(this.index,v);break;case"array":case"nodebuffer":f=this.data.slice(this.index,v)}return this.index=v,this.push({data:f,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(t,i,a){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(o){this.emit("data",o)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(o){this.emit("error",o)}return!0},error:function(o){return!this.isFinished&&(this.isPaused?this.generatedError=o:(this.isFinished=!0,this.emit("error",o),this.previous&&this.previous.error(o),this.cleanUp()),!0)},on:function(o,r){return this._listeners[o].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(o,r){if(this._listeners[o])for(var f=0;f "+o:o}},i.exports=l},{}],29:[function(t,i,a){var l=t("../utils"),o=t("./ConvertWorker"),r=t("./GenericWorker"),f=t("../base64"),v=t("../support"),b=t("../external"),Z=null;if(v.nodestream)try{Z=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function p(X,m){return new b.Promise(function(N,G){var d=[],u=X._internalType,s=X._outputType,h=X._mimeType;X.on("data",function(c,W){d.push(c),m&&m(W)}).on("error",function(c){d=[],G(c)}).on("end",function(){try{var c=function(W,M,I){switch(W){case"blob":return l.newBlob(l.transformTo("arraybuffer",M),I);case"base64":return f.encode(M);default:return l.transformTo(W,M)}}(s,function(W,M){var I,w=0,C=null,x=0;for(I=0;I"u")a.blob=!1;else{var l=new ArrayBuffer(0);try{a.blob=new Blob([l],{type:"application/zip"}).size===0}catch{try{var o=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);o.append(l),a.blob=o.getBlob("application/zip").size===0}catch{a.blob=!1}}}try{a.nodestream=!!t("readable-stream").Readable}catch{a.nodestream=!1}},{"readable-stream":16}],31:[function(t,i,a){for(var l=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=252<=b?6:248<=b?5:240<=b?4:224<=b?3:192<=b?2:1;v[254]=v[254]=1;function Z(){f.call(this,"utf-8 decode"),this.leftOver=null}function p(){f.call(this,"utf-8 encode")}a.utf8encode=function(y){return o.nodebuffer?r.newBufferFrom(y,"utf-8"):function(X){var m,N,G,d,u,s=X.length,h=0;for(d=0;d>>6:(N<65536?m[u++]=224|N>>>12:(m[u++]=240|N>>>18,m[u++]=128|N>>>12&63),m[u++]=128|N>>>6&63),m[u++]=128|63&N);return m}(y)},a.utf8decode=function(y){return o.nodebuffer?l.transformTo("nodebuffer",y).toString("utf-8"):function(X){var m,N,G,d,u=X.length,s=new Array(2*u);for(m=N=0;m>10&1023,s[N++]=56320|1023&G)}return s.length!==N&&(s.subarray?s=s.subarray(0,N):s.length=N),l.applyFromCharCode(s)}(y=l.transformTo(o.uint8array?"uint8array":"array",y))},l.inherits(Z,f),Z.prototype.processChunk=function(y){var X=l.transformTo(o.uint8array?"uint8array":"array",y.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var m=X;(X=new Uint8Array(m.length+this.leftOver.length)).set(this.leftOver,0),X.set(m,this.leftOver.length)}else X=this.leftOver.concat(X);this.leftOver=null}var N=function(d,u){var s;for((u=u||d.length)>d.length&&(u=d.length),s=u-1;0<=s&&(192&d[s])==128;)s--;return s<0||s===0?u:s+v[d[s]]>u?s:u}(X),G=X;N!==X.length&&(o.uint8array?(G=X.subarray(0,N),this.leftOver=X.subarray(N,X.length)):(G=X.slice(0,N),this.leftOver=X.slice(N,X.length))),this.push({data:a.utf8decode(G),meta:y.meta})},Z.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=Z,l.inherits(p,f),p.prototype.processChunk=function(y){this.push({data:a.utf8encode(y.data),meta:y.meta})},a.Utf8EncodeWorker=p},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,i,a){var l=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("./external");function v(m){return m}function b(m,N){for(var G=0;G>8;this.dir=!!(16&this.externalFileAttributes),y==0&&(this.dosPermissions=63&this.externalFileAttributes),y==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var y=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=y.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=y.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=y.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=y.readInt(4))}},readExtraFields:function(y){var X,m,N,G=y.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});y.index+4>>6:(y<65536?p[N++]=224|y>>>12:(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63),p[N++]=128|y>>>6&63),p[N++]=128|63&y);return p},a.buf2binstring=function(Z){return b(Z,Z.length)},a.binstring2buf=function(Z){for(var p=new l.Buf8(Z.length),y=0,X=p.length;y>10&1023,d[X++]=56320|1023&m)}return b(d,X)},a.utf8border=function(Z,p){var y;for((p=p||Z.length)>Z.length&&(p=Z.length),y=p-1;0<=y&&(192&Z[y])==128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":41}],43:[function(t,i,a){i.exports=function(l,o,r,f){for(var v=65535&l|0,b=l>>>16&65535|0,Z=0;r!==0;){for(r-=Z=2e3>>1:o>>>1;r[f]=o}return r}();i.exports=function(o,r,f,v){var b=l,Z=v+f;o^=-1;for(var p=v;p>>8^b[255&(o^r[p])];return-1^o}},{}],46:[function(t,i,a){var l,o=t("../utils/common"),r=t("./trees"),f=t("./adler32"),v=t("./crc32"),b=t("./messages"),Z=0,p=4,y=0,X=-2,m=-1,N=4,G=2,d=8,u=9,s=286,h=30,c=19,W=2*s+1,M=15,I=3,w=258,C=w+I+1,x=42,R=113,g=1,S=2,L=3,V=4;function Y(E,$){return E.msg=b[$],$}function T(E){return(E<<1)-(4E.avail_out&&(ae=E.avail_out),ae!==0&&(o.arraySet(E.output,$.pending_buf,$.pending_out,ae,E.next_out),E.next_out+=ae,$.pending_out+=ae,E.total_out+=ae,E.avail_out-=ae,$.pending-=ae,$.pending===0&&($.pending_out=0))}function K(E,$){r._tr_flush_block(E,0<=E.block_start?E.block_start:-1,E.strstart-E.block_start,$),E.block_start=E.strstart,U(E.strm)}function H(E,$){E.pending_buf[E.pending++]=$}function k(E,$){E.pending_buf[E.pending++]=$>>>8&255,E.pending_buf[E.pending++]=255&$}function F(E,$){var ae,le,ee=E.max_chain_length,te=E.strstart,be=E.prev_length,ne=E.nice_match,B=E.strstart>E.w_size-C?E.strstart-(E.w_size-C):0,q=E.window,ue=E.w_mask,ve=E.prev,Ge=E.strstart+w,Je=q[te+be-1],xe=q[te+be];E.prev_length>=E.good_match&&(ee>>=2),ne>E.lookahead&&(ne=E.lookahead);do if(q[(ae=$)+be]===xe&&q[ae+be-1]===Je&&q[ae]===q[te]&&q[++ae]===q[te+1]){te+=2,ae++;do;while(q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&teB&&--ee!=0);return be<=E.lookahead?be:E.lookahead}function O(E){var $,ae,le,ee,te,be,ne,B,q,ue,ve=E.w_size;do{if(ee=E.window_size-E.lookahead-E.strstart,E.strstart>=ve+(ve-C)){for(o.arraySet(E.window,E.window,ve,ve,0),E.match_start-=ve,E.strstart-=ve,E.block_start-=ve,$=ae=E.hash_size;le=E.head[--$],E.head[$]=ve<=le?le-ve:0,--ae;);for($=ae=ve;le=E.prev[--$],E.prev[$]=ve<=le?le-ve:0,--ae;);ee+=ve}if(E.strm.avail_in===0)break;if(be=E.strm,ne=E.window,B=E.strstart+E.lookahead,q=ee,ue=void 0,ue=be.avail_in,q=I)for(te=E.strstart-E.insert,E.ins_h=E.window[te],E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I)if(le=r._tr_tally(E,E.strstart-E.match_start,E.match_length-I),E.lookahead-=E.match_length,E.match_length<=E.max_lazy_match&&E.lookahead>=I){for(E.match_length--;E.strstart++,E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I&&E.match_length<=E.prev_length){for(ee=E.strstart+E.lookahead-I,le=r._tr_tally(E,E.strstart-1-E.prev_match,E.prev_length-I),E.lookahead-=E.prev_length-1,E.prev_length-=2;++E.strstart<=ee&&(E.ins_h=(E.ins_h<E.pending_buf_size-5&&(ae=E.pending_buf_size-5);;){if(E.lookahead<=1){if(O(E),E.lookahead===0&&$===Z)return g;if(E.lookahead===0)break}E.strstart+=E.lookahead,E.lookahead=0;var le=E.block_start+ae;if((E.strstart===0||E.strstart>=le)&&(E.lookahead=E.strstart-le,E.strstart=le,K(E,!1),E.strm.avail_out===0)||E.strstart-E.block_start>=E.w_size-C&&(K(E,!1),E.strm.avail_out===0))return g}return E.insert=0,$===p?(K(E,!0),E.strm.avail_out===0?L:V):(E.strstart>E.block_start&&(K(E,!1),E.strm.avail_out),g)}),new se(4,4,8,4,Q),new se(4,5,16,8,Q),new se(4,6,32,32,Q),new se(4,4,16,16,oe),new se(8,16,32,32,oe),new se(8,16,128,128,oe),new se(8,32,128,256,oe),new se(32,128,258,1024,oe),new se(32,258,258,4096,oe)],a.deflateInit=function(E,$){return _(E,$,d,15,8,0)},a.deflateInit2=_,a.deflateReset=re,a.deflateResetKeep=pe,a.deflateSetHeader=function(E,$){return E&&E.state?E.state.wrap!==2?X:(E.state.gzhead=$,y):X},a.deflate=function(E,$){var ae,le,ee,te;if(!E||!E.state||5<$||$<0)return E?Y(E,X):X;if(le=E.state,!E.output||!E.input&&E.avail_in!==0||le.status===666&&$!==p)return Y(E,E.avail_out===0?-5:X);if(le.strm=E,ae=le.last_flush,le.last_flush=$,le.status===x)if(le.wrap===2)E.adler=0,H(le,31),H(le,139),H(le,8),le.gzhead?(H(le,(le.gzhead.text?1:0)+(le.gzhead.hcrc?2:0)+(le.gzhead.extra?4:0)+(le.gzhead.name?8:0)+(le.gzhead.comment?16:0)),H(le,255&le.gzhead.time),H(le,le.gzhead.time>>8&255),H(le,le.gzhead.time>>16&255),H(le,le.gzhead.time>>24&255),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,255&le.gzhead.os),le.gzhead.extra&&le.gzhead.extra.length&&(H(le,255&le.gzhead.extra.length),H(le,le.gzhead.extra.length>>8&255)),le.gzhead.hcrc&&(E.adler=v(E.adler,le.pending_buf,le.pending,0)),le.gzindex=0,le.status=69):(H(le,0),H(le,0),H(le,0),H(le,0),H(le,0),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,3),le.status=R);else{var be=d+(le.w_bits-8<<4)<<8;be|=(2<=le.strategy||le.level<2?0:le.level<6?1:le.level===6?2:3)<<6,le.strstart!==0&&(be|=32),be+=31-be%31,le.status=R,k(le,be),le.strstart!==0&&(k(le,E.adler>>>16),k(le,65535&E.adler)),E.adler=1}if(le.status===69)if(le.gzhead.extra){for(ee=le.pending;le.gzindex<(65535&le.gzhead.extra.length)&&(le.pending!==le.pending_buf_size||(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending!==le.pending_buf_size));)H(le,255&le.gzhead.extra[le.gzindex]),le.gzindex++;le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),le.gzindex===le.gzhead.extra.length&&(le.gzindex=0,le.status=73)}else le.status=73;if(le.status===73)if(le.gzhead.name){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.gzindex=0,le.status=91)}else le.status=91;if(le.status===91)if(le.gzhead.comment){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.status=103)}else le.status=103;if(le.status===103&&(le.gzhead.hcrc?(le.pending+2>le.pending_buf_size&&U(E),le.pending+2<=le.pending_buf_size&&(H(le,255&E.adler),H(le,E.adler>>8&255),E.adler=0,le.status=R)):le.status=R),le.pending!==0){if(U(E),E.avail_out===0)return le.last_flush=-1,y}else if(E.avail_in===0&&T($)<=T(ae)&&$!==p)return Y(E,-5);if(le.status===666&&E.avail_in!==0)return Y(E,-5);if(E.avail_in!==0||le.lookahead!==0||$!==Z&&le.status!==666){var ne=le.strategy===2?function(B,q){for(var ue;;){if(B.lookahead===0&&(O(B),B.lookahead===0)){if(q===Z)return g;break}if(B.match_length=0,ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++,ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):le.strategy===3?function(B,q){for(var ue,ve,Ge,Je,xe=B.window;;){if(B.lookahead<=w){if(O(B),B.lookahead<=w&&q===Z)return g;if(B.lookahead===0)break}if(B.match_length=0,B.lookahead>=I&&0B.lookahead&&(B.match_length=B.lookahead)}if(B.match_length>=I?(ue=r._tr_tally(B,1,B.match_length-I),B.lookahead-=B.match_length,B.strstart+=B.match_length,B.match_length=0):(ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++),ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):l[le.level].func(le,$);if(ne!==L&&ne!==V||(le.status=666),ne===g||ne===L)return E.avail_out===0&&(le.last_flush=-1),y;if(ne===S&&($===1?r._tr_align(le):$!==5&&(r._tr_stored_block(le,0,0,!1),$===3&&(J(le.head),le.lookahead===0&&(le.strstart=0,le.block_start=0,le.insert=0))),U(E),E.avail_out===0))return le.last_flush=-1,y}return $!==p?y:le.wrap<=0?1:(le.wrap===2?(H(le,255&E.adler),H(le,E.adler>>8&255),H(le,E.adler>>16&255),H(le,E.adler>>24&255),H(le,255&E.total_in),H(le,E.total_in>>8&255),H(le,E.total_in>>16&255),H(le,E.total_in>>24&255)):(k(le,E.adler>>>16),k(le,65535&E.adler)),U(E),0=ae.w_size&&(te===0&&(J(ae.head),ae.strstart=0,ae.block_start=0,ae.insert=0),q=new o.Buf8(ae.w_size),o.arraySet(q,$,ue-ae.w_size,ae.w_size,0),$=q,ue=ae.w_size),be=E.avail_in,ne=E.next_in,B=E.input,E.avail_in=ue,E.next_in=0,E.input=$,O(ae);ae.lookahead>=I;){for(le=ae.strstart,ee=ae.lookahead-(I-1);ae.ins_h=(ae.ins_h<>>=I=M>>>24,u-=I,(I=M>>>16&255)===0)S[b++]=65535&M;else{if(!(16&I)){if(!(64&I)){M=s[(65535&M)+(d&(1<>>=I,u-=I),u<15&&(d+=g[f++]<>>=I=M>>>24,u-=I,!(16&(I=M>>>16&255))){if(!(64&I)){M=h[(65535&M)+(d&(1<>>=I,u-=I,(I=b-Z)>3,d&=(1<<(u-=w<<3))-1,l.next_in=f,l.next_out=b,l.avail_in=f>>24&255)+(x>>>8&65280)+((65280&x)<<8)+((255&x)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function u(x){var R;return x&&x.state?(R=x.state,x.total_in=x.total_out=R.total=0,x.msg="",R.wrap&&(x.adler=1&R.wrap),R.mode=X,R.last=0,R.havedict=0,R.dmax=32768,R.head=null,R.hold=0,R.bits=0,R.lencode=R.lendyn=new l.Buf32(m),R.distcode=R.distdyn=new l.Buf32(N),R.sane=1,R.back=-1,p):y}function s(x){var R;return x&&x.state?((R=x.state).wsize=0,R.whave=0,R.wnext=0,u(x)):y}function h(x,R){var g,S;return x&&x.state?(S=x.state,R<0?(g=0,R=-R):(g=1+(R>>4),R<48&&(R&=15)),R&&(R<8||15=V.wsize?(l.arraySet(V.window,R,g-V.wsize,V.wsize,0),V.wnext=0,V.whave=V.wsize):(S<(L=V.wsize-V.wnext)&&(L=S),l.arraySet(V.window,R,g-S,L,V.wnext),(S-=L)?(l.arraySet(V.window,R,g-S,S,0),V.wnext=S,V.whave=V.wsize):(V.wnext+=L,V.wnext===V.wsize&&(V.wnext=0),V.whave>>8&255,g.check=r(g.check,te,2,0),K=U=0,g.mode=2;break}if(g.flags=0,g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&U)<<8)+(U>>8))%31){x.msg="incorrect header check",g.mode=30;break}if((15&U)!=8){x.msg="unknown compression method",g.mode=30;break}if(K-=4,E=8+(15&(U>>>=4)),g.wbits===0)g.wbits=E;else if(E>g.wbits){x.msg="invalid window size",g.mode=30;break}g.dmax=1<>8&1),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=3;case 3:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>8&255,te[2]=U>>>16&255,te[3]=U>>>24&255,g.check=r(g.check,te,4,0)),K=U=0,g.mode=4;case 4:for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>8),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=5;case 5:if(1024&g.flags){for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>>8&255,g.check=r(g.check,te,2,0)),K=U=0}else g.head&&(g.head.extra=null);g.mode=6;case 6:if(1024&g.flags&&(T<(F=g.length)&&(F=T),F&&(g.head&&(E=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Array(g.head.extra_len)),l.arraySet(g.head.extra,S,V,F,E)),512&g.flags&&(g.check=r(g.check,S,F,V)),T-=F,V+=F,g.length-=F),g.length))break e;g.length=0,g.mode=7;case 7:if(2048&g.flags){if(T===0)break e;for(F=0;E=S[V+F++],g.head&&E&&g.length<65536&&(g.head.name+=String.fromCharCode(E)),E&&F>9&1,g.head.done=!0),x.adler=g.check=0,g.mode=12;break;case 10:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>=7&K,K-=7&K,g.mode=27;break}for(;K<3;){if(T===0)break e;T--,U+=S[V++]<>>=1)){case 0:g.mode=14;break;case 1:if(w(g),g.mode=20,R!==6)break;U>>>=2,K-=2;break e;case 2:g.mode=17;break;case 3:x.msg="invalid block type",g.mode=30}U>>>=2,K-=2;break;case 14:for(U>>>=7&K,K-=7&K;K<32;){if(T===0)break e;T--,U+=S[V++]<>>16^65535)){x.msg="invalid stored block lengths",g.mode=30;break}if(g.length=65535&U,K=U=0,g.mode=15,R===6)break e;case 15:g.mode=16;case 16:if(F=g.length){if(T>>=5,K-=5,g.ndist=1+(31&U),U>>>=5,K-=5,g.ncode=4+(15&U),U>>>=4,K-=4,286>>=3,K-=3}for(;g.have<19;)g.lens[be[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,ae={bits:g.lenbits},$=v(0,g.lens,0,19,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid code lengths set",g.mode=30;break}g.have=0,g.mode=19;case 19:for(;g.have>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=oe,K-=oe,g.lens[g.have++]=he;else{if(he===16){for(le=oe+2;K>>=oe,K-=oe,g.have===0){x.msg="invalid bit length repeat",g.mode=30;break}E=g.lens[g.have-1],F=3+(3&U),U>>>=2,K-=2}else if(he===17){for(le=oe+3;K>>=oe)),U>>>=3,K-=3}else{for(le=oe+7;K>>=oe)),U>>>=7,K-=7}if(g.have+F>g.nlen+g.ndist){x.msg="invalid bit length repeat",g.mode=30;break}for(;F--;)g.lens[g.have++]=E}}if(g.mode===30)break;if(g.lens[256]===0){x.msg="invalid code -- missing end-of-block",g.mode=30;break}if(g.lenbits=9,ae={bits:g.lenbits},$=v(b,g.lens,0,g.nlen,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid literal/lengths set",g.mode=30;break}if(g.distbits=6,g.distcode=g.distdyn,ae={bits:g.distbits},$=v(Z,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,ae),g.distbits=ae.bits,$){x.msg="invalid distances set",g.mode=30;break}if(g.mode=20,R===6)break e;case 20:g.mode=21;case 21:if(6<=T&&258<=J){x.next_out=Y,x.avail_out=J,x.next_in=V,x.avail_in=T,g.hold=U,g.bits=K,f(x,k),Y=x.next_out,L=x.output,J=x.avail_out,V=x.next_in,S=x.input,T=x.avail_in,U=g.hold,K=g.bits,g.mode===12&&(g.back=-1);break}for(g.back=0;se=(ee=g.lencode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,g.length=he,se===0){g.mode=26;break}if(32&se){g.back=-1,g.mode=12;break}if(64&se){x.msg="invalid literal/length code",g.mode=30;break}g.extra=15&se,g.mode=22;case 22:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=23;case 23:for(;se=(ee=g.distcode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,64&se){x.msg="invalid distance code",g.mode=30;break}g.offset=he,g.extra=15&se,g.mode=24;case 24:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){x.msg="invalid distance too far back",g.mode=30;break}g.mode=25;case 25:if(J===0)break e;if(F=k-J,g.offset>F){if((F=g.offset-F)>g.whave&&g.sane){x.msg="invalid distance too far back",g.mode=30;break}O=F>g.wnext?(F-=g.wnext,g.wsize-F):g.wnext-F,F>g.length&&(F=g.length),Q=g.window}else Q=L,O=Y-g.offset,F=g.length;for(JW?(I=O[Q+N[R]],K[H+N[R]]):(I=96,0),d=1<>Y)+(u-=d)]=M<<24|I<<16|w|0,u!==0;);for(d=1<>=1;if(d!==0?(U&=d-1,U+=d):U=0,R++,--k[x]==0){if(x===S)break;x=Z[p+N[R]]}if(L>>7)]}function H(ee,te){ee.pending_buf[ee.pending++]=255&te,ee.pending_buf[ee.pending++]=te>>>8&255}function k(ee,te,be){ee.bi_valid>G-be?(ee.bi_buf|=te<>G-ee.bi_valid,ee.bi_valid+=be-G):(ee.bi_buf|=te<>>=1,be<<=1,0<--te;);return be>>>1}function Q(ee,te,be){var ne,B,q=new Array(N+1),ue=0;for(ne=1;ne<=N;ne++)q[ne]=ue=ue+be[ne-1]<<1;for(B=0;B<=te;B++){var ve=ee[2*B+1];ve!==0&&(ee[2*B]=O(q[ve]++,ve))}}function oe(ee){var te;for(te=0;te>1;1<=be;be--)pe(ee,q,be);for(B=Ge;be=ee.heap[1],ee.heap[1]=ee.heap[ee.heap_len--],pe(ee,q,1),ne=ee.heap[1],ee.heap[--ee.heap_max]=be,ee.heap[--ee.heap_max]=ne,q[2*B]=q[2*be]+q[2*ne],ee.depth[B]=(ee.depth[be]>=ee.depth[ne]?ee.depth[be]:ee.depth[ne])+1,q[2*be+1]=q[2*ne+1]=B,ee.heap[1]=B++,pe(ee,q,1),2<=ee.heap_len;);ee.heap[--ee.heap_max]=ee.heap[1],function(xe,ke){var Pe,Be,Te,we,Se,De,me=ke.dyn_tree,Ve=ke.max_code,Me=ke.stat_desc.static_tree,Ie=ke.stat_desc.has_stree,Ze=ke.stat_desc.extra_bits,Ce=ke.stat_desc.extra_base,ye=ke.stat_desc.max_length,Ue=0;for(we=0;we<=N;we++)xe.bl_count[we]=0;for(me[2*xe.heap[xe.heap_max]+1]=0,Pe=xe.heap_max+1;Pe>=7;B>>=1)if(1&Je&&ve.dyn_ltree[2*Ge]!==0)return o;if(ve.dyn_ltree[18]!==0||ve.dyn_ltree[20]!==0||ve.dyn_ltree[26]!==0)return r;for(Ge=32;Ge>>3,(q=ee.static_len+3+7>>>3)<=B&&(B=q)):B=q=be+5,be+4<=B&&te!==-1?le(ee,te,be,ne):ee.strategy===4||q===B?(k(ee,2+(ne?1:0),3),re(ee,C,x)):(k(ee,4+(ne?1:0),3),function(ve,Ge,Je,xe){var ke;for(k(ve,Ge-257,5),k(ve,Je-1,5),k(ve,xe-4,4),ke=0;ke>>8&255,ee.pending_buf[ee.d_buf+2*ee.last_lit+1]=255&te,ee.pending_buf[ee.l_buf+ee.last_lit]=255&be,ee.last_lit++,te===0?ee.dyn_ltree[2*be]++:(ee.matches++,te--,ee.dyn_ltree[2*(g[be]+Z+1)]++,ee.dyn_dtree[2*K(te)]++),ee.last_lit===ee.lit_bufsize-1},a._tr_align=function(ee){k(ee,2,3),F(ee,u,C),function(te){te.bi_valid===16?(H(te,te.bi_buf),te.bi_buf=0,te.bi_valid=0):8<=te.bi_valid&&(te.pending_buf[te.pending++]=255&te.bi_buf,te.bi_buf>>=8,te.bi_valid-=8)}(ee)}},{"../utils/common":41}],53:[function(t,i,a){i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,i,a){(function(l){(function(o,r){if(!o.setImmediate){var f,v,b,Z,p=1,y={},X=!1,m=o.document,N=Object.getPrototypeOf&&Object.getPrototypeOf(o);N=N&&N.setTimeout?N:o,f={}.toString.call(o.process)==="[object process]"?function(s){process.nextTick(function(){d(s)})}:function(){if(o.postMessage&&!o.importScripts){var s=!0,h=o.onmessage;return o.onmessage=function(){s=!1},o.postMessage("","*"),o.onmessage=h,s}}()?(Z="setImmediate$"+Math.random()+"$",o.addEventListener?o.addEventListener("message",u,!1):o.attachEvent("onmessage",u),function(s){o.postMessage(Z+s,"*")}):o.MessageChannel?((b=new MessageChannel).port1.onmessage=function(s){d(s.data)},function(s){b.port2.postMessage(s)}):m&&"onreadystatechange"in m.createElement("script")?(v=m.documentElement,function(s){var h=m.createElement("script");h.onreadystatechange=function(){d(s),h.onreadystatechange=null,v.removeChild(h),h=null},v.appendChild(h)}):function(s){setTimeout(d,0,s)},N.setImmediate=function(s){typeof s!="function"&&(s=new Function(""+s));for(var h=new Array(arguments.length-1),c=0;c"u"?l===void 0?this:l:self)}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(fpe)),f0}(function(n,e){(function(t,i){n.exports=i(bpe())})(globalThis,t=>(()=>{var i={438:(o,r,f)=>{f.r(r),f.d(r,{default:()=>d});var v=f(537),b=f.n(v),Z=f(645),p=f.n(Z),y=f(806),X=f.n(y),m=new URL(f(583),f.b),N=p()(b()),G=X()(m);N.push([o.id,'@namespace "http://www.w3.org/1998/Math/MathML";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:"";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url('+G+")}","",{version:3,sources:["webpack://./src/mathml.scss"],names:[],mappings:"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA",sourcesContent:[`@namespace "http://www.w3.org/1998/Math/MathML";\r +*/var _V;function ype(){return _V||(_V=1,function(n,e){(function(t){n.exports=t()})(function(){return function t(i,a,l){function o(v,b){if(!a[v]){if(!i[v]){var Z=typeof ms=="function"&&ms;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=a[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,a,l)}return a[v].exports}for(var r=typeof ms=="function"&&ms,f=0;f>2,y=(3&v)<<4|b>>4,X=1>6:64,m=2>4,b=(15&p)<<4|(y=r.indexOf(f.charAt(m++)))>>2,Z=(3&y)<<6|(X=r.indexOf(f.charAt(m++))),d[N++]=v,y!==64&&(d[N++]=b),X!==64&&(d[N++]=Z);return d}},{"./support":30,"./utils":32}],2:[function(t,i,a){var l=t("./external"),o=t("./stream/DataWorker"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var b=new o(l.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),Z=this;return b.on("end",function(){if(this.streamInfo.data_length!==Z.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),b},getCompressedWorker:function(){return new o(l.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,i,a){var l=t("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new l("STORE compression")},uncompressWorker:function(){return new l("STORE decompression")}},a.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,i,a){var l=t("./utils"),o=function(){for(var r,f=[],v=0;v<256;v++){r=v;for(var b=0;b<8;b++)r=1&r?3988292384^r>>>1:r>>>1;f[v]=r}return f}();i.exports=function(r,f){return r!==void 0&&r.length?l.getTypeOf(r)!=="string"?function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b[m])];return-1^v}(0|f,r,r.length,0):function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b.charCodeAt(m))];return-1^v}(0|f,r,r.length,0):0}},{"./utils":32}],5:[function(t,i,a){a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(t,i,a){var l=null;l=typeof Promise<"u"?Promise:t("lie"),i.exports={Promise:l}},{lie:37}],7:[function(t,i,a){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=l?"uint8array":"array";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}a.magic="\b\0",r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},a.compressWorker=function(Z){return new b("Deflate",Z)},a.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,i,a){function l(y,X){var m,N="";for(m=0;m>>=8;return N}function o(y,X,m,N,G,d){var u,s,h=y.file,c=y.compression,W=d!==v.utf8encode,M=r.transformTo("string",d(h.name)),I=r.transformTo("string",v.utf8encode(h.name)),w=h.comment,C=r.transformTo("string",d(w)),x=r.transformTo("string",v.utf8encode(w)),R=I.length!==h.name.length,g=x.length!==w.length,S="",L="",V="",Y=h.dir,T=h.date,J={crc32:0,compressedSize:0,uncompressedSize:0};X&&!m||(J.crc32=y.crc32,J.compressedSize=y.compressedSize,J.uncompressedSize=y.uncompressedSize);var U=0;X&&(U|=8),W||!R&&!g||(U|=2048);var K=0,H=0;Y&&(K|=16),G==="UNIX"?(H=798,K|=function(F,O){var Q=F;return F||(Q=O?16893:33204),(65535&Q)<<16}(h.unixPermissions,Y)):(H=20,K|=function(F){return 63&(F||0)}(h.dosPermissions)),u=T.getUTCHours(),u<<=6,u|=T.getUTCMinutes(),u<<=5,u|=T.getUTCSeconds()/2,s=T.getUTCFullYear()-1980,s<<=4,s|=T.getUTCMonth()+1,s<<=5,s|=T.getUTCDate(),R&&(L=l(1,1)+l(b(M),4)+I,S+="up"+l(L.length,2)+L),g&&(V=l(1,1)+l(b(C),4)+x,S+="uc"+l(V.length,2)+V);var k="";return k+=` +\0`,k+=l(U,2),k+=c.magic,k+=l(u,2),k+=l(s,2),k+=l(J.crc32,4),k+=l(J.compressedSize,4),k+=l(J.uncompressedSize,4),k+=l(M.length,2),k+=l(S.length,2),{fileRecord:Z.LOCAL_FILE_HEADER+k+M+S,dirRecord:Z.CENTRAL_FILE_HEADER+l(H,2)+k+l(C.length,2)+"\0\0\0\0"+l(K,4)+l(N,4)+M+S+C}}var r=t("../utils"),f=t("../stream/GenericWorker"),v=t("../utf8"),b=t("../crc32"),Z=t("../signature");function p(y,X,m,N){f.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=X,this.zipPlatform=m,this.encodeFileName=N,this.streamFiles=y,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(p,f),p.prototype.push=function(y){var X=y.meta.percent||0,m=this.entriesCount,N=this._sources.length;this.accumulate?this.contentBuffer.push(y):(this.bytesWritten+=y.data.length,f.prototype.push.call(this,{data:y.data,meta:{currentFile:this.currentFile,percent:m?(X+100*(m-N-1))/m:100}}))},p.prototype.openedSource=function(y){this.currentSourceOffset=this.bytesWritten,this.currentFile=y.file.name;var X=this.streamFiles&&!y.file.dir;if(X){var m=o(y,X,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:m.fileRecord,meta:{percent:0}})}else this.accumulate=!0},p.prototype.closedSource=function(y){this.accumulate=!1;var X=this.streamFiles&&!y.file.dir,m=o(y,X,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(m.dirRecord),X)this.push({data:function(N){return Z.DATA_DESCRIPTOR+l(N.crc32,4)+l(N.compressedSize,4)+l(N.uncompressedSize,4)}(y),meta:{percent:100}});else for(this.push({data:m.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},p.prototype.flush=function(){for(var y=this.bytesWritten,X=0;X=this.index;f--)v=(v<<8)+this.byteAt(f);return this.index+=r,v},readString:function(r){return l.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},i.exports=o},{"../utils":32}],19:[function(t,i,a){var l=t("./Uint8ArrayReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,i,a){var l=t("./DataReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},o.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},o.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./DataReader":18}],21:[function(t,i,a){var l=t("./ArrayReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var f=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./ArrayReader":17}],22:[function(t,i,a){var l=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=l.getTypeOf(Z);return l.checkSupport(p),p!=="string"||o.uint8array?p==="nodebuffer"?new v(Z):o.uint8array?new b(l.transformTo("uint8array",Z)):new r(l.transformTo("array",Z)):new f(Z)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,i,a){a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,i,a){var l=t("./GenericWorker"),o=t("../utils");function r(f){l.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,l),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(t,i,a){var l=t("./GenericWorker"),o=t("../crc32");function r(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(r,l),r.prototype.processChunk=function(f){this.streamInfo.crc32=o(f.data,this.streamInfo.crc32||0),this.push(f)},i.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}l.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataWorker");var v=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,f.then(function(b){v.dataIsReady=!0,v.data=b,v.max=b&&b.length||0,v.type=l.getTypeOf(b),v.isPaused||v._tickAndRepeat()},function(b){v.error(b)})}l.inherits(r,o),r.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var f=null,v=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":f=this.data.substring(this.index,v);break;case"uint8array":f=this.data.subarray(this.index,v);break;case"array":case"nodebuffer":f=this.data.slice(this.index,v)}return this.index=v,this.push({data:f,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(t,i,a){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(o){this.emit("data",o)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(o){this.emit("error",o)}return!0},error:function(o){return!this.isFinished&&(this.isPaused?this.generatedError=o:(this.isFinished=!0,this.emit("error",o),this.previous&&this.previous.error(o),this.cleanUp()),!0)},on:function(o,r){return this._listeners[o].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(o,r){if(this._listeners[o])for(var f=0;f "+o:o}},i.exports=l},{}],29:[function(t,i,a){var l=t("../utils"),o=t("./ConvertWorker"),r=t("./GenericWorker"),f=t("../base64"),v=t("../support"),b=t("../external"),Z=null;if(v.nodestream)try{Z=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function p(X,m){return new b.Promise(function(N,G){var d=[],u=X._internalType,s=X._outputType,h=X._mimeType;X.on("data",function(c,W){d.push(c),m&&m(W)}).on("error",function(c){d=[],G(c)}).on("end",function(){try{var c=function(W,M,I){switch(W){case"blob":return l.newBlob(l.transformTo("arraybuffer",M),I);case"base64":return f.encode(M);default:return l.transformTo(W,M)}}(s,function(W,M){var I,w=0,C=null,x=0;for(I=0;I"u")a.blob=!1;else{var l=new ArrayBuffer(0);try{a.blob=new Blob([l],{type:"application/zip"}).size===0}catch{try{var o=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);o.append(l),a.blob=o.getBlob("application/zip").size===0}catch{a.blob=!1}}}try{a.nodestream=!!t("readable-stream").Readable}catch{a.nodestream=!1}},{"readable-stream":16}],31:[function(t,i,a){for(var l=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=252<=b?6:248<=b?5:240<=b?4:224<=b?3:192<=b?2:1;v[254]=v[254]=1;function Z(){f.call(this,"utf-8 decode"),this.leftOver=null}function p(){f.call(this,"utf-8 encode")}a.utf8encode=function(y){return o.nodebuffer?r.newBufferFrom(y,"utf-8"):function(X){var m,N,G,d,u,s=X.length,h=0;for(d=0;d>>6:(N<65536?m[u++]=224|N>>>12:(m[u++]=240|N>>>18,m[u++]=128|N>>>12&63),m[u++]=128|N>>>6&63),m[u++]=128|63&N);return m}(y)},a.utf8decode=function(y){return o.nodebuffer?l.transformTo("nodebuffer",y).toString("utf-8"):function(X){var m,N,G,d,u=X.length,s=new Array(2*u);for(m=N=0;m>10&1023,s[N++]=56320|1023&G)}return s.length!==N&&(s.subarray?s=s.subarray(0,N):s.length=N),l.applyFromCharCode(s)}(y=l.transformTo(o.uint8array?"uint8array":"array",y))},l.inherits(Z,f),Z.prototype.processChunk=function(y){var X=l.transformTo(o.uint8array?"uint8array":"array",y.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var m=X;(X=new Uint8Array(m.length+this.leftOver.length)).set(this.leftOver,0),X.set(m,this.leftOver.length)}else X=this.leftOver.concat(X);this.leftOver=null}var N=function(d,u){var s;for((u=u||d.length)>d.length&&(u=d.length),s=u-1;0<=s&&(192&d[s])==128;)s--;return s<0||s===0?u:s+v[d[s]]>u?s:u}(X),G=X;N!==X.length&&(o.uint8array?(G=X.subarray(0,N),this.leftOver=X.subarray(N,X.length)):(G=X.slice(0,N),this.leftOver=X.slice(N,X.length))),this.push({data:a.utf8decode(G),meta:y.meta})},Z.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=Z,l.inherits(p,f),p.prototype.processChunk=function(y){this.push({data:a.utf8encode(y.data),meta:y.meta})},a.Utf8EncodeWorker=p},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,i,a){var l=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("./external");function v(m){return m}function b(m,N){for(var G=0;G>8;this.dir=!!(16&this.externalFileAttributes),y==0&&(this.dosPermissions=63&this.externalFileAttributes),y==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var y=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=y.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=y.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=y.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=y.readInt(4))}},readExtraFields:function(y){var X,m,N,G=y.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});y.index+4>>6:(y<65536?p[N++]=224|y>>>12:(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63),p[N++]=128|y>>>6&63),p[N++]=128|63&y);return p},a.buf2binstring=function(Z){return b(Z,Z.length)},a.binstring2buf=function(Z){for(var p=new l.Buf8(Z.length),y=0,X=p.length;y>10&1023,d[X++]=56320|1023&m)}return b(d,X)},a.utf8border=function(Z,p){var y;for((p=p||Z.length)>Z.length&&(p=Z.length),y=p-1;0<=y&&(192&Z[y])==128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":41}],43:[function(t,i,a){i.exports=function(l,o,r,f){for(var v=65535&l|0,b=l>>>16&65535|0,Z=0;r!==0;){for(r-=Z=2e3>>1:o>>>1;r[f]=o}return r}();i.exports=function(o,r,f,v){var b=l,Z=v+f;o^=-1;for(var p=v;p>>8^b[255&(o^r[p])];return-1^o}},{}],46:[function(t,i,a){var l,o=t("../utils/common"),r=t("./trees"),f=t("./adler32"),v=t("./crc32"),b=t("./messages"),Z=0,p=4,y=0,X=-2,m=-1,N=4,G=2,d=8,u=9,s=286,h=30,c=19,W=2*s+1,M=15,I=3,w=258,C=w+I+1,x=42,R=113,g=1,S=2,L=3,V=4;function Y(E,$){return E.msg=b[$],$}function T(E){return(E<<1)-(4E.avail_out&&(ae=E.avail_out),ae!==0&&(o.arraySet(E.output,$.pending_buf,$.pending_out,ae,E.next_out),E.next_out+=ae,$.pending_out+=ae,E.total_out+=ae,E.avail_out-=ae,$.pending-=ae,$.pending===0&&($.pending_out=0))}function K(E,$){r._tr_flush_block(E,0<=E.block_start?E.block_start:-1,E.strstart-E.block_start,$),E.block_start=E.strstart,U(E.strm)}function H(E,$){E.pending_buf[E.pending++]=$}function k(E,$){E.pending_buf[E.pending++]=$>>>8&255,E.pending_buf[E.pending++]=255&$}function F(E,$){var ae,le,ee=E.max_chain_length,te=E.strstart,be=E.prev_length,ne=E.nice_match,B=E.strstart>E.w_size-C?E.strstart-(E.w_size-C):0,q=E.window,ue=E.w_mask,ve=E.prev,Ge=E.strstart+w,Je=q[te+be-1],xe=q[te+be];E.prev_length>=E.good_match&&(ee>>=2),ne>E.lookahead&&(ne=E.lookahead);do if(q[(ae=$)+be]===xe&&q[ae+be-1]===Je&&q[ae]===q[te]&&q[++ae]===q[te+1]){te+=2,ae++;do;while(q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&teB&&--ee!=0);return be<=E.lookahead?be:E.lookahead}function O(E){var $,ae,le,ee,te,be,ne,B,q,ue,ve=E.w_size;do{if(ee=E.window_size-E.lookahead-E.strstart,E.strstart>=ve+(ve-C)){for(o.arraySet(E.window,E.window,ve,ve,0),E.match_start-=ve,E.strstart-=ve,E.block_start-=ve,$=ae=E.hash_size;le=E.head[--$],E.head[$]=ve<=le?le-ve:0,--ae;);for($=ae=ve;le=E.prev[--$],E.prev[$]=ve<=le?le-ve:0,--ae;);ee+=ve}if(E.strm.avail_in===0)break;if(be=E.strm,ne=E.window,B=E.strstart+E.lookahead,q=ee,ue=void 0,ue=be.avail_in,q=I)for(te=E.strstart-E.insert,E.ins_h=E.window[te],E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I)if(le=r._tr_tally(E,E.strstart-E.match_start,E.match_length-I),E.lookahead-=E.match_length,E.match_length<=E.max_lazy_match&&E.lookahead>=I){for(E.match_length--;E.strstart++,E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I&&E.match_length<=E.prev_length){for(ee=E.strstart+E.lookahead-I,le=r._tr_tally(E,E.strstart-1-E.prev_match,E.prev_length-I),E.lookahead-=E.prev_length-1,E.prev_length-=2;++E.strstart<=ee&&(E.ins_h=(E.ins_h<E.pending_buf_size-5&&(ae=E.pending_buf_size-5);;){if(E.lookahead<=1){if(O(E),E.lookahead===0&&$===Z)return g;if(E.lookahead===0)break}E.strstart+=E.lookahead,E.lookahead=0;var le=E.block_start+ae;if((E.strstart===0||E.strstart>=le)&&(E.lookahead=E.strstart-le,E.strstart=le,K(E,!1),E.strm.avail_out===0)||E.strstart-E.block_start>=E.w_size-C&&(K(E,!1),E.strm.avail_out===0))return g}return E.insert=0,$===p?(K(E,!0),E.strm.avail_out===0?L:V):(E.strstart>E.block_start&&(K(E,!1),E.strm.avail_out),g)}),new se(4,4,8,4,Q),new se(4,5,16,8,Q),new se(4,6,32,32,Q),new se(4,4,16,16,oe),new se(8,16,32,32,oe),new se(8,16,128,128,oe),new se(8,32,128,256,oe),new se(32,128,258,1024,oe),new se(32,258,258,4096,oe)],a.deflateInit=function(E,$){return _(E,$,d,15,8,0)},a.deflateInit2=_,a.deflateReset=re,a.deflateResetKeep=pe,a.deflateSetHeader=function(E,$){return E&&E.state?E.state.wrap!==2?X:(E.state.gzhead=$,y):X},a.deflate=function(E,$){var ae,le,ee,te;if(!E||!E.state||5<$||$<0)return E?Y(E,X):X;if(le=E.state,!E.output||!E.input&&E.avail_in!==0||le.status===666&&$!==p)return Y(E,E.avail_out===0?-5:X);if(le.strm=E,ae=le.last_flush,le.last_flush=$,le.status===x)if(le.wrap===2)E.adler=0,H(le,31),H(le,139),H(le,8),le.gzhead?(H(le,(le.gzhead.text?1:0)+(le.gzhead.hcrc?2:0)+(le.gzhead.extra?4:0)+(le.gzhead.name?8:0)+(le.gzhead.comment?16:0)),H(le,255&le.gzhead.time),H(le,le.gzhead.time>>8&255),H(le,le.gzhead.time>>16&255),H(le,le.gzhead.time>>24&255),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,255&le.gzhead.os),le.gzhead.extra&&le.gzhead.extra.length&&(H(le,255&le.gzhead.extra.length),H(le,le.gzhead.extra.length>>8&255)),le.gzhead.hcrc&&(E.adler=v(E.adler,le.pending_buf,le.pending,0)),le.gzindex=0,le.status=69):(H(le,0),H(le,0),H(le,0),H(le,0),H(le,0),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,3),le.status=R);else{var be=d+(le.w_bits-8<<4)<<8;be|=(2<=le.strategy||le.level<2?0:le.level<6?1:le.level===6?2:3)<<6,le.strstart!==0&&(be|=32),be+=31-be%31,le.status=R,k(le,be),le.strstart!==0&&(k(le,E.adler>>>16),k(le,65535&E.adler)),E.adler=1}if(le.status===69)if(le.gzhead.extra){for(ee=le.pending;le.gzindex<(65535&le.gzhead.extra.length)&&(le.pending!==le.pending_buf_size||(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending!==le.pending_buf_size));)H(le,255&le.gzhead.extra[le.gzindex]),le.gzindex++;le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),le.gzindex===le.gzhead.extra.length&&(le.gzindex=0,le.status=73)}else le.status=73;if(le.status===73)if(le.gzhead.name){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.gzindex=0,le.status=91)}else le.status=91;if(le.status===91)if(le.gzhead.comment){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.status=103)}else le.status=103;if(le.status===103&&(le.gzhead.hcrc?(le.pending+2>le.pending_buf_size&&U(E),le.pending+2<=le.pending_buf_size&&(H(le,255&E.adler),H(le,E.adler>>8&255),E.adler=0,le.status=R)):le.status=R),le.pending!==0){if(U(E),E.avail_out===0)return le.last_flush=-1,y}else if(E.avail_in===0&&T($)<=T(ae)&&$!==p)return Y(E,-5);if(le.status===666&&E.avail_in!==0)return Y(E,-5);if(E.avail_in!==0||le.lookahead!==0||$!==Z&&le.status!==666){var ne=le.strategy===2?function(B,q){for(var ue;;){if(B.lookahead===0&&(O(B),B.lookahead===0)){if(q===Z)return g;break}if(B.match_length=0,ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++,ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):le.strategy===3?function(B,q){for(var ue,ve,Ge,Je,xe=B.window;;){if(B.lookahead<=w){if(O(B),B.lookahead<=w&&q===Z)return g;if(B.lookahead===0)break}if(B.match_length=0,B.lookahead>=I&&0B.lookahead&&(B.match_length=B.lookahead)}if(B.match_length>=I?(ue=r._tr_tally(B,1,B.match_length-I),B.lookahead-=B.match_length,B.strstart+=B.match_length,B.match_length=0):(ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++),ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):l[le.level].func(le,$);if(ne!==L&&ne!==V||(le.status=666),ne===g||ne===L)return E.avail_out===0&&(le.last_flush=-1),y;if(ne===S&&($===1?r._tr_align(le):$!==5&&(r._tr_stored_block(le,0,0,!1),$===3&&(J(le.head),le.lookahead===0&&(le.strstart=0,le.block_start=0,le.insert=0))),U(E),E.avail_out===0))return le.last_flush=-1,y}return $!==p?y:le.wrap<=0?1:(le.wrap===2?(H(le,255&E.adler),H(le,E.adler>>8&255),H(le,E.adler>>16&255),H(le,E.adler>>24&255),H(le,255&E.total_in),H(le,E.total_in>>8&255),H(le,E.total_in>>16&255),H(le,E.total_in>>24&255)):(k(le,E.adler>>>16),k(le,65535&E.adler)),U(E),0=ae.w_size&&(te===0&&(J(ae.head),ae.strstart=0,ae.block_start=0,ae.insert=0),q=new o.Buf8(ae.w_size),o.arraySet(q,$,ue-ae.w_size,ae.w_size,0),$=q,ue=ae.w_size),be=E.avail_in,ne=E.next_in,B=E.input,E.avail_in=ue,E.next_in=0,E.input=$,O(ae);ae.lookahead>=I;){for(le=ae.strstart,ee=ae.lookahead-(I-1);ae.ins_h=(ae.ins_h<>>=I=M>>>24,u-=I,(I=M>>>16&255)===0)S[b++]=65535&M;else{if(!(16&I)){if(!(64&I)){M=s[(65535&M)+(d&(1<>>=I,u-=I),u<15&&(d+=g[f++]<>>=I=M>>>24,u-=I,!(16&(I=M>>>16&255))){if(!(64&I)){M=h[(65535&M)+(d&(1<>>=I,u-=I,(I=b-Z)>3,d&=(1<<(u-=w<<3))-1,l.next_in=f,l.next_out=b,l.avail_in=f>>24&255)+(x>>>8&65280)+((65280&x)<<8)+((255&x)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function u(x){var R;return x&&x.state?(R=x.state,x.total_in=x.total_out=R.total=0,x.msg="",R.wrap&&(x.adler=1&R.wrap),R.mode=X,R.last=0,R.havedict=0,R.dmax=32768,R.head=null,R.hold=0,R.bits=0,R.lencode=R.lendyn=new l.Buf32(m),R.distcode=R.distdyn=new l.Buf32(N),R.sane=1,R.back=-1,p):y}function s(x){var R;return x&&x.state?((R=x.state).wsize=0,R.whave=0,R.wnext=0,u(x)):y}function h(x,R){var g,S;return x&&x.state?(S=x.state,R<0?(g=0,R=-R):(g=1+(R>>4),R<48&&(R&=15)),R&&(R<8||15=V.wsize?(l.arraySet(V.window,R,g-V.wsize,V.wsize,0),V.wnext=0,V.whave=V.wsize):(S<(L=V.wsize-V.wnext)&&(L=S),l.arraySet(V.window,R,g-S,L,V.wnext),(S-=L)?(l.arraySet(V.window,R,g-S,S,0),V.wnext=S,V.whave=V.wsize):(V.wnext+=L,V.wnext===V.wsize&&(V.wnext=0),V.whave>>8&255,g.check=r(g.check,te,2,0),K=U=0,g.mode=2;break}if(g.flags=0,g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&U)<<8)+(U>>8))%31){x.msg="incorrect header check",g.mode=30;break}if((15&U)!=8){x.msg="unknown compression method",g.mode=30;break}if(K-=4,E=8+(15&(U>>>=4)),g.wbits===0)g.wbits=E;else if(E>g.wbits){x.msg="invalid window size",g.mode=30;break}g.dmax=1<>8&1),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=3;case 3:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>8&255,te[2]=U>>>16&255,te[3]=U>>>24&255,g.check=r(g.check,te,4,0)),K=U=0,g.mode=4;case 4:for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>8),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=5;case 5:if(1024&g.flags){for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>>8&255,g.check=r(g.check,te,2,0)),K=U=0}else g.head&&(g.head.extra=null);g.mode=6;case 6:if(1024&g.flags&&(T<(F=g.length)&&(F=T),F&&(g.head&&(E=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Array(g.head.extra_len)),l.arraySet(g.head.extra,S,V,F,E)),512&g.flags&&(g.check=r(g.check,S,F,V)),T-=F,V+=F,g.length-=F),g.length))break e;g.length=0,g.mode=7;case 7:if(2048&g.flags){if(T===0)break e;for(F=0;E=S[V+F++],g.head&&E&&g.length<65536&&(g.head.name+=String.fromCharCode(E)),E&&F>9&1,g.head.done=!0),x.adler=g.check=0,g.mode=12;break;case 10:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>=7&K,K-=7&K,g.mode=27;break}for(;K<3;){if(T===0)break e;T--,U+=S[V++]<>>=1)){case 0:g.mode=14;break;case 1:if(w(g),g.mode=20,R!==6)break;U>>>=2,K-=2;break e;case 2:g.mode=17;break;case 3:x.msg="invalid block type",g.mode=30}U>>>=2,K-=2;break;case 14:for(U>>>=7&K,K-=7&K;K<32;){if(T===0)break e;T--,U+=S[V++]<>>16^65535)){x.msg="invalid stored block lengths",g.mode=30;break}if(g.length=65535&U,K=U=0,g.mode=15,R===6)break e;case 15:g.mode=16;case 16:if(F=g.length){if(T>>=5,K-=5,g.ndist=1+(31&U),U>>>=5,K-=5,g.ncode=4+(15&U),U>>>=4,K-=4,286>>=3,K-=3}for(;g.have<19;)g.lens[be[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,ae={bits:g.lenbits},$=v(0,g.lens,0,19,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid code lengths set",g.mode=30;break}g.have=0,g.mode=19;case 19:for(;g.have>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=oe,K-=oe,g.lens[g.have++]=he;else{if(he===16){for(le=oe+2;K>>=oe,K-=oe,g.have===0){x.msg="invalid bit length repeat",g.mode=30;break}E=g.lens[g.have-1],F=3+(3&U),U>>>=2,K-=2}else if(he===17){for(le=oe+3;K>>=oe)),U>>>=3,K-=3}else{for(le=oe+7;K>>=oe)),U>>>=7,K-=7}if(g.have+F>g.nlen+g.ndist){x.msg="invalid bit length repeat",g.mode=30;break}for(;F--;)g.lens[g.have++]=E}}if(g.mode===30)break;if(g.lens[256]===0){x.msg="invalid code -- missing end-of-block",g.mode=30;break}if(g.lenbits=9,ae={bits:g.lenbits},$=v(b,g.lens,0,g.nlen,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid literal/lengths set",g.mode=30;break}if(g.distbits=6,g.distcode=g.distdyn,ae={bits:g.distbits},$=v(Z,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,ae),g.distbits=ae.bits,$){x.msg="invalid distances set",g.mode=30;break}if(g.mode=20,R===6)break e;case 20:g.mode=21;case 21:if(6<=T&&258<=J){x.next_out=Y,x.avail_out=J,x.next_in=V,x.avail_in=T,g.hold=U,g.bits=K,f(x,k),Y=x.next_out,L=x.output,J=x.avail_out,V=x.next_in,S=x.input,T=x.avail_in,U=g.hold,K=g.bits,g.mode===12&&(g.back=-1);break}for(g.back=0;se=(ee=g.lencode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,g.length=he,se===0){g.mode=26;break}if(32&se){g.back=-1,g.mode=12;break}if(64&se){x.msg="invalid literal/length code",g.mode=30;break}g.extra=15&se,g.mode=22;case 22:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=23;case 23:for(;se=(ee=g.distcode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,64&se){x.msg="invalid distance code",g.mode=30;break}g.offset=he,g.extra=15&se,g.mode=24;case 24:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){x.msg="invalid distance too far back",g.mode=30;break}g.mode=25;case 25:if(J===0)break e;if(F=k-J,g.offset>F){if((F=g.offset-F)>g.whave&&g.sane){x.msg="invalid distance too far back",g.mode=30;break}O=F>g.wnext?(F-=g.wnext,g.wsize-F):g.wnext-F,F>g.length&&(F=g.length),Q=g.window}else Q=L,O=Y-g.offset,F=g.length;for(JW?(I=O[Q+N[R]],K[H+N[R]]):(I=96,0),d=1<>Y)+(u-=d)]=M<<24|I<<16|w|0,u!==0;);for(d=1<>=1;if(d!==0?(U&=d-1,U+=d):U=0,R++,--k[x]==0){if(x===S)break;x=Z[p+N[R]]}if(L>>7)]}function H(ee,te){ee.pending_buf[ee.pending++]=255&te,ee.pending_buf[ee.pending++]=te>>>8&255}function k(ee,te,be){ee.bi_valid>G-be?(ee.bi_buf|=te<>G-ee.bi_valid,ee.bi_valid+=be-G):(ee.bi_buf|=te<>>=1,be<<=1,0<--te;);return be>>>1}function Q(ee,te,be){var ne,B,q=new Array(N+1),ue=0;for(ne=1;ne<=N;ne++)q[ne]=ue=ue+be[ne-1]<<1;for(B=0;B<=te;B++){var ve=ee[2*B+1];ve!==0&&(ee[2*B]=O(q[ve]++,ve))}}function oe(ee){var te;for(te=0;te>1;1<=be;be--)pe(ee,q,be);for(B=Ge;be=ee.heap[1],ee.heap[1]=ee.heap[ee.heap_len--],pe(ee,q,1),ne=ee.heap[1],ee.heap[--ee.heap_max]=be,ee.heap[--ee.heap_max]=ne,q[2*B]=q[2*be]+q[2*ne],ee.depth[B]=(ee.depth[be]>=ee.depth[ne]?ee.depth[be]:ee.depth[ne])+1,q[2*be+1]=q[2*ne+1]=B,ee.heap[1]=B++,pe(ee,q,1),2<=ee.heap_len;);ee.heap[--ee.heap_max]=ee.heap[1],function(xe,ke){var Pe,Be,Te,we,Se,De,me=ke.dyn_tree,Ve=ke.max_code,Me=ke.stat_desc.static_tree,Ie=ke.stat_desc.has_stree,Ze=ke.stat_desc.extra_bits,Ce=ke.stat_desc.extra_base,ye=ke.stat_desc.max_length,Ue=0;for(we=0;we<=N;we++)xe.bl_count[we]=0;for(me[2*xe.heap[xe.heap_max]+1]=0,Pe=xe.heap_max+1;Pe>=7;B>>=1)if(1&Je&&ve.dyn_ltree[2*Ge]!==0)return o;if(ve.dyn_ltree[18]!==0||ve.dyn_ltree[20]!==0||ve.dyn_ltree[26]!==0)return r;for(Ge=32;Ge>>3,(q=ee.static_len+3+7>>>3)<=B&&(B=q)):B=q=be+5,be+4<=B&&te!==-1?le(ee,te,be,ne):ee.strategy===4||q===B?(k(ee,2+(ne?1:0),3),re(ee,C,x)):(k(ee,4+(ne?1:0),3),function(ve,Ge,Je,xe){var ke;for(k(ve,Ge-257,5),k(ve,Je-1,5),k(ve,xe-4,4),ke=0;ke>>8&255,ee.pending_buf[ee.d_buf+2*ee.last_lit+1]=255&te,ee.pending_buf[ee.l_buf+ee.last_lit]=255&be,ee.last_lit++,te===0?ee.dyn_ltree[2*be]++:(ee.matches++,te--,ee.dyn_ltree[2*(g[be]+Z+1)]++,ee.dyn_dtree[2*K(te)]++),ee.last_lit===ee.lit_bufsize-1},a._tr_align=function(ee){k(ee,2,3),F(ee,u,C),function(te){te.bi_valid===16?(H(te,te.bi_buf),te.bi_buf=0,te.bi_valid=0):8<=te.bi_valid&&(te.pending_buf[te.pending++]=255&te.bi_buf,te.bi_buf>>=8,te.bi_valid-=8)}(ee)}},{"../utils/common":41}],53:[function(t,i,a){i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,i,a){(function(l){(function(o,r){if(!o.setImmediate){var f,v,b,Z,p=1,y={},X=!1,m=o.document,N=Object.getPrototypeOf&&Object.getPrototypeOf(o);N=N&&N.setTimeout?N:o,f={}.toString.call(o.process)==="[object process]"?function(s){process.nextTick(function(){d(s)})}:function(){if(o.postMessage&&!o.importScripts){var s=!0,h=o.onmessage;return o.onmessage=function(){s=!1},o.postMessage("","*"),o.onmessage=h,s}}()?(Z="setImmediate$"+Math.random()+"$",o.addEventListener?o.addEventListener("message",u,!1):o.attachEvent("onmessage",u),function(s){o.postMessage(Z+s,"*")}):o.MessageChannel?((b=new MessageChannel).port1.onmessage=function(s){d(s.data)},function(s){b.port2.postMessage(s)}):m&&"onreadystatechange"in m.createElement("script")?(v=m.documentElement,function(s){var h=m.createElement("script");h.onreadystatechange=function(){d(s),h.onreadystatechange=null,v.removeChild(h),h=null},v.appendChild(h)}):function(s){setTimeout(d,0,s)},N.setImmediate=function(s){typeof s!="function"&&(s=new Function(""+s));for(var h=new Array(arguments.length-1),c=0;c"u"?l===void 0?this:l:self)}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(ppe)),b0}(function(n,e){(function(t,i){n.exports=i(ype())})(globalThis,t=>(()=>{var i={438:(o,r,f)=>{f.r(r),f.d(r,{default:()=>d});var v=f(537),b=f.n(v),Z=f(645),p=f.n(Z),y=f(806),X=f.n(y),m=new URL(f(583),f.b),N=p()(b()),G=X()(m);N.push([o.id,'@namespace "http://www.w3.org/1998/Math/MathML";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:"";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url('+G+")}","",{version:3,sources:["webpack://./src/mathml.scss"],names:[],mappings:"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA",sourcesContent:[`@namespace "http://www.w3.org/1998/Math/MathML";\r \r math {\r display: inline-block;\r @@ -209,20 +209,20 @@ section.${h}>article { margin-bottom: auto; } `)}renderNumbering(h,c){var W="",M=[];for(var I of h){var w=`p.${this.numberingClass(I.id,I.level)}`,C="none";if(I.bullet){let x=`--${this.className}-${I.bullet.src}`.toLowerCase();W+=this.styleToString(`${w}:before`,{content:"' '",display:"inline-block",background:`var(${x})`},I.bullet.style),this.document.loadNumberingImage(I.bullet.src).then(R=>{var g=`${this.rootSelector} { ${x}: url(${R}) }`;c.appendChild(u(g))})}else if(I.levelText){let x=this.numberingCounter(I.id,I.level);I.level>0?W+=this.styleToString(`p.${this.numberingClass(I.id,I.level-1)}`,{"counter-reset":x}):M.push(x),W+=this.styleToString(`${w}:before`,Object.assign({content:this.levelTextToContent(I.levelText,I.suff,I.id,this.numFormatToCssValue(I.format)),"counter-increment":x},I.rStyle))}else C=this.numFormatToCssValue(I.format);W+=this.styleToString(w,Object.assign({display:"list-item","list-style-position":"inside","list-style-type":C},I.pStyle))}return M.length>0&&(W+=this.styleToString(this.rootSelector,{"counter-reset":M.join(" ")})),u(W)}renderStyles(h){var c,W="";const M=this.styleMap,I=(0,b.keyBy)(h.filter(R=>R.isDefault),R=>R.target);for(const R of h){var w=R.styles;if(R.linked){var C=R.linked&&M[R.linked];C?w=w.concat(C.styles):this.options.debug&&console.warn(`Can't find linked style ${R.linked}`)}for(const g of w){var x=`${(c=R.target)!==null&&c!==void 0?c:""}.${R.cssName}`;R.target!=g.target&&(x+=` ${g.target}`),I[R.target]==R&&(x=`.${this.className} ${R.target}, `+x),W+=this.styleToString(x,g.values)}}return u(W)}renderNotes(h,c,W){var M=h.map(w=>c[w]).filter(w=>w);if(M.length>0){var I=this.createElement("ol",null,this.renderElements(M));W.appendChild(I)}}renderElement(h){switch(h.type){case v.DomType.Paragraph:return this.renderParagraph(h);case v.DomType.BookmarkStart:return this.renderBookmarkStart(h);case v.DomType.BookmarkEnd:return null;case v.DomType.Run:return this.renderRun(h);case v.DomType.Table:return this.renderTable(h);case v.DomType.Row:return this.renderTableRow(h);case v.DomType.Cell:return this.renderTableCell(h);case v.DomType.Hyperlink:return this.renderHyperlink(h);case v.DomType.Drawing:return this.renderDrawing(h);case v.DomType.Image:return this.renderImage(h);case v.DomType.Text:case v.DomType.Text:return this.renderText(h);case v.DomType.DeletedText:return this.renderDeletedText(h);case v.DomType.Tab:return this.renderTab(h);case v.DomType.Symbol:return this.renderSymbol(h);case v.DomType.Break:return this.renderBreak(h);case v.DomType.Footer:return this.renderContainer(h,"footer");case v.DomType.Header:return this.renderContainer(h,"header");case v.DomType.Footnote:case v.DomType.Endnote:return this.renderContainer(h,"li");case v.DomType.FootnoteReference:return this.renderFootnoteReference(h);case v.DomType.EndnoteReference:return this.renderEndnoteReference(h);case v.DomType.NoBreakHyphen:return this.createElement("wbr");case v.DomType.VmlPicture:return this.renderVmlPicture(h);case v.DomType.VmlElement:return this.renderVmlElement(h);case v.DomType.MmlMath:return this.renderContainerNS(h,y,"math",{xmlns:y});case v.DomType.MmlMathParagraph:return this.renderContainer(h,"span");case v.DomType.MmlFraction:return this.renderContainerNS(h,y,"mfrac");case v.DomType.MmlNumerator:case v.DomType.MmlDenominator:return this.renderContainerNS(h,y,"mrow");case v.DomType.MmlRadical:return this.renderMmlRadical(h);case v.DomType.MmlDegree:return this.renderContainerNS(h,y,"mn");case v.DomType.MmlSuperscript:return this.renderContainerNS(h,y,"msup");case v.DomType.MmlSubscript:return this.renderContainerNS(h,y,"msub");case v.DomType.MmlBase:return this.renderContainerNS(h,y,"mrow");case v.DomType.MmlSuperArgument:case v.DomType.MmlSubArgument:return this.renderContainerNS(h,y,"mn");case v.DomType.MmlDelimiter:return this.renderMmlDelimiter(h);case v.DomType.MmlRun:return this.renderMmlRun(h);case v.DomType.MmlNary:return this.renderMmlNary(h);case v.DomType.Inserted:return this.renderInserted(h);case v.DomType.Deleted:return this.renderDeleted(h)}return null}renderChildren(h,c){return this.renderElements(h.children,c)}renderElements(h,c){if(h==null)return null;var W=h.flatMap(M=>this.renderElement(M)).filter(M=>M!=null);return c&&d(c,W),W}renderContainer(h,c,W){return this.createElement(c,W,this.renderChildren(h))}renderContainerNS(h,c,W,M){return N(c,W,M,this.renderChildren(h))}renderParagraph(h){var c,W,M,I,w=this.createElement("p");const C=this.findStyle(h.styleName);(c=h.tabs)!==null&&c!==void 0||(h.tabs=(W=C==null?void 0:C.paragraphProps)===null||W===void 0?void 0:W.tabs),this.renderClass(h,w),this.renderChildren(h,w),this.renderStyleValues(h.cssStyle,w),this.renderCommonProperties(w.style,h);const x=(M=h.numbering)!==null&&M!==void 0?M:(I=C==null?void 0:C.paragraphProps)===null||I===void 0?void 0:I.numbering;return x&&w.classList.add(this.numberingClass(x.id,x.level)),w}renderRunProperties(h,c){this.renderCommonProperties(h,c)}renderCommonProperties(h,c){c!=null&&(c.color&&(h.color=c.color),c.fontSize&&(h["font-size"]=c.fontSize))}renderHyperlink(h){var c=this.createElement("a");if(this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),h.href)c.href=h.href;else if(h.id){const W=this.document.documentPart.rels.find(M=>M.id==h.id&&M.targetMode==="External");c.href=W==null?void 0:W.target}return c}renderDrawing(h){var c=this.createElement("div");return c.style.display="inline-block",c.style.position="relative",c.style.textIndent="0px",this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),c}renderImage(h){let c=this.createElement("img");return this.renderStyleValues(h.cssStyle,c),this.document&&this.document.loadDocumentImage(h.src,this.currentPart).then(W=>{c.src=W}),c}renderText(h){return this.htmlDocument.createTextNode(h.text)}renderDeletedText(h){return this.options.renderEndnotes?this.htmlDocument.createTextNode(h.text):null}renderBreak(h){return h.break=="textWrapping"?this.createElement("br"):null}renderInserted(h){return this.options.renderChanges?this.renderContainer(h,"ins"):this.renderChildren(h)}renderDeleted(h){return this.options.renderChanges?this.renderContainer(h,"del"):null}renderSymbol(h){var c=this.createElement("span");return c.style.fontFamily=h.font,c.innerHTML=`&#x${h.char};`,c}renderFootnoteReference(h){var c=this.createElement("sup");return this.currentFootnoteIds.push(h.id),c.textContent=`${this.currentFootnoteIds.length}`,c}renderEndnoteReference(h){var c=this.createElement("sup");return this.currentEndnoteIds.push(h.id),c.textContent=`${this.currentEndnoteIds.length}`,c}renderTab(h){var c,W=this.createElement("span");if(W.innerHTML=" ",this.options.experimental){W.className=this.tabStopClass();var M=(c=function(I,w){for(var C=I.parent;C!=null&&C.type!=w;)C=C.parent;return C}(h,v.DomType.Paragraph))===null||c===void 0?void 0:c.tabs;this.currentTabs.push({stops:M,span:W})}return W}renderBookmarkStart(h){var c=this.createElement("span");return c.id=h.name,c}renderRun(h){if(h.fieldRun)return null;const c=this.createElement("span");if(h.id&&(c.id=h.id),this.renderClass(h,c),this.renderStyleValues(h.cssStyle,c),h.verticalAlign){const W=this.createElement(h.verticalAlign);this.renderChildren(h,W),c.appendChild(W)}else this.renderChildren(h,c);return c}renderTable(h){let c=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},h.columns&&c.appendChild(this.renderTableColumns(h.columns)),this.renderClass(h,c),this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),c}renderTableColumns(h){let c=this.createElement("colgroup");for(let W of h){let M=this.createElement("col");W.width&&(M.style.width=W.width),c.appendChild(M)}return c}renderTableRow(h){let c=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(h,c),this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),this.currentCellPosition.row++,c}renderTableCell(h){let c=this.createElement("td");const W=this.currentCellPosition.col;return h.verticalMerge?h.verticalMerge=="restart"?(this.currentVerticalMerge[W]=c,c.rowSpan=1):this.currentVerticalMerge[W]&&(this.currentVerticalMerge[W].rowSpan+=1,c.style.display="none"):this.currentVerticalMerge[W]=null,this.renderClass(h,c),this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),h.span&&(c.colSpan=h.span),this.currentCellPosition.col+=c.colSpan,c}renderVmlPicture(h){var c=X("div");return this.renderChildren(h,c),c}renderVmlElement(h){var c,W,M=m("svg");M.setAttribute("style",h.cssStyleText);const I=m(h.tagName);return Object.entries(h.attrs).forEach(([w,C])=>I.setAttribute(w,C)),!((c=h.imageHref)===null||c===void 0)&&c.id&&((W=this.document)===null||W===void 0||W.loadDocumentImage(h.imageHref.id,this.currentPart).then(w=>I.setAttribute("href",w))),M.appendChild(I),setTimeout(()=>{const w=M.firstElementChild.getBBox();M.setAttribute("width",`${Math.ceil(w.x+w.width)}`),M.setAttribute("height",`${Math.ceil(w.y+w.height)}`)},0),M}renderMmlRadical(h){var c;const W=h.children.find(I=>I.type==v.DomType.MmlBase);if(!((c=h.props)===null||c===void 0)&&c.hideDegree)return N(y,"msqrt",null,this.renderElements([W]));const M=h.children.find(I=>I.type==v.DomType.MmlDegree);return N(y,"mroot",null,this.renderElements([W,M]))}renderMmlDelimiter(h){var c,W;const M=[];return M.push(N(y,"mo",null,[(c=h.props.beginChar)!==null&&c!==void 0?c:"("])),M.push(...this.renderElements(h.children)),M.push(N(y,"mo",null,[(W=h.props.endChar)!==null&&W!==void 0?W:")"])),N(y,"mrow",null,M)}renderMmlNary(h){var c;const W=[],M=(0,b.keyBy)(h.children,R=>R.type),I=M[v.DomType.MmlSuperArgument],w=M[v.DomType.MmlSubArgument],C=I?N(y,"mo",null,(0,b.asArray)(this.renderElement(I))):null,x=w?N(y,"mo",null,(0,b.asArray)(this.renderElement(w))):null;if(!((c=h.props)===null||c===void 0)&&c.char){const R=N(y,"mo",null,[h.props.char]);C||x?W.push(N(y,"munderover",null,[R,x,C])):C?W.push(N(y,"mover",null,[R,C])):x?W.push(N(y,"munder",null,[R,x])):W.push(R)}return W.push(...this.renderElements(M[v.DomType.MmlBase].children)),N(y,"mrow",null,W)}renderMmlRun(h){const c=N(y,"ms");return this.renderClass(h,c),this.renderStyleValues(h.cssStyle,c),this.renderChildren(h,c),c}renderStyleValues(h,c){Object.assign(c.style,h)}renderClass(h,c){h.className&&(c.className=h.className),h.styleName&&c.classList.add(this.processStyleName(h.styleName))}findStyle(h){var c;return h&&((c=this.styleMap)===null||c===void 0?void 0:c[h])}numberingClass(h,c){return`${this.className}-num-${h}-${c}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(h,c,W=null){let M=`${h} {\r `;for(const I in c)M+=` ${I}: ${c[I]};\r `;return W&&(M+=W),M+`}\r -`}numberingCounter(h,c){return`${this.className}-num-${h}-${c}`}levelTextToContent(h,c,W,M){var I;return`"${h.replace(/%\d*/g,w=>{let C=parseInt(w.substring(1),10)-1;return`"counter(${this.numberingCounter(W,C)}, ${M})"`})}${(I={tab:"\\9",space:"\\a0"}[c])!==null&&I!==void 0?I:""}"`}numFormatToCssValue(h){return{none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman"}[h]||h}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const h=(0,Z.computePixelToPoint)();for(let c of this.currentTabs)(0,Z.updateTabStop)(c.span,c.stops,this.defaultTabSize,h)},500))}}},630:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.updateTabStop=r.computePixelToPoint=void 0;const f={pos:0,leader:"none",style:"left"};function v(b){return parseFloat(b)}r.computePixelToPoint=function(b=document.body){const Z=document.createElement("div");Z.style.width="100pt",b.appendChild(Z);const p=100/Z.offsetWidth;return b.removeChild(Z),p},r.updateTabStop=function(b,Z,p,y=.75){const X=b.closest("p"),m=b.getBoundingClientRect(),N=X.getBoundingClientRect(),G=getComputedStyle(X),d=(Z==null?void 0:Z.length)>0?Z.map(x=>({pos:v(x.position),leader:x.leader,style:x.style})).sort((x,R)=>x.pos-R.pos):[f],u=d[d.length-1],s=N.width*y,h=v(p);let c=u.pos+h;if(cx.style!="clear"&&x.pos>I);if(w==null)return;let C=1;if(w.style=="right"||w.style=="center"){const x=Array.from(X.querySelectorAll(`.${b.className}`)),R=x.indexOf(b)+1,g=document.createRange();g.setStart(b,1),R{Object.defineProperty(r,"__esModule",{value:!0}),r.WmlEndnote=r.WmlFootnote=r.WmlBaseNote=void 0;const v=f(120);class b{constructor(){this.children=[],this.cssStyle={}}}r.WmlBaseNote=b,r.WmlFootnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Footnote}},r.WmlEndnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Endnote}}},735:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.EndnotesPart=r.FootnotesPart=r.BaseNotePart=void 0;const v=f(530),b=f(881);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}}r.BaseNotePart=Z,r.FootnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"footnote",b.WmlFootnote)}},r.EndnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"endnote",b.WmlEndnote)}}},527:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.NumberingPart=void 0;const v=f(530),b=f(682);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}parseXml(y){Object.assign(this,(0,b.parseNumberingPart)(y,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(y)}}r.NumberingPart=Z},682:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseNumberingBulletPicture=r.parseNumberingLevelOverrride=r.parseNumberingLevel=r.parseAbstractNumbering=r.parseNumbering=r.parseNumberingPart=void 0;const v=f(109),b=f(488);function Z(N,G){let d={id:G.attr(N,"numId"),overrides:[]};for(let u of G.elements(N))switch(u.localName){case"abstractNumId":d.abstractId=G.attr(u,"val");break;case"lvlOverride":d.overrides.push(X(u,G))}return d}function p(N,G){let d={id:G.attr(N,"abstractNumId"),levels:[]};for(let u of G.elements(N))switch(u.localName){case"name":d.name=G.attr(u,"val");break;case"multiLevelType":d.multiLevelType=G.attr(u,"val");break;case"numStyleLink":d.numberingStyleLink=G.attr(u,"val");break;case"styleLink":d.styleLink=G.attr(u,"val");break;case"lvl":d.levels.push(y(u,G))}return d}function y(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"start":d.start=G.attr(u,"val");break;case"lvlRestart":d.restart=G.intAttr(u,"val");break;case"numFmt":d.format=G.attr(u,"val");break;case"lvlText":d.text=G.attr(u,"val");break;case"lvlJc":d.justification=G.attr(u,"val");break;case"lvlPicBulletId":d.bulletPictureId=G.attr(u,"val");break;case"pStyle":d.paragraphStyle=G.attr(u,"val");break;case"pPr":d.paragraphProps=(0,v.parseParagraphProperties)(u,G);break;case"rPr":d.runProps=(0,b.parseRunProperties)(u,G)}return d}function X(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"startOverride":d.start=G.intAttr(u,"val");break;case"lvl":d.numberingLevel=y(u,G)}return d}function m(N,G){var d=G.element(N,"pict"),u=d&&G.element(d,"shape"),s=u&&G.element(u,"imagedata");return s?{id:G.attr(N,"numPicBulletId"),referenceId:G.attr(s,"id"),style:G.attr(u,"style")}:null}r.parseNumberingPart=function(N,G){let d={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let u of G.elements(N))switch(u.localName){case"num":d.numberings.push(Z(u,G));break;case"abstractNum":d.abstractNumberings.push(p(u,G));break;case"numPicBullet":d.bulletPictures.push(m(u,G))}return d},r.parseNumbering=Z,r.parseAbstractNumbering=p,r.parseNumberingLevel=y,r.parseNumberingLevelOverrride=X,r.parseNumberingBulletPicture=m},472:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.XmlParser=r.serializeXmlString=r.parseXmlString=void 0;const v=f(149);r.parseXmlString=function(p,y=!1){y&&(p=p.replace(/<[?].*[?]>/,""));const X=new DOMParser().parseFromString(p,"application/xml"),m=(N=X.getElementsByTagName("parsererror")[0])===null||N===void 0?void 0:N.textContent;var N;if(m)throw new Error(m);return X},r.serializeXmlString=function(p){return new XMLSerializer().serializeToString(p)};class b{elements(y,X=null){const m=[];for(let N=0,G=y.childNodes.length;N{Object.defineProperty(r,"__esModule",{value:!0}),r.SettingsPart=void 0;const v=f(530),b=f(846);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.settings=(0,b.parseSettings)(y,this._package.xmlParser)}}r.SettingsPart=Z},846:(o,r)=>{function f(v,b){var Z={defaultNoteIds:[]};for(let p of b.elements(v))switch(p.localName){case"numFmt":Z.nummeringFormat=b.attr(p,"val");break;case"footnote":case"endnote":Z.defaultNoteIds.push(b.attr(p,"id"))}return Z}Object.defineProperty(r,"__esModule",{value:!0}),r.parseNoteProperties=r.parseSettings=void 0,r.parseSettings=function(v,b){var Z={};for(let p of b.elements(v))switch(p.localName){case"defaultTabStop":Z.defaultTabStop=b.lengthAttr(p,"val");break;case"footnotePr":Z.footnoteProps=f(p,b);break;case"endnotePr":Z.endnoteProps=f(p,b);break;case"autoHyphenation":Z.autoHyphenation=b.boolAttr(p,"val")}return Z},r.parseNoteProperties=f},240:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.StylesPart=void 0;const v=f(530);class b extends v.Part{constructor(p,y,X){super(p,y),this._documentParser=X}parseXml(p){this.styles=this._documentParser.parseStylesFile(p)}}r.StylesPart=b},893:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ThemePart=void 0;const v=f(530),b=f(55);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.theme=(0,b.parseTheme)(y,this._package.xmlParser)}}r.ThemePart=Z},55:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseFontInfo=r.parseFontScheme=r.parseColorScheme=r.parseTheme=r.DmlTheme=void 0;class f{}function v(p,y){var X={name:y.attr(p,"name"),colors:{}};for(let G of y.elements(p)){var m=y.element(G,"srgbClr"),N=y.element(G,"sysClr");m?X.colors[G.localName]=y.attr(m,"val"):N&&(X.colors[G.localName]=y.attr(N,"lastClr"))}return X}function b(p,y){var X={name:y.attr(p,"name")};for(let m of y.elements(p))switch(m.localName){case"majorFont":X.majorFont=Z(m,y);break;case"minorFont":X.minorFont=Z(m,y)}return X}function Z(p,y){return{latinTypeface:y.elementAttr(p,"latin","typeface"),eaTypeface:y.elementAttr(p,"ea","typeface"),csTypeface:y.elementAttr(p,"cs","typeface")}}r.DmlTheme=f,r.parseTheme=function(p,y){var X=new f,m=y.element(p,"themeElements");for(let N of y.elements(m))switch(N.localName){case"clrScheme":X.colorScheme=v(N,y);break;case"fontScheme":X.fontScheme=b(N,y)}return X},r.parseColorScheme=v,r.parseFontScheme=b,r.parseFontInfo=Z},593:(o,r)=>{function f(v){return v&&typeof v=="object"&&!Array.isArray(v)}Object.defineProperty(r,"__esModule",{value:!0}),r.asArray=r.formatCssRules=r.parseCssRules=r.mergeDeep=r.isString=r.isObject=r.blobToBase64=r.keyBy=r.resolvePath=r.splitPath=r.escapeClassName=void 0,r.escapeClassName=function(v){return v==null?void 0:v.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},r.splitPath=function(v){let b=v.lastIndexOf("/")+1;return[b==0?"":v.substring(0,b),b==0?v:v.substring(b)]},r.resolvePath=function(v,b){try{const Z="http://docx/";return new URL(v,Z+b).toString().substring(Z.length)}catch{return`${b}${v}`}},r.keyBy=function(v,b){return v.reduce((Z,p)=>(Z[b(p)]=p,Z),{})},r.blobToBase64=function(v){return new Promise((b,Z)=>{const p=new FileReader;p.onloadend=()=>b(p.result),p.readAsDataURL(v)})},r.isObject=f,r.isString=function(v){return v&&typeof v=="string"||v instanceof String},r.mergeDeep=function v(b,...Z){var p;if(!Z.length)return b;const y=Z.shift();if(f(b)&&f(y))for(const X in y)f(y[X])?v((p=b[X])!==null&&p!==void 0?p:b[X]={},y[X]):b[X]=y[X];return v(b,...Z)},r.parseCssRules=function(v){const b={};for(const Z of v.split(";")){const[p,y]=Z.split(":");b[p]=y}return b},r.formatCssRules=function(v){return Object.entries(v).map((b,Z)=>`${b}: ${Z}`).join(";")},r.asArray=function(v){return Array.isArray(v)?v:[v]}},320:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseVmlElement=r.VmlElement=void 0;const v=f(149),b=f(120),Z=f(472);class p{constructor(){this.type=b.DomType.VmlElement,this.attrs={},this.chidren=[]}}function y(m){var N;return{stroke:Z.default.attr(m,"color"),"stroke-width":(N=Z.default.lengthAttr(m,"weight",v.LengthUsage.Emu))!==null&&N!==void 0?N:"1px"}}function X(m){return m.split(",")}r.VmlElement=p,r.parseVmlElement=function m(N){var G=new p;switch(N.localName){case"rect":G.tagName="rect",Object.assign(G.attrs,{width:"100%",height:"100%"});break;case"oval":G.tagName="ellipse",Object.assign(G.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":G.tagName="line";break;case"shape":G.tagName="g";break;default:return null}for(const d of Z.default.attrs(N))switch(d.localName){case"style":G.cssStyleText=d.value;break;case"fillcolor":G.attrs.fill=d.value;break;case"from":const[u,s]=X(d.value);Object.assign(G.attrs,{x1:u,y1:s});break;case"to":const[h,c]=X(d.value);Object.assign(G.attrs,{x2:h,y2:c})}for(const d of Z.default.elements(N))switch(d.localName){case"stroke":Object.assign(G.attrs,y(d));break;case"fill":Object.assign(G.attrs,{});break;case"imagedata":G.tagName="image",Object.assign(G.attrs,{width:"100%",height:"100%"}),G.imageHref={id:Z.default.attr(d,"id"),title:Z.default.attr(d,"title")};break;default:const u=m(d);u&&G.chidren.push(u)}return G}},213:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.deobfuscate=r.WordDocument=void 0;const v=f(461),b=f(380),Z=f(522),p=f(448),y=f(593),X=f(527),m=f(240),N=f(985),G=f(665),d=f(162),u=f(893),s=f(735),h=f(287),c=f(177),W=[{type:v.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:v.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:v.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:v.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class M{constructor(){this.parts=[],this.partsMap={}}static load(C,x,R){var g=new M;return g._options=R,g._parser=x,Z.OpenXmlPackage.load(C,R).then(S=>(g._package=S,g._package.loadRelationships())).then(S=>{g.rels=S;const L=W.map(V=>{var Y;const T=(Y=S.find(J=>J.type===V.type))!==null&&Y!==void 0?Y:V;return g.loadRelationshipPart(T.target,T.type)});return Promise.all(L)}).then(()=>g)}save(C="blob"){return this._package.save(C)}loadRelationshipPart(C,x){if(this.partsMap[C])return Promise.resolve(this.partsMap[C]);if(!this._package.get(C))return Promise.resolve(null);let R=null;switch(x){case v.RelationshipTypes.OfficeDocument:this.documentPart=R=new p.DocumentPart(this._package,C,this._parser);break;case v.RelationshipTypes.FontTable:this.fontTablePart=R=new b.FontTablePart(this._package,C);break;case v.RelationshipTypes.Numbering:this.numberingPart=R=new X.NumberingPart(this._package,C,this._parser);break;case v.RelationshipTypes.Styles:this.stylesPart=R=new m.StylesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Theme:this.themePart=R=new u.ThemePart(this._package,C);break;case v.RelationshipTypes.Footnotes:this.footnotesPart=R=new s.FootnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Endnotes:this.endnotesPart=R=new s.EndnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Footer:R=new N.FooterPart(this._package,C,this._parser);break;case v.RelationshipTypes.Header:R=new N.HeaderPart(this._package,C,this._parser);break;case v.RelationshipTypes.CoreProperties:this.corePropsPart=R=new d.CorePropsPart(this._package,C);break;case v.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=R=new G.ExtendedPropsPart(this._package,C);break;case v.RelationshipTypes.CustomProperties:R=new c.CustomPropsPart(this._package,C);break;case v.RelationshipTypes.Settings:this.settingsPart=R=new h.SettingsPart(this._package,C)}return R==null?Promise.resolve(null):(this.partsMap[C]=R,this.parts.push(R),R.load().then(()=>{if(R.rels==null||R.rels.length==0)return R;const[g]=(0,y.splitPath)(R.path),S=R.rels.map(L=>this.loadRelationshipPart((0,y.resolvePath)(L.target,g),L.type));return Promise.all(S).then(()=>R)}))}loadDocumentImage(C,x){return this.loadResource(x??this.documentPart,C,"blob").then(R=>this.blobToURL(R))}loadNumberingImage(C){return this.loadResource(this.numberingPart,C,"blob").then(x=>this.blobToURL(x))}loadFont(C,x){return this.loadResource(this.fontTablePart,C,"uint8array").then(R=>R&&this.blobToURL(new Blob([I(R,x)])))}blobToURL(C){return C?this._options.useBase64URL?(0,y.blobToBase64)(C):URL.createObjectURL(C):null}findPartByRelId(C,x=null){var R,g=((R=x.rels)!==null&&R!==void 0?R:this.rels).find(L=>L.id==C);const S=x?(0,y.splitPath)(x.path)[0]:"";return g?this.partsMap[(0,y.resolvePath)(g.target,S)]:null}getPathById(C,x){const R=C.rels.find(S=>S.id==x),[g]=(0,y.splitPath)(C.path);return R?(0,y.resolvePath)(R.target,g):null}loadResource(C,x,R){const g=this.getPathById(C,x);return g?this._package.load(g,R):Promise.resolve(null)}}function I(w,C){const x=C.replace(/{|}|-/g,""),R=new Array(16);for(let g=0;g<16;g++)R[16-g-1]=parseInt(x.substr(2*g,2),16);for(let g=0;g<32;g++)w[g]=w[g]^R[g%16];return w}r.WordDocument=M,r.deobfuscate=I},583:o=>{o.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E"},626:o=>{o.exports=t}},a={};function l(o){var r=a[o];if(r!==void 0)return r.exports;var f=a[o]={id:o,exports:{}};return i[o](f,f.exports,l),f.exports}return l.m=i,l.n=o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return l.d(r,{a:r}),r},l.d=(o,r)=>{for(var f in r)l.o(r,f)&&!l.o(o,f)&&Object.defineProperty(o,f,{enumerable:!0,get:r[f]})},l.o=(o,r)=>Object.prototype.hasOwnProperty.call(o,r),l.r=o=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},l.b=document.baseURI||self.location.href,l(667)})())})(hpe);function mpe(n,e={}){return typeof n=="string"?ppe(n,e):Promise.resolve(n)}function ppe(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t)}function ype(n,e){if(!n)return e.innerHTML="",Promise.resolve();let t;return n instanceof Blob?t=n:n instanceof Response?t=n.blob():n instanceof ArrayBuffer&&(t=new Blob([n])),iW.renderAsync(t,e)}const wd={getData:mpe,render:ype},qu=(n,e)=>{const t=n.__vccOpts||n;for(const[i,a]of e)t[i]=a;return t},Zpe=He({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null);function i(){let a=t.value;wd.getData(n.src,n.requestOptions).then(l=>{wd.render(l,a).then(()=>{e("rendered")}).catch(o=>{wd.render("",a),e("error",o)})}).catch(l=>{wd.render("",a),e("error",l)})}return Kt(()=>{n.src&&i()}),rt(()=>n.src,()=>{n.src?i():wd.render("",t.value).then(()=>{e("rendered")})}),{rootRef:t}}}),vpe={class:"vue-office-docx"},Wpe={class:"vue-office-docx-main",ref:"rootRef"};function Gpe(n,e,t,i,a,l){return kl(),oc("div",vpe,[Ou("div",Wpe,null,512)])}const bm=qu(Zpe,[["render",Gpe]]);bm.install=function(n){n.component(bm.name,bm)};function Xpe(n){const e=Ne("url"),t=Ne(n),i=Ne(n),a=Ne([]);function l(o){let r=new FileReader;return r.onload=f=>{let v=f.target.result;i.value=v},r.readAsArrayBuffer(o),!1}return{type:e,inputSrc:t,src:i,fileList:a,beforeUpload:l}}const Npe=n=>(jU("data-v-48e1d098"),n=n(),UU(),n),Mpe={class:"preview-wrapper"},Ipe={class:"operate-area"},Ype=Npe(()=>Ou("div",{class:"preview-wrapper-main"},null,-1)),wpe={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(n){const e=n,{type:t,inputSrc:i,src:a,fileList:l,beforeUpload:o}=Xpe(e.defaultSrc);return(r,f)=>{const v=as("a-radio-button"),b=as("a-radio-group"),Z=as("a-input"),p=as("a-button"),y=as("upload-outlined"),X=as("a-upload");return kl(),oc("div",Mpe,[Ou("div",Ipe,[D(b,{value:mi(t),"onUpdate:value":f[0]||(f[0]=m=>$i(t)?t.value=m:null),"button-style":"solid"},{default:pa(()=>[D(v,{value:"url"},{default:pa(()=>[Fl("远程文件地址")]),_:1}),D(v,{value:"upload"},{default:pa(()=>[Fl("上传本地文件")]),_:1})]),_:1},8,["value"]),mi(t)==="url"?(kl(),Lo(Z,{key:0,value:mi(i),"onUpdate:value":f[1]||(f[1]=m=>$i(i)?i.value=m:null),placeholder:e.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):xb("",!0),mi(t)==="url"?(kl(),Lo(p,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:f[2]||(f[2]=m=>a.value=mi(i))},{default:pa(()=>[Fl(" 预览 ")]),_:1})):xb("",!0),mi(t)!=="url"?(kl(),Lo(X,{key:2,accept:e.accept,action:"",beforeUpload:mi(o),"file-list":[]},{default:pa(()=>[D(p,{style:{"margin-left":"10px"}},{default:pa(()=>[D(y),Fl(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):xb("",!0)]),x0(r.$slots,"default",{src:mi(a)},void 0,!0),Ype])}}},eN=qu(wpe,[["__scopeId","data-v-48e1d098"]]),gpe={__name:"DocxDemo",setup(n){return(e,t)=>(kl(),Lo(eN,{accept:".docx",placeholder:"请输入docx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"},{default:pa(i=>[D(mi(bm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},Vpe=qu(gpe,[["__scopeId","data-v-03e834e4"]]);let Cp=class lW{constructor(e,t=""){typeof e=="string"?(this.el=document.createElement(e),this.el.className=t):this.el=e,this.data={}}data(e,t){return t!==void 0?(this.data[e]=t,this):this.data[e]}on(e,t){const[i,...a]=e.split(".");let l=i;return l==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(l="DOMMouseScroll"),this.el.addEventListener(l,o=>{t(o);for(let r=0;r{this.css(o,`${e[o]}px`)}),this;const{offsetTop:t,offsetLeft:i,offsetHeight:a,offsetWidth:l}=this.el;return{top:t,left:i,height:a,width:l}}scroll(e){const{el:t}=this;return e!==void 0&&(e.left!==void 0&&(t.scrollLeft=e.left),e.top!==void 0&&(t.scrollTop=e.top)),{left:t.scrollLeft,top:t.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new lW(this.el.parentNode)}children(...e){return arguments.length===0?this.el.childNodes:(e.forEach(t=>this.child(t)),this)}removeChild(e){this.el.removeChild(e)}child(e){let t=e;return typeof e=="string"?t=document.createTextNode(e):e instanceof lW&&(t=e.el),this.el.appendChild(t),this}contains(e){return this.el.contains(e)}className(e){return e!==void 0?(this.el.className=e,this):this.el.className}addClass(e){return this.el.classList.add(e),this}hasClass(e){return this.el.classList.contains(e)}removeClass(e){return this.el.classList.remove(e),this}toggle(e="active"){return this.toggleClass(e)}toggleClass(e){return this.el.classList.toggle(e)}active(e=!0,t="active"){return e?this.addClass(t):this.removeClass(t),this}checked(e=!0){return this.active(e,"checked"),this}disabled(e=!0){return e?this.addClass("disabled"):this.removeClass("disabled"),this}attr(e,t){if(t!==void 0)this.el.setAttribute(e,t);else{if(typeof e=="string")return this.el.getAttribute(e);Object.keys(e).forEach(i=>{this.el.setAttribute(i,e[i])})}return this}removeAttr(e){return this.el.removeAttribute(e),this}html(e){return e!==void 0?(this.el.innerHTML=e,this):this.el.innerHTML}val(e){return e!==void 0?(this.el.value=e,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...e){return e.forEach(t=>this.el.style.removeProperty(t)),this}css(e,t){return t===void 0&&typeof e!="string"?(Object.keys(e).forEach(i=>{this.el.style[i]=e[i]}),this):t!==void 0?(this.el.style[e]=t,this):this.el.style[e]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}};const ut=(n,e="")=>new Cp(n,e),ss=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function DS(n){let e="",t=n;for(;t>=ss.length;)t/=ss.length,t-=1,e+=ss[parseInt(t,10)%ss.length];const i=n%ss.length;return e+=ss[i],e}function Lpe(n){let e=0;for(let t=0;t="0"&&n.charAt(i)<="9"?t+=n.charAt(i):e+=n.charAt(i);return[Lpe(e),parseInt(t,10)-1]}function Yo(n,e){return`${DS(n)}${e+1}`}function gd(n,e,t,i=()=>!0){if(e===0&&t===0)return n;const[a,l]=Gs(n);return i(a,l)?Yo(a+e,l+t):n}class Ki{constructor(e,t,i,a,l=0,o=0){this.sri=e,this.sci=t,this.eri=i,this.eci=a,this.w=l,this.h=o}set(e,t,i,a){this.sri=e,this.sci=t,this.eri=i,this.eci=a}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...e){let[t,i]=[0,0];e.length===1?[i,t]=Gs(e[0]):e.length===2&&([t,i]=e);const{sri:a,sci:l,eri:o,eci:r}=this;return a<=t&&t<=o&&l<=i&&i<=r}each(e,t=()=>!0){const{sri:i,sci:a,eri:l,eci:o}=this;for(let r=i;r<=l;r+=1)if(t(r))for(let f=a;f<=o;f+=1)e(r,f)}contains(e){return this.sri<=e.sri&&this.sci<=e.sci&&this.eri>=e.eri&&this.eci>=e.eci}within(e){return this.sri>=e.sri&&this.sci>=e.sci&&this.eri<=e.eri&&this.eci<=e.eci}disjoint(e){return this.sri>e.eri||this.sci>e.eci||e.sri>this.eri||e.sci>this.eci}intersects(e){return this.sri<=e.eri&&this.sci<=e.eci&&e.sri<=this.eri&&e.sci<=this.eci}union(e){const{sri:t,sci:i,eri:a,eci:l}=this;return new Ki(e.sria?e.eri:a,e.eci>l?e.eci:l)}difference(e){const t=[],i=(p,y,X,m)=>{t.push(new Ki(p,y,X,m))},{sri:a,sci:l,eri:o,eci:r}=this,f=e.sri-a,v=e.sci-l,b=o-e.eri,Z=r-e.eci;return f>0?(i(a,l,e.sri-1,r),b>0?(i(e.eri+1,l,o,r),v>0&&i(e.sri,l,e.eri,e.sci-1),Z>0&&i(e.sri,e.eci+1,e.eri,r)):(v>0&&i(e.sri,l,o,e.sci-1),Z>0&&i(e.sri,e.eci+1,o,r))):b>0&&(i(e.eri+1,l,o,r),v>0&&i(a,l,e.eri,e.sci-1),Z>0&&i(a,e.eci+1,e.eri,r)),v>0?(i(a,l,o,e.sci-1),Z>0?(i(a,e.eri+1,o,r),f>0&&i(a,e.sci,e.sri-1,e.eci),b>0&&i(e.sri+1,e.sci,o,e.eci)):(f>0&&i(a,e.sci,e.sri-1,r),b>0&&i(e.sri+1,e.sci,o,r))):Z>0&&(i(o,e.eci+1,o,r),f>0&&i(a,l,e.sri-1,e.eci),b>0&&i(e.eri+1,l,o,e.eci)),t}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:e,sci:t,eri:i,eci:a}=this;let l=Yo(t,e);return this.multiple()&&(l=`${l}:${Yo(a,i)}`),l}clone(){const{sri:e,sci:t,eri:i,eci:a,w:l,h:o}=this;return new Ki(e,t,i,a,l,o)}equals(e){return this.eri===e.eri&&this.eci===e.eci&&this.sri===e.sri&&this.sci===e.sci}static valueOf(e){const t=e.split(":"),[i,a]=Gs(t[0]);let[l,o]=[a,i];return t.length>1&&([o,l]=Gs(t[1])),new Ki(a,i,l,o)}}let Rpe=class{constructor(){this.range=new Ki(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(e,t){this.ri=e,this.ci=t}size(){return this.range.size()}};class Tpe{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class xpe{constructor(){this.undoItems=[],this.redoItems=[]}add(e){this.undoItems.push(JSON.stringify(e)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(e,t){const{undoItems:i,redoItems:a}=this;this.canUndo()&&(a.push(JSON.stringify(e)),t(JSON.parse(i.pop())))}redo(e,t){const{undoItems:i,redoItems:a}=this;this.canRedo()&&(i.push(JSON.stringify(e)),t(JSON.parse(a.pop())))}}class Cpe{constructor(){this.range=null,this.state="clear"}copy(e){return this.range=e,this.state="copy",this}cut(e){return this.range=e,this.state="cut",this}isCopy(){return this.state==="copy"}isCut(){return this.state==="cut"}isClear(){return this.state==="clear"}clear(){this.range=null,this.state="clear"}}class AV{constructor(e,t,i){this.ci=e,this.operator=t,this.value=i}set(e,t){this.operator=e,this.value=t}includes(e){const{operator:t,value:i}=this;return t==="all"?!0:t==="in"?i.includes(e):!1}vlength(){const{operator:e,value:t}=this;return e==="in"?t.length:0}getData(){const{ci:e,operator:t,value:i}=this;return{ci:e,operator:t,value:i}}}class _V{constructor(e,t){this.ci=e,this.order=t}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class Spe{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:e,filters:t,sort:i}){e!=null&&(this.ref=e,this.filters=t.map(a=>new AV(a.ci,a.operator,a.value)),i&&(this.sort=new _V(i.ci,i.order)))}getData(){if(this.active()){const{ref:e,filters:t,sort:i}=this;return{ref:e,filters:t.map(a=>a.getData()),sort:i}}return{}}addFilter(e,t,i){const a=this.getFilter(e);a==null?this.filters.push(new AV(e,t,i)):a.set(t,i)}setSort(e,t){this.sort=t?new _V(e,t):null}includes(e,t){return this.active()?this.hrange().includes(e,t):!1}getSort(e){const{sort:t}=this;return t&&t.ci===e?t:null}getFilter(e){const{filters:t}=this;for(let i=0;i!t.within(e))}getFirstIncludes(e,t){for(let i=0;it.intersects(e)))}intersects(e){for(let t=0;t{i.intersects(t)&&(t=i.union(t))}),t}add(e){this.deleteWithin(e),this._.push(e)}shift(e,t,i,a){this._.forEach(l=>{const{sri:o,sci:r,eri:f,eci:v}=l,b=l;e==="row"?o>=t?(b.sri+=i,b.eri+=i):o=t?(b.sci+=i,b.eci+=i):r{const l=a;l.within(e)&&(l.eri+=t,l.sri+=t,l.sci+=i,l.eci+=i)})}setData(e){return this._=e.map(t=>Ki.valueOf(t)),this}getData(){return this._.map(e=>e.toString())}}function zpe(n){return JSON.parse(JSON.stringify(n))}const OS=(n={},...e)=>(e.forEach(t=>{Object.keys(t).forEach(i=>{const a=t[i];typeof a=="string"||typeof a=="number"||typeof a=="boolean"?n[i]=a:typeof a!="function"&&!Array.isArray(a)&&a instanceof Object?(n[i]=n[i]||{},OS(n[i],a)):n[i]=a})}),n);function aW(n,e){const t=Object.keys(n);if(t.length!==Object.keys(e).length)return!1;for(let i=0;it)=>{let t=0,i=0;return Object.keys(n).forEach(a=>{t+=e(n[a],a),i+=1}),[t,i]};function Fpe(n,e){const t=n[`${e}`];return delete n[`${e}`],t}function Jpe(n,e,t,i,a,l){let o=t,r=i,f=n;for(;fa);f+=1)r=l(f),o+=r;return[f,o-r,r]}function Dpe(n,e,t){let i=0;for(let a=n;a5?r.toFixed(2):r;return r.toFixed(Math.max(i,a))}const ya={cloneDeep:zpe,merge:(...n)=>OS({},...n),equals:aW,arrayEquals:jpe,sum:kpe,rangeEach:Ope,rangeSum:Dpe,rangeReduceIf:Jpe,deleteProperty:Fpe,numberCalc:ac};class Upe{constructor({len:e,height:t}){this._={},this.len=e,this.height=t}getHeight(e){if(this.isHide(e))return 0;const t=this.get(e);return t&&t.height?t.height:this.height}setHeight(e,t){const i=this.getOrNew(e);i.height=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this.get(e);return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumHeight(e,t,i){return ya.rangeSum(e,t,a=>i&&i.has(a)?0:this.getHeight(a))}totalHeight(){return this.sumHeight(0,this.len)}get(e){return this._[e]}getOrNew(e){return this._[e]=this._[e]||{cells:{}},this._[e]}getCell(e,t){const i=this.get(e);return i!==void 0&&i.cells!==void 0&&i.cells[t]!==void 0?i.cells[t]:null}getCellMerge(e,t){const i=this.getCell(e,t);return i&&i.merge?i.merge:[0,0]}getCellOrNew(e,t){const i=this.getOrNew(e);return i.cells[t]=i.cells[t]||{},i.cells[t]}setCell(e,t,i,a="all"){const l=this.getOrNew(e);a==="all"?l.cells[t]=i:a==="text"?(l.cells[t]=l.cells[t]||{},l.cells[t].text=i.text):a==="format"&&(l.cells[t]=l.cells[t]||{},l.cells[t].style=i.style,i.merge&&(l.cells[t].merge=i.merge))}setCellText(e,t,i){const a=this.getCellOrNew(e,t);a.editable!==!1&&(a.text=i)}copyPaste(e,t,i,a=!1,l=()=>{}){const{sri:o,sci:r,eri:f,eci:v}=e,b=t.sri,Z=t.sci,p=t.eri,y=t.eci,[X,m]=e.size(),[N,G]=t.size();let d=!0,u=0;(p0){const{text:C}=w;let x=W-Z+(c-b)+2;if(d||(x-=u+1),C[0]==="=")w.text=C.replace(/[a-zA-Z]{1,3}\d+/g,R=>{let[g,S]=[0,0];return o===b?g=x-1:S=x-1,/^\d+$/.test(R)?R:gd(R,g,S)});else if(X<=1&&m>1&&(b>f||p1&&(Z>v||y{this.eachCells(a,l=>{let o=parseInt(a,10),r=parseInt(l,10);e.includes(a,l)&&(o=t.sri+(o-e.sri),r=t.sci+(r-e.sci)),i[o]=i[o]||{cells:{}},i[o].cells[r]=this._[a].cells[l]})}),this._=i}paste(e,t){if(e.length<=0)return;const{sri:i,sci:a}=t;e.forEach((l,o)=>{const r=i+o;l.forEach((f,v)=>{const b=a+v;this.setCellText(r,b,f)})})}insert(e,t=1){const i={};this.each((a,l)=>{let o=parseInt(a,10);o>=e&&(o+=t,this.eachCells(a,(r,f)=>{f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>gd(v,0,t,(b,Z)=>Z>=e)))})),i[o]=l}),this._=i,this.len+=t}delete(e,t){const i=t-e+1,a={};this.each((l,o)=>{const r=parseInt(l,10);rt&&(a[r-i]=o,this.eachCells(l,(f,v)=>{v.text&&v.text[0]==="="&&(v.text=v.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>gd(b,0,-i,(Z,p)=>p>t)))}))}),this._=a,this.len-=i}insertColumn(e,t=1){this.each((i,a)=>{const l={};this.eachCells(i,(o,r)=>{let f=parseInt(o,10);f>=e&&(f+=t,r.text&&r.text[0]==="="&&(r.text=r.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>gd(v,t,0,b=>b>=e)))),l[f]=r}),a.cells=l})}deleteColumn(e,t){const i=t-e+1;this.each((a,l)=>{const o={};this.eachCells(a,(r,f)=>{const v=parseInt(r,10);vt&&(o[v-i]=f,f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>gd(b,-i,0,Z=>Z>t))))}),l.cells=o})}deleteCells(e,t="all"){e.each((i,a)=>{this.deleteCell(i,a,t)})}deleteCell(e,t,i="all"){const a=this.get(e);if(a!==null){const l=this.getCell(e,t);l!==null&&l.editable!==!1&&(i==="all"?delete a.cells[t]:i==="text"?(l.text&&delete l.text,l.value&&delete l.value):i==="format"?(l.style!==void 0&&delete l.style,l.merge&&delete l.merge):i==="merge"&&l.merge&&delete l.merge)}}maxCell(){const e=Object.keys(this._),t=e[e.length-1],i=this._[t];if(i){const{cells:a}=i,l=Object.keys(a),o=l[l.length-1];return[parseInt(t,10),parseInt(o,10)]}return[0,0]}each(e){Object.entries(this._).forEach(([t,i])=>{e(t,i)})}eachCells(e,t){this._[e]&&this._[e].cells&&Object.entries(this._[e].cells).forEach(([i,a])=>{t(i,a)})}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}}class Epe{constructor({len:e,width:t,indexWidth:i,minWidth:a}){this._={},this.len=e,this.width=t,this.indexWidth=i,this.minWidth=a}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}getWidth(e){if(this.isHide(e))return 0;const t=this._[e];return t&&t.width?t.width:this.width}getOrNew(e){return this._[e]=this._[e]||{},this._[e]}setWidth(e,t){const i=this.getOrNew(e);i.width=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this._[e];return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumWidth(e,t){return ya.rangeSum(e,t,i=>this.getWidth(i))}totalWidth(){return this.sumWidth(0,this.len)}}const Kpe={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let rW=["en"];const jS={en:Kpe};function $V(n,e){if(e)for(const t of rW){if(!e[t])break;let i=e[t];const a=n.match(/(?:\\.|[^.])+/g);for(let l=0;l_i(n)}function US(n,e,t=!1){t?rW=[n]:rW.unshift(n),e&&(jS[n]=e)}const qV={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function fr(n,e,...t){let i="";return n||(i=_i(`validation.${e}`,...t)),[n,i]}class ES{constructor(e,t,i,a){this.required=t,this.value=i,this.type=e,this.operator=a,this.message=""}parseValue(e){const{type:t}=this;return t==="date"?new Date(e):t==="number"?Number(e):e}equals(e){let t=this.type===e.type&&this.required===e.required&&this.operator===e.operator;return t&&(Array.isArray(this.value)?t=ya.arrayEquals(this.value,e.value):t=this.value===e.value),t}values(){return this.value.split(",")}validate(e){const{required:t,operator:i,value:a,type:l}=this;if(t&&/^\s*$/.test(e))return fr(!1,"required");if(/^\s*$/.test(e))return[!0];if(qV[l]&&!qV[l].test(e))return fr(!1,"notMatch");if(l==="list")return fr(this.values().includes(e),"notIn");if(i){const o=this.parseValue(e);if(i==="be"){const[r,f]=a;return fr(o>=this.parseValue(r)&&o<=this.parseValue(f),"between",r,f)}if(i==="nbe"){const[r,f]=a;return fr(othis.parseValue(f),"notBetween",r,f)}if(i==="eq")return fr(o===this.parseValue(a),"equal",a);if(i==="neq")return fr(o!==this.parseValue(a),"notEqual",a);if(i==="lt")return fr(othis.parseValue(a),"greaterThan",a);if(i==="gte")return fr(o>=this.parseValue(a),"greaterThanEqual",a)}return[!0]}}class b0{constructor(e,t,i){this.refs=t,this.mode=e,this.validator=i}includes(e,t){const{refs:i}=this;for(let a=0;a{const a=Ki.valueOf(i);a.intersects(e)?a.difference(e).forEach(o=>t.push(o.toString())):t.push(i)}),this.refs=t}getData(){const{refs:e,mode:t,validator:i}=this,{type:a,required:l,operator:o,value:r}=i;return{refs:e,mode:t,type:a,required:l,operator:o,value:r}}static valueOf({refs:e,mode:t,type:i,required:a,operator:l,value:o}){return new b0(t,e,new ES(i,a,o,l))}}class Hpe{constructor(){this._=[],this.errors=new Map}getError(e,t){return this.errors.get(`${e}_${t}`)}validate(e,t,i){const a=this.get(e,t),l=`${e}_${t}`,{errors:o}=this;if(a!==null){const[r,f]=a.validator.validate(i);r?o.delete(l):o.set(l,f)}else o.delete(l);return!0}add(e,t,{type:i,required:a,value:l,operator:o}){const r=new ES(i,a,l,o),f=this.getByValidator(r);f!==null?f.addRef(t):this._.push(new b0(e,[t],r))}getByValidator(e){for(let t=0;t{t.remove(e)})}each(e){this._.forEach(t=>e(t))}getData(){return this._.filter(e=>e.refs.length>0).map(e=>e.getData())}setData(e){this._=e.map(t=>b0.valueOf(t))}}const Ppe={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},Qpe=41,Bpe=41,eL=(n,e)=>Object.prototype.hasOwnProperty.call(n,e);function tL(n,e,t=()=>{}){const{merges:i}=this,a=e.clone(),[l,o]=n.size(),[r,f]=e.size();return l>r&&(a.eri=e.sri+l-1),o>f&&(a.eci=e.sci+o-1),i.intersects(a)?(t(_i("error.pasteForMergedCell")),!1):!0}function nL(n,e,t,i=!1){const{rows:a,merges:l}=this;(t==="all"||t==="format")&&(a.deleteCells(e,t),l.deleteWithin(e)),a.copyPaste(n,e,t,i,(o,r,f)=>{if(f&&f.merge){const[v,b]=f.merge;if(v<=0&&b<=0)return;l.add(new Ki(o,r,o+v,r+b))}})}function Ape(n,e){const{clipboard:t,rows:i,merges:a}=this;i.cutPaste(n,e),a.move(n,e.sri-n.sri,e.sci-n.sci),t.clear()}function $c(n,e,t){const{styles:i,rows:a}=this,l=a.getCellOrNew(n,e);let o={};l.style!==void 0&&(o=ya.cloneDeep(i[l.style])),o=ya.merge(o,{border:t}),l.style=this.addStyle(o)}function _pe({mode:n,style:e,color:t}){const{styles:i,selector:a,rows:l}=this,{sri:o,sci:r,eri:f,eci:v}=a.range,b=!this.isSignleSelected();if(!(!b&&(n==="inside"||n==="horizontal"||n==="vertical"))){if(n==="outside"&&!b)$c.call(this,o,r,{top:[e,t],bottom:[e,t],left:[e,t],right:[e,t]});else if(n==="none")a.range.each((Z,p)=>{const y=l.getCell(Z,p);if(y&&y.style!==void 0){const X=ya.cloneDeep(i[y.style]);delete X.border,y.style=this.addStyle(X)}});else if(n==="all"||n==="inside"||n==="outside"||n==="horizontal"||n==="vertical"){const Z=[];for(let p=o;p<=f;p+=1)for(let y=r;y<=v;y+=1){const X=[];for(let h=0;hZ.splice(h,1)),y>v)break;const m=l.getCell(p,y);let[N,G]=[0,0];m&&m.merge&&([N,G]=m.merge,Z.push([p,y,N,G]));const d=N>0&&p+N===f,u=G>0&&y+G===v;let s={};n==="all"?s={bottom:[e,t],top:[e,t],left:[e,t],right:[e,t]}:n==="inside"?(!u&&y0&&$c.call(this,p,y,s),y+=G}}else if(n==="top"||n==="bottom")for(let Z=r;Z<=v;Z+=1)n==="top"&&($c.call(this,o,Z,{top:[e,t]}),Z+=l.getCellMerge(o,Z)[1]),n==="bottom"&&($c.call(this,f,Z,{bottom:[e,t]}),Z+=l.getCellMerge(f,Z)[1]);else if(n==="left"||n==="right")for(let Z=o;Z<=f;Z+=1)n==="left"&&($c.call(this,Z,r,{left:[e,t]}),Z+=l.getCellMerge(Z,r)[0]),n==="right"&&($c.call(this,Z,v,{right:[e,t]}),Z+=l.getCellMerge(Z,v)[0])}}function $pe(n,e){const{rows:t}=this,i=this.freezeTotalHeight();let a=t.height;i+t.heightn);o+=1)l.has(o)||(f=t.getHeight(o),r+=f);return r-=f,r<=0?{ri:-1,top:0,height:f}:{ri:o-1,top:r,height:f}}function qpe(n,e){const{cols:t}=this,i=this.freezeTotalWidth();let a=t.indexWidth;i+t.indexWidtht.getWidth(f));return o<=0?{ci:-1,left:0,width:t.indexWidth}:{ci:l-1,left:o,width:r}}class eye{constructor(e,t){this.settings=ya.merge(Ppe,t||{}),this.name=e||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new tN,this.rows=new Upe(this.settings.row),this.cols=new Epe(this.settings.col),this.validations=new Hpe,this.hyperlinks={},this.comments={},this.selector=new Rpe,this.scroll=new Tpe,this.history=new xpe,this.clipboard=new Cpe,this.autoFilter=new Spe,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(e,t,i){this.changeData(()=>{this.validations.add(e,t,i)})}removeValidation(){const{range:e}=this.selector;this.changeData(()=>{this.validations.remove(e)})}getSelectedValidator(){const{ri:e,ci:t}=this.selector,i=this.validations.get(e,t);return i?i.validator:null}getSelectedValidation(){const{ri:e,ci:t,range:i}=this.selector,a=this.validations.get(e,t),l={ref:i.toString()};return a!==null&&(l.mode=a.mode,l.validator=a.validator),l}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),e=>{this.setData(e)})}redo(){this.history.redo(this.getData(),e=>{this.setData(e)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let e="";const t=this.rows.getData();for(let i=this.selector.range.sri;i<=this.selector.range.eri;i+=1){if(eL(t,i)){for(let a=this.selector.range.sci;a<=this.selector.range.eci;a+=1)if(a>this.selector.range.sci&&(e+=" "),eL(t[i].cells,a)){const l=String(t[i].cells[a].text);l.indexOf(` +`}numberingCounter(h,c){return`${this.className}-num-${h}-${c}`}levelTextToContent(h,c,W,M){var I;return`"${h.replace(/%\d*/g,w=>{let C=parseInt(w.substring(1),10)-1;return`"counter(${this.numberingCounter(W,C)}, ${M})"`})}${(I={tab:"\\9",space:"\\a0"}[c])!==null&&I!==void 0?I:""}"`}numFormatToCssValue(h){return{none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman"}[h]||h}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const h=(0,Z.computePixelToPoint)();for(let c of this.currentTabs)(0,Z.updateTabStop)(c.span,c.stops,this.defaultTabSize,h)},500))}}},630:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.updateTabStop=r.computePixelToPoint=void 0;const f={pos:0,leader:"none",style:"left"};function v(b){return parseFloat(b)}r.computePixelToPoint=function(b=document.body){const Z=document.createElement("div");Z.style.width="100pt",b.appendChild(Z);const p=100/Z.offsetWidth;return b.removeChild(Z),p},r.updateTabStop=function(b,Z,p,y=.75){const X=b.closest("p"),m=b.getBoundingClientRect(),N=X.getBoundingClientRect(),G=getComputedStyle(X),d=(Z==null?void 0:Z.length)>0?Z.map(x=>({pos:v(x.position),leader:x.leader,style:x.style})).sort((x,R)=>x.pos-R.pos):[f],u=d[d.length-1],s=N.width*y,h=v(p);let c=u.pos+h;if(cx.style!="clear"&&x.pos>I);if(w==null)return;let C=1;if(w.style=="right"||w.style=="center"){const x=Array.from(X.querySelectorAll(`.${b.className}`)),R=x.indexOf(b)+1,g=document.createRange();g.setStart(b,1),R{Object.defineProperty(r,"__esModule",{value:!0}),r.WmlEndnote=r.WmlFootnote=r.WmlBaseNote=void 0;const v=f(120);class b{constructor(){this.children=[],this.cssStyle={}}}r.WmlBaseNote=b,r.WmlFootnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Footnote}},r.WmlEndnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Endnote}}},735:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.EndnotesPart=r.FootnotesPart=r.BaseNotePart=void 0;const v=f(530),b=f(881);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}}r.BaseNotePart=Z,r.FootnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"footnote",b.WmlFootnote)}},r.EndnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"endnote",b.WmlEndnote)}}},527:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.NumberingPart=void 0;const v=f(530),b=f(682);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}parseXml(y){Object.assign(this,(0,b.parseNumberingPart)(y,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(y)}}r.NumberingPart=Z},682:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseNumberingBulletPicture=r.parseNumberingLevelOverrride=r.parseNumberingLevel=r.parseAbstractNumbering=r.parseNumbering=r.parseNumberingPart=void 0;const v=f(109),b=f(488);function Z(N,G){let d={id:G.attr(N,"numId"),overrides:[]};for(let u of G.elements(N))switch(u.localName){case"abstractNumId":d.abstractId=G.attr(u,"val");break;case"lvlOverride":d.overrides.push(X(u,G))}return d}function p(N,G){let d={id:G.attr(N,"abstractNumId"),levels:[]};for(let u of G.elements(N))switch(u.localName){case"name":d.name=G.attr(u,"val");break;case"multiLevelType":d.multiLevelType=G.attr(u,"val");break;case"numStyleLink":d.numberingStyleLink=G.attr(u,"val");break;case"styleLink":d.styleLink=G.attr(u,"val");break;case"lvl":d.levels.push(y(u,G))}return d}function y(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"start":d.start=G.attr(u,"val");break;case"lvlRestart":d.restart=G.intAttr(u,"val");break;case"numFmt":d.format=G.attr(u,"val");break;case"lvlText":d.text=G.attr(u,"val");break;case"lvlJc":d.justification=G.attr(u,"val");break;case"lvlPicBulletId":d.bulletPictureId=G.attr(u,"val");break;case"pStyle":d.paragraphStyle=G.attr(u,"val");break;case"pPr":d.paragraphProps=(0,v.parseParagraphProperties)(u,G);break;case"rPr":d.runProps=(0,b.parseRunProperties)(u,G)}return d}function X(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"startOverride":d.start=G.intAttr(u,"val");break;case"lvl":d.numberingLevel=y(u,G)}return d}function m(N,G){var d=G.element(N,"pict"),u=d&&G.element(d,"shape"),s=u&&G.element(u,"imagedata");return s?{id:G.attr(N,"numPicBulletId"),referenceId:G.attr(s,"id"),style:G.attr(u,"style")}:null}r.parseNumberingPart=function(N,G){let d={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let u of G.elements(N))switch(u.localName){case"num":d.numberings.push(Z(u,G));break;case"abstractNum":d.abstractNumberings.push(p(u,G));break;case"numPicBullet":d.bulletPictures.push(m(u,G))}return d},r.parseNumbering=Z,r.parseAbstractNumbering=p,r.parseNumberingLevel=y,r.parseNumberingLevelOverrride=X,r.parseNumberingBulletPicture=m},472:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.XmlParser=r.serializeXmlString=r.parseXmlString=void 0;const v=f(149);r.parseXmlString=function(p,y=!1){y&&(p=p.replace(/<[?].*[?]>/,""));const X=new DOMParser().parseFromString(p,"application/xml"),m=(N=X.getElementsByTagName("parsererror")[0])===null||N===void 0?void 0:N.textContent;var N;if(m)throw new Error(m);return X},r.serializeXmlString=function(p){return new XMLSerializer().serializeToString(p)};class b{elements(y,X=null){const m=[];for(let N=0,G=y.childNodes.length;N{Object.defineProperty(r,"__esModule",{value:!0}),r.SettingsPart=void 0;const v=f(530),b=f(846);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.settings=(0,b.parseSettings)(y,this._package.xmlParser)}}r.SettingsPart=Z},846:(o,r)=>{function f(v,b){var Z={defaultNoteIds:[]};for(let p of b.elements(v))switch(p.localName){case"numFmt":Z.nummeringFormat=b.attr(p,"val");break;case"footnote":case"endnote":Z.defaultNoteIds.push(b.attr(p,"id"))}return Z}Object.defineProperty(r,"__esModule",{value:!0}),r.parseNoteProperties=r.parseSettings=void 0,r.parseSettings=function(v,b){var Z={};for(let p of b.elements(v))switch(p.localName){case"defaultTabStop":Z.defaultTabStop=b.lengthAttr(p,"val");break;case"footnotePr":Z.footnoteProps=f(p,b);break;case"endnotePr":Z.endnoteProps=f(p,b);break;case"autoHyphenation":Z.autoHyphenation=b.boolAttr(p,"val")}return Z},r.parseNoteProperties=f},240:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.StylesPart=void 0;const v=f(530);class b extends v.Part{constructor(p,y,X){super(p,y),this._documentParser=X}parseXml(p){this.styles=this._documentParser.parseStylesFile(p)}}r.StylesPart=b},893:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ThemePart=void 0;const v=f(530),b=f(55);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.theme=(0,b.parseTheme)(y,this._package.xmlParser)}}r.ThemePart=Z},55:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseFontInfo=r.parseFontScheme=r.parseColorScheme=r.parseTheme=r.DmlTheme=void 0;class f{}function v(p,y){var X={name:y.attr(p,"name"),colors:{}};for(let G of y.elements(p)){var m=y.element(G,"srgbClr"),N=y.element(G,"sysClr");m?X.colors[G.localName]=y.attr(m,"val"):N&&(X.colors[G.localName]=y.attr(N,"lastClr"))}return X}function b(p,y){var X={name:y.attr(p,"name")};for(let m of y.elements(p))switch(m.localName){case"majorFont":X.majorFont=Z(m,y);break;case"minorFont":X.minorFont=Z(m,y)}return X}function Z(p,y){return{latinTypeface:y.elementAttr(p,"latin","typeface"),eaTypeface:y.elementAttr(p,"ea","typeface"),csTypeface:y.elementAttr(p,"cs","typeface")}}r.DmlTheme=f,r.parseTheme=function(p,y){var X=new f,m=y.element(p,"themeElements");for(let N of y.elements(m))switch(N.localName){case"clrScheme":X.colorScheme=v(N,y);break;case"fontScheme":X.fontScheme=b(N,y)}return X},r.parseColorScheme=v,r.parseFontScheme=b,r.parseFontInfo=Z},593:(o,r)=>{function f(v){return v&&typeof v=="object"&&!Array.isArray(v)}Object.defineProperty(r,"__esModule",{value:!0}),r.asArray=r.formatCssRules=r.parseCssRules=r.mergeDeep=r.isString=r.isObject=r.blobToBase64=r.keyBy=r.resolvePath=r.splitPath=r.escapeClassName=void 0,r.escapeClassName=function(v){return v==null?void 0:v.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},r.splitPath=function(v){let b=v.lastIndexOf("/")+1;return[b==0?"":v.substring(0,b),b==0?v:v.substring(b)]},r.resolvePath=function(v,b){try{const Z="http://docx/";return new URL(v,Z+b).toString().substring(Z.length)}catch{return`${b}${v}`}},r.keyBy=function(v,b){return v.reduce((Z,p)=>(Z[b(p)]=p,Z),{})},r.blobToBase64=function(v){return new Promise((b,Z)=>{const p=new FileReader;p.onloadend=()=>b(p.result),p.readAsDataURL(v)})},r.isObject=f,r.isString=function(v){return v&&typeof v=="string"||v instanceof String},r.mergeDeep=function v(b,...Z){var p;if(!Z.length)return b;const y=Z.shift();if(f(b)&&f(y))for(const X in y)f(y[X])?v((p=b[X])!==null&&p!==void 0?p:b[X]={},y[X]):b[X]=y[X];return v(b,...Z)},r.parseCssRules=function(v){const b={};for(const Z of v.split(";")){const[p,y]=Z.split(":");b[p]=y}return b},r.formatCssRules=function(v){return Object.entries(v).map((b,Z)=>`${b}: ${Z}`).join(";")},r.asArray=function(v){return Array.isArray(v)?v:[v]}},320:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseVmlElement=r.VmlElement=void 0;const v=f(149),b=f(120),Z=f(472);class p{constructor(){this.type=b.DomType.VmlElement,this.attrs={},this.chidren=[]}}function y(m){var N;return{stroke:Z.default.attr(m,"color"),"stroke-width":(N=Z.default.lengthAttr(m,"weight",v.LengthUsage.Emu))!==null&&N!==void 0?N:"1px"}}function X(m){return m.split(",")}r.VmlElement=p,r.parseVmlElement=function m(N){var G=new p;switch(N.localName){case"rect":G.tagName="rect",Object.assign(G.attrs,{width:"100%",height:"100%"});break;case"oval":G.tagName="ellipse",Object.assign(G.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":G.tagName="line";break;case"shape":G.tagName="g";break;default:return null}for(const d of Z.default.attrs(N))switch(d.localName){case"style":G.cssStyleText=d.value;break;case"fillcolor":G.attrs.fill=d.value;break;case"from":const[u,s]=X(d.value);Object.assign(G.attrs,{x1:u,y1:s});break;case"to":const[h,c]=X(d.value);Object.assign(G.attrs,{x2:h,y2:c})}for(const d of Z.default.elements(N))switch(d.localName){case"stroke":Object.assign(G.attrs,y(d));break;case"fill":Object.assign(G.attrs,{});break;case"imagedata":G.tagName="image",Object.assign(G.attrs,{width:"100%",height:"100%"}),G.imageHref={id:Z.default.attr(d,"id"),title:Z.default.attr(d,"title")};break;default:const u=m(d);u&&G.chidren.push(u)}return G}},213:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.deobfuscate=r.WordDocument=void 0;const v=f(461),b=f(380),Z=f(522),p=f(448),y=f(593),X=f(527),m=f(240),N=f(985),G=f(665),d=f(162),u=f(893),s=f(735),h=f(287),c=f(177),W=[{type:v.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:v.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:v.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:v.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class M{constructor(){this.parts=[],this.partsMap={}}static load(C,x,R){var g=new M;return g._options=R,g._parser=x,Z.OpenXmlPackage.load(C,R).then(S=>(g._package=S,g._package.loadRelationships())).then(S=>{g.rels=S;const L=W.map(V=>{var Y;const T=(Y=S.find(J=>J.type===V.type))!==null&&Y!==void 0?Y:V;return g.loadRelationshipPart(T.target,T.type)});return Promise.all(L)}).then(()=>g)}save(C="blob"){return this._package.save(C)}loadRelationshipPart(C,x){if(this.partsMap[C])return Promise.resolve(this.partsMap[C]);if(!this._package.get(C))return Promise.resolve(null);let R=null;switch(x){case v.RelationshipTypes.OfficeDocument:this.documentPart=R=new p.DocumentPart(this._package,C,this._parser);break;case v.RelationshipTypes.FontTable:this.fontTablePart=R=new b.FontTablePart(this._package,C);break;case v.RelationshipTypes.Numbering:this.numberingPart=R=new X.NumberingPart(this._package,C,this._parser);break;case v.RelationshipTypes.Styles:this.stylesPart=R=new m.StylesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Theme:this.themePart=R=new u.ThemePart(this._package,C);break;case v.RelationshipTypes.Footnotes:this.footnotesPart=R=new s.FootnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Endnotes:this.endnotesPart=R=new s.EndnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Footer:R=new N.FooterPart(this._package,C,this._parser);break;case v.RelationshipTypes.Header:R=new N.HeaderPart(this._package,C,this._parser);break;case v.RelationshipTypes.CoreProperties:this.corePropsPart=R=new d.CorePropsPart(this._package,C);break;case v.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=R=new G.ExtendedPropsPart(this._package,C);break;case v.RelationshipTypes.CustomProperties:R=new c.CustomPropsPart(this._package,C);break;case v.RelationshipTypes.Settings:this.settingsPart=R=new h.SettingsPart(this._package,C)}return R==null?Promise.resolve(null):(this.partsMap[C]=R,this.parts.push(R),R.load().then(()=>{if(R.rels==null||R.rels.length==0)return R;const[g]=(0,y.splitPath)(R.path),S=R.rels.map(L=>this.loadRelationshipPart((0,y.resolvePath)(L.target,g),L.type));return Promise.all(S).then(()=>R)}))}loadDocumentImage(C,x){return this.loadResource(x??this.documentPart,C,"blob").then(R=>this.blobToURL(R))}loadNumberingImage(C){return this.loadResource(this.numberingPart,C,"blob").then(x=>this.blobToURL(x))}loadFont(C,x){return this.loadResource(this.fontTablePart,C,"uint8array").then(R=>R&&this.blobToURL(new Blob([I(R,x)])))}blobToURL(C){return C?this._options.useBase64URL?(0,y.blobToBase64)(C):URL.createObjectURL(C):null}findPartByRelId(C,x=null){var R,g=((R=x.rels)!==null&&R!==void 0?R:this.rels).find(L=>L.id==C);const S=x?(0,y.splitPath)(x.path)[0]:"";return g?this.partsMap[(0,y.resolvePath)(g.target,S)]:null}getPathById(C,x){const R=C.rels.find(S=>S.id==x),[g]=(0,y.splitPath)(C.path);return R?(0,y.resolvePath)(R.target,g):null}loadResource(C,x,R){const g=this.getPathById(C,x);return g?this._package.load(g,R):Promise.resolve(null)}}function I(w,C){const x=C.replace(/{|}|-/g,""),R=new Array(16);for(let g=0;g<16;g++)R[16-g-1]=parseInt(x.substr(2*g,2),16);for(let g=0;g<32;g++)w[g]=w[g]^R[g%16];return w}r.WordDocument=M,r.deobfuscate=I},583:o=>{o.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E"},626:o=>{o.exports=t}},a={};function l(o){var r=a[o];if(r!==void 0)return r.exports;var f=a[o]={id:o,exports:{}};return i[o](f,f.exports,l),f.exports}return l.m=i,l.n=o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return l.d(r,{a:r}),r},l.d=(o,r)=>{for(var f in r)l.o(r,f)&&!l.o(o,f)&&Object.defineProperty(o,f,{enumerable:!0,get:r[f]})},l.o=(o,r)=>Object.prototype.hasOwnProperty.call(o,r),l.r=o=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},l.b=document.baseURI||self.location.href,l(667)})())})(mpe);function Zpe(n,e={}){return typeof n=="string"?vpe(n,e):Promise.resolve(n)}function vpe(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t)}function Wpe(n,e){if(!n)return e.innerHTML="",Promise.resolve();let t;return n instanceof Blob?t=n:n instanceof Response?t=n.blob():n instanceof ArrayBuffer&&(t=new Blob([n])),rW.renderAsync(t,e)}const gd={getData:Zpe,render:Wpe},ed=(n,e)=>{const t=n.__vccOpts||n;for(const[i,a]of e)t[i]=a;return t},Gpe=He({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null);function i(){let a=t.value;gd.getData(n.src,n.requestOptions).then(l=>{gd.render(l,a).then(()=>{e("rendered")}).catch(o=>{gd.render("",a),e("error",o)})}).catch(l=>{gd.render("",a),e("error",l)})}return Kt(()=>{n.src&&i()}),rt(()=>n.src,()=>{n.src?i():gd.render("",t.value).then(()=>{e("rendered")})}),{rootRef:t}}}),Xpe={class:"vue-office-docx"},Npe={class:"vue-office-docx-main",ref:"rootRef"};function Mpe(n,e,t,i,a,l){return kl(),oc("div",Xpe,[ju("div",Npe,null,512)])}const mm=ed(Gpe,[["render",Mpe]]);mm.install=function(n){n.component(mm.name,mm)};function Ipe(n){const e=Ne("url"),t=Ne(n),i=Ne(n),a=Ne([]);function l(o){let r=new FileReader;return r.onload=f=>{let v=f.target.result;i.value=v},r.readAsArrayBuffer(o),!1}return{type:e,inputSrc:t,src:i,fileList:a,beforeUpload:l}}let m0=Ne(!1),US;function Ype(n){US=O0.loading(n,0),m0.value=!0}function wpe(){m0.value===!0&&(US(),m0.value=!1)}const Ic={loading:m0,showLoading:Ype,hideLoading:wpe},gpe=n=>(HU("data-v-d4fe28da"),n=n(),PU(),n),Vpe={class:"preview-wrapper"},Lpe={class:"operate-area"},Rpe=gpe(()=>ju("div",{class:"preview-wrapper-main"},null,-1)),Tpe={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(n){const e=n,{type:t,inputSrc:i,src:a,fileList:l,beforeUpload:o}=Ipe(e.defaultSrc);return rt(a,()=>{Ic.showLoading()},{immediate:!0}),(r,f)=>{const v=as("a-radio-button"),b=as("a-radio-group"),Z=as("a-input"),p=as("a-button"),y=as("upload-outlined"),X=as("a-upload");return kl(),oc("div",Vpe,[ju("div",Lpe,[D(b,{value:mi(t),"onUpdate:value":f[0]||(f[0]=m=>$i(t)?t.value=m:null),"button-style":"solid"},{default:pa(()=>[D(v,{value:"url"},{default:pa(()=>[Fl("远程文件地址")]),_:1}),D(v,{value:"upload"},{default:pa(()=>[Fl("上传本地文件")]),_:1})]),_:1},8,["value"]),mi(t)==="url"?(kl(),Lo(Z,{key:0,value:mi(i),"onUpdate:value":f[1]||(f[1]=m=>$i(i)?i.value=m:null),placeholder:e.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):Cb("",!0),mi(t)==="url"?(kl(),Lo(p,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:f[2]||(f[2]=m=>a.value=mi(i))},{default:pa(()=>[Fl(" 预览 ")]),_:1})):Cb("",!0),mi(t)!=="url"?(kl(),Lo(X,{key:2,accept:e.accept,action:"",beforeUpload:mi(o),"file-list":[]},{default:pa(()=>[D(p,{style:{"margin-left":"10px"}},{default:pa(()=>[D(y),Fl(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):Cb("",!0)]),S0(r.$slots,"default",{src:mi(a)},void 0,!0),Rpe])}}},nN=ed(Tpe,[["__scopeId","data-v-d4fe28da"]]),xpe={__name:"DocxDemo",setup(n){function e(){Ic.hideLoading()}function t(i){console.log("出差",i),Ic.hideLoading()}return(i,a)=>(kl(),Lo(nN,{accept:".docx",placeholder:"请输入docx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"},{default:pa(l=>[D(mi(mm),{src:l.src,style:{flex:"1",height:"0"},onRendered:e,onError:t},null,8,["src"])]),_:1}))}},Cpe=ed(xpe,[["__scopeId","data-v-aca83c00"]]);let kp=class oW{constructor(e,t=""){typeof e=="string"?(this.el=document.createElement(e),this.el.className=t):this.el=e,this.data={}}data(e,t){return t!==void 0?(this.data[e]=t,this):this.data[e]}on(e,t){const[i,...a]=e.split(".");let l=i;return l==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(l="DOMMouseScroll"),this.el.addEventListener(l,o=>{t(o);for(let r=0;r{this.css(o,`${e[o]}px`)}),this;const{offsetTop:t,offsetLeft:i,offsetHeight:a,offsetWidth:l}=this.el;return{top:t,left:i,height:a,width:l}}scroll(e){const{el:t}=this;return e!==void 0&&(e.left!==void 0&&(t.scrollLeft=e.left),e.top!==void 0&&(t.scrollTop=e.top)),{left:t.scrollLeft,top:t.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new oW(this.el.parentNode)}children(...e){return arguments.length===0?this.el.childNodes:(e.forEach(t=>this.child(t)),this)}removeChild(e){this.el.removeChild(e)}child(e){let t=e;return typeof e=="string"?t=document.createTextNode(e):e instanceof oW&&(t=e.el),this.el.appendChild(t),this}contains(e){return this.el.contains(e)}className(e){return e!==void 0?(this.el.className=e,this):this.el.className}addClass(e){return this.el.classList.add(e),this}hasClass(e){return this.el.classList.contains(e)}removeClass(e){return this.el.classList.remove(e),this}toggle(e="active"){return this.toggleClass(e)}toggleClass(e){return this.el.classList.toggle(e)}active(e=!0,t="active"){return e?this.addClass(t):this.removeClass(t),this}checked(e=!0){return this.active(e,"checked"),this}disabled(e=!0){return e?this.addClass("disabled"):this.removeClass("disabled"),this}attr(e,t){if(t!==void 0)this.el.setAttribute(e,t);else{if(typeof e=="string")return this.el.getAttribute(e);Object.keys(e).forEach(i=>{this.el.setAttribute(i,e[i])})}return this}removeAttr(e){return this.el.removeAttribute(e),this}html(e){return e!==void 0?(this.el.innerHTML=e,this):this.el.innerHTML}val(e){return e!==void 0?(this.el.value=e,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...e){return e.forEach(t=>this.el.style.removeProperty(t)),this}css(e,t){return t===void 0&&typeof e!="string"?(Object.keys(e).forEach(i=>{this.el.style[i]=e[i]}),this):t!==void 0?(this.el.style[e]=t,this):this.el.style[e]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}};const ut=(n,e="")=>new kp(n,e),ss=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function ES(n){let e="",t=n;for(;t>=ss.length;)t/=ss.length,t-=1,e+=ss[parseInt(t,10)%ss.length];const i=n%ss.length;return e+=ss[i],e}function Spe(n){let e=0;for(let t=0;t="0"&&n.charAt(i)<="9"?t+=n.charAt(i):e+=n.charAt(i);return[Spe(e),parseInt(t,10)-1]}function Yo(n,e){return`${ES(n)}${e+1}`}function Vd(n,e,t,i=()=>!0){if(e===0&&t===0)return n;const[a,l]=Gs(n);return i(a,l)?Yo(a+e,l+t):n}class Ki{constructor(e,t,i,a,l=0,o=0){this.sri=e,this.sci=t,this.eri=i,this.eci=a,this.w=l,this.h=o}set(e,t,i,a){this.sri=e,this.sci=t,this.eri=i,this.eci=a}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...e){let[t,i]=[0,0];e.length===1?[i,t]=Gs(e[0]):e.length===2&&([t,i]=e);const{sri:a,sci:l,eri:o,eci:r}=this;return a<=t&&t<=o&&l<=i&&i<=r}each(e,t=()=>!0){const{sri:i,sci:a,eri:l,eci:o}=this;for(let r=i;r<=l;r+=1)if(t(r))for(let f=a;f<=o;f+=1)e(r,f)}contains(e){return this.sri<=e.sri&&this.sci<=e.sci&&this.eri>=e.eri&&this.eci>=e.eci}within(e){return this.sri>=e.sri&&this.sci>=e.sci&&this.eri<=e.eri&&this.eci<=e.eci}disjoint(e){return this.sri>e.eri||this.sci>e.eci||e.sri>this.eri||e.sci>this.eci}intersects(e){return this.sri<=e.eri&&this.sci<=e.eci&&e.sri<=this.eri&&e.sci<=this.eci}union(e){const{sri:t,sci:i,eri:a,eci:l}=this;return new Ki(e.sria?e.eri:a,e.eci>l?e.eci:l)}difference(e){const t=[],i=(p,y,X,m)=>{t.push(new Ki(p,y,X,m))},{sri:a,sci:l,eri:o,eci:r}=this,f=e.sri-a,v=e.sci-l,b=o-e.eri,Z=r-e.eci;return f>0?(i(a,l,e.sri-1,r),b>0?(i(e.eri+1,l,o,r),v>0&&i(e.sri,l,e.eri,e.sci-1),Z>0&&i(e.sri,e.eci+1,e.eri,r)):(v>0&&i(e.sri,l,o,e.sci-1),Z>0&&i(e.sri,e.eci+1,o,r))):b>0&&(i(e.eri+1,l,o,r),v>0&&i(a,l,e.eri,e.sci-1),Z>0&&i(a,e.eci+1,e.eri,r)),v>0?(i(a,l,o,e.sci-1),Z>0?(i(a,e.eri+1,o,r),f>0&&i(a,e.sci,e.sri-1,e.eci),b>0&&i(e.sri+1,e.sci,o,e.eci)):(f>0&&i(a,e.sci,e.sri-1,r),b>0&&i(e.sri+1,e.sci,o,r))):Z>0&&(i(o,e.eci+1,o,r),f>0&&i(a,l,e.sri-1,e.eci),b>0&&i(e.eri+1,l,o,e.eci)),t}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:e,sci:t,eri:i,eci:a}=this;let l=Yo(t,e);return this.multiple()&&(l=`${l}:${Yo(a,i)}`),l}clone(){const{sri:e,sci:t,eri:i,eci:a,w:l,h:o}=this;return new Ki(e,t,i,a,l,o)}equals(e){return this.eri===e.eri&&this.eci===e.eci&&this.sri===e.sri&&this.sci===e.sci}static valueOf(e){const t=e.split(":"),[i,a]=Gs(t[0]);let[l,o]=[a,i];return t.length>1&&([o,l]=Gs(t[1])),new Ki(a,i,l,o)}}let zpe=class{constructor(){this.range=new Ki(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(e,t){this.ri=e,this.ci=t}size(){return this.range.size()}};class kpe{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class Fpe{constructor(){this.undoItems=[],this.redoItems=[]}add(e){this.undoItems.push(JSON.stringify(e)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(e,t){const{undoItems:i,redoItems:a}=this;this.canUndo()&&(a.push(JSON.stringify(e)),t(JSON.parse(i.pop())))}redo(e,t){const{undoItems:i,redoItems:a}=this;this.canRedo()&&(i.push(JSON.stringify(e)),t(JSON.parse(a.pop())))}}class Jpe{constructor(){this.range=null,this.state="clear"}copy(e){return this.range=e,this.state="copy",this}cut(e){return this.range=e,this.state="cut",this}isCopy(){return this.state==="copy"}isCut(){return this.state==="cut"}isClear(){return this.state==="clear"}clear(){this.range=null,this.state="clear"}}class $V{constructor(e,t,i){this.ci=e,this.operator=t,this.value=i}set(e,t){this.operator=e,this.value=t}includes(e){const{operator:t,value:i}=this;return t==="all"?!0:t==="in"?i.includes(e):!1}vlength(){const{operator:e,value:t}=this;return e==="in"?t.length:0}getData(){const{ci:e,operator:t,value:i}=this;return{ci:e,operator:t,value:i}}}class qV{constructor(e,t){this.ci=e,this.order=t}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class Dpe{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:e,filters:t,sort:i}){e!=null&&(this.ref=e,this.filters=t.map(a=>new $V(a.ci,a.operator,a.value)),i&&(this.sort=new qV(i.ci,i.order)))}getData(){if(this.active()){const{ref:e,filters:t,sort:i}=this;return{ref:e,filters:t.map(a=>a.getData()),sort:i}}return{}}addFilter(e,t,i){const a=this.getFilter(e);a==null?this.filters.push(new $V(e,t,i)):a.set(t,i)}setSort(e,t){this.sort=t?new qV(e,t):null}includes(e,t){return this.active()?this.hrange().includes(e,t):!1}getSort(e){const{sort:t}=this;return t&&t.ci===e?t:null}getFilter(e){const{filters:t}=this;for(let i=0;i!t.within(e))}getFirstIncludes(e,t){for(let i=0;it.intersects(e)))}intersects(e){for(let t=0;t{i.intersects(t)&&(t=i.union(t))}),t}add(e){this.deleteWithin(e),this._.push(e)}shift(e,t,i,a){this._.forEach(l=>{const{sri:o,sci:r,eri:f,eci:v}=l,b=l;e==="row"?o>=t?(b.sri+=i,b.eri+=i):o=t?(b.sci+=i,b.eci+=i):r{const l=a;l.within(e)&&(l.eri+=t,l.sri+=t,l.sci+=i,l.eci+=i)})}setData(e){return this._=e.map(t=>Ki.valueOf(t)),this}getData(){return this._.map(e=>e.toString())}}function Ope(n){return JSON.parse(JSON.stringify(n))}const KS=(n={},...e)=>(e.forEach(t=>{Object.keys(t).forEach(i=>{const a=t[i];typeof a=="string"||typeof a=="number"||typeof a=="boolean"?n[i]=a:typeof a!="function"&&!Array.isArray(a)&&a instanceof Object?(n[i]=n[i]||{},KS(n[i],a)):n[i]=a})}),n);function sW(n,e){const t=Object.keys(n);if(t.length!==Object.keys(e).length)return!1;for(let i=0;it)=>{let t=0,i=0;return Object.keys(n).forEach(a=>{t+=e(n[a],a),i+=1}),[t,i]};function Upe(n,e){const t=n[`${e}`];return delete n[`${e}`],t}function Epe(n,e,t,i,a,l){let o=t,r=i,f=n;for(;fa);f+=1)r=l(f),o+=r;return[f,o-r,r]}function Kpe(n,e,t){let i=0;for(let a=n;a5?r.toFixed(2):r;return r.toFixed(Math.max(i,a))}const ya={cloneDeep:Ope,merge:(...n)=>KS({},...n),equals:sW,arrayEquals:Ppe,sum:jpe,rangeEach:Hpe,rangeSum:Kpe,rangeReduceIf:Epe,deleteProperty:Upe,numberCalc:ac};class Qpe{constructor({len:e,height:t}){this._={},this.len=e,this.height=t}getHeight(e){if(this.isHide(e))return 0;const t=this.get(e);return t&&t.height?t.height:this.height}setHeight(e,t){const i=this.getOrNew(e);i.height=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this.get(e);return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumHeight(e,t,i){return ya.rangeSum(e,t,a=>i&&i.has(a)?0:this.getHeight(a))}totalHeight(){return this.sumHeight(0,this.len)}get(e){return this._[e]}getOrNew(e){return this._[e]=this._[e]||{cells:{}},this._[e]}getCell(e,t){const i=this.get(e);return i!==void 0&&i.cells!==void 0&&i.cells[t]!==void 0?i.cells[t]:null}getCellMerge(e,t){const i=this.getCell(e,t);return i&&i.merge?i.merge:[0,0]}getCellOrNew(e,t){const i=this.getOrNew(e);return i.cells[t]=i.cells[t]||{},i.cells[t]}setCell(e,t,i,a="all"){const l=this.getOrNew(e);a==="all"?l.cells[t]=i:a==="text"?(l.cells[t]=l.cells[t]||{},l.cells[t].text=i.text):a==="format"&&(l.cells[t]=l.cells[t]||{},l.cells[t].style=i.style,i.merge&&(l.cells[t].merge=i.merge))}setCellText(e,t,i){const a=this.getCellOrNew(e,t);a.editable!==!1&&(a.text=i)}copyPaste(e,t,i,a=!1,l=()=>{}){const{sri:o,sci:r,eri:f,eci:v}=e,b=t.sri,Z=t.sci,p=t.eri,y=t.eci,[X,m]=e.size(),[N,G]=t.size();let d=!0,u=0;(p0){const{text:C}=w;let x=W-Z+(c-b)+2;if(d||(x-=u+1),C[0]==="=")w.text=C.replace(/[a-zA-Z]{1,3}\d+/g,R=>{let[g,S]=[0,0];return o===b?g=x-1:S=x-1,/^\d+$/.test(R)?R:Vd(R,g,S)});else if(X<=1&&m>1&&(b>f||p1&&(Z>v||y{this.eachCells(a,l=>{let o=parseInt(a,10),r=parseInt(l,10);e.includes(a,l)&&(o=t.sri+(o-e.sri),r=t.sci+(r-e.sci)),i[o]=i[o]||{cells:{}},i[o].cells[r]=this._[a].cells[l]})}),this._=i}paste(e,t){if(e.length<=0)return;const{sri:i,sci:a}=t;e.forEach((l,o)=>{const r=i+o;l.forEach((f,v)=>{const b=a+v;this.setCellText(r,b,f)})})}insert(e,t=1){const i={};this.each((a,l)=>{let o=parseInt(a,10);o>=e&&(o+=t,this.eachCells(a,(r,f)=>{f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>Vd(v,0,t,(b,Z)=>Z>=e)))})),i[o]=l}),this._=i,this.len+=t}delete(e,t){const i=t-e+1,a={};this.each((l,o)=>{const r=parseInt(l,10);rt&&(a[r-i]=o,this.eachCells(l,(f,v)=>{v.text&&v.text[0]==="="&&(v.text=v.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>Vd(b,0,-i,(Z,p)=>p>t)))}))}),this._=a,this.len-=i}insertColumn(e,t=1){this.each((i,a)=>{const l={};this.eachCells(i,(o,r)=>{let f=parseInt(o,10);f>=e&&(f+=t,r.text&&r.text[0]==="="&&(r.text=r.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>Vd(v,t,0,b=>b>=e)))),l[f]=r}),a.cells=l})}deleteColumn(e,t){const i=t-e+1;this.each((a,l)=>{const o={};this.eachCells(a,(r,f)=>{const v=parseInt(r,10);vt&&(o[v-i]=f,f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>Vd(b,-i,0,Z=>Z>t))))}),l.cells=o})}deleteCells(e,t="all"){e.each((i,a)=>{this.deleteCell(i,a,t)})}deleteCell(e,t,i="all"){const a=this.get(e);if(a!==null){const l=this.getCell(e,t);l!==null&&l.editable!==!1&&(i==="all"?delete a.cells[t]:i==="text"?(l.text&&delete l.text,l.value&&delete l.value):i==="format"?(l.style!==void 0&&delete l.style,l.merge&&delete l.merge):i==="merge"&&l.merge&&delete l.merge)}}maxCell(){const e=Object.keys(this._),t=e[e.length-1],i=this._[t];if(i){const{cells:a}=i,l=Object.keys(a),o=l[l.length-1];return[parseInt(t,10),parseInt(o,10)]}return[0,0]}each(e){Object.entries(this._).forEach(([t,i])=>{e(t,i)})}eachCells(e,t){this._[e]&&this._[e].cells&&Object.entries(this._[e].cells).forEach(([i,a])=>{t(i,a)})}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}}class Bpe{constructor({len:e,width:t,indexWidth:i,minWidth:a}){this._={},this.len=e,this.width=t,this.indexWidth=i,this.minWidth=a}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}getWidth(e){if(this.isHide(e))return 0;const t=this._[e];return t&&t.width?t.width:this.width}getOrNew(e){return this._[e]=this._[e]||{},this._[e]}setWidth(e,t){const i=this.getOrNew(e);i.width=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this._[e];return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumWidth(e,t){return ya.rangeSum(e,t,i=>this.getWidth(i))}totalWidth(){return this.sumWidth(0,this.len)}}const Ape={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let cW=["en"];const HS={en:Ape};function eL(n,e){if(e)for(const t of cW){if(!e[t])break;let i=e[t];const a=n.match(/(?:\\.|[^.])+/g);for(let l=0;l_i(n)}function PS(n,e,t=!1){t?cW=[n]:cW.unshift(n),e&&(HS[n]=e)}const tL={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function fr(n,e,...t){let i="";return n||(i=_i(`validation.${e}`,...t)),[n,i]}class QS{constructor(e,t,i,a){this.required=t,this.value=i,this.type=e,this.operator=a,this.message=""}parseValue(e){const{type:t}=this;return t==="date"?new Date(e):t==="number"?Number(e):e}equals(e){let t=this.type===e.type&&this.required===e.required&&this.operator===e.operator;return t&&(Array.isArray(this.value)?t=ya.arrayEquals(this.value,e.value):t=this.value===e.value),t}values(){return this.value.split(",")}validate(e){const{required:t,operator:i,value:a,type:l}=this;if(t&&/^\s*$/.test(e))return fr(!1,"required");if(/^\s*$/.test(e))return[!0];if(tL[l]&&!tL[l].test(e))return fr(!1,"notMatch");if(l==="list")return fr(this.values().includes(e),"notIn");if(i){const o=this.parseValue(e);if(i==="be"){const[r,f]=a;return fr(o>=this.parseValue(r)&&o<=this.parseValue(f),"between",r,f)}if(i==="nbe"){const[r,f]=a;return fr(othis.parseValue(f),"notBetween",r,f)}if(i==="eq")return fr(o===this.parseValue(a),"equal",a);if(i==="neq")return fr(o!==this.parseValue(a),"notEqual",a);if(i==="lt")return fr(othis.parseValue(a),"greaterThan",a);if(i==="gte")return fr(o>=this.parseValue(a),"greaterThanEqual",a)}return[!0]}}class p0{constructor(e,t,i){this.refs=t,this.mode=e,this.validator=i}includes(e,t){const{refs:i}=this;for(let a=0;a{const a=Ki.valueOf(i);a.intersects(e)?a.difference(e).forEach(o=>t.push(o.toString())):t.push(i)}),this.refs=t}getData(){const{refs:e,mode:t,validator:i}=this,{type:a,required:l,operator:o,value:r}=i;return{refs:e,mode:t,type:a,required:l,operator:o,value:r}}static valueOf({refs:e,mode:t,type:i,required:a,operator:l,value:o}){return new p0(t,e,new QS(i,a,o,l))}}class _pe{constructor(){this._=[],this.errors=new Map}getError(e,t){return this.errors.get(`${e}_${t}`)}validate(e,t,i){const a=this.get(e,t),l=`${e}_${t}`,{errors:o}=this;if(a!==null){const[r,f]=a.validator.validate(i);r?o.delete(l):o.set(l,f)}else o.delete(l);return!0}add(e,t,{type:i,required:a,value:l,operator:o}){const r=new QS(i,a,l,o),f=this.getByValidator(r);f!==null?f.addRef(t):this._.push(new p0(e,[t],r))}getByValidator(e){for(let t=0;t{t.remove(e)})}each(e){this._.forEach(t=>e(t))}getData(){return this._.filter(e=>e.refs.length>0).map(e=>e.getData())}setData(e){this._=e.map(t=>p0.valueOf(t))}}const $pe={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},qpe=41,eye=41,nL=(n,e)=>Object.prototype.hasOwnProperty.call(n,e);function iL(n,e,t=()=>{}){const{merges:i}=this,a=e.clone(),[l,o]=n.size(),[r,f]=e.size();return l>r&&(a.eri=e.sri+l-1),o>f&&(a.eci=e.sci+o-1),i.intersects(a)?(t(_i("error.pasteForMergedCell")),!1):!0}function lL(n,e,t,i=!1){const{rows:a,merges:l}=this;(t==="all"||t==="format")&&(a.deleteCells(e,t),l.deleteWithin(e)),a.copyPaste(n,e,t,i,(o,r,f)=>{if(f&&f.merge){const[v,b]=f.merge;if(v<=0&&b<=0)return;l.add(new Ki(o,r,o+v,r+b))}})}function tye(n,e){const{clipboard:t,rows:i,merges:a}=this;i.cutPaste(n,e),a.move(n,e.sri-n.sri,e.sci-n.sci),t.clear()}function qc(n,e,t){const{styles:i,rows:a}=this,l=a.getCellOrNew(n,e);let o={};l.style!==void 0&&(o=ya.cloneDeep(i[l.style])),o=ya.merge(o,{border:t}),l.style=this.addStyle(o)}function nye({mode:n,style:e,color:t}){const{styles:i,selector:a,rows:l}=this,{sri:o,sci:r,eri:f,eci:v}=a.range,b=!this.isSignleSelected();if(!(!b&&(n==="inside"||n==="horizontal"||n==="vertical"))){if(n==="outside"&&!b)qc.call(this,o,r,{top:[e,t],bottom:[e,t],left:[e,t],right:[e,t]});else if(n==="none")a.range.each((Z,p)=>{const y=l.getCell(Z,p);if(y&&y.style!==void 0){const X=ya.cloneDeep(i[y.style]);delete X.border,y.style=this.addStyle(X)}});else if(n==="all"||n==="inside"||n==="outside"||n==="horizontal"||n==="vertical"){const Z=[];for(let p=o;p<=f;p+=1)for(let y=r;y<=v;y+=1){const X=[];for(let h=0;hZ.splice(h,1)),y>v)break;const m=l.getCell(p,y);let[N,G]=[0,0];m&&m.merge&&([N,G]=m.merge,Z.push([p,y,N,G]));const d=N>0&&p+N===f,u=G>0&&y+G===v;let s={};n==="all"?s={bottom:[e,t],top:[e,t],left:[e,t],right:[e,t]}:n==="inside"?(!u&&y0&&qc.call(this,p,y,s),y+=G}}else if(n==="top"||n==="bottom")for(let Z=r;Z<=v;Z+=1)n==="top"&&(qc.call(this,o,Z,{top:[e,t]}),Z+=l.getCellMerge(o,Z)[1]),n==="bottom"&&(qc.call(this,f,Z,{bottom:[e,t]}),Z+=l.getCellMerge(f,Z)[1]);else if(n==="left"||n==="right")for(let Z=o;Z<=f;Z+=1)n==="left"&&(qc.call(this,Z,r,{left:[e,t]}),Z+=l.getCellMerge(Z,r)[0]),n==="right"&&(qc.call(this,Z,v,{right:[e,t]}),Z+=l.getCellMerge(Z,v)[0])}}function iye(n,e){const{rows:t}=this,i=this.freezeTotalHeight();let a=t.height;i+t.heightn);o+=1)l.has(o)||(f=t.getHeight(o),r+=f);return r-=f,r<=0?{ri:-1,top:0,height:f}:{ri:o-1,top:r,height:f}}function lye(n,e){const{cols:t}=this,i=this.freezeTotalWidth();let a=t.indexWidth;i+t.indexWidtht.getWidth(f));return o<=0?{ci:-1,left:0,width:t.indexWidth}:{ci:l-1,left:o,width:r}}class aye{constructor(e,t){this.settings=ya.merge($pe,t||{}),this.name=e||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new iN,this.rows=new Qpe(this.settings.row),this.cols=new Bpe(this.settings.col),this.validations=new _pe,this.hyperlinks={},this.comments={},this.selector=new zpe,this.scroll=new kpe,this.history=new Fpe,this.clipboard=new Jpe,this.autoFilter=new Dpe,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(e,t,i){this.changeData(()=>{this.validations.add(e,t,i)})}removeValidation(){const{range:e}=this.selector;this.changeData(()=>{this.validations.remove(e)})}getSelectedValidator(){const{ri:e,ci:t}=this.selector,i=this.validations.get(e,t);return i?i.validator:null}getSelectedValidation(){const{ri:e,ci:t,range:i}=this.selector,a=this.validations.get(e,t),l={ref:i.toString()};return a!==null&&(l.mode=a.mode,l.validator=a.validator),l}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),e=>{this.setData(e)})}redo(){this.history.redo(this.getData(),e=>{this.setData(e)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let e="";const t=this.rows.getData();for(let i=this.selector.range.sri;i<=this.selector.range.eri;i+=1){if(nL(t,i)){for(let a=this.selector.range.sci;a<=this.selector.range.eci;a+=1)if(a>this.selector.range.sci&&(e+=" "),nL(t[i].cells,a)){const l=String(t[i].cells[a].text);l.indexOf(` `)===-1&&l.indexOf(" ")===-1&&l.indexOf('"')===-1?e+=l:e+=`"${l}"`}}else for(let a=this.selector.range.sci;a<=this.selector.range.eci;a+=1)e+=" ";e+=` -`}navigator.clipboard.writeText(e).then(()=>{},i=>{console.log("text copy to the system clipboard error ",e,i)})}cut(){this.clipboard.cut(this.selector.range)}paste(e="all",t=()=>{}){const{clipboard:i,selector:a}=this;return i.isClear()||!tL.call(this,i.range,a.range,t)?!1:(this.changeData(()=>{i.isCopy()?nL.call(this,i.range,a.range,e):i.isCut()&&Ape.call(this,i.range,a.range)}),!0)}pasteFromText(e){const t=e.split(`\r -`).map(l=>l.replace(/"/g,"").split(" "));t.length>0&&(t.length-=1);const{rows:i,selector:a}=this;this.changeData(()=>{i.paste(t,a.range)})}autofill(e,t,i=()=>{}){const a=this.selector.range;return tL.call(this,a,e,i)?(this.changeData(()=>{nL.call(this,a,e,t,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(e,t){const{selector:i,rows:a,cols:l,merges:o}=this;let{sri:r,sci:f,eri:v,eci:b}=i.range;const Z=i.ri,p=i.ci;let[y,X]=[e,t];return e<0&&(y=a.len-1),t<0&&(X=l.len-1),y>Z?[r,v]=[Z,y]:[r,v]=[y,Z],X>p?[f,b]=[p,X]:[f,b]=[X,p],i.range=o.union(new Ki(r,f,v,b)),i.range=o.union(i.range),i.range}calSelectedRangeByStart(e,t){const{selector:i,rows:a,cols:l,merges:o}=this;let r=o.getFirstIncludes(e,t);return r===null&&(r=new Ki(e,t,e,t),e===-1&&(r.sri=0,r.eri=a.len-1),t===-1&&(r.sci=0,r.eci=l.len-1)),i.range=r,r}setSelectedCellAttr(e,t){this.changeData(()=>{const{selector:i,styles:a,rows:l}=this;if(e==="merge")t?this.merge():this.unmerge();else if(e==="border")_pe.call(this,t);else if(e==="formula"){const{ri:o,ci:r,range:f}=i;if(i.multiple()){const[v,b]=i.size(),{sri:Z,sci:p,eri:y,eci:X}=f;if(v>1)for(let m=p;m<=X;m+=1){const N=l.getCellOrNew(y+1,m);N.text=`=${t}(${Yo(m,Z)}:${Yo(m,y)})`}else if(b>1){const m=l.getCellOrNew(o,X+1);m.text=`=${t}(${Yo(p,o)}:${Yo(X,o)})`}}else{const v=l.getCellOrNew(o,r);v.text=`=${t}()`}}else i.range.each((o,r)=>{const f=l.getCellOrNew(o,r);let v={};if(f.style!==void 0&&(v=ya.cloneDeep(a[f.style])),e==="format")v.format=t,f.style=this.addStyle(v);else if(e==="font-bold"||e==="font-italic"||e==="font-name"||e==="font-size"){const b={};b[e.split("-")[1]]=t,v.font=Object.assign(v.font||{},b),f.style=this.addStyle(v)}else e==="strike"||e==="textwrap"||e==="underline"||e==="align"||e==="valign"||e==="color"||e==="bgcolor"?(v[e]=t,f.style=this.addStyle(v)):f[e]=t})})}setSelectedCellText(e,t="input"){const{autoFilter:i,selector:a,rows:l}=this,{ri:o,ci:r}=a;let f=o;this.unsortedRowMap.has(o)&&(f=this.unsortedRowMap.get(o));const v=l.getCell(f,r),b=v?v.text:"";if(this.setCellText(f,r,e,t),i.active()){const Z=i.getFilter(r);if(Z){const p=Z.value.findIndex(y=>y===b);p>=0&&Z.value.splice(p,1,e)}}}getSelectedCell(){const{ri:e,ci:t}=this.selector;let i=e;return this.unsortedRowMap.has(e)&&(i=this.unsortedRowMap.get(e)),this.rows.getCell(i,t)}xyInSelectedRect(e,t){const{left:i,top:a,width:l,height:o}=this.getSelectedRect(),r=e-this.cols.indexWidth,f=t-this.rows.height;return r>i&&ra&&f0&&G>b&&(X=b),N>0&&N>Z&&(m=Z),{l:b,t:Z,left:X,top:m,height:p,width:y,scroll:t}}getCellRectByXY(e,t){const{scroll:i,merges:a,rows:l,cols:o}=this;let{ri:r,top:f,height:v}=$pe.call(this,t,i.y),{ci:b,left:Z,width:p}=qpe.call(this,e,i.x);if(b===-1&&(p=o.totalWidth()),r===-1&&(v=l.totalHeight()),r>=0||b>=0){const y=a.getFirstIncludes(r,b);y&&(r=y.sri,b=y.sci,{left:Z,top:f,width:p,height:v}=this.cellRect(r,b))}return{ri:r,ci:b,left:Z,top:f,width:p,height:v}}isSignleSelected(){const{sri:e,sci:t,eri:i,eci:a}=this.selector.range,l=this.getCell(e,t);if(l&&l.merge){const[o,r]=l.merge;if(e+o===i&&t+r===a)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:e,sci:t,eri:i,eci:a}=this.selector.range,l=this.getCell(e,t);if(l&&l.merge){const[o,r]=l.merge;if(e+o===i&&t+r===a)return!0}return!1}merge(){const{selector:e,rows:t}=this;if(this.isSignleSelected())return;const[i,a]=e.size();if(i>1||a>1){const{sri:l,sci:o}=e.range;this.changeData(()=>{const r=t.getCellOrNew(l,o);r.merge=[i-1,a-1],this.merges.add(e.range),this.rows.deleteCells(e.range),this.rows.setCell(l,o,r)})}}unmerge(){const{selector:e}=this;if(!this.isSignleSelected())return;const{sri:t,sci:i}=e.range;this.changeData(()=>{this.rows.deleteCell(t,i,"merge"),this.merges.deleteWithin(e.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:e,selector:t}=this;this.changeData(()=>{e.active()?(e.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):e.ref=t.range.toString()})}setAutoFilter(e,t,i,a){const{autoFilter:l}=this;l.addFilter(e,i,a),l.setSort(e,t),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:e,rows:t}=this;if(!e.active())return;const{sort:i}=e,{rset:a,fset:l}=e.filteredRows((f,v)=>t.getCell(f,v)),o=Array.from(l),r=Array.from(l);i&&o.sort((f,v)=>i.order==="asc"?f-v:i.order==="desc"?v-f:0),this.exceptRowSet=a,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,o.forEach((f,v)=>{this.sortedRowMap.set(r[v],f),this.unsortedRowMap.set(f,r[v])})}deleteCell(e="all"){const{selector:t}=this;this.changeData(()=>{this.rows.deleteCells(t.range,e),(e==="all"||e==="format")&&this.merges.deleteWithin(t.range)})}insert(e,t=1){this.changeData(()=>{const{sri:i,sci:a}=this.selector.range,{rows:l,merges:o,cols:r}=this;let f=i;e==="row"?l.insert(i,t):e==="column"&&(l.insertColumn(a,t),f=a,r.len+=1),o.shift(e,f,t,(v,b,Z,p)=>{const y=l.getCell(v,b);y.merge[0]+=Z,y.merge[1]+=p})})}delete(e){this.changeData(()=>{const{rows:t,merges:i,selector:a,cols:l}=this,{range:o}=a,{sri:r,sci:f,eri:v,eci:b}=a.range,[Z,p]=a.range.size();let y=r,X=Z;e==="row"?t.delete(r,v):e==="column"&&(t.deleteColumn(f,b),y=o.sci,X=p,l.len-=1),i.shift(e,y,-X,(m,N,G,d)=>{const u=t.getCell(m,N);u.merge[0]+=G,u.merge[1]+=d,u.merge[0]===0&&u.merge[1]===0&&delete u.merge})})}scrollx(e,t){const{scroll:i,freeze:a,cols:l}=this,[,o]=a,[r,f,v]=ya.rangeReduceIf(o,l.len,0,0,e,Z=>l.getWidth(Z));let b=f;e>0&&(b+=v),i.x!==b&&(i.ci=e>0?r:0,i.x=b,t())}scrolly(e,t){const{scroll:i,freeze:a,rows:l}=this,[o]=a,[r,f,v]=ya.rangeReduceIf(o,l.len,0,0,e,Z=>l.getHeight(Z));let b=f;e>0&&(b+=v),i.y!==b&&(i.ri=e>0?r:0,i.y=b,t())}cellRect(e,t){const{rows:i,cols:a}=this,l=a.sumWidth(0,t),o=i.sumHeight(0,e),r=i.getCell(e,t);let f=a.getWidth(t),v=i.getHeight(e);if(r!==null&&r.merge){const[b,Z]=r.merge;if(b>0)for(let p=1;p<=b;p+=1)v+=i.getHeight(e+p);if(Z>0)for(let p=1;p<=Z;p+=1)f+=a.getWidth(t+p)}return{left:l,top:o,width:f,height:v,cell:r}}getCell(e,t){return this.rows.getCell(e,t)}getCellTextOrDefault(e,t){const i=this.getCell(e,t);return i&&i.text?i.text:""}getCellStyle(e,t){const i=this.getCell(e,t);return i&&i.style!==void 0?this.styles[i.style]:null}getCellStyleOrDefault(e,t){const{styles:i,rows:a}=this,l=a.getCell(e,t),o=l&&l.style!==void 0?i[l.style]:{};return ya.merge(this.defaultStyle(),o)}getSelectedCellStyle(){const{ri:e,ci:t}=this.selector;return this.getCellStyleOrDefault(e,t)}setCellText(e,t,i,a){const{rows:l,history:o,validations:r}=this;a==="finished"?(l.setCellText(e,t,""),o.add(this.getData()),l.setCellText(e,t,i)):(l.setCellText(e,t,i),this.change(this.getData())),r.validate(e,t,i)}freezeIsActive(){const[e,t]=this.freeze;return e>0||t>0}setFreeze(e,t){this.changeData(()=>{this.freeze=[e,t]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(e,t){this.changeData(()=>{this.rows.setHeight(e,t)})}setColWidth(e,t){this.changeData(()=>{this.cols.setWidth(e,t)})}viewHeight(){const{view:e,showToolbar:t,showBottomBar:i}=this.settings;let a=e.height();return i&&(a-=Bpe),t&&(a-=Qpe),a}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[e,t]=this.freeze;return new Ki(0,0,e-1,t-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:e,cols:t}=this,[i,a]=e.maxCell(),l=e.sumHeight(0,i+1),o=t.sumWidth(0,a+1);return new Ki(0,0,i,a,o,l)}exceptRowTotalHeight(e,t){const{exceptRowSet:i,rows:a}=this,l=Array.from(i);let o=0;return l.forEach(r=>{if(rt){const f=a.getHeight(r);o+=f}}),o}viewRange(){const{scroll:e,rows:t,cols:i,freeze:a,exceptRowSet:l}=this;let{ri:o,ci:r}=e;o<=0&&([o]=a),r<=0&&([,r]=a);let[f,v]=[0,0],[b,Z]=[t.len,i.len];for(let p=o;pthis.viewHeight()));p+=1);for(let p=r;pthis.viewWidth()));p+=1);return new Ki(o,r,b,Z,f,v)}eachMergesInView(e,t){this.merges.filterIntersects(e).forEach(i=>t(i))}hideRowsOrCols(){const{rows:e,cols:t,selector:i}=this,[a,l]=i.size(),{sri:o,sci:r,eri:f,eci:v}=i.range;if(a===e.len)for(let b=r;b<=v;b+=1)t.setHide(b,!0);else if(l===t.len)for(let b=o;b<=f;b+=1)e.setHide(b,!0)}unhideRowsOrCols(e,t){this[`${e}s`].unhide(t)}rowEach(e,t,i){let a=0;const{rows:l}=this,o=this.exceptRowSet,r=[...o];let f=0;for(let v=0;v0&&(i(v,a,b),a+=b,a>this.viewHeight()))break}}colEach(e,t,i){let a=0;const{cols:l}=this;for(let o=e;o<=t;o+=1){const r=l.getWidth(o);if(r>0&&(i(o,a,r),a+=r,a>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(e){const{styles:t}=this;for(let i=0;i{if(t==="merges"||t==="rows"||t==="cols"||t==="validations")this[t].setData(e[t]);else if(t==="freeze"){const[i,a]=Gs(e[t]);this.freeze=[a,i]}else t==="autofilter"?this.autoFilter.setData(e[t]):e[t]!==void 0&&(this[t]=e[t])}),this}getData(){const{name:e,freeze:t,styles:i,merges:a,rows:l,cols:o,validations:r,autoFilter:f}=this;return{name:e,freeze:Yo(t[1],t[0]),styles:i,merges:a.getData(),rows:l.getData(),cols:o.getData(),validations:r.getData(),autofilter:f.getData()}}}function va(n,e,t){n.addEventListener(e,t)}function m0(n,e,t){n.removeEventListener(e,t)}function ed(n){n.xclickoutside&&(m0(window.document.body,"click",n.xclickoutside),delete n.xclickoutside)}function _h(n,e){n.xclickoutside=t=>{t.detail===2||n.contains(t.target)||(e?e(n):(n.hide(),ed(n)))},va(window.document.body,"click",n.xclickoutside)}function KS(n,e,t){va(n,"mousemove",e);const i=n;i.xEvtUp=a=>{m0(n,"mousemove",e),m0(n,"mouseup",n.xEvtUp),t(a)},va(n,"mouseup",n.xEvtUp)}function iL(n,e,t,i){let a="";Math.abs(n)>Math.abs(e)?(a=n>0?"right":"left",i(a,n,t)):(a=e>0?"down":"up",i(a,e,t))}function tye(n,{move:e,end:t}){let i=0,a=0;va(n,"touchstart",l=>{const{pageX:o,pageY:r}=l.touches[0];i=o,a=r}),va(n,"touchmove",l=>{if(!e)return;const{pageX:o,pageY:r}=l.changedTouches[0],f=o-i,v=r-a;(Math.abs(f)>10||Math.abs(v)>10)&&(iL(f,v,l,e),i=o,a=r),l.preventDefault()}),va(n,"touchend",l=>{if(!t)return;const{pageX:o,pageY:r}=l.changedTouches[0],f=o-i,v=r-a;iL(f,v,l,t)})}function nye(){const n=new Map;function e(o,r){const f=()=>{const b=n.get(o);return Array.isArray(b)&&b.push(r)||!1},v=()=>n.set(o,[].concat(r));return n.has(o)&&f()||v()}function t(o,r){const f=()=>{const v=n.get(o);for(const b of v)b.call(null,...r)};return n.has(o)&&f()}function i(o,r){const f=()=>{const v=n.get(o),b=v.indexOf(r);return b>=0&&v.splice(b,1)&&n.get(o).length===0&&n.delete(o)};return n.has(o)&&f()}function a(o,r){const f=(...v)=>{r.call(null,...v),i(o,f)};return e(o,f)}function l(){n.clear()}return{get current(){return n},on:e,once:a,fire:t,removeListener:i,removeAllListeners:l}}const gt="x-spreadsheet";class lL{constructor(e=!1,t){this.moving=!1,this.vertical=e,this.el=ut("div",`${gt}-resizer ${e?"vertical":"horizontal"}`).children(this.unhideHoverEl=ut("div",`${gt}-resizer-hover`).on("dblclick.stop",i=>this.mousedblclickHandler(i)).css("position","absolute").hide(),this.hoverEl=ut("div",`${gt}-resizer-hover`).on("mousedown.stop",i=>this.mousedownHandler(i)),this.lineEl=ut("div",`${gt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=t,this.unhideFn=()=>{}}showUnhide(e){this.unhideIndex=e,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(e,t){const{moving:i,vertical:a,hoverEl:l,lineEl:o,el:r,unhideHoverEl:f}=this;if(i)return;this.cRect=e;const{left:v,top:b,width:Z,height:p}=e;r.offset({left:a?v+Z-5:v,top:a?b:b+p-5}).show(),l.offset({width:a?5:Z,height:a?p:5}),o.offset({width:a?0:t.width,height:a?t.height:0}),f.offset({left:a?5-Z:v,top:a?b:5-p,width:a?5:Z,height:a?p:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(e){let t=e;const{el:i,lineEl:a,cRect:l,vertical:o,minDistance:r}=this;let f=o?l.width:l.height;a.show(),KS(window,v=>{this.moving=!0,t!==null&&v.buttons===1&&(o?(f+=v.movementX,f>r&&i.css("left",`${l.left+f}px`)):(f+=v.movementY,f>r&&i.css("top",`${l.top+f}px`)),t=v)},()=>{t=null,a.hide(),this.moving=!1,this.hide(),this.finishedFn&&(f{}).on("scroll.stop",t=>{const{scrollTop:i,scrollLeft:a}=t.target;this.moveFn&&this.moveFn(this.vertical?i:a,t)})}move(e){return this.el.scroll(e),this}scroll(){return this.el.scroll()}set(e,t){const i=e-1;if(t>i){const a=this.vertical?"height":"width";this.el.css(a,`${i-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(a,`${t}px`)}else this.el.hide();return this}}const Mb=2*2-1;let oW=10;class Ib{constructor(e=!1){this.useHideInput=e,this.inputChange=()=>{},this.cornerEl=ut("div",`${gt}-selector-corner`),this.areaEl=ut("div",`${gt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=ut("div",`${gt}-selector-clipboard`).hide(),this.autofillEl=ut("div",`${gt}-selector-autofill`).hide(),this.el=ut("div",`${gt}-selector`).css("z-index",`${oW}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),e&&(this.hideInput=ut("input","").on("compositionend",t=>{this.inputChange(t.target.value)}),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput))),oW+=1}setOffset(e){return this.el.offset(e).show(),this}hide(){return this.el.hide(),this}setAreaOffset(e){const{left:t,top:i,width:a,height:l}=e,o={width:a-Mb+.8,height:l-Mb+.8,left:t-.8,top:i-.8};this.areaEl.offset(o).show(),this.useHideInput&&(this.hideInputDiv.offset(o),this.hideInput.val("").focus())}setClipboardOffset(e){const{left:t,top:i,width:a,height:l}=e;this.clipboardEl.offset({left:t,top:i,width:a-5,height:l-5})}showAutofill(e){const{left:t,top:i,width:a,height:l}=e;this.autofillEl.offset({width:a-Mb,height:l-Mb,left:t,top:i}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function nN(n){const{data:e}=this,{left:t,top:i,width:a,height:l,scroll:o,l:r,t:f}=n,v=e.freezeTotalWidth(),b=e.freezeTotalHeight();let Z=t-v;v>r&&(Z-=o.x);let p=i-b;return b>f&&(p-=o.y),{left:Z,top:p,width:a,height:l}}function iN(n){const{data:e}=this,{left:t,width:i,height:a,l,t:o,scroll:r}=n,f=e.freezeTotalWidth();let v=t-f;return f>l&&(v-=r.x),{left:v,top:o,width:i,height:a}}function lN(n){const{data:e}=this,{top:t,width:i,height:a,l,t:o,scroll:r}=n,f=e.freezeTotalHeight();let v=t-f;return f>o&&(v-=r.y),{left:l,top:v,width:i,height:a}}function sW(n){const{br:e}=this;e.setAreaOffset(nN.call(this,n))}function iye(n){const{tl:e}=this;e.setAreaOffset(n)}function HS(n){const{t:e}=this;e.setAreaOffset(iN.call(this,n))}function PS(n){const{l:e}=this;e.setAreaOffset(lN.call(this,n))}function QS(n){const{l:e}=this;e.setClipboardOffset(lN.call(this,n))}function cW(n){const{br:e}=this;e.setClipboardOffset(nN.call(this,n))}function lye(n){const{tl:e}=this;e.setClipboardOffset(n)}function BS(n){const{t:e}=this;e.setClipboardOffset(iN.call(this,n))}function rL(n){sW.call(this,n),iye.call(this,n),HS.call(this,n),PS.call(this,n)}function oL(n){cW.call(this,n),lye.call(this,n),BS.call(this,n),QS.call(this,n)}class aye{constructor(e){this.inputChange=()=>{},this.data=e,this.br=new Ib(!0),this.t=new Ib,this.l=new Ib,this.tl=new Ib,this.br.inputChange=t=>{this.inputChange(t)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=ut("div",`${gt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,oW+=1}resetData(e){this.data=e,this.range=e.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:e,tl:t,t:i,l:a,br:l}=this,o=e.freezeTotalHeight(),r=e.freezeTotalWidth();o>0||r>0?(t.setOffset({width:r,height:o}),i.setOffset({left:r,height:o}),a.setOffset({top:o,width:r}),l.setOffset({left:r,top:o})):(t.hide(),i.hide(),a.hide(),l.setOffset({left:0,top:0}))}resetAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();rL.call(this,e),oL.call(this,t),this.resetOffset()}resetBRTAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();sW.call(this,e),HS.call(this,e),cW.call(this,t),BS.call(this,t),this.resetOffset()}resetBRLAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();sW.call(this,e),PS.call(this,e),cW.call(this,t),QS.call(this,t),this.resetOffset()}set(e,t,i=!0){const{data:a}=this,l=a.calSelectedRangeByStart(e,t),{sri:o,sci:r}=l;if(i){let[f,v]=[e,t];e<0&&(f=0),t<0&&(v=0),a.selector.setIndexes(f,v),this.indexes=[f,v]}this.moveIndexes=[o,r],this.range=l,this.resetAreaOffset(),this.el.show()}setEnd(e,t,i=!0){const{data:a,lastri:l,lastci:o}=this;if(i){if(e===l&&t===o)return;this.lastri=e,this.lastci=t}this.range=a.calSelectedRangeByEnd(e,t),rL.call(this,this.data.getSelectedRect())}reset(){const{eri:e,eci:t}=this.data.selector.range;this.setEnd(e,t)}showAutofill(e,t){if(e===-1&&t===-1)return;const{sri:i,sci:a,eri:l,eci:o}=this.range,[r,f]=[e,t],v=i-e,b=a-t,Z=l-e,p=o-t;if(b>0)this.arange=new Ki(i,f,l,a-1);else if(v>0)this.arange=new Ki(r,a,i-1,o);else if(p<0)this.arange=new Ki(i,o+1,l,f);else if(Z<0)this.arange=new Ki(l+1,a,r,o);else{this.arange=null;return}if(this.arange!==null){const y=this.data.getRect(this.arange);y.width+=2,y.height+=2;const{br:X,l:m,t:N,tl:G}=this;X.showAutofill(nN.call(this,y)),m.showAutofill(lN.call(this,y)),N.showAutofill(iN.call(this,y)),G.showAutofill(y)}}hideAutofill(){["br","l","t","tl"].forEach(e=>{this[e].hideAutofill()})}showClipboard(){const e=this.data.getClipboardRect();oL.call(this,e),["br","l","t","tl"].forEach(t=>{this[t].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(e=>{this[e].hideClipboard()})}}function rye(n){n.preventDefault(),n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=e.length-1),e[this.itemIndex].toggle())}function oye(n){n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>e.length-1&&(this.itemIndex=0),e[this.itemIndex].toggle())}function sL(n){n.preventDefault();const{filterItems:e}=this;e.length<=0||(n.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),e[this.itemIndex].el.click(),this.hide())}function sye(n){const{keyCode:e}=n;switch(n.ctrlKey&&n.stopPropagation(),e){case 37:n.stopPropagation();break;case 38:rye.call(this,n);break;case 39:n.stopPropagation();break;case 40:oye.call(this,n);break;case 13:sL.call(this,n);break;case 9:sL.call(this,n);break;default:n.stopPropagation();break}}class AS{constructor(e,t,i="200px"){this.filterItems=[],this.items=e,this.el=ut("div",`${gt}-suggest`).css("width",i).hide(),this.itemClick=t,this.itemIndex=-1}setOffset(e){this.el.cssRemoveKeys("top","bottom").offset(e)}hide(){const{el:e}=this;this.filterItems=[],this.itemIndex=-1,e.hide(),ed(this.el.parent())}setItems(e){this.items=e}search(e){let{items:t}=this;if(/^\s*$/.test(e)||(t=t.filter(a=>(a.key||a).startsWith(e.toUpperCase()))),t=t.map(a=>{let{title:l}=a;l?typeof l=="function"&&(l=l()):l=a;const o=ut("div",`${gt}-item`).child(l).on("click.stop",()=>{this.itemClick(a),this.hide()});return a.label&&o.child(ut("div","label").html(a.label)),o}),this.filterItems=t,t.length<=0)return;const{el:i}=this;i.html("").children(...t).show(),_h(i.parent(),()=>{this.hide()})}bindInputEvents(e){e.on("keydown",t=>sye.call(this,t))}}class Jl extends Cp{constructor(e){super("div",`${gt}-icon`),this.iconNameEl=ut("div",`${gt}-icon-img ${e}`),this.child(this.iconNameEl)}setName(e){this.iconNameEl.className(`${gt}-icon-img ${e}`)}}function cL(n,e){n.setMonth(n.getMonth()+e)}function cye(n,e){const t=new Date(n);return t.setDate(e-n.getDay()+1),t}function uye(n,e,t){const i=new Date(n,e,1,23,59,59),a=[[],[],[],[],[],[]];for(let l=0;l<6;l+=1)for(let o=0;o<7;o+=1){const r=l*7+o,f=cye(i,r),v=f.getMonth()!==e,b=f.getMonth()===t.getMonth()&&f.getDate()===t.getDate();a[l][o]={d:f,disabled:v,active:b}}return a}class dye{constructor(e){this.value=e,this.cvalue=new Date(e),this.headerLeftEl=ut("div","calendar-header-left"),this.bodyEl=ut("tbody",""),this.buildAll(),this.el=ut("div","x-spreadsheet-calendar").children(ut("div","calendar-header").children(this.headerLeftEl,ut("div","calendar-header-right").children(ut("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Jl("chevron-left")),ut("a","calendar-next").on("click.stop",()=>this.next()).child(new Jl("chevron-right")))),ut("table","calendar-body").children(ut("thead","").child(ut("tr","").children(..._i("calendar.weeks").map(t=>ut("th","cell").child(t)))),this.bodyEl)),this.selectChange=()=>{}}setValue(e){this.value=e,this.cvalue=new Date(e),this.buildAll()}prev(){const{value:e}=this;cL(e,-1),this.buildAll()}next(){const{value:e}=this;cL(e,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:e}=this;this.headerLeftEl.html(`${_i("calendar.months")[e.getMonth()]} ${e.getFullYear()}`)}buildBody(){const{value:e,cvalue:t,bodyEl:i}=this,l=uye(e.getFullYear(),e.getMonth(),t).map(o=>{const r=o.map(f=>{let v="cell";return f.disabled&&(v+=" disabled"),f.active&&(v+=" active"),ut("td","").child(ut("div",v).on("click.stop",()=>{this.selectChange(f.d)}).child(f.d.getDate().toString()))});return ut("tr","").children(...r)});i.html("").children(...l)}}class hye{constructor(){this.calendar=new dye(new Date),this.el=ut("div",`${gt}-datepicker`).child(this.calendar.el).hide()}setValue(e){const{calendar:t}=this;return typeof e=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(e)&&t.setValue(new Date(e.replace(new RegExp("-","g"),"/"))):e instanceof Date&&t.setValue(e),this}change(e){this.calendar.selectChange=t=>{e(t),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function p0(){const{inputText:n}=this;if(!/^\s*$/.test(n)){const{textlineEl:e,textEl:t,areaOffset:i}=this,a=n.split(` -`),l=Math.max(...a.map(Z=>Z.length)),r=e.offset().width/n.length,f=(l+1)*r+5,v=this.viewFn().width-i.left-r;let b=a.length;if(f>i.width){let Z=f;f>v&&(Z=v,b+=parseInt(f/v,10),b+=f%v>0?1:0),t.css("width",`${Z}px`)}b*=this.rowHeight,b>i.height&&t.css("height",`${b}px`)}}function fye({target:n},e){const{value:t,selectionEnd:i}=n,a=`${t.slice(0,i)}${e}${t.slice(i)}`;n.value=a,n.setSelectionRange(i+1,i+1),this.inputText=a,this.textlineEl.html(a),p0.call(this)}function bye(n){const{keyCode:e,altKey:t}=n;e!==13&&e!==9&&n.stopPropagation(),e===13&&t&&(fye.call(this,n,` -`),n.stopPropagation()),e===13&&!t&&n.preventDefault()}function mye(n){const e=n.target.value,{suggest:t,textlineEl:i,validator:a}=this,{cell:l}=this;if(l!==null)if("editable"in l&&l.editable===!0||l.editable===void 0){if(this.inputText=e,a)a.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),p0.call(this),this.change("input",e)}else n.target.value=l.text;else{if(this.inputText=e,a)a.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),p0.call(this),this.change("input",e)}}function pye(n){const{el:e}=this.textEl;setTimeout(()=>{e.focus(),e.setSelectionRange(n,n)},0)}function _S(n,e){const{textEl:t,textlineEl:i}=this;t.el.blur(),t.val(n),i.html(n),pye.call(this,e)}function yye(n){const{inputText:e,validator:t}=this;let i=0;if(t&&t.type==="list")this.inputText=n,i=this.inputText.length;else{const a=e.lastIndexOf("="),l=e.substring(0,a+1);let o=e.substring(a+1);o.indexOf(")")!==-1?o=o.substring(o.indexOf(")")):o="",this.inputText=`${l+n.key}(`,i=this.inputText.length,this.inputText+=`)${o}`}_S.call(this,this.inputText,i)}function Zye(){this.suggest.setItems(this.formulas)}function vye(n){let e=n.getMonth()+1,t=n.getDate();return e<10&&(e=`0${e}`),t<10&&(t=`0${t}`),`${n.getFullYear()}-${e}-${t}`}class Wye{constructor(e,t,i){this.viewFn=t,this.rowHeight=i,this.formulas=e,this.suggest=new AS(e,a=>{yye.call(this,a)}),this.datepicker=new hye,this.datepicker.change(a=>{this.setText(vye(a)),this.clear()}),this.areaEl=ut("div",`${gt}-editor-area`).children(this.textEl=ut("textarea","").on("input",a=>mye.call(this,a)).on("paste.stop",()=>{}).on("keydown",a=>bye.call(this,a)),this.textlineEl=ut("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=ut("div",`${gt}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(e,t){this.freeze.w=e,this.freeze.h=t}clear(){this.inputText!==""&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),Zye.call(this),this.datepicker.hide()}setOffset(e,t="top"){const{textEl:i,areaEl:a,suggest:l,freeze:o,el:r}=this;if(e){this.areaOffset=e;const{left:f,top:v,width:b,height:Z,l:p,t:y}=e,X={left:0,top:0};o.w>p&&o.h>y||(o.wp?X.top=o.h:o.h>y&&(X.left=o.w)),r.offset(X),a.offset({left:f-X.left-.8,top:v-X.top-.8}),i.offset({width:b-9+.8,height:Z-3+.8});const m={left:0};m[t]=Z,l.setOffset(m),l.hide()}}setCell(e,t){const{el:i,datepicker:a,suggest:l}=this;i.show(),this.cell=e;const o=e&&e.text||"";if(this.setText(o),this.validator=t,t){const{type:r}=t;r==="date"&&(a.show(),/^\s*$/.test(o)||a.setValue(o)),r==="list"&&(l.setItems(t.values()),l.search(""))}}setText(e){this.inputText=e,_S.call(this,e,e.length),p0.call(this)}}class Zc extends Cp{constructor(e,t=""){super("div",`${gt}-button ${t}`),this.child(_i(`button.${e}`))}}function y0(){return window.devicePixelRatio||1}function aN(){return y0()-.5}function Rn(n){return parseInt(n*y0(),10)}function qc(n){const e=Rn(n);return e>0?e-.5:.5}class Gye{constructor(e,t,i,a,l=0){this.x=e,this.y=t,this.width=i,this.height=a,this.padding=l,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:e,bottom:t,left:i,right:a}){e&&(this.borderTop=e),a&&(this.borderRight=a),t&&(this.borderBottom=t),i&&(this.borderLeft=i)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(e){const{width:t,padding:i}=this;let{x:a}=this;return e==="left"?a+=i:e==="center"?a+=t/2:e==="right"&&(a+=t-i),a}texty(e,t){const{height:i,padding:a}=this;let{y:l}=this;return e==="top"?l+=a:e==="middle"?l+=i/2-t/2:e==="bottom"&&(l+=i-a-t),l}topxys(){const{x:e,y:t,width:i}=this;return[[e,t],[e+i,t]]}rightxys(){const{x:e,y:t,width:i,height:a}=this;return[[e+i,t],[e+i,t+a]]}bottomxys(){const{x:e,y:t,width:i,height:a}=this;return[[e,t+a],[e+i,t+a]]}leftxys(){const{x:e,y:t,height:i}=this;return[[e,t],[e,t+i]]}}function uL(n,e,t,i,a,l,o){const r={x:0,y:0};n==="underline"?a==="bottom"?r.y=0:a==="top"?r.y=-(l+2):r.y=-l/2:n==="strike"&&(a==="bottom"?r.y=l/2:a==="top"&&(r.y=-(l/2+2))),i==="center"?r.x=o/2:i==="right"&&(r.x=o),this.line([e-r.x,t-r.y],[e-r.x+o,t-r.y])}class $S{constructor(e,t,i){this.el=e,this.ctx=e.getContext("2d"),this.resize(t,i),this.ctx.scale(y0(),y0())}resize(e,t){this.el.style.width=`${e}px`,this.el.style.height=`${t}px`,this.el.width=Rn(e),this.el.height=Rn(t)}clear(){const{width:e,height:t}=this.el;return this.ctx.clearRect(0,0,e,t),this}attr(e){return Object.assign(this.ctx,e),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(e,t){return this.ctx.translate(Rn(e),Rn(t)),this}scale(e,t){return this.ctx.scale(e,t),this}clearRect(e,t,i,a){return this.ctx.clearRect(e,t,i,a),this}fillRect(e,t,i,a){return this.ctx.fillRect(Rn(e)-.5,Rn(t)-.5,Rn(i),Rn(a)),this}fillText(e,t,i){return this.ctx.fillText(e,Rn(t),Rn(i)),this}text(e,t,i={},a=!0){const{ctx:l}=this,{align:o,valign:r,font:f,color:v,strike:b,underline:Z}=i,p=t.textx(o);l.save(),l.beginPath(),this.attr({textAlign:o,textBaseline:r,font:`${f.italic?"italic":""} ${f.bold?"bold":""} ${Rn(f.size)}px ${f.name}`,fillStyle:v,strokeStyle:v});const y=`${e}`.split(` -`),X=t.innerWidth(),m=[];y.forEach(d=>{const u=l.measureText(d).width;if(a&&u>Rn(X)){let s={w:0,len:0,start:0};for(let h=0;h=Rn(X)&&(m.push(d.substr(s.start,s.len)),s={w:0,len:0,start:h}),s.len+=1,s.w+=l.measureText(d[h]).width+1;s.len>0&&m.push(d.substr(s.start,s.len))}else m.push(d)});const N=(m.length-1)*(f.size+2);let G=t.texty(r,N);return m.forEach(d=>{const u=l.measureText(d).width;this.fillText(d,p,G),b&&uL.call(this,"strike",p,G,o,r,f.size,u),Z&&uL.call(this,"underline",p,G,o,r,f.size,u),G+=f.size+2}),l.restore(),this}border(e,t){const{ctx:i}=this;return i.lineWidth=aN,i.strokeStyle=t,e==="medium"?i.lineWidth=Rn(2)-.5:e==="thick"?i.lineWidth=Rn(3):e==="dashed"?i.setLineDash([Rn(3),Rn(2)]):e==="dotted"?i.setLineDash([Rn(1),Rn(1)]):e==="double"&&i.setLineDash([Rn(2),0]),this}line(...e){const{ctx:t}=this;if(e.length>1){t.beginPath();const[i,a]=e[0];t.moveTo(qc(i),qc(a));for(let l=1;l{const e=[],t=[];let i=[],a=0,l="",o=1,r="";for(let f=0;f="a"&&v<="z")i.push(v.toUpperCase());else if(v>="0"&&v<="9"||v>="A"&&v<="Z"||v===".")i.push(v);else if(v==='"'){for(f+=1;n.charAt(f)!=='"';)i.push(n.charAt(f)),f+=1;t.push(`"${i.join("")}`),i=[]}else if(v==="-"&&/[+\-*/,(]/.test(r))i.push(v);else{if(v!=="("&&i.length>0&&t.push(i.join("")),v===")"){let b=e.pop();if(a===2)try{const[Z,p]=Gs(t.pop()),[y,X]=Gs(t.pop());let m=0;for(let N=y;N<=Z;N+=1)for(let G=X;G<=p;G+=1)t.push(Yo(N,G)),m+=1;t.push([b,m])}catch{}else if(a===1||a===3)a===3&&t.push(l),t.push([b,o]),o=1;else for(;b!=="("&&(t.push(b),!(e.length<=0));)b=e.pop();a=0}else if(v==="="||v===">"||v==="<"){const b=n.charAt(f+1);l=v,(b==="="||b==="-")&&(l+=b,f+=1),a=3}else if(v===":")a=2;else if(v===",")a===3&&t.push(l),a=1,o+=1;else if(v==="("&&i.length>0)e.push(i.join(""));else{if(e.length>0&&(v==="+"||v==="-")){let b=e[e.length-1];if(b!=="("&&t.push(e.pop()),b==="*"||b==="/")for(;e.length>0&&(b=e[e.length-1],b!=="(");)t.push(e.pop())}else if(e.length>0){const b=e[e.length-1];(b==="*"||b==="/")&&t.push(e.pop())}e.push(v)}i=[]}r=v}}for(i.length>0&&t.push(i.join(""));e.length>0;)t.push(e.pop());return t},Mye=(n,e)=>{const[t]=n;let i=n;if(t==='"')return n.substring(1);let a=1;if(t==="-"&&(i=n.substring(1),a=-1),i[0]>="0"&&i[0]<="9")return a*Number(i);const[l,o]=Gs(i);return a*e(l,o)},Iye=(n,e,t,i)=>{const a=[];for(let l=0;l"||r==="<"){let f=a.pop();Number.isNaN(f)||(f=Number(f));let v=a.pop();Number.isNaN(v)||(v=Number(v));let b=!1;r==="="?b=v===f:o===">"?b=v>f:o===">="?b=v>=f:o==="<"?b=v="a"&&r<="z"||r>="A"&&r<="Z")&&i.push(o),a.push(Mye(o,t)),i.pop()}}return a[0]},qS=(n,e,t,i=[])=>{if(n[0]==="="){const a=Nye(n.substring(1));return a.length<=0?n:Iye(a,e,(l,o)=>qS(t(l,o),e,t,i),i)}return n},Yye={render:qS},rN=[{key:"SUM",title:Hn("formula.sum"),render:n=>n.reduce((e,t)=>ac("+",e,t),0)},{key:"AVERAGE",title:Hn("formula.average"),render:n=>n.reduce((e,t)=>Number(e)+Number(t),0)/n.length},{key:"MAX",title:Hn("formula.max"),render:n=>Math.max(...n.map(e=>Number(e)))},{key:"MIN",title:Hn("formula.min"),render:n=>Math.min(...n.map(e=>Number(e)))},{key:"IF",title:Hn("formula._if"),render:([n,e,t])=>n?e:t},{key:"AND",title:Hn("formula.and"),render:n=>n.every(e=>e)},{key:"OR",title:Hn("formula.or"),render:n=>n.some(e=>e)},{key:"CONCAT",title:Hn("formula.concat"),render:n=>n.join("")}],wye=rN,ez={};rN.forEach(n=>{ez[n.key]=n});const eu=n=>n,Yb=n=>{if(/^(-?\d*.?\d*)$/.test(n)){const e=Number(n).toFixed(2).toString(),[t,...i]=e.split("\\.");return[t.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...i]}return n},kd=[{key:"normal",title:Hn("format.normal"),type:"string",render:eu},{key:"text",title:Hn("format.text"),type:"string",render:eu},{key:"number",title:Hn("format.number"),type:"number",label:"1,000.12",render:Yb},{key:"percent",title:Hn("format.percent"),type:"number",label:"10.12%",render:n=>`${n}%`},{key:"rmb",title:Hn("format.rmb"),type:"number",label:"¥10.00",render:n=>`¥${Yb(n)}`},{key:"usd",title:Hn("format.usd"),type:"number",label:"$10.00",render:n=>`$${Yb(n)}`},{key:"eur",title:Hn("format.eur"),type:"number",label:"€10.00",render:n=>`€${Yb(n)}`},{key:"date",title:Hn("format.date"),type:"date",label:"26/09/2008",render:eu},{key:"time",title:Hn("format.time"),type:"date",label:"15:59:00",render:eu},{key:"datetime",title:Hn("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:eu},{key:"duration",title:Hn("format.duration"),type:"date",label:"24:01:00",render:eu}],tz={};kd.forEach(n=>{tz[n.key]=n});const gye=5,Vye={fillStyle:"#f4f5f8"},Lye={fillStyle:"#fff",lineWidth:aN,strokeStyle:"#e6e6e6"};function Rye(){return{textAlign:"center",textBaseline:"middle",font:`500 ${Rn(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:aN(),strokeStyle:"#e6e6e6"}}function nz(n,e,t,i=0){const{left:a,top:l,width:o,height:r}=n.cellRect(e,t);return new Gye(a,l+i,o,r,gye)}function Z0(n,e,t,i,a=0){const{sortedRowMap:l,rows:o,cols:r}=e;if(o.isHide(t)||r.isHide(i))return;let f=t;l.has(t)&&(f=l.get(t));const v=e.getCell(f,i);if(v===null)return;let b=!1;"editable"in v&&v.editable===!1&&(b=!0);const Z=e.getCellStyleOrDefault(f,i),p=nz(e,t,i,a);p.bgcolor=Z.bgcolor,Z.border!==void 0&&(p.setBorders(Z.border),n.strokeBorders(p)),n.rect(p,()=>{let y="";e.settings.evalPaused?y=v.text||"":y=Yye.render(v.text||"",ez,(N,G)=>e.getCellTextOrDefault(G,N)),Z.format&&(y=tz[Z.format].render(y));const X=Object.assign({},Z.font);X.size=Xye(X.size),n.text(y,p,{align:Z.align,valign:Z.valign,font:X,color:Z.color,strike:Z.strike,underline:Z.underline},Z.textwrap),e.validations.getError(t,i)&&n.error(p),b&&n.frozen(p)})}function Tye(n){const{data:e,draw:t}=this;if(n){const{autoFilter:i}=e;if(!i.active())return;const a=i.hrange();n.intersects(a)&&a.each((l,o)=>{const r=nz(e,l,o);t.dropdown(r)})}}function wb(n,e,t,i,a){const{draw:l,data:o}=this;l.save(),l.translate(e,t).translate(i,a);const{exceptRowSet:r}=o,f=Z=>{const p=r.has(Z);if(p){const y=o.rows.getHeight(Z);l.translate(0,-y)}return!p},v=o.exceptRowTotalHeight(n.sri,n.eri);l.save(),l.translate(0,-v),n.each((Z,p)=>{Z0(l,o,Z,p)},Z=>f(Z)),l.restore();const b=new Set;l.save(),l.translate(0,-v),o.eachMergesInView(n,({sri:Z,sci:p,eri:y})=>{if(!r.has(Z))Z0(l,o,Z,p);else if(!b.has(Z)){b.add(Z);const X=o.rows.sumHeight(Z,y+1);l.translate(0,-X)}}),l.restore(),Tye.call(this,n),l.restore()}function hL(n,e,t,i){const{draw:a}=this;a.save(),a.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(n,e,t,i),a.restore()}function gb(n,e,t,i,a,l){const{draw:o,data:r}=this,f=e.h,v=e.w,b=l+i,Z=a+t;o.save(),o.attr(Vye),(n==="all"||n==="left")&&o.fillRect(0,b,t,f),(n==="all"||n==="top")&&o.fillRect(Z,0,v,i);const{sri:p,sci:y,eri:X,eci:m}=r.selector.range;o.attr(Rye()),(n==="all"||n==="left")&&(r.rowEach(e.sri,e.eri,(N,G,d)=>{const u=b+G,s=N;o.line([0,u],[t,u]),p<=s&&s0&&r.rows.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([5,u+5],[t-5,u+5]),o.restore())}),o.line([0,f+b],[t,f+b]),o.line([t,b],[t,f+b])),(n==="all"||n==="top")&&(r.colEach(e.sci,e.eci,(N,G,d)=>{const u=Z+G,s=N;o.line([u,0],[u,i]),y<=s&&s0&&r.cols.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([u+5,5],[u+5,i-5]),o.restore())}),o.line([v+Z,0],[v+Z,i]),o.line([0,i],[v+Z,i])),o.restore()}function xye(n,e){const{draw:t}=this;t.save(),t.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,n,e),t.restore()}function Vb({sri:n,sci:e,eri:t,eci:i,w:a,h:l},o,r,f,v){const{draw:b,data:Z}=this,{settings:p}=Z;if(b.save(),b.attr(Lye).translate(o+f,r+v),!p.showGrid){b.restore();return}Z.rowEach(n,t,(y,X,m)=>{y!==n&&b.line([0,X],[a,X]),y===t&&b.line([0,X+m],[a,X+m])}),Z.colEach(e,i,(y,X,m)=>{y!==e&&b.line([X,0],[X,l]),y===i&&b.line([X+m,0],[X+m,l])}),b.restore()}function Cye(n,e,t,i){const{draw:a,data:l}=this,o=l.viewWidth()-n,r=l.viewHeight()-e;a.save().translate(n,e).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),a.line([0,i],[o,i]),a.line([t,0],[t,r]),a.restore()}class Sye{constructor(e,t){this.el=e,this.draw=new $S(e,t.viewWidth(),t.viewHeight()),this.data=t}resetData(e){this.data=e,this.render()}render(){const{data:e}=this,{rows:t,cols:i}=e,a=i.indexWidth,l=t.height;this.draw.resize(e.viewWidth(),e.viewHeight()),this.clear();const o=e.viewRange(),r=e.freezeTotalWidth(),f=e.freezeTotalHeight(),{x:v,y:b}=e.scroll;Vb.call(this,o,a,l,r,f),wb.call(this,o,a,l,-v,-b),gb.call(this,"all",o,a,l,r,f),xye.call(this,a,l);const[Z,p]=e.freeze;if(Z>0||p>0){if(Z>0){const X=o.clone();X.sri=0,X.eri=Z-1,X.h=f,Vb.call(this,X,a,l,r,0),wb.call(this,X,a,l,-v,0),gb.call(this,"top",X,a,l,r,0)}if(p>0){const X=o.clone();X.sci=0,X.eci=p-1,X.w=r,Vb.call(this,X,a,l,0,f),gb.call(this,"left",X,a,l,0,f),wb.call(this,X,a,l,0,-b)}const y=e.freezeViewRange();Vb.call(this,y,a,l,0,0),gb.call(this,"all",y,a,l,0,0),wb.call(this,y,a,l,0,0),Cye.call(this,a,l,r,f)}}clear(){this.draw.clear()}}const mm=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],dW=["landscape","portrait"];function v0(n){return parseInt(96*n,10)}function fL(n){n==="cancel"?this.el.hide():this.toPrint()}function zye(n){const{paper:e}=this,{value:t}=n.target,i=mm[t];e.w=v0(i[1]),e.h=v0(i[2]),this.preview()}function kye(n){const{paper:e}=this,{value:t}=n.target,i=dW[t];e.orientation=i,this.preview()}let Fye=class{constructor(e){this.paper={w:v0(mm[0][1]),h:v0(mm[0][2]),padding:50,orientation:dW[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=e,this.el=ut("div",`${gt}-print`).children(ut("div",`${gt}-print-bar`).children(ut("div","-title").child("Print settings"),ut("div","-right").children(ut("div",`${gt}-buttons`).children(new Zc("cancel").on("click",fL.bind(this,"cancel")),new Zc("next","primary").on("click",fL.bind(this,"next"))))),ut("div",`${gt}-print-content`).children(this.contentEl=ut("div","-content"),ut("div","-sider").child(ut("form","").children(ut("fieldset","").children(ut("label","").child(`${_i("print.size")}`),ut("select","").children(...mm.map((t,i)=>ut("option","").attr("value",i).child(`${t[0]} ( ${t[1]}''x${t[2]}'' )`))).on("change",zye.bind(this))),ut("fieldset","").children(ut("label","").child(`${_i("print.orientation")}`),ut("select","").children(...dW.map((t,i)=>ut("option","").attr("value",i).child(`${_i("print.orientations")[i]}`))).on("change",kye.bind(this))))))).hide()}resetData(e){this.data=e}preview(){const{data:e,paper:t}=this,{width:i,height:a,padding:l}=t,o=i-l*2,r=a-l*2,f=e.contentRange(),v=parseInt(f.h/r,10)+1,b=o/f.w;let Z=l;const p=l;b>1&&(Z+=(o-f.w)/2);let y=0,X=0;this.contentEl.html(""),this.canvases=[];const m={sri:0,sci:0,eri:0,eci:0};for(let N=0;N{Z0(h,e,W,M,c)}),h.restore(),m.sri=m.eri,m.sci=m.eci,X+=d,this.contentEl.child(ut("div",`${gt}-canvas-card-wraper`).child(u.child(s)))}this.el.show()}toPrint(){this.el.hide();const{paper:e}=this,t=ut("iframe","").hide(),{el:i}=t;window.document.body.appendChild(i);const{contentWindow:a}=i,l=a.document,o=document.createElement("style");o.innerHTML=` +`}navigator.clipboard.writeText(e).then(()=>{},i=>{console.log("text copy to the system clipboard error ",e,i)})}cut(){this.clipboard.cut(this.selector.range)}paste(e="all",t=()=>{}){const{clipboard:i,selector:a}=this;return i.isClear()||!iL.call(this,i.range,a.range,t)?!1:(this.changeData(()=>{i.isCopy()?lL.call(this,i.range,a.range,e):i.isCut()&&tye.call(this,i.range,a.range)}),!0)}pasteFromText(e){const t=e.split(`\r +`).map(l=>l.replace(/"/g,"").split(" "));t.length>0&&(t.length-=1);const{rows:i,selector:a}=this;this.changeData(()=>{i.paste(t,a.range)})}autofill(e,t,i=()=>{}){const a=this.selector.range;return iL.call(this,a,e,i)?(this.changeData(()=>{lL.call(this,a,e,t,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(e,t){const{selector:i,rows:a,cols:l,merges:o}=this;let{sri:r,sci:f,eri:v,eci:b}=i.range;const Z=i.ri,p=i.ci;let[y,X]=[e,t];return e<0&&(y=a.len-1),t<0&&(X=l.len-1),y>Z?[r,v]=[Z,y]:[r,v]=[y,Z],X>p?[f,b]=[p,X]:[f,b]=[X,p],i.range=o.union(new Ki(r,f,v,b)),i.range=o.union(i.range),i.range}calSelectedRangeByStart(e,t){const{selector:i,rows:a,cols:l,merges:o}=this;let r=o.getFirstIncludes(e,t);return r===null&&(r=new Ki(e,t,e,t),e===-1&&(r.sri=0,r.eri=a.len-1),t===-1&&(r.sci=0,r.eci=l.len-1)),i.range=r,r}setSelectedCellAttr(e,t){this.changeData(()=>{const{selector:i,styles:a,rows:l}=this;if(e==="merge")t?this.merge():this.unmerge();else if(e==="border")nye.call(this,t);else if(e==="formula"){const{ri:o,ci:r,range:f}=i;if(i.multiple()){const[v,b]=i.size(),{sri:Z,sci:p,eri:y,eci:X}=f;if(v>1)for(let m=p;m<=X;m+=1){const N=l.getCellOrNew(y+1,m);N.text=`=${t}(${Yo(m,Z)}:${Yo(m,y)})`}else if(b>1){const m=l.getCellOrNew(o,X+1);m.text=`=${t}(${Yo(p,o)}:${Yo(X,o)})`}}else{const v=l.getCellOrNew(o,r);v.text=`=${t}()`}}else i.range.each((o,r)=>{const f=l.getCellOrNew(o,r);let v={};if(f.style!==void 0&&(v=ya.cloneDeep(a[f.style])),e==="format")v.format=t,f.style=this.addStyle(v);else if(e==="font-bold"||e==="font-italic"||e==="font-name"||e==="font-size"){const b={};b[e.split("-")[1]]=t,v.font=Object.assign(v.font||{},b),f.style=this.addStyle(v)}else e==="strike"||e==="textwrap"||e==="underline"||e==="align"||e==="valign"||e==="color"||e==="bgcolor"?(v[e]=t,f.style=this.addStyle(v)):f[e]=t})})}setSelectedCellText(e,t="input"){const{autoFilter:i,selector:a,rows:l}=this,{ri:o,ci:r}=a;let f=o;this.unsortedRowMap.has(o)&&(f=this.unsortedRowMap.get(o));const v=l.getCell(f,r),b=v?v.text:"";if(this.setCellText(f,r,e,t),i.active()){const Z=i.getFilter(r);if(Z){const p=Z.value.findIndex(y=>y===b);p>=0&&Z.value.splice(p,1,e)}}}getSelectedCell(){const{ri:e,ci:t}=this.selector;let i=e;return this.unsortedRowMap.has(e)&&(i=this.unsortedRowMap.get(e)),this.rows.getCell(i,t)}xyInSelectedRect(e,t){const{left:i,top:a,width:l,height:o}=this.getSelectedRect(),r=e-this.cols.indexWidth,f=t-this.rows.height;return r>i&&ra&&f0&&G>b&&(X=b),N>0&&N>Z&&(m=Z),{l:b,t:Z,left:X,top:m,height:p,width:y,scroll:t}}getCellRectByXY(e,t){const{scroll:i,merges:a,rows:l,cols:o}=this;let{ri:r,top:f,height:v}=iye.call(this,t,i.y),{ci:b,left:Z,width:p}=lye.call(this,e,i.x);if(b===-1&&(p=o.totalWidth()),r===-1&&(v=l.totalHeight()),r>=0||b>=0){const y=a.getFirstIncludes(r,b);y&&(r=y.sri,b=y.sci,{left:Z,top:f,width:p,height:v}=this.cellRect(r,b))}return{ri:r,ci:b,left:Z,top:f,width:p,height:v}}isSignleSelected(){const{sri:e,sci:t,eri:i,eci:a}=this.selector.range,l=this.getCell(e,t);if(l&&l.merge){const[o,r]=l.merge;if(e+o===i&&t+r===a)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:e,sci:t,eri:i,eci:a}=this.selector.range,l=this.getCell(e,t);if(l&&l.merge){const[o,r]=l.merge;if(e+o===i&&t+r===a)return!0}return!1}merge(){const{selector:e,rows:t}=this;if(this.isSignleSelected())return;const[i,a]=e.size();if(i>1||a>1){const{sri:l,sci:o}=e.range;this.changeData(()=>{const r=t.getCellOrNew(l,o);r.merge=[i-1,a-1],this.merges.add(e.range),this.rows.deleteCells(e.range),this.rows.setCell(l,o,r)})}}unmerge(){const{selector:e}=this;if(!this.isSignleSelected())return;const{sri:t,sci:i}=e.range;this.changeData(()=>{this.rows.deleteCell(t,i,"merge"),this.merges.deleteWithin(e.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:e,selector:t}=this;this.changeData(()=>{e.active()?(e.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):e.ref=t.range.toString()})}setAutoFilter(e,t,i,a){const{autoFilter:l}=this;l.addFilter(e,i,a),l.setSort(e,t),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:e,rows:t}=this;if(!e.active())return;const{sort:i}=e,{rset:a,fset:l}=e.filteredRows((f,v)=>t.getCell(f,v)),o=Array.from(l),r=Array.from(l);i&&o.sort((f,v)=>i.order==="asc"?f-v:i.order==="desc"?v-f:0),this.exceptRowSet=a,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,o.forEach((f,v)=>{this.sortedRowMap.set(r[v],f),this.unsortedRowMap.set(f,r[v])})}deleteCell(e="all"){const{selector:t}=this;this.changeData(()=>{this.rows.deleteCells(t.range,e),(e==="all"||e==="format")&&this.merges.deleteWithin(t.range)})}insert(e,t=1){this.changeData(()=>{const{sri:i,sci:a}=this.selector.range,{rows:l,merges:o,cols:r}=this;let f=i;e==="row"?l.insert(i,t):e==="column"&&(l.insertColumn(a,t),f=a,r.len+=1),o.shift(e,f,t,(v,b,Z,p)=>{const y=l.getCell(v,b);y.merge[0]+=Z,y.merge[1]+=p})})}delete(e){this.changeData(()=>{const{rows:t,merges:i,selector:a,cols:l}=this,{range:o}=a,{sri:r,sci:f,eri:v,eci:b}=a.range,[Z,p]=a.range.size();let y=r,X=Z;e==="row"?t.delete(r,v):e==="column"&&(t.deleteColumn(f,b),y=o.sci,X=p,l.len-=1),i.shift(e,y,-X,(m,N,G,d)=>{const u=t.getCell(m,N);u.merge[0]+=G,u.merge[1]+=d,u.merge[0]===0&&u.merge[1]===0&&delete u.merge})})}scrollx(e,t){const{scroll:i,freeze:a,cols:l}=this,[,o]=a,[r,f,v]=ya.rangeReduceIf(o,l.len,0,0,e,Z=>l.getWidth(Z));let b=f;e>0&&(b+=v),i.x!==b&&(i.ci=e>0?r:0,i.x=b,t())}scrolly(e,t){const{scroll:i,freeze:a,rows:l}=this,[o]=a,[r,f,v]=ya.rangeReduceIf(o,l.len,0,0,e,Z=>l.getHeight(Z));let b=f;e>0&&(b+=v),i.y!==b&&(i.ri=e>0?r:0,i.y=b,t())}cellRect(e,t){const{rows:i,cols:a}=this,l=a.sumWidth(0,t),o=i.sumHeight(0,e),r=i.getCell(e,t);let f=a.getWidth(t),v=i.getHeight(e);if(r!==null&&r.merge){const[b,Z]=r.merge;if(b>0)for(let p=1;p<=b;p+=1)v+=i.getHeight(e+p);if(Z>0)for(let p=1;p<=Z;p+=1)f+=a.getWidth(t+p)}return{left:l,top:o,width:f,height:v,cell:r}}getCell(e,t){return this.rows.getCell(e,t)}getCellTextOrDefault(e,t){const i=this.getCell(e,t);return i&&i.text?i.text:""}getCellStyle(e,t){const i=this.getCell(e,t);return i&&i.style!==void 0?this.styles[i.style]:null}getCellStyleOrDefault(e,t){const{styles:i,rows:a}=this,l=a.getCell(e,t),o=l&&l.style!==void 0?i[l.style]:{};return ya.merge(this.defaultStyle(),o)}getSelectedCellStyle(){const{ri:e,ci:t}=this.selector;return this.getCellStyleOrDefault(e,t)}setCellText(e,t,i,a){const{rows:l,history:o,validations:r}=this;a==="finished"?(l.setCellText(e,t,""),o.add(this.getData()),l.setCellText(e,t,i)):(l.setCellText(e,t,i),this.change(this.getData())),r.validate(e,t,i)}freezeIsActive(){const[e,t]=this.freeze;return e>0||t>0}setFreeze(e,t){this.changeData(()=>{this.freeze=[e,t]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(e,t){this.changeData(()=>{this.rows.setHeight(e,t)})}setColWidth(e,t){this.changeData(()=>{this.cols.setWidth(e,t)})}viewHeight(){const{view:e,showToolbar:t,showBottomBar:i}=this.settings;let a=e.height();return i&&(a-=eye),t&&(a-=qpe),a}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[e,t]=this.freeze;return new Ki(0,0,e-1,t-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:e,cols:t}=this,[i,a]=e.maxCell(),l=e.sumHeight(0,i+1),o=t.sumWidth(0,a+1);return new Ki(0,0,i,a,o,l)}exceptRowTotalHeight(e,t){const{exceptRowSet:i,rows:a}=this,l=Array.from(i);let o=0;return l.forEach(r=>{if(rt){const f=a.getHeight(r);o+=f}}),o}viewRange(){const{scroll:e,rows:t,cols:i,freeze:a,exceptRowSet:l}=this;let{ri:o,ci:r}=e;o<=0&&([o]=a),r<=0&&([,r]=a);let[f,v]=[0,0],[b,Z]=[t.len,i.len];for(let p=o;pthis.viewHeight()));p+=1);for(let p=r;pthis.viewWidth()));p+=1);return new Ki(o,r,b,Z,f,v)}eachMergesInView(e,t){this.merges.filterIntersects(e).forEach(i=>t(i))}hideRowsOrCols(){const{rows:e,cols:t,selector:i}=this,[a,l]=i.size(),{sri:o,sci:r,eri:f,eci:v}=i.range;if(a===e.len)for(let b=r;b<=v;b+=1)t.setHide(b,!0);else if(l===t.len)for(let b=o;b<=f;b+=1)e.setHide(b,!0)}unhideRowsOrCols(e,t){this[`${e}s`].unhide(t)}rowEach(e,t,i){let a=0;const{rows:l}=this,o=this.exceptRowSet,r=[...o];let f=0;for(let v=0;v0&&(i(v,a,b),a+=b,a>this.viewHeight()))break}}colEach(e,t,i){let a=0;const{cols:l}=this;for(let o=e;o<=t;o+=1){const r=l.getWidth(o);if(r>0&&(i(o,a,r),a+=r,a>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(e){const{styles:t}=this;for(let i=0;i{if(t==="merges"||t==="rows"||t==="cols"||t==="validations")this[t].setData(e[t]);else if(t==="freeze"){const[i,a]=Gs(e[t]);this.freeze=[a,i]}else t==="autofilter"?this.autoFilter.setData(e[t]):e[t]!==void 0&&(this[t]=e[t])}),this}getData(){const{name:e,freeze:t,styles:i,merges:a,rows:l,cols:o,validations:r,autoFilter:f}=this;return{name:e,freeze:Yo(t[1],t[0]),styles:i,merges:a.getData(),rows:l.getData(),cols:o.getData(),validations:r.getData(),autofilter:f.getData()}}}function va(n,e,t){n.addEventListener(e,t)}function y0(n,e,t){n.removeEventListener(e,t)}function td(n){n.xclickoutside&&(y0(window.document.body,"click",n.xclickoutside),delete n.xclickoutside)}function $h(n,e){n.xclickoutside=t=>{t.detail===2||n.contains(t.target)||(e?e(n):(n.hide(),td(n)))},va(window.document.body,"click",n.xclickoutside)}function BS(n,e,t){va(n,"mousemove",e);const i=n;i.xEvtUp=a=>{y0(n,"mousemove",e),y0(n,"mouseup",n.xEvtUp),t(a)},va(n,"mouseup",n.xEvtUp)}function aL(n,e,t,i){let a="";Math.abs(n)>Math.abs(e)?(a=n>0?"right":"left",i(a,n,t)):(a=e>0?"down":"up",i(a,e,t))}function rye(n,{move:e,end:t}){let i=0,a=0;va(n,"touchstart",l=>{const{pageX:o,pageY:r}=l.touches[0];i=o,a=r}),va(n,"touchmove",l=>{if(!e)return;const{pageX:o,pageY:r}=l.changedTouches[0],f=o-i,v=r-a;(Math.abs(f)>10||Math.abs(v)>10)&&(aL(f,v,l,e),i=o,a=r),l.preventDefault()}),va(n,"touchend",l=>{if(!t)return;const{pageX:o,pageY:r}=l.changedTouches[0],f=o-i,v=r-a;aL(f,v,l,t)})}function oye(){const n=new Map;function e(o,r){const f=()=>{const b=n.get(o);return Array.isArray(b)&&b.push(r)||!1},v=()=>n.set(o,[].concat(r));return n.has(o)&&f()||v()}function t(o,r){const f=()=>{const v=n.get(o);for(const b of v)b.call(null,...r)};return n.has(o)&&f()}function i(o,r){const f=()=>{const v=n.get(o),b=v.indexOf(r);return b>=0&&v.splice(b,1)&&n.get(o).length===0&&n.delete(o)};return n.has(o)&&f()}function a(o,r){const f=(...v)=>{r.call(null,...v),i(o,f)};return e(o,f)}function l(){n.clear()}return{get current(){return n},on:e,once:a,fire:t,removeListener:i,removeAllListeners:l}}const gt="x-spreadsheet";class rL{constructor(e=!1,t){this.moving=!1,this.vertical=e,this.el=ut("div",`${gt}-resizer ${e?"vertical":"horizontal"}`).children(this.unhideHoverEl=ut("div",`${gt}-resizer-hover`).on("dblclick.stop",i=>this.mousedblclickHandler(i)).css("position","absolute").hide(),this.hoverEl=ut("div",`${gt}-resizer-hover`).on("mousedown.stop",i=>this.mousedownHandler(i)),this.lineEl=ut("div",`${gt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=t,this.unhideFn=()=>{}}showUnhide(e){this.unhideIndex=e,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(e,t){const{moving:i,vertical:a,hoverEl:l,lineEl:o,el:r,unhideHoverEl:f}=this;if(i)return;this.cRect=e;const{left:v,top:b,width:Z,height:p}=e;r.offset({left:a?v+Z-5:v,top:a?b:b+p-5}).show(),l.offset({width:a?5:Z,height:a?p:5}),o.offset({width:a?0:t.width,height:a?t.height:0}),f.offset({left:a?5-Z:v,top:a?b:5-p,width:a?5:Z,height:a?p:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(e){let t=e;const{el:i,lineEl:a,cRect:l,vertical:o,minDistance:r}=this;let f=o?l.width:l.height;a.show(),BS(window,v=>{this.moving=!0,t!==null&&v.buttons===1&&(o?(f+=v.movementX,f>r&&i.css("left",`${l.left+f}px`)):(f+=v.movementY,f>r&&i.css("top",`${l.top+f}px`)),t=v)},()=>{t=null,a.hide(),this.moving=!1,this.hide(),this.finishedFn&&(f{}).on("scroll.stop",t=>{const{scrollTop:i,scrollLeft:a}=t.target;this.moveFn&&this.moveFn(this.vertical?i:a,t)})}move(e){return this.el.scroll(e),this}scroll(){return this.el.scroll()}set(e,t){const i=e-1;if(t>i){const a=this.vertical?"height":"width";this.el.css(a,`${i-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(a,`${t}px`)}else this.el.hide();return this}}const Ib=2*2-1;let uW=10;class Yb{constructor(e=!1){this.useHideInput=e,this.inputChange=()=>{},this.cornerEl=ut("div",`${gt}-selector-corner`),this.areaEl=ut("div",`${gt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=ut("div",`${gt}-selector-clipboard`).hide(),this.autofillEl=ut("div",`${gt}-selector-autofill`).hide(),this.el=ut("div",`${gt}-selector`).css("z-index",`${uW}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),e&&(this.hideInput=ut("input","").on("compositionend",t=>{this.inputChange(t.target.value)}),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput))),uW+=1}setOffset(e){return this.el.offset(e).show(),this}hide(){return this.el.hide(),this}setAreaOffset(e){const{left:t,top:i,width:a,height:l}=e,o={width:a-Ib+.8,height:l-Ib+.8,left:t-.8,top:i-.8};this.areaEl.offset(o).show(),this.useHideInput&&(this.hideInputDiv.offset(o),this.hideInput.val("").focus())}setClipboardOffset(e){const{left:t,top:i,width:a,height:l}=e;this.clipboardEl.offset({left:t,top:i,width:a-5,height:l-5})}showAutofill(e){const{left:t,top:i,width:a,height:l}=e;this.autofillEl.offset({width:a-Ib,height:l-Ib,left:t,top:i}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function lN(n){const{data:e}=this,{left:t,top:i,width:a,height:l,scroll:o,l:r,t:f}=n,v=e.freezeTotalWidth(),b=e.freezeTotalHeight();let Z=t-v;v>r&&(Z-=o.x);let p=i-b;return b>f&&(p-=o.y),{left:Z,top:p,width:a,height:l}}function aN(n){const{data:e}=this,{left:t,width:i,height:a,l,t:o,scroll:r}=n,f=e.freezeTotalWidth();let v=t-f;return f>l&&(v-=r.x),{left:v,top:o,width:i,height:a}}function rN(n){const{data:e}=this,{top:t,width:i,height:a,l,t:o,scroll:r}=n,f=e.freezeTotalHeight();let v=t-f;return f>o&&(v-=r.y),{left:l,top:v,width:i,height:a}}function dW(n){const{br:e}=this;e.setAreaOffset(lN.call(this,n))}function sye(n){const{tl:e}=this;e.setAreaOffset(n)}function AS(n){const{t:e}=this;e.setAreaOffset(aN.call(this,n))}function _S(n){const{l:e}=this;e.setAreaOffset(rN.call(this,n))}function $S(n){const{l:e}=this;e.setClipboardOffset(rN.call(this,n))}function hW(n){const{br:e}=this;e.setClipboardOffset(lN.call(this,n))}function cye(n){const{tl:e}=this;e.setClipboardOffset(n)}function qS(n){const{t:e}=this;e.setClipboardOffset(aN.call(this,n))}function sL(n){dW.call(this,n),sye.call(this,n),AS.call(this,n),_S.call(this,n)}function cL(n){hW.call(this,n),cye.call(this,n),qS.call(this,n),$S.call(this,n)}class uye{constructor(e){this.inputChange=()=>{},this.data=e,this.br=new Yb(!0),this.t=new Yb,this.l=new Yb,this.tl=new Yb,this.br.inputChange=t=>{this.inputChange(t)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=ut("div",`${gt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,uW+=1}resetData(e){this.data=e,this.range=e.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:e,tl:t,t:i,l:a,br:l}=this,o=e.freezeTotalHeight(),r=e.freezeTotalWidth();o>0||r>0?(t.setOffset({width:r,height:o}),i.setOffset({left:r,height:o}),a.setOffset({top:o,width:r}),l.setOffset({left:r,top:o})):(t.hide(),i.hide(),a.hide(),l.setOffset({left:0,top:0}))}resetAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();sL.call(this,e),cL.call(this,t),this.resetOffset()}resetBRTAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();dW.call(this,e),AS.call(this,e),hW.call(this,t),qS.call(this,t),this.resetOffset()}resetBRLAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();dW.call(this,e),_S.call(this,e),hW.call(this,t),$S.call(this,t),this.resetOffset()}set(e,t,i=!0){const{data:a}=this,l=a.calSelectedRangeByStart(e,t),{sri:o,sci:r}=l;if(i){let[f,v]=[e,t];e<0&&(f=0),t<0&&(v=0),a.selector.setIndexes(f,v),this.indexes=[f,v]}this.moveIndexes=[o,r],this.range=l,this.resetAreaOffset(),this.el.show()}setEnd(e,t,i=!0){const{data:a,lastri:l,lastci:o}=this;if(i){if(e===l&&t===o)return;this.lastri=e,this.lastci=t}this.range=a.calSelectedRangeByEnd(e,t),sL.call(this,this.data.getSelectedRect())}reset(){const{eri:e,eci:t}=this.data.selector.range;this.setEnd(e,t)}showAutofill(e,t){if(e===-1&&t===-1)return;const{sri:i,sci:a,eri:l,eci:o}=this.range,[r,f]=[e,t],v=i-e,b=a-t,Z=l-e,p=o-t;if(b>0)this.arange=new Ki(i,f,l,a-1);else if(v>0)this.arange=new Ki(r,a,i-1,o);else if(p<0)this.arange=new Ki(i,o+1,l,f);else if(Z<0)this.arange=new Ki(l+1,a,r,o);else{this.arange=null;return}if(this.arange!==null){const y=this.data.getRect(this.arange);y.width+=2,y.height+=2;const{br:X,l:m,t:N,tl:G}=this;X.showAutofill(lN.call(this,y)),m.showAutofill(rN.call(this,y)),N.showAutofill(aN.call(this,y)),G.showAutofill(y)}}hideAutofill(){["br","l","t","tl"].forEach(e=>{this[e].hideAutofill()})}showClipboard(){const e=this.data.getClipboardRect();cL.call(this,e),["br","l","t","tl"].forEach(t=>{this[t].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(e=>{this[e].hideClipboard()})}}function dye(n){n.preventDefault(),n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=e.length-1),e[this.itemIndex].toggle())}function hye(n){n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>e.length-1&&(this.itemIndex=0),e[this.itemIndex].toggle())}function uL(n){n.preventDefault();const{filterItems:e}=this;e.length<=0||(n.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),e[this.itemIndex].el.click(),this.hide())}function fye(n){const{keyCode:e}=n;switch(n.ctrlKey&&n.stopPropagation(),e){case 37:n.stopPropagation();break;case 38:dye.call(this,n);break;case 39:n.stopPropagation();break;case 40:hye.call(this,n);break;case 13:uL.call(this,n);break;case 9:uL.call(this,n);break;default:n.stopPropagation();break}}class ez{constructor(e,t,i="200px"){this.filterItems=[],this.items=e,this.el=ut("div",`${gt}-suggest`).css("width",i).hide(),this.itemClick=t,this.itemIndex=-1}setOffset(e){this.el.cssRemoveKeys("top","bottom").offset(e)}hide(){const{el:e}=this;this.filterItems=[],this.itemIndex=-1,e.hide(),td(this.el.parent())}setItems(e){this.items=e}search(e){let{items:t}=this;if(/^\s*$/.test(e)||(t=t.filter(a=>(a.key||a).startsWith(e.toUpperCase()))),t=t.map(a=>{let{title:l}=a;l?typeof l=="function"&&(l=l()):l=a;const o=ut("div",`${gt}-item`).child(l).on("click.stop",()=>{this.itemClick(a),this.hide()});return a.label&&o.child(ut("div","label").html(a.label)),o}),this.filterItems=t,t.length<=0)return;const{el:i}=this;i.html("").children(...t).show(),$h(i.parent(),()=>{this.hide()})}bindInputEvents(e){e.on("keydown",t=>fye.call(this,t))}}class Jl extends kp{constructor(e){super("div",`${gt}-icon`),this.iconNameEl=ut("div",`${gt}-icon-img ${e}`),this.child(this.iconNameEl)}setName(e){this.iconNameEl.className(`${gt}-icon-img ${e}`)}}function dL(n,e){n.setMonth(n.getMonth()+e)}function bye(n,e){const t=new Date(n);return t.setDate(e-n.getDay()+1),t}function mye(n,e,t){const i=new Date(n,e,1,23,59,59),a=[[],[],[],[],[],[]];for(let l=0;l<6;l+=1)for(let o=0;o<7;o+=1){const r=l*7+o,f=bye(i,r),v=f.getMonth()!==e,b=f.getMonth()===t.getMonth()&&f.getDate()===t.getDate();a[l][o]={d:f,disabled:v,active:b}}return a}class pye{constructor(e){this.value=e,this.cvalue=new Date(e),this.headerLeftEl=ut("div","calendar-header-left"),this.bodyEl=ut("tbody",""),this.buildAll(),this.el=ut("div","x-spreadsheet-calendar").children(ut("div","calendar-header").children(this.headerLeftEl,ut("div","calendar-header-right").children(ut("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Jl("chevron-left")),ut("a","calendar-next").on("click.stop",()=>this.next()).child(new Jl("chevron-right")))),ut("table","calendar-body").children(ut("thead","").child(ut("tr","").children(..._i("calendar.weeks").map(t=>ut("th","cell").child(t)))),this.bodyEl)),this.selectChange=()=>{}}setValue(e){this.value=e,this.cvalue=new Date(e),this.buildAll()}prev(){const{value:e}=this;dL(e,-1),this.buildAll()}next(){const{value:e}=this;dL(e,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:e}=this;this.headerLeftEl.html(`${_i("calendar.months")[e.getMonth()]} ${e.getFullYear()}`)}buildBody(){const{value:e,cvalue:t,bodyEl:i}=this,l=mye(e.getFullYear(),e.getMonth(),t).map(o=>{const r=o.map(f=>{let v="cell";return f.disabled&&(v+=" disabled"),f.active&&(v+=" active"),ut("td","").child(ut("div",v).on("click.stop",()=>{this.selectChange(f.d)}).child(f.d.getDate().toString()))});return ut("tr","").children(...r)});i.html("").children(...l)}}class yye{constructor(){this.calendar=new pye(new Date),this.el=ut("div",`${gt}-datepicker`).child(this.calendar.el).hide()}setValue(e){const{calendar:t}=this;return typeof e=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(e)&&t.setValue(new Date(e.replace(new RegExp("-","g"),"/"))):e instanceof Date&&t.setValue(e),this}change(e){this.calendar.selectChange=t=>{e(t),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function Z0(){const{inputText:n}=this;if(!/^\s*$/.test(n)){const{textlineEl:e,textEl:t,areaOffset:i}=this,a=n.split(` +`),l=Math.max(...a.map(Z=>Z.length)),r=e.offset().width/n.length,f=(l+1)*r+5,v=this.viewFn().width-i.left-r;let b=a.length;if(f>i.width){let Z=f;f>v&&(Z=v,b+=parseInt(f/v,10),b+=f%v>0?1:0),t.css("width",`${Z}px`)}b*=this.rowHeight,b>i.height&&t.css("height",`${b}px`)}}function Zye({target:n},e){const{value:t,selectionEnd:i}=n,a=`${t.slice(0,i)}${e}${t.slice(i)}`;n.value=a,n.setSelectionRange(i+1,i+1),this.inputText=a,this.textlineEl.html(a),Z0.call(this)}function vye(n){const{keyCode:e,altKey:t}=n;e!==13&&e!==9&&n.stopPropagation(),e===13&&t&&(Zye.call(this,n,` +`),n.stopPropagation()),e===13&&!t&&n.preventDefault()}function Wye(n){const e=n.target.value,{suggest:t,textlineEl:i,validator:a}=this,{cell:l}=this;if(l!==null)if("editable"in l&&l.editable===!0||l.editable===void 0){if(this.inputText=e,a)a.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),Z0.call(this),this.change("input",e)}else n.target.value=l.text;else{if(this.inputText=e,a)a.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),Z0.call(this),this.change("input",e)}}function Gye(n){const{el:e}=this.textEl;setTimeout(()=>{e.focus(),e.setSelectionRange(n,n)},0)}function tz(n,e){const{textEl:t,textlineEl:i}=this;t.el.blur(),t.val(n),i.html(n),Gye.call(this,e)}function Xye(n){const{inputText:e,validator:t}=this;let i=0;if(t&&t.type==="list")this.inputText=n,i=this.inputText.length;else{const a=e.lastIndexOf("="),l=e.substring(0,a+1);let o=e.substring(a+1);o.indexOf(")")!==-1?o=o.substring(o.indexOf(")")):o="",this.inputText=`${l+n.key}(`,i=this.inputText.length,this.inputText+=`)${o}`}tz.call(this,this.inputText,i)}function Nye(){this.suggest.setItems(this.formulas)}function Mye(n){let e=n.getMonth()+1,t=n.getDate();return e<10&&(e=`0${e}`),t<10&&(t=`0${t}`),`${n.getFullYear()}-${e}-${t}`}class Iye{constructor(e,t,i){this.viewFn=t,this.rowHeight=i,this.formulas=e,this.suggest=new ez(e,a=>{Xye.call(this,a)}),this.datepicker=new yye,this.datepicker.change(a=>{this.setText(Mye(a)),this.clear()}),this.areaEl=ut("div",`${gt}-editor-area`).children(this.textEl=ut("textarea","").on("input",a=>Wye.call(this,a)).on("paste.stop",()=>{}).on("keydown",a=>vye.call(this,a)),this.textlineEl=ut("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=ut("div",`${gt}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(e,t){this.freeze.w=e,this.freeze.h=t}clear(){this.inputText!==""&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),Nye.call(this),this.datepicker.hide()}setOffset(e,t="top"){const{textEl:i,areaEl:a,suggest:l,freeze:o,el:r}=this;if(e){this.areaOffset=e;const{left:f,top:v,width:b,height:Z,l:p,t:y}=e,X={left:0,top:0};o.w>p&&o.h>y||(o.wp?X.top=o.h:o.h>y&&(X.left=o.w)),r.offset(X),a.offset({left:f-X.left-.8,top:v-X.top-.8}),i.offset({width:b-9+.8,height:Z-3+.8});const m={left:0};m[t]=Z,l.setOffset(m),l.hide()}}setCell(e,t){const{el:i,datepicker:a,suggest:l}=this;i.show(),this.cell=e;const o=e&&e.text||"";if(this.setText(o),this.validator=t,t){const{type:r}=t;r==="date"&&(a.show(),/^\s*$/.test(o)||a.setValue(o)),r==="list"&&(l.setItems(t.values()),l.search(""))}}setText(e){this.inputText=e,tz.call(this,e,e.length),Z0.call(this)}}class Zc extends kp{constructor(e,t=""){super("div",`${gt}-button ${t}`),this.child(_i(`button.${e}`))}}function v0(){return window.devicePixelRatio||1}function oN(){return v0()-.5}function Rn(n){return parseInt(n*v0(),10)}function eu(n){const e=Rn(n);return e>0?e-.5:.5}class Yye{constructor(e,t,i,a,l=0){this.x=e,this.y=t,this.width=i,this.height=a,this.padding=l,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:e,bottom:t,left:i,right:a}){e&&(this.borderTop=e),a&&(this.borderRight=a),t&&(this.borderBottom=t),i&&(this.borderLeft=i)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(e){const{width:t,padding:i}=this;let{x:a}=this;return e==="left"?a+=i:e==="center"?a+=t/2:e==="right"&&(a+=t-i),a}texty(e,t){const{height:i,padding:a}=this;let{y:l}=this;return e==="top"?l+=a:e==="middle"?l+=i/2-t/2:e==="bottom"&&(l+=i-a-t),l}topxys(){const{x:e,y:t,width:i}=this;return[[e,t],[e+i,t]]}rightxys(){const{x:e,y:t,width:i,height:a}=this;return[[e+i,t],[e+i,t+a]]}bottomxys(){const{x:e,y:t,width:i,height:a}=this;return[[e,t+a],[e+i,t+a]]}leftxys(){const{x:e,y:t,height:i}=this;return[[e,t],[e,t+i]]}}function hL(n,e,t,i,a,l,o){const r={x:0,y:0};n==="underline"?a==="bottom"?r.y=0:a==="top"?r.y=-(l+2):r.y=-l/2:n==="strike"&&(a==="bottom"?r.y=l/2:a==="top"&&(r.y=-(l/2+2))),i==="center"?r.x=o/2:i==="right"&&(r.x=o),this.line([e-r.x,t-r.y],[e-r.x+o,t-r.y])}class nz{constructor(e,t,i){this.el=e,this.ctx=e.getContext("2d"),this.resize(t,i),this.ctx.scale(v0(),v0())}resize(e,t){this.el.style.width=`${e}px`,this.el.style.height=`${t}px`,this.el.width=Rn(e),this.el.height=Rn(t)}clear(){const{width:e,height:t}=this.el;return this.ctx.clearRect(0,0,e,t),this}attr(e){return Object.assign(this.ctx,e),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(e,t){return this.ctx.translate(Rn(e),Rn(t)),this}scale(e,t){return this.ctx.scale(e,t),this}clearRect(e,t,i,a){return this.ctx.clearRect(e,t,i,a),this}fillRect(e,t,i,a){return this.ctx.fillRect(Rn(e)-.5,Rn(t)-.5,Rn(i),Rn(a)),this}fillText(e,t,i){return this.ctx.fillText(e,Rn(t),Rn(i)),this}text(e,t,i={},a=!0){const{ctx:l}=this,{align:o,valign:r,font:f,color:v,strike:b,underline:Z}=i,p=t.textx(o);l.save(),l.beginPath(),this.attr({textAlign:o,textBaseline:r,font:`${f.italic?"italic":""} ${f.bold?"bold":""} ${Rn(f.size)}px ${f.name}`,fillStyle:v,strokeStyle:v});const y=`${e}`.split(` +`),X=t.innerWidth(),m=[];y.forEach(d=>{const u=l.measureText(d).width;if(a&&u>Rn(X)){let s={w:0,len:0,start:0};for(let h=0;h=Rn(X)&&(m.push(d.substr(s.start,s.len)),s={w:0,len:0,start:h}),s.len+=1,s.w+=l.measureText(d[h]).width+1;s.len>0&&m.push(d.substr(s.start,s.len))}else m.push(d)});const N=(m.length-1)*(f.size+2);let G=t.texty(r,N);return m.forEach(d=>{const u=l.measureText(d).width;this.fillText(d,p,G),b&&hL.call(this,"strike",p,G,o,r,f.size,u),Z&&hL.call(this,"underline",p,G,o,r,f.size,u),G+=f.size+2}),l.restore(),this}border(e,t){const{ctx:i}=this;return i.lineWidth=oN,i.strokeStyle=t,e==="medium"?i.lineWidth=Rn(2)-.5:e==="thick"?i.lineWidth=Rn(3):e==="dashed"?i.setLineDash([Rn(3),Rn(2)]):e==="dotted"?i.setLineDash([Rn(1),Rn(1)]):e==="double"&&i.setLineDash([Rn(2),0]),this}line(...e){const{ctx:t}=this;if(e.length>1){t.beginPath();const[i,a]=e[0];t.moveTo(eu(i),eu(a));for(let l=1;l{const e=[],t=[];let i=[],a=0,l="",o=1,r="";for(let f=0;f="a"&&v<="z")i.push(v.toUpperCase());else if(v>="0"&&v<="9"||v>="A"&&v<="Z"||v===".")i.push(v);else if(v==='"'){for(f+=1;n.charAt(f)!=='"';)i.push(n.charAt(f)),f+=1;t.push(`"${i.join("")}`),i=[]}else if(v==="-"&&/[+\-*/,(]/.test(r))i.push(v);else{if(v!=="("&&i.length>0&&t.push(i.join("")),v===")"){let b=e.pop();if(a===2)try{const[Z,p]=Gs(t.pop()),[y,X]=Gs(t.pop());let m=0;for(let N=y;N<=Z;N+=1)for(let G=X;G<=p;G+=1)t.push(Yo(N,G)),m+=1;t.push([b,m])}catch{}else if(a===1||a===3)a===3&&t.push(l),t.push([b,o]),o=1;else for(;b!=="("&&(t.push(b),!(e.length<=0));)b=e.pop();a=0}else if(v==="="||v===">"||v==="<"){const b=n.charAt(f+1);l=v,(b==="="||b==="-")&&(l+=b,f+=1),a=3}else if(v===":")a=2;else if(v===",")a===3&&t.push(l),a=1,o+=1;else if(v==="("&&i.length>0)e.push(i.join(""));else{if(e.length>0&&(v==="+"||v==="-")){let b=e[e.length-1];if(b!=="("&&t.push(e.pop()),b==="*"||b==="/")for(;e.length>0&&(b=e[e.length-1],b!=="(");)t.push(e.pop())}else if(e.length>0){const b=e[e.length-1];(b==="*"||b==="/")&&t.push(e.pop())}e.push(v)}i=[]}r=v}}for(i.length>0&&t.push(i.join(""));e.length>0;)t.push(e.pop());return t},Vye=(n,e)=>{const[t]=n;let i=n;if(t==='"')return n.substring(1);let a=1;if(t==="-"&&(i=n.substring(1),a=-1),i[0]>="0"&&i[0]<="9")return a*Number(i);const[l,o]=Gs(i);return a*e(l,o)},Lye=(n,e,t,i)=>{const a=[];for(let l=0;l"||r==="<"){let f=a.pop();Number.isNaN(f)||(f=Number(f));let v=a.pop();Number.isNaN(v)||(v=Number(v));let b=!1;r==="="?b=v===f:o===">"?b=v>f:o===">="?b=v>=f:o==="<"?b=v="a"&&r<="z"||r>="A"&&r<="Z")&&i.push(o),a.push(Vye(o,t)),i.pop()}}return a[0]},iz=(n,e,t,i=[])=>{if(n[0]==="="){const a=gye(n.substring(1));return a.length<=0?n:Lye(a,e,(l,o)=>iz(t(l,o),e,t,i),i)}return n},Rye={render:iz},sN=[{key:"SUM",title:Hn("formula.sum"),render:n=>n.reduce((e,t)=>ac("+",e,t),0)},{key:"AVERAGE",title:Hn("formula.average"),render:n=>n.reduce((e,t)=>Number(e)+Number(t),0)/n.length},{key:"MAX",title:Hn("formula.max"),render:n=>Math.max(...n.map(e=>Number(e)))},{key:"MIN",title:Hn("formula.min"),render:n=>Math.min(...n.map(e=>Number(e)))},{key:"IF",title:Hn("formula._if"),render:([n,e,t])=>n?e:t},{key:"AND",title:Hn("formula.and"),render:n=>n.every(e=>e)},{key:"OR",title:Hn("formula.or"),render:n=>n.some(e=>e)},{key:"CONCAT",title:Hn("formula.concat"),render:n=>n.join("")}],Tye=sN,lz={};sN.forEach(n=>{lz[n.key]=n});const tu=n=>n,wb=n=>{if(/^(-?\d*.?\d*)$/.test(n)){const e=Number(n).toFixed(2).toString(),[t,...i]=e.split("\\.");return[t.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...i]}return n},Fd=[{key:"normal",title:Hn("format.normal"),type:"string",render:tu},{key:"text",title:Hn("format.text"),type:"string",render:tu},{key:"number",title:Hn("format.number"),type:"number",label:"1,000.12",render:wb},{key:"percent",title:Hn("format.percent"),type:"number",label:"10.12%",render:n=>`${n}%`},{key:"rmb",title:Hn("format.rmb"),type:"number",label:"¥10.00",render:n=>`¥${wb(n)}`},{key:"usd",title:Hn("format.usd"),type:"number",label:"$10.00",render:n=>`$${wb(n)}`},{key:"eur",title:Hn("format.eur"),type:"number",label:"€10.00",render:n=>`€${wb(n)}`},{key:"date",title:Hn("format.date"),type:"date",label:"26/09/2008",render:tu},{key:"time",title:Hn("format.time"),type:"date",label:"15:59:00",render:tu},{key:"datetime",title:Hn("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:tu},{key:"duration",title:Hn("format.duration"),type:"date",label:"24:01:00",render:tu}],az={};Fd.forEach(n=>{az[n.key]=n});const xye=5,Cye={fillStyle:"#f4f5f8"},Sye={fillStyle:"#fff",lineWidth:oN,strokeStyle:"#e6e6e6"};function zye(){return{textAlign:"center",textBaseline:"middle",font:`500 ${Rn(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:oN(),strokeStyle:"#e6e6e6"}}function rz(n,e,t,i=0){const{left:a,top:l,width:o,height:r}=n.cellRect(e,t);return new Yye(a,l+i,o,r,xye)}function W0(n,e,t,i,a=0){const{sortedRowMap:l,rows:o,cols:r}=e;if(o.isHide(t)||r.isHide(i))return;let f=t;l.has(t)&&(f=l.get(t));const v=e.getCell(f,i);if(v===null)return;let b=!1;"editable"in v&&v.editable===!1&&(b=!0);const Z=e.getCellStyleOrDefault(f,i),p=rz(e,t,i,a);p.bgcolor=Z.bgcolor,Z.border!==void 0&&(p.setBorders(Z.border),n.strokeBorders(p)),n.rect(p,()=>{let y="";e.settings.evalPaused?y=v.text||"":y=Rye.render(v.text||"",lz,(N,G)=>e.getCellTextOrDefault(G,N)),Z.format&&(y=az[Z.format].render(y));const X=Object.assign({},Z.font);X.size=wye(X.size),n.text(y,p,{align:Z.align,valign:Z.valign,font:X,color:Z.color,strike:Z.strike,underline:Z.underline},Z.textwrap),e.validations.getError(t,i)&&n.error(p),b&&n.frozen(p)})}function kye(n){const{data:e,draw:t}=this;if(n){const{autoFilter:i}=e;if(!i.active())return;const a=i.hrange();n.intersects(a)&&a.each((l,o)=>{const r=rz(e,l,o);t.dropdown(r)})}}function gb(n,e,t,i,a){const{draw:l,data:o}=this;l.save(),l.translate(e,t).translate(i,a);const{exceptRowSet:r}=o,f=Z=>{const p=r.has(Z);if(p){const y=o.rows.getHeight(Z);l.translate(0,-y)}return!p},v=o.exceptRowTotalHeight(n.sri,n.eri);l.save(),l.translate(0,-v),n.each((Z,p)=>{W0(l,o,Z,p)},Z=>f(Z)),l.restore();const b=new Set;l.save(),l.translate(0,-v),o.eachMergesInView(n,({sri:Z,sci:p,eri:y})=>{if(!r.has(Z))W0(l,o,Z,p);else if(!b.has(Z)){b.add(Z);const X=o.rows.sumHeight(Z,y+1);l.translate(0,-X)}}),l.restore(),kye.call(this,n),l.restore()}function bL(n,e,t,i){const{draw:a}=this;a.save(),a.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(n,e,t,i),a.restore()}function Vb(n,e,t,i,a,l){const{draw:o,data:r}=this,f=e.h,v=e.w,b=l+i,Z=a+t;o.save(),o.attr(Cye),(n==="all"||n==="left")&&o.fillRect(0,b,t,f),(n==="all"||n==="top")&&o.fillRect(Z,0,v,i);const{sri:p,sci:y,eri:X,eci:m}=r.selector.range;o.attr(zye()),(n==="all"||n==="left")&&(r.rowEach(e.sri,e.eri,(N,G,d)=>{const u=b+G,s=N;o.line([0,u],[t,u]),p<=s&&s0&&r.rows.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([5,u+5],[t-5,u+5]),o.restore())}),o.line([0,f+b],[t,f+b]),o.line([t,b],[t,f+b])),(n==="all"||n==="top")&&(r.colEach(e.sci,e.eci,(N,G,d)=>{const u=Z+G,s=N;o.line([u,0],[u,i]),y<=s&&s0&&r.cols.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([u+5,5],[u+5,i-5]),o.restore())}),o.line([v+Z,0],[v+Z,i]),o.line([0,i],[v+Z,i])),o.restore()}function Fye(n,e){const{draw:t}=this;t.save(),t.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,n,e),t.restore()}function Lb({sri:n,sci:e,eri:t,eci:i,w:a,h:l},o,r,f,v){const{draw:b,data:Z}=this,{settings:p}=Z;if(b.save(),b.attr(Sye).translate(o+f,r+v),!p.showGrid){b.restore();return}Z.rowEach(n,t,(y,X,m)=>{y!==n&&b.line([0,X],[a,X]),y===t&&b.line([0,X+m],[a,X+m])}),Z.colEach(e,i,(y,X,m)=>{y!==e&&b.line([X,0],[X,l]),y===i&&b.line([X+m,0],[X+m,l])}),b.restore()}function Jye(n,e,t,i){const{draw:a,data:l}=this,o=l.viewWidth()-n,r=l.viewHeight()-e;a.save().translate(n,e).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),a.line([0,i],[o,i]),a.line([t,0],[t,r]),a.restore()}class Dye{constructor(e,t){this.el=e,this.draw=new nz(e,t.viewWidth(),t.viewHeight()),this.data=t}resetData(e){this.data=e,this.render()}render(){const{data:e}=this,{rows:t,cols:i}=e,a=i.indexWidth,l=t.height;this.draw.resize(e.viewWidth(),e.viewHeight()),this.clear();const o=e.viewRange(),r=e.freezeTotalWidth(),f=e.freezeTotalHeight(),{x:v,y:b}=e.scroll;Lb.call(this,o,a,l,r,f),gb.call(this,o,a,l,-v,-b),Vb.call(this,"all",o,a,l,r,f),Fye.call(this,a,l);const[Z,p]=e.freeze;if(Z>0||p>0){if(Z>0){const X=o.clone();X.sri=0,X.eri=Z-1,X.h=f,Lb.call(this,X,a,l,r,0),gb.call(this,X,a,l,-v,0),Vb.call(this,"top",X,a,l,r,0)}if(p>0){const X=o.clone();X.sci=0,X.eci=p-1,X.w=r,Lb.call(this,X,a,l,0,f),Vb.call(this,"left",X,a,l,0,f),gb.call(this,X,a,l,0,-b)}const y=e.freezeViewRange();Lb.call(this,y,a,l,0,0),Vb.call(this,"all",y,a,l,0,0),gb.call(this,y,a,l,0,0),Jye.call(this,a,l,r,f)}}clear(){this.draw.clear()}}const pm=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],bW=["landscape","portrait"];function G0(n){return parseInt(96*n,10)}function mL(n){n==="cancel"?this.el.hide():this.toPrint()}function Oye(n){const{paper:e}=this,{value:t}=n.target,i=pm[t];e.w=G0(i[1]),e.h=G0(i[2]),this.preview()}function jye(n){const{paper:e}=this,{value:t}=n.target,i=bW[t];e.orientation=i,this.preview()}let Uye=class{constructor(e){this.paper={w:G0(pm[0][1]),h:G0(pm[0][2]),padding:50,orientation:bW[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=e,this.el=ut("div",`${gt}-print`).children(ut("div",`${gt}-print-bar`).children(ut("div","-title").child("Print settings"),ut("div","-right").children(ut("div",`${gt}-buttons`).children(new Zc("cancel").on("click",mL.bind(this,"cancel")),new Zc("next","primary").on("click",mL.bind(this,"next"))))),ut("div",`${gt}-print-content`).children(this.contentEl=ut("div","-content"),ut("div","-sider").child(ut("form","").children(ut("fieldset","").children(ut("label","").child(`${_i("print.size")}`),ut("select","").children(...pm.map((t,i)=>ut("option","").attr("value",i).child(`${t[0]} ( ${t[1]}''x${t[2]}'' )`))).on("change",Oye.bind(this))),ut("fieldset","").children(ut("label","").child(`${_i("print.orientation")}`),ut("select","").children(...bW.map((t,i)=>ut("option","").attr("value",i).child(`${_i("print.orientations")[i]}`))).on("change",jye.bind(this))))))).hide()}resetData(e){this.data=e}preview(){const{data:e,paper:t}=this,{width:i,height:a,padding:l}=t,o=i-l*2,r=a-l*2,f=e.contentRange(),v=parseInt(f.h/r,10)+1,b=o/f.w;let Z=l;const p=l;b>1&&(Z+=(o-f.w)/2);let y=0,X=0;this.contentEl.html(""),this.canvases=[];const m={sri:0,sci:0,eri:0,eci:0};for(let N=0;N{W0(h,e,W,M,c)}),h.restore(),m.sri=m.eri,m.sci=m.eci,X+=d,this.contentEl.child(ut("div",`${gt}-canvas-card-wraper`).child(u.child(s)))}this.el.show()}toPrint(){this.el.hide();const{paper:e}=this,t=ut("iframe","").hide(),{el:i}=t;window.document.body.appendChild(i);const{contentWindow:a}=i,l=a.document,o=document.createElement("style");o.innerHTML=` @page { size: ${e.width}px ${e.height}px; }; canvas { page-break-before: auto; page-break-after: always; image-rendering: pixelated; }; - `,l.head.appendChild(o),this.canvases.forEach(r=>{const f=r.cloneNode(!1);f.getContext("2d").drawImage(r,0,0),l.body.appendChild(f)}),a.print()}};const Jye=[{key:"copy",title:Hn("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:Hn("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:Hn("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:Hn("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:Hn("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:Hn("contextmenu.insertRow")},{key:"insert-column",title:Hn("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:Hn("contextmenu.deleteRow")},{key:"delete-column",title:Hn("contextmenu.deleteColumn")},{key:"delete-cell-text",title:Hn("contextmenu.deleteCellText")},{key:"hide",title:Hn("contextmenu.hide")},{key:"divider"},{key:"validation",title:Hn("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:Hn("contextmenu.cellprintable")},{key:"cell-non-printable",title:Hn("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:Hn("contextmenu.celleditable")},{key:"cell-non-editable",title:Hn("contextmenu.cellnoneditable")}];function Dye(n){return n.key==="divider"?ut("div",`${gt}-item divider`):ut("div",`${gt}-item`).on("click",()=>{this.itemClick(n.key),this.hide()}).children(n.title(),ut("div","label").child(n.label||""))}function Oye(){return Jye.map(n=>Dye.call(this,n))}let jye=class{constructor(e,t=!1){this.menuItems=Oye.call(this),this.el=ut("div",`${gt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=e,this.itemClick=()=>{},this.isHide=t,this.setMode("range")}setMode(e){const t=this.menuItems[12];e==="row-col"?t.show():t.hide()}hide(){const{el:e}=this;e.hide(),ed(e)}setPosition(e,t){if(this.isHide)return;const{el:i}=this,{width:a}=i.show().offset(),l=this.viewFn(),o=l.height/2;let r=e;l.width-e<=a&&(r-=a),i.css("left",`${r}px`),t>o?i.css("bottom",`${l.height-t}px`).css("max-height",`${t}px`).css("top","auto"):i.css("top",`${t}px`).css("max-height",`${l.height-t}px`).css("bottom","auto"),_h(i)}};function Uye(n,e){if(e.classList.contains("active"))return;const{left:t,top:i,width:a,height:l}=e.getBoundingClientRect(),o=ut("div",`${gt}-tooltip`).html(n).show();document.body.appendChild(o.el);const r=o.box();o.css("left",`${t+a/2-r.width/2}px`).css("top",`${i+l+2}px`),va(e,"mouseleave",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)}),va(e,"click",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)})}class oN{constructor(e,t,i){this.tip=_i(`toolbar.${e.replace(/-[a-z]/g,a=>a[1].toUpperCase())}`),t&&(this.tip+=` (${t})`),this.tag=e,this.shortcut=t,this.value=i,this.el=this.element(),this.change=()=>{}}element(){const{tip:e}=this;return ut("div",`${gt}-toolbar-btn`).on("mouseenter",t=>{Uye(e,t.target)}).attr("data-tooltip",e)}setState(){}}class qr extends oN{dropdown(){}getValue(e){return e}element(){const{tag:e}=this;return this.dd=this.dropdown(),this.dd.change=t=>this.change(e,this.getValue(t)),super.element().child(this.dd)}setState(e){e&&(this.value=e,this.dd.setTitle(e))}}class eo extends Cp{constructor(e,t,i,a,...l){super("div",`${gt}-dropdown ${a}`),this.title=e,this.change=()=>{},this.headerClick=()=>{},typeof e=="string"?this.title=ut("div",`${gt}-dropdown-title`).child(e):i&&this.title.addClass("arrow-left"),this.contentEl=ut("div",`${gt}-dropdown-content`).css("width",t).hide(),this.setContentChildren(...l),this.headerEl=ut("div",`${gt}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,i?ut("div",`${gt}-icon arrow-right`).child(ut("div",`${gt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...e){this.contentEl.html(""),e.length>0&&this.contentEl.children(...e)}setTitle(e){this.title.html(e),this.hide()}show(){const{contentEl:e}=this;e.show(),this.parent().active(),_h(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),ed(this.parent())}}function Eye(n){return ut("div",`${gt}-item`).child(new Jl(n))}class iz extends eo{constructor(e,t){const i=new Jl(`align-${t}`),a=e.map(l=>Eye(`align-${l}`).on("click",()=>{this.setTitle(l),this.change(l)}));super(i,"auto",!0,"bottom-left",...a)}setTitle(e){this.title.setName(`align-${e}`),this.hide()}}class Kye extends qr{constructor(e){super("align","",e)}dropdown(){const{value:e}=this;return new iz(["left","center","right"],e)}}class Hye extends qr{constructor(e){super("valign","",e)}dropdown(){const{value:e}=this;return new iz(["top","middle","bottom"],e)}}class Fo extends oN{element(){const{tag:e}=this;return super.element().child(new Jl(e)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(e){this.el.active(e)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class Pye extends Fo{constructor(){super("autofilter")}setState(){}}class Qye extends Fo{constructor(){super("font-bold","Ctrl+B")}}class Bye extends Fo{constructor(){super("font-italic","Ctrl+I")}}class Aye extends Fo{constructor(){super("strike","Ctrl+U")}}class _ye extends Fo{constructor(){super("underline","Ctrl+U")}}const $ye=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],qye=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],eZe=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function e2(n){return ut("td","").child(ut("div",`${gt}-color-palette-cell`).on("click.stop",()=>this.change(n)).css("background-color",n))}class tZe{constructor(){this.el=ut("div",`${gt}-color-palette`),this.change=()=>{};const e=ut("table","").children(ut("tbody","").children(ut("tr",`${gt}-theme-color-placeholders`).children(...$ye.map(t=>e2.call(this,t))),...qye.map(t=>ut("tr",`${gt}-theme-colors`).children(...t.map(i=>e2.call(this,i)))),ut("tr",`${gt}-standard-colors`).children(...eZe.map(t=>e2.call(this,t)))));this.el.child(e)}}class sN extends eo{constructor(e,t){const i=new Jl(e).css("height","16px").css("border-bottom",`3px solid ${t}`),a=new tZe;a.change=l=>{this.setTitle(l),this.change(l)},super(i,"auto",!1,"bottom-left",a.el)}setTitle(e){this.title.css("border-color",e),this.hide()}}const nZe=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class iZe extends eo{constructor(e){const t=new Jl("line-type");let i=0;const a=nZe.map((l,o)=>ut("div",`${gt}-item state ${e===l[0]?"checked":""}`).on("click",()=>{a[i].toggle("checked"),a[o].toggle("checked"),i=o,this.hide(),this.change(l)}).child(ut("div",`${gt}-line-type`).html(l[1])));super(t,"auto",!1,"bottom-left",...a)}}function bL(...n){return ut("table","").child(ut("tbody","").children(...n))}function mL(n){return ut("td","").child(ut("div",`${gt}-border-palette-cell`).child(new Jl(`border-${n}`)).on("click",()=>{this.mode=n;const{mode:e,style:t,color:i}=this;this.change({mode:e,style:t,color:i})}))}class lZe{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new sN("line-color",this.color),this.ddColor.change=t=>{this.color=t},this.ddType=new iZe(this.style),this.ddType.change=([t])=>{this.style=t},this.el=ut("div",`${gt}-border-palette`);const e=bL(ut("tr","").children(ut("td",`${gt}-border-palette-left`).child(bL(ut("tr","").children(...["all","inside","horizontal","vertical","outside"].map(t=>mL.call(this,t))),ut("tr","").children(...["left","top","right","bottom","none"].map(t=>mL.call(this,t))))),ut("td",`${gt}-border-palette-right`).children(ut("div",`${gt}-toolbar-btn`).child(this.ddColor.el),ut("div",`${gt}-toolbar-btn`).child(this.ddType.el))));this.el.child(e)}}class aZe extends eo{constructor(){const e=new Jl("border-all"),t=new lZe;t.change=i=>{this.change(i),this.hide()},super(e,"auto",!1,"bottom-left",t.el)}}class rZe extends qr{constructor(){super("border")}dropdown(){return new aZe}}class Sp extends oN{element(){return super.element().child(new Jl(this.tag)).on("click",()=>this.change(this.tag))}setState(e){this.el.disabled(e)}}class oZe extends Sp{constructor(){super("clearformat")}}class sZe extends Fo{constructor(){super("paintformat")}setState(){}}class cZe extends qr{constructor(e){super("color",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new sN(e,t)}}class uZe extends qr{constructor(e){super("bgcolor",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new sN(e,t)}}class dZe extends eo{constructor(){const e=uW.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(`${t.pt}`),this.change(t)}).child(`${t.pt}`));super("10","60px",!0,"bottom-left",...e)}}let hZe=class extends qr{constructor(){super("font-size")}getValue(e){return e.pt}dropdown(){return new dZe}};class fZe extends eo{constructor(){const e=dL.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(t.title),this.change(t)}).child(t.title));super(dL[0].title,"160px",!0,"bottom-left",...e)}}class bZe extends qr{constructor(){super("font-name")}getValue(e){return e.key}dropdown(){return new fZe}}class mZe extends eo{constructor(){let e=kd.slice(0);e.splice(2,0,{key:"divider"}),e.splice(8,0,{key:"divider"}),e=e.map(t=>{const i=ut("div",`${gt}-item`);return t.key==="divider"?i.addClass("divider"):(i.child(t.title()).on("click",()=>{this.setTitle(t.title()),this.change(t)}),t.label&&i.child(ut("div","label").html(t.label))),i}),super("Normal","220px",!0,"bottom-left",...e)}setTitle(e){for(let t=0;tut("div",`${gt}-item`).on("click",()=>{this.hide(),this.change(t)}).child(t.key));super(new Jl("formula"),"180px",!0,"bottom-left",...e)}}class ZZe extends qr{constructor(){super("formula")}getValue(e){return e.key}dropdown(){return new yZe}}class vZe extends Fo{constructor(){super("freeze")}}class WZe extends Fo{constructor(){super("merge")}setState(e,t){this.el.active(e).disabled(t)}}class GZe extends Sp{constructor(){super("redo","Ctrl+Y")}}class XZe extends Sp{constructor(){super("undo","Ctrl+Z")}}class NZe extends Sp{constructor(){super("print","Ctrl+P")}}class MZe extends Fo{constructor(){super("textwrap")}}let IZe=class extends eo{constructor(){const e=new Jl("ellipsis"),t=ut("div",`${gt}-toolbar-more`);super(e,"auto",!1,"bottom-right",t),this.moreBtns=t,this.contentEl.css("max-width","420px")}};class YZe extends qr{constructor(){super("more"),this.el.hide()}dropdown(){return new IZe}show(){this.el.show()}hide(){this.el.hide()}}function tu(){return ut("div",`${gt}-toolbar-divider`)}function wZe(){this.btns2=[],this.items.forEach(n=>{if(Array.isArray(n))n.forEach(({el:e})=>{const t=e.box(),{marginLeft:i,marginRight:a}=e.computedStyle();this.btns2.push([e,t.width+parseInt(i,10)+parseInt(a,10)])});else{const e=n.box(),{marginLeft:t,marginRight:i}=n.computedStyle();this.btns2.push([n,e.width+parseInt(t,10)+parseInt(i,10)])}})}function pL(){const{el:n,btns:e,moreEl:t,btns2:i}=this,{moreBtns:a,contentEl:l}=t.dd;n.css("width",`${this.widthFn()-60}px`);const o=n.box();let r=160,f=12;const v=[],b=[];i.forEach(([Z,p],y)=>{r+=p,y===i.length-1||r0?t.show():t.hide()}class gZe{constructor(e,t,i=!1){this.data=e,this.change=()=>{},this.widthFn=t,this.isHide=i;const a=e.defaultStyle();this.items=[[this.undoEl=new XZe,this.redoEl=new GZe,new NZe,this.paintformatEl=new sZe,this.clearformatEl=new oZe],tu(),[this.formatEl=new pZe],tu(),[this.fontEl=new bZe,this.fontSizeEl=new hZe],tu(),[this.boldEl=new Qye,this.italicEl=new Bye,this.underlineEl=new _ye,this.strikeEl=new Aye,this.textColorEl=new cZe(a.color)],tu(),[this.fillColorEl=new uZe(a.bgcolor),this.borderEl=new rZe,this.mergeEl=new WZe],tu(),[this.alignEl=new Kye(a.align),this.valignEl=new Hye(a.valign),this.textwrapEl=new MZe],tu(),[this.freezeEl=new vZe,this.autofilterEl=new Pye,this.formulaEl=new ZZe,this.moreEl=new YZe]],this.el=ut("div",`${gt}-toolbar`),this.btns=ut("div",`${gt}-toolbar-btns`),this.items.forEach(l=>{Array.isArray(l)?l.forEach(o=>{this.btns.child(o.el),o.change=(...r)=>{this.change(...r)}}):this.btns.child(l.el)}),this.el.child(this.btns),i?this.el.hide():(this.reset(),setTimeout(()=>{wZe.call(this),pL.call(this)},0),va(window,"resize",()=>{pL.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(e){this[`${e}El`].click()}resetData(e){this.data=e,this.reset()}reset(){if(this.isHide)return;const{data:e}=this,t=e.getSelectedCellStyle();this.undoEl.setState(!e.canUndo()),this.redoEl.setState(!e.canRedo()),this.mergeEl.setState(e.canUnmerge(),!e.selector.multiple()),this.autofilterEl.setState(!e.canAutofilter());const{font:i,format:a}=t;this.formatEl.setState(a),this.fontEl.setState(i.name),this.fontSizeEl.setState(i.size),this.boldEl.setState(i.bold),this.italicEl.setState(i.italic),this.underlineEl.setState(t.underline),this.strikeEl.setState(t.strike),this.textColorEl.setState(t.color),this.fillColorEl.setState(t.bgcolor),this.alignEl.setState(t.align),this.valignEl.setState(t.valign),this.textwrapEl.setState(t.textwrap),this.freezeEl.setState(e.freezeIsActive())}}class VZe{constructor(e,t,i="600px"){this.title=e,this.el=ut("div",`${gt}-modal`).css("width",i).children(ut("div",`${gt}-modal-header`).children(new Jl("close").on("click.stop",()=>this.hide()),this.title),ut("div",`${gt}-modal-content`).children(...t)).hide()}show(){this.dimmer=ut("div",`${gt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:e,height:t}=this.el.show().box(),{clientHeight:i,clientWidth:a}=document.documentElement;this.el.offset({left:(a-e)/2,top:(i-t)/3}),window.xkeydownEsc=l=>{l.keyCode===27&&this.hide()},va(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),m0(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class su{constructor(e,t){this.vchange=()=>{},this.el=ut("div",`${gt}-form-input`),this.input=ut("input","").css("width",e).on("input",i=>this.vchange(i)).attr("placeholder",t),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(e){this.input.attr("placeholder",e)}val(e){return this.input.val(e)}}class t2{constructor(e,t,i,a=o=>o,l=()=>{}){this.key=e,this.getTitle=a,this.vchange=()=>{},this.el=ut("div",`${gt}-form-select`),this.suggest=new AS(t.map(o=>({key:o,title:this.getTitle(o)})),o=>{this.itemClick(o.key),l(o.key),this.vchange(o.key)},i,this.el),this.el.children(this.itemEl=ut("div","input-text").html(this.getTitle(e)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(e){this.key=e,this.itemEl.html(this.getTitle(e))}val(e){return e!==void 0?(this.key=e,this.itemEl.html(this.getTitle(e)),this):this.key}}const LZe={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class ts{constructor(e,t,i,a){this.label="",this.rule=t,i&&(this.label=ut("label","label").css("width",`${a}px`).html(i)),this.tip=ut("div","tip").child("tip").hide(),this.input=e,this.input.vchange=()=>this.validate(),this.el=ut("div",`${gt}-form-field`).children(this.label,e.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(e){return this.input.val(e)}hint(e){this.input.hint(e)}validate(){const{input:e,rule:t,tip:i,el:a}=this,l=e.val();return t.required&&/^\s*$/.test(l)?(i.html(_i("validation.required")),a.addClass("error"),!1):(t.type||t.pattern)&&!(t.pattern||LZe[t.type]).test(l)?(i.html(_i("validation.notMatch")),a.addClass("error"),!1):(a.removeClass("error"),!0)}}const yL=100;class RZe extends VZe{constructor(){const e=new ts(new t2("cell",["cell"],"100%",v=>_i(`dataValidation.modeType.${v}`)),{required:!0},`${_i("dataValidation.range")}:`,yL),t=new ts(new su("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),i=new ts(new t2("list",["list","number","date","phone","email"],"100%",v=>_i(`dataValidation.type.${v}`),v=>this.criteriaSelected(v)),{required:!0},`${_i("dataValidation.criteria")}:`,yL),a=new ts(new t2("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",v=>_i(`dataValidation.operator.${v}`),v=>this.criteriaOperatorSelected(v)),{required:!0}).hide(),l=new ts(new su("70px","10"),{required:!0}).hide(),o=new ts(new su("70px","100"),{required:!0,type:"number"}).hide(),r=new ts(new su("120px","a,b,c"),{required:!0}),f=new ts(new su("70px","10"),{required:!0,type:"number"}).hide();super(_i("contextmenu.validation"),[ut("div",`${gt}-form-fields`).children(e.el,t.el),ut("div",`${gt}-form-fields`).children(i.el,a.el,l.el,o.el,f.el,r.el),ut("div",`${gt}-buttons`).children(new Zc("cancel").on("click",()=>this.btnClick("cancel")),new Zc("remove").on("click",()=>this.btnClick("remove")),new Zc("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=e,this.rf=t,this.cf=i,this.of=a,this.minvf=l,this.maxvf=o,this.vf=f,this.svf=r,this.change=()=>{}}showVf(e){const t=e==="date"?"2018-11-12":"10",{vf:i}=this;i.input.hint(t),i.show()}criteriaSelected(e){const{of:t,minvf:i,maxvf:a,vf:l,svf:o}=this;e==="date"||e==="number"?(t.show(),i.rule.type=e,a.rule.type=e,e==="date"?(i.hint("2018-11-12"),a.hint("2019-11-12")):(i.hint("10"),a.hint("100")),i.show(),a.show(),l.hide(),o.hide()):(e==="list"?o.show():o.hide(),l.hide(),t.hide(),i.hide(),a.hide())}criteriaOperatorSelected(e){if(!e)return;const{minvf:t,maxvf:i,vf:a}=this;if(e==="be"||e==="nbe")t.show(),i.show(),a.hide();else{const l=this.cf.val();a.rule.type=l,l==="date"?a.hint("2018-11-12"):a.hint("10"),a.show(),t.hide(),i.hide()}}btnClick(e){if(e==="cancel")this.hide();else if(e==="remove")this.change("remove"),this.hide();else if(e==="save"){const t=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let f=0;fthis.itemClick(n))}function TZe(n){const{filterbEl:e,filterValues:t}=this;e.html(""),Object.keys(n).forEach((a,l)=>{const o=n[a],r=t.includes(a)?"checked":"";e.child(ut("div",`${gt}-item state ${r}`).on("click.stop",()=>this.filterClick(l,a)).children(a===""?_i("filter.empty"):a,ut("div","label").html(`(${o})`)))})}function vL(){const{filterhEl:n,filterValues:e,values:t}=this;n.html(`${e.length} / ${t.length}`),n.checked(e.length===t.length)}class xZe{constructor(){this.filterbEl=ut("div",`${gt}-body`),this.filterhEl=ut("div",`${gt}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=ut("div",`${gt}-sort-filter`).children(this.sortAscEl=ZL.call(this,"asc"),this.sortDescEl=ZL.call(this,"desc"),lz("divider"),ut("div",`${gt}-filter`).children(this.filterhEl,this.filterbEl),ut("div",`${gt}-buttons`).children(new Zc("cancel").on("click",()=>this.btnClick("cancel")),new Zc("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(e){if(e==="ok"){const{ci:t,sort:i,filterValues:a}=this;this.ok&&this.ok(t,i,"in",a)}this.hide()}itemClick(e){this.sort=e;const{sortAscEl:t,sortDescEl:i}=this;t.checked(e==="asc"),i.checked(e==="desc")}filterClick(e,t){const{filterbEl:i,filterValues:a,values:l}=this,o=i.children();t==="all"?o.length===a.length?(this.filterValues=[],o.forEach(r=>ut(r).checked(!1))):(this.filterValues=Array.from(l),o.forEach(r=>ut(r).checked(!0))):ut(o[e]).toggle("checked")?a.push(t):a.splice(a.findIndex(f=>f===t),1),vL.call(this)}set(e,t,i,a){this.ci=e;const{sortAscEl:l,sortDescEl:o}=this;a!==null?(this.sort=a.order,l.checked(a.asc()),o.checked(a.desc())):(this.sortDesc=null,l.checked(!1),o.checked(!1)),this.values=Object.keys(t),this.filterValues=i?Array.from(i.value):Object.keys(t),TZe.call(this,t,i),vL.call(this)}setOffset(e){this.el.offset(e).show();let t=1;_h(this.el,()=>{t<=0&&this.hide(),t-=1})}show(){this.el.show()}hide(){this.el.hide(),ed(this.el)}}function az(n,e){const t=ut("div",`${gt}-toast`),i=ut("div",`${gt}-dimmer active`),a=()=>{document.body.removeChild(t.el),document.body.removeChild(i.el)};t.children(ut("div",`${gt}-toast-header`).children(new Jl("close").on("click.stop",()=>a()),n),ut("div",`${gt}-toast-content`).html(e)),document.body.appendChild(t.el),document.body.appendChild(i.el);const{width:l,height:o}=t.box(),{clientHeight:r,clientWidth:f}=document.documentElement;t.offset({left:(f-l)/2,top:(r-o)/3})}function n2(n,e){let t;return(...i)=>{const a=this,l=i;t||(t=setTimeout(()=>{t=null,n.apply(a,l)},e))}}function CZe(){const{data:n,verticalScrollbar:e,horizontalScrollbar:t}=this,{l:i,t:a,left:l,top:o,width:r,height:f}=n.getSelectedRect(),v=this.getTableOffset();if(Math.abs(l)+r>v.width)t.move({left:i+r-v.width});else{const b=n.freezeTotalWidth();lv.height)e.move({top:a+f-v.height-1});else{const b=n.freezeTotalHeight();o0&&(r-=1):e==="right"?(v!==r&&(r=v),r0&&(o-=1):e==="down"?(f!==o&&(o=f),of.indexWidth&&t>r.height){i.hide(),a.hide();return}const v=l.box(),b=o.getCellRectByXY(n.offsetX,n.offsetY);b.ri>=0&&b.ci===-1?(b.width=f.indexWidth,i.show(b,{width:v.width}),r.isHide(b.ri-1)?i.showUnhide(b.ri):i.hideUnhide()):i.hide(),b.ri===-1&&b.ci>=0?(b.height=r.height,a.show(b,{height:v.height}),f.isHide(b.ci-1)?a.showUnhide(b.ci):a.hideUnhide()):a.hide()}function zZe(n){const{verticalScrollbar:e,horizontalScrollbar:t,data:i}=this,{top:a}=e.scroll(),{left:l}=t.scroll(),{rows:o,cols:r}=i,{deltaY:f,deltaX:v}=n,b=(N,G)=>{let d=N,u=0;do u=G(d),d+=1;while(u<=0);return u},Z=N=>{if(N>0){const G=i.scroll.ri+1;if(Go.getHeight(u));e.move({top:a+d-1})}}else{const G=i.scroll.ri-1;if(G>=0){const d=b(G,u=>o.getHeight(u));e.move({top:G===0?0:a-d})}}},p=N=>{if(N>0){const G=i.scroll.ci+1;if(Gr.getWidth(u));t.move({left:l+d-1})}}else{const G=i.scroll.ci-1;if(G>=0){const d=b(G,u=>r.getWidth(u));t.move({left:G===0?0:l-d})}}},y=Math.abs(f),X=Math.abs(v),m=Math.max(y,X);/Firefox/i.test(window.navigator.userAgent)&&n2(Z(n.detail),50),m===X&&n2(p(v),50),m===y&&n2(Z(f),50)}function kZe(n,e){const{verticalScrollbar:t,horizontalScrollbar:i}=this,{top:a}=t.scroll(),{left:l}=i.scroll();n==="left"||n==="right"?i.move({left:l-e}):(n==="up"||n==="down")&&t.move({top:a-e})}function cN(){const{data:n,verticalScrollbar:e}=this,{height:t}=this.getTableOffset(),i=n.exceptRowTotalHeight(0,-1);e.set(t,n.rows.totalHeight()-i)}function uN(){const{data:n,horizontalScrollbar:e}=this,{width:t}=this.getTableOffset();n&&e.set(t,n.cols.totalWidth())}function FZe(){const{selector:n,data:e,editor:t}=this,[i,a]=e.freeze;if(i>0||a>0){const l=e.freezeTotalWidth(),o=e.freezeTotalHeight();t.setFreezeLengths(l,o)}n.resetAreaOffset()}function Za(){const{tableEl:n,overlayerEl:e,overlayerCEl:t,table:i,toolbar:a,selector:l,el:o}=this,r=this.getTableOffset(),f=this.getRect();n.attr(f),e.offset(f),t.offset(r),o.css("width",`${f.width}px`),cN.call(this),uN.call(this),FZe.call(this),i.render(),a.reset(),l.reset()}function $h(){const{data:n,selector:e}=this;n.clearClipboard(),e.hideClipboard()}function hW(){const{data:n,selector:e}=this;n.copy(),n.copyToSystemClipboard(),e.showClipboard()}function WL(){const{data:n,selector:e}=this;n.cut(),e.showClipboard()}function Fd(n,e){const{data:t}=this;if(t.settings.mode!=="read"){if(t.paste(n,i=>az("Tip",i)))Za.call(this);else if(e){const i=e.clipboardData.getData("text/plain");this.data.pasteFromText(i),Za.call(this)}}}function JZe(){this.data.hideRowsOrCols(),Za.call(this)}function GL(n,e){this.data.unhideRowsOrCols(n,e),Za.call(this)}function DZe(){const{data:n}=this;n.autofilter(),Za.call(this)}function OZe(){const{toolbar:n}=this;n.paintformatActive()&&(Fd.call(this,"format"),$h.call(this),n.paintformatToggle())}function XL(n){const{selector:e,data:t,table:i,sortFilter:a}=this,{offsetX:l,offsetY:o}=n,r=n.target.className===`${gt}-selector-corner`,f=t.getCellRectByXY(l,o),{left:v,top:b,width:Z,height:p}=f;let{ri:y,ci:X}=f;const{autoFilter:m}=t;if(m.includes(y,X)&&v+Z-20t.rows.getCell(G,d));a.hide(),a.set(X,N,m.getFilter(X),m.getSort(X)),a.setOffset({left:v,top:b+p+2});return}n.shiftKey||(r?e.showAutofill(y,X):vc.call(this,!1,y,X),KS(window,N=>{({ri:y,ci:X}=t.getCellRectByXY(N.offsetX,N.offsetY)),r?e.showAutofill(y,X):N.buttons===1&&!N.shiftKey&&vc.call(this,!0,y,X,!0,!0)},()=>{r&&e.arange&&t.settings.mode!=="read"&&t.autofill(e.arange,"all",N=>az("Tip",N))&&i.render(),e.hideAutofill(),OZe.call(this)})),!r&&n.buttons===1&&n.shiftKey&&vc.call(this,!0,y,X)}function qh(){const{editor:n,data:e}=this,t=e.getSelectedRect(),i=this.getTableOffset();let a="top";t.top>i.height/2&&(a="bottom"),n.setOffset(t,a)}function Jd(){const{editor:n,data:e}=this;e.settings.mode!=="read"&&(qh.call(this),n.setCell(e.getSelectedCell(),e.getSelectedValidator()),$h.call(this))}function jZe(n){const{data:e,table:t,selector:i}=this;e.scrolly(n,()=>{i.resetBRLAreaOffset(),qh.call(this),t.render()})}function UZe(n){const{data:e,table:t,selector:i}=this;e.scrollx(n,()=>{i.resetBRTAreaOffset(),qh.call(this),t.render()})}function EZe(n,e){const{ri:t}=n,{table:i,selector:a,data:l}=this;l.rows.setHeight(t,e),i.render(),a.resetAreaOffset(),cN.call(this),qh.call(this)}function KZe(n,e){const{ci:t}=n,{table:i,selector:a,data:l}=this;l.cols.setWidth(t,e),i.render(),a.resetAreaOffset(),uN.call(this),qh.call(this)}function i2(n,e="finished"){const{data:t,table:i}=this;if(t.settings.mode==="read")return;t.setSelectedCellText(n,e);const{ri:a,ci:l}=t.selector;e==="finished"?i.render():this.trigger("cell-edited",n,a,l)}function pm(n){const{data:e}=this;e.settings.mode!=="read"&&(n==="insert-row"?e.insert("row"):n==="delete-row"?e.delete("row"):n==="insert-column"?e.insert("column"):n==="delete-column"?e.delete("column"):n==="delete-cell"?e.deleteCell():n==="delete-cell-format"?e.deleteCell("format"):n==="delete-cell-text"?e.deleteCell("text"):n==="cell-printable"?e.setSelectedCellAttr("printable",!0):n==="cell-non-printable"?e.setSelectedCellAttr("printable",!1):n==="cell-editable"?e.setSelectedCellAttr("editable",!0):n==="cell-non-editable"&&e.setSelectedCellAttr("editable",!1),$h.call(this),Za.call(this))}function HZe(n,e){const{data:t}=this;if(n==="undo")this.undo();else if(n==="redo")this.redo();else if(n==="print")this.print.preview();else if(n==="paintformat")e===!0?hW.call(this):$h.call(this);else if(n==="clearformat")pm.call(this,"delete-cell-format");else if(n!=="link"){if(n!=="chart")if(n==="autofilter")DZe.call(this);else if(n==="freeze")if(e){const{ri:i,ci:a}=t.selector;this.freeze(i,a)}else this.freeze(0,0);else t.setSelectedCellAttr(n,e),n==="formula"&&!t.selector.multiple()&&Jd.call(this),Za.call(this)}}function PZe(n,e,t,i){this.data.setAutoFilter(n,e,t,i),Za.call(this)}function QZe(){const{selector:n,overlayerEl:e,rowResizer:t,colResizer:i,verticalScrollbar:a,horizontalScrollbar:l,editor:o,contextMenu:r,toolbar:f,modalValidation:v,sortFilter:b}=this;e.on("mousemove",Z=>{SZe.call(this,Z)}).on("mousedown",Z=>{o.clear(),r.hide(),Z.buttons===2?(this.data.xyInSelectedRect(Z.offsetX,Z.offsetY)||XL.call(this,Z),r.setPosition(Z.offsetX,Z.offsetY),Z.stopPropagation()):Z.detail===2?Jd.call(this):XL.call(this,Z)}).on("mousewheel.stop",Z=>{zZe.call(this,Z)}).on("mouseout",Z=>{const{offsetX:p,offsetY:y}=Z;y<=0&&i.hide(),p<=0&&t.hide()}),n.inputChange=Z=>{i2.call(this,Z,"input"),Jd.call(this)},tye(e.el,{move:(Z,p)=>{kZe.call(this,Z,p)}}),f.change=(Z,p)=>HZe.call(this,Z,p),b.ok=(Z,p,y,X)=>PZe.call(this,Z,p,y,X),t.finishedFn=(Z,p)=>{EZe.call(this,Z,p)},i.finishedFn=(Z,p)=>{KZe.call(this,Z,p)},t.unhideFn=Z=>{GL.call(this,"row",Z)},i.unhideFn=Z=>{GL.call(this,"col",Z)},a.moveFn=(Z,p)=>{jZe.call(this,Z,p)},l.moveFn=(Z,p)=>{UZe.call(this,Z,p)},o.change=(Z,p)=>{i2.call(this,p,Z)},v.change=(Z,...p)=>{Z==="save"?this.data.addValidation(...p):this.data.removeValidation()},r.itemClick=Z=>{Z==="validation"?v.setValue(this.data.getSelectedValidation()):Z==="copy"?hW.call(this):Z==="cut"?WL.call(this):Z==="paste"?Fd.call(this,"all"):Z==="paste-value"?Fd.call(this,"text"):Z==="paste-format"?Fd.call(this,"format"):Z==="hide"?JZe.call(this):pm.call(this,Z)},va(window,"resize",()=>{this.reload()}),va(window,"click",Z=>{this.focusing=e.contains(Z.target)}),va(window,"paste",Z=>{this.focusing&&(Fd.call(this,"all",Z),Z.preventDefault())}),va(window,"keydown",Z=>{if(!this.focusing)return;const p=Z.keyCode||Z.which,{key:y,ctrlKey:X,shiftKey:m,metaKey:N}=Z;if(X||N)switch(p){case 90:this.undo(),Z.preventDefault();break;case 89:this.redo(),Z.preventDefault();break;case 67:hW.call(this),Z.preventDefault();break;case 88:WL.call(this),Z.preventDefault();break;case 85:f.trigger("underline"),Z.preventDefault();break;case 86:break;case 37:Fr.call(this,m,"row-first"),Z.preventDefault();break;case 38:Fr.call(this,m,"col-first"),Z.preventDefault();break;case 39:Fr.call(this,m,"row-last"),Z.preventDefault();break;case 40:Fr.call(this,m,"col-last"),Z.preventDefault();break;case 32:vc.call(this,!1,-1,this.data.selector.ci,!1),Z.preventDefault();break;case 66:f.trigger("bold");break;case 73:f.trigger("italic");break}else{switch(p){case 32:m&&vc.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:r.hide(),$h.call(this);break;case 37:Fr.call(this,m,"left"),Z.preventDefault();break;case 38:Fr.call(this,m,"up"),Z.preventDefault();break;case 39:Fr.call(this,m,"right"),Z.preventDefault();break;case 40:Fr.call(this,m,"down"),Z.preventDefault();break;case 9:o.clear(),Fr.call(this,!1,m?"left":"right"),Z.preventDefault();break;case 13:o.clear(),Fr.call(this,!1,m?"up":"down"),Z.preventDefault();break;case 8:pm.call(this,"delete-cell-text"),Z.preventDefault();break}y==="Delete"?(pm.call(this,"delete-cell-text"),Z.preventDefault()):p>=65&&p<=90||p>=48&&p<=57||p>=96&&p<=105||Z.key==="="?(i2.call(this,Z.key,"input"),Jd.call(this)):p===113&&Jd.call(this)}})}class BZe{constructor(e,t){this.eventMap=nye();const{view:i,showToolbar:a,showContextmenu:l}=t.settings;this.el=ut("div",`${gt}-sheet`),this.toolbar=new gZe(t,i.width,!a),this.print=new Fye(t),e.children(this.toolbar.el,this.el,this.print.el),this.data=t,this.tableEl=ut("canvas",`${gt}-table`),this.rowResizer=new lL(!1,t.rows.height),this.colResizer=new lL(!0,t.cols.minWidth),this.verticalScrollbar=new aL(!0),this.horizontalScrollbar=new aL(!1),this.editor=new Wye(wye,()=>this.getTableOffset(),t.rows.height),this.modalValidation=new RZe,this.contextMenu=new jye(()=>this.getRect(),!l),this.selector=new aye(t),this.overlayerCEl=ut("div",`${gt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=ut("div",`${gt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new xZe,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new Sye(this.tableEl.el,t),QZe.call(this),Za.call(this),vc.call(this,!1,0,0)}on(e,t){return this.eventMap.on(e,t),this}trigger(e,...t){const{eventMap:i}=this;i.fire(e,t)}resetData(e){this.editor.clear(),this.data=e,cN.call(this),uN.call(this),this.toolbar.resetData(e),this.print.resetData(e),this.selector.resetData(e),this.table.resetData(e)}loadData(e){return this.data.setData(e),Za.call(this),this}freeze(e,t){const{data:i}=this;return i.setFreeze(e,t),Za.call(this),this}undo(){this.data.undo(),Za.call(this)}redo(){this.data.redo(),Za.call(this)}reload(){return Za.call(this),this}getRect(){const{data:e}=this;return{width:e.viewWidth(),height:e.viewHeight()}}getTableOffset(){const{rows:e,cols:t}=this.data,{width:i,height:a}=this.getRect();return{width:i-t.indexWidth,height:a-e.height,left:t.indexWidth,top:e.height}}}class AZe extends eo{constructor(e){const t=new Jl("ellipsis");super(t,"auto",!1,"top-left"),this.contentClick=e}reset(e){const t=e.map((i,a)=>ut("div",`${gt}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(a),this.hide()}).child(i));this.setContentChildren(...t)}setTitle(){}}const _Ze=[{key:"delete",title:Hn("contextmenu.deleteSheet")}];function $Ze(n){return ut("div",`${gt}-item`).child(n.title()).on("click",()=>{this.itemClick(n.key),this.hide()})}function qZe(){return _Ze.map(n=>$Ze.call(this,n))}class e2e{constructor(){this.el=ut("div",`${gt}-contextmenu`).css("width","160px").children(...qZe.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:e}=this;e.hide(),ed(e)}setOffset(e){const{el:t}=this;t.offset(e),t.show(),_h(t)}}class t2e{constructor(e=()=>{},t=()=>{},i=()=>{},a=()=>{}){this.swapFunc=t,this.updateFunc=a,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new AZe(l=>{this.clickSwap2(this.items[l])}),this.contextMenu=new e2e,this.contextMenu.itemClick=i,this.el=ut("div",`${gt}-bottombar`).children(this.contextMenu.el,this.menuEl=ut("ul",`${gt}-menu`).child(ut("li","").children(new Jl("add").on("click",()=>{e()}),ut("span","").child(this.moreEl))))}addItem(e,t){this.dataNames.push(e);const i=ut("li",t?"active":"").child(e);i.on("click",()=>{this.clickSwap2(i)}).on("contextmenu",a=>{const{offsetLeft:l,offsetHeight:o}=a.target;this.contextMenu.setOffset({left:l,bottom:o+1}),this.deleteEl=i}).on("dblclick",()=>{const a=i.html(),l=new su("auto","");l.val(a),l.input.on("blur",({target:o})=>{const{value:r}=o,f=this.dataNames.findIndex(v=>v===a);this.renameItem(f,r)}),i.html("").child(l.el),l.focus()}),t&&this.clickSwap(i),this.items.push(i),this.menuEl.child(i),this.moreEl.reset(this.dataNames)}renameItem(e,t){this.dataNames.splice(e,1,t),this.moreEl.reset(this.dataNames),this.items[e].html("").child(t),this.updateFunc(e,t)}clear(){this.items.forEach(e=>{this.menuEl.removeChild(e.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:e,deleteEl:t}=this;if(this.items.length>1){const i=this.items.findIndex(a=>a===t);if(this.items.splice(i,1),this.dataNames.splice(i,1),this.menuEl.removeChild(t.el),this.moreEl.reset(this.dataNames),e===t){const[a]=this.items;return this.activeEl=a,this.activeEl.toggle(),[i,0]}return[i,-1]}return[-1]}clickSwap2(e){const t=this.items.findIndex(i=>i===e);this.clickSwap(e),this.activeEl.toggle(),this.swapFunc(t)}clickSwap(e){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=e}}class rz{constructor(e,t={}){let i=e;this.options={showBottomBar:!0,...t},this.sheetIndex=1,this.datas=[],typeof e=="string"&&(i=document.querySelector(e)),this.bottombar=this.options.showBottomBar?new t2e(()=>{const l=this.addSheet();this.sheet.resetData(l)},l=>{const o=this.datas[l];this.sheet.resetData(o)},()=>{this.deleteSheet()},(l,o)=>{this.datas[l].name=o}):null,this.data=this.addSheet();const a=ut("div",`${gt}`).on("contextmenu",l=>l.preventDefault());i.appendChild(a.el),this.sheet=new BZe(a,this.data),this.bottombar!==null&&a.child(this.bottombar.el)}addSheet(e,t=!0){const i=e||`sheet${this.sheetIndex}`,a=new eye(i,this.options);return a.change=(...l)=>{this.sheet.trigger("change",...l)},this.datas.push(a),this.bottombar!==null&&this.bottombar.addItem(i,t),this.sheetIndex+=1,a}deleteSheet(){if(this.bottombar===null)return;const[e,t]=this.bottombar.deleteItem();e>=0&&(this.datas.splice(e,1),t>=0&&this.sheet.resetData(this.datas[t]))}loadData(e){const t=Array.isArray(e)?e:[e];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],t.length>0)for(let i=0;ie.getData())}cellText(e,t,i,a=0){return this.datas[a].setCellText(e,t,i,"finished"),this}cell(e,t,i=0){return this.datas[i].getCell(e,t)}cellStyle(e,t,i=0){return this.datas[i].getCellStyle(e,t)}reRender(){return this.sheet.table.render(),this}on(e,t){return this.sheet.on(e,t),this}validate(){const{validations:e}=this.data;return e.errors.size<=0}change(e){return this.sheet.on("change",e),this}static locale(e,t){US(e,t)}}const n2e=(n,e={})=>new rz(n,e);window&&(window.x_spreadsheet=n2e,window.x_spreadsheet.locale=(n,e)=>US(n,e));var fW={},i2e={get exports(){return fW},set exports(n){fW=n}};(function(n,e){(function(t){n.exports=t()})(function(){return function(){function t(i,a,l){function o(v,b){if(!a[v]){if(!i[v]){var Z=typeof ms=="function"&&ms;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=a[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,a,l)}return a[v].exports}for(var r=typeof ms=="function"&&ms,f=0;f2&&arguments[2]!==void 0?arguments[2]:0;if(l(this,b),!p)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof p=="string"){var X=f.decodeAddress(p);this.nativeCol=X.col+y,this.nativeColOff=0,this.nativeRow=X.row+y,this.nativeRowOff=0}else p.nativeCol!==void 0?(this.nativeCol=p.nativeCol||0,this.nativeColOff=p.nativeColOff||0,this.nativeRow=p.nativeRow||0,this.nativeRowOff=p.nativeRowOff||0):p.col!==void 0?(this.col=p.col+y,this.row=p.row+y):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=Z}return r(b,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(p){this.nativeCol=Math.floor(p),this.nativeColOff=Math.floor((p-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(p){this.nativeRow=Math.floor(p),this.nativeRowOff=Math.floor((p-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(this.worksheet.getColumn(this.nativeCol+1).width*1e4):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(this.worksheet.getRow(this.nativeRow+1).height*1e4):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(p){this.nativeCol=p.nativeCol,this.nativeColOff=p.nativeColOff,this.nativeRow=p.nativeRow,this.nativeRowOff=p.nativeRowOff}}],[{key:"asInstance",value:function(p){return p instanceof b||p==null?p:new b(p)}}]),b}();i.exports=v},{"../utils/col-cache":19}],3:[function(t,i,a){function l(x,R){if(!(x instanceof R))throw new TypeError("Cannot call a class as a function")}function o(x,R){for(var g=0;g0||this.type===x.Types.Merge}},{key:"master",get:function(){return this.type===x.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===x.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(g){if(this.type===x.Types.Merge){this._value.master.value=g;return}this._value.release(),this._value=C.create(C.getType(g),this,g)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(g){this._comment=new y(g)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return v.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var g=this._row.worksheet;return{sheetName:g.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(g){this.names=[g]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(g){var S=this,L=this.workbook.definedNames;L.removeAllNames(this.fullAddress),g.forEach(function(V){L.addEx(S.fullAddress,V)})}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(g){this._dataValidations.add(this.address,g)}},{key:"model",get:function(){var g=this._value.model;return g.style=this.style,this._comment&&(g.comment=this._comment.model),g},set:function(g){if(this._value.release(),this._value=C.create(g.type,this),this._value.model=g,g.comment)switch(g.comment.type){case"note":this._comment=y.fromModel(g.comment);break}g.style?this.style=g.style:this.style={}}}]),x}();X.Types=b.ValueType;var m=function(){function x(R){l(this,x),this.model={address:R.address,type:X.Types.Null}}return r(x,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(g){}},{key:"type",get:function(){return X.Types.Null}},{key:"effectiveType",get:function(){return X.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),N=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Number,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Number}},{key:"effectiveType",get:function(){return X.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),G=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),d=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toString",value:function(){return this.model.value.richText.map(function(g){return g.text}).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.RichText}},{key:"effectiveType",get:function(){return X.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),u=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Date,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Date}},{key:"effectiveType",get:function(){return X.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),s=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Hyperlink,text:g?g.text:void 0,hyperlink:g?g.hyperlink:void 0},g&&g.tooltip&&(this.model.tooltip=g.tooltip)}return r(x,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var g={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(g.tooltip=this.model.tooltip),g},set:function(g){this.model={text:g.text,hyperlink:g.hyperlink},g.tooltip&&(this.model.tooltip=g.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(g){this.model.text=g}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(g){this.model.hyperlink=g}},{key:"type",get:function(){return X.Types.Hyperlink}},{key:"effectiveType",get:function(){return X.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),h=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Merge,master:g?g.address:void 0},this._master=g,g&&g.addMergeRef()}return r(x,[{key:"isMergedTo",value:function(g){return g===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(g){g instanceof X?(this._master&&this._master.releaseMergeRef(),g.addMergeRef(),this._master=g):this._master.value=g}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return X.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),c=function(){function x(R,g){l(this,x),this.cell=R,this.model={address:R.address,type:X.Types.Formula,shareType:g?g.shareType:void 0,ref:g?g.ref:void 0,formula:g?g.formula:void 0,sharedFormula:g?g.sharedFormula:void 0,result:g?g.result:void 0}}return r(x,[{key:"_copyModel",value:function(g){var S={},L=function(Y){var T=g[Y];T&&(S[Y]=T)};return L("formula"),L("result"),L("ref"),L("shareType"),L("sharedFormula"),S}},{key:"validate",value:function(g){switch(C.getType(g)){case X.Types.Null:case X.Types.String:case X.Types.Number:case X.Types.Date:break;case X.Types.Hyperlink:case X.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var g=this.cell.worksheet,S=g.findCell(this.model.sharedFormula);this._translatedFormula=S&&p(S.formula,S.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(g){this.model=this._copyModel(g)}},{key:"dependencies",get:function(){var g=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),S=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:g,cells:S}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(g){this.model.formula=g}},{key:"formulaType",get:function(){return this.model.formula?b.FormulaType.Master:this.model.sharedFormula?b.FormulaType.Shared:b.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(g){this.model.result=g}},{key:"type",get:function(){return X.Types.Formula}},{key:"effectiveType",get:function(){var g=this.model.result;return g==null?b.ValueType.Null:g instanceof String||typeof g=="string"?b.ValueType.String:typeof g=="number"?b.ValueType.Number:g instanceof Date?b.ValueType.Date:g.text&&g.hyperlink?b.ValueType.Hyperlink:g.formula?b.ValueType.Formula:b.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),W=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.SharedString,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.SharedString}},{key:"effectiveType",get:function(){return X.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),M=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Boolean,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Boolean}},{key:"effectiveType",get:function(){return X.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),I=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Error,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Error}},{key:"effectiveType",get:function(){return X.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),w=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:JSON.stringify(g),rawValue:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(g){this.model.rawValue=g,this.model.value=JSON.stringify(g)}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),C={getType:function(R){return R==null?X.Types.Null:R instanceof String||typeof R=="string"?X.Types.String:typeof R=="number"?X.Types.Number:typeof R=="boolean"?X.Types.Boolean:R instanceof Date?X.Types.Date:R.text&&R.hyperlink?X.Types.Hyperlink:R.formula||R.sharedFormula?X.Types.Formula:R.richText?X.Types.RichText:R.sharedString?X.Types.SharedString:R.error?X.Types.Error:X.Types.JSON},types:[{t:X.Types.Null,f:m},{t:X.Types.Number,f:N},{t:X.Types.String,f:G},{t:X.Types.Date,f:u},{t:X.Types.Hyperlink,f:s},{t:X.Types.Formula,f:c},{t:X.Types.Merge,f:h},{t:X.Types.JSON,f:w},{t:X.Types.SharedString,f:W},{t:X.Types.RichText,f:d},{t:X.Types.Boolean,f:M},{t:X.Types.Error,f:I}].reduce(function(x,R){return x[R.t]=R.f,x},[]),create:function(R,g,S){var L=this.types[R];if(!L)throw new Error("Could not create Value of type ".concat(R));return new L(g,S)}};i.exports=X},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var m=this.style;return!(m&&(m.font||m.numFmt||m.alignment||m.border||m.fill||m.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var m=[];return this.eachCell(function(N,G){N&&N.type!==v.ValueType.Null&&(m[G]=N.value)}),m},set:function(m){var N=this;if(m){var G=this.number,d=0;m.hasOwnProperty("0")&&(d=1),m.forEach(function(u,s){N._worksheet.getCell(s+d,G).value=u})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}}],[{key:"toModel",value:function(m){var N=[],G=null;return m&&m.forEach(function(d,u){d.isDefault?G&&(G=null):!G||!d.equivalentTo(G)?(G={min:u+1,max:u+1,width:d.width!==void 0?d.width:Z,style:d.style,isCustomWidth:d.isCustomWidth,hidden:d.hidden,outlineLevel:d.outlineLevel,collapsed:d.collapsed},N.push(G)):G.max=u+1}),N.length?N:void 0}},{key:"fromModel",value:function(m,N){N=N||[];for(var G=[],d=1,u=0;uthis.bottom)&&(this.bottom=X),(!this.model.right||m>this.right)&&(this.right=m)}},{key:"expandRow",value:function(p){if(p){var y=p.dimensions,X=p.number;y&&this.expand(X,y.min,X,y.max)}}},{key:"expandToAddress",value:function(p){var y=f.decodeEx(p);this.expand(y.row,y.col,y.row,y.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(p){return!(p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName||p.bottomthis.bottom||p.rightthis.right)}},{key:"contains",value:function(p){var y=f.decodeEx(p);return this.containsEx(y)}},{key:"containsEx",value:function(p){return p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName?!1:p.row>=this.top&&p.row<=this.bottom&&p.col>=this.left&&p.col<=this.right}},{key:"forEachAddress",value:function(p){for(var y=this.left;y<=this.right;y++)for(var X=this.top;X<=this.bottom;X++)p(f.encodeAddress(X,y),X,y)}},{key:"top",get:function(){return this.model.top||1},set:function(p){this.model.top=p}},{key:"left",get:function(){return this.model.left||1},set:function(p){this.model.left=p}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(p){this.model.bottom=p}},{key:"right",get:function(){return this.model.right||1},set:function(p){this.model.right=p}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(p){this.model.sheetName=p}},{key:"_serialisedSheetName",get:function(){var p=this.model.sheetName;return p?/^[a-zA-Z0-9]*$/.test(p)?"".concat(p,"!"):"'".concat(p,"'!"):""}},{key:"tl",get:function(){return f.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(f.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return f.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(f.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),b}();i.exports=v},{"../utils/col-cache":19}],11:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m2?d-2:0),s=2;s0)for(W=c;W>=G;W--)M=this._cells[W-1],M?(I=this.getCell(W+h),I.value=M.value,I.style=M.style,I._comment=M._comment):this._cells[W+h-1]=void 0;for(W=0;WG.col)&&(m=G.col),N0?{min:m,max:N}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}},{key:"hidden",get:function(){return!!this._hidden},set:function(m){this._hidden=m}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(m){this._outlineLevel=m}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var m=[],N=0,G=0;return this._cells.forEach(function(d){if(d){var u=d.model;u&&((!N||N>d.col)&&(N=d.col),G0,"Table must be on valid row"),N(u>0,"Table must be on valid col");var s=this.width,h=this.filterHeight,c=this.tableHeight;X.autoFilterRef=f.encode(d,u,d+h-1,u+s-1),X.tableRef=f.encode(d,u,d+c-1,u+s-1),X.columns.forEach(function(W,M){N(W.name,"Column ".concat(M," must have a name")),M===0?m(W,"totalsRowLabel","Total"):(m(W,"totalsRowFunction","none"),W.totalsRowFormula=y.getFormula(W))})}},{key:"store",value:function(){var y=this,X=function(M,I){I&&Object.keys(I).forEach(function(w){M[w]=I[w]})},m=this.worksheet,N=this.table,G=N.tl,d=G.row,u=G.col,s=0;if(N.headerRow){var h=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=W.style,w=W.name,C=h.getCell(u+M);C.value=w,X(C,I)})}if(N.rows.forEach(function(W){var M=m.getRow(d+s++);W.forEach(function(I,w){var C=M.getCell(u+w);C.value=I,X(C,N.columns[w].style)})}),N.totalsRow){var c=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=c.getCell(u+M);if(M===0)I.value=W.totalsRowLabel;else{var w=y.getFormula(W);w?I.value={formula:W.totalsRowFormula,result:W.totalsRowResult}:I.value=null}X(I,W.style)})}}},{key:"load",value:function(y){var X=this,m=this.table,N=m.tl,G=N.row,d=N.col,u=0;if(m.headerRow){var s=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=s.getCell(d+W);M.value=c.name})}if(m.rows.forEach(function(c){var W=y.getRow(G+u++);c.forEach(function(M,I){var w=W.getCell(d+I);w.value=M})}),m.totalsRow){var h=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=h.getCell(d+W);if(W===0)M.value=c.totalsRowLabel;else{var I=X.getFormula(c);I&&(M.value={formula:c.totalsRowFormula,result:c.totalsRowResult})}})}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var y=f.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var X=0;X1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(y,X)}},{key:"getColumn",value:function(y){var X=this.table.columns[y];return new v(this,X,y)}},{key:"addColumn",value:function(y,X,m){this.cacheState(),m===void 0?(this.table.columns.push(y),this.table.rows.forEach(function(N,G){N.push(X[G])})):(this.table.columns.splice(m,0,y),this.table.rows.forEach(function(N,G){N.splice(m,0,X[G])}))}},{key:"removeColumns",value:function(y){var X=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(y,X),this.table.rows.forEach(function(m){m.splice(y,X)})}},{key:"_assign",value:function(y,X,m){this.cacheState(),y[X]=m}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(y){this.table=y}},{key:"ref",get:function(){return this.table.ref},set:function(y){this._assign(this.table,"ref",y)}},{key:"name",get:function(){return this.table.name},set:function(y){this.table.name=y}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(y){this.table.displayName=y}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(y){this._assign(this.table,"headerRow",y)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(y){this._assign(this.table,"totalsRow",y)}},{key:"theme",get:function(){return this.table.style.name},set:function(y){this.table.style.name=y}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(y){this.table.style.showFirstColumn=y}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(y){this.table.style.showLastColumn=y}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(y){this.table.style.showRowStripes=y}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(y){this.table.style.showColumnStripes=y}}]),Z}();i.exports=b},{"../utils/col-cache":19}],13:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m31&&console.warn("Worksheet name ".concat(m," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(m))throw new Error("Worksheet name ".concat(m," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(m))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(m));if(m=(m||"sheet".concat(G)).substring(0,31),this._worksheets.find(function(h){return h&&h.name.toLowerCase()===m.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(m));N&&(typeof N=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),N={properties:{tabColor:{argb:N}}}):(N.argb||N.theme||N.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),N={properties:{tabColor:N}}));var d=this._worksheets.reduce(function(h,c){return(c&&c.orderNo)>h?c.orderNo:h},0),u=Object.assign({},N,{id:G,name:m,orderNo:d+1,workbook:this}),s=new f(u);return this._worksheets[G]=s,s}},{key:"removeWorksheetEx",value:function(m){delete this._worksheets[m.id]}},{key:"removeWorksheet",value:function(m){var N=this.getWorksheet(m);N&&N.destroy()}},{key:"getWorksheet",value:function(m){if(m===void 0)return this._worksheets.find(Boolean);if(typeof m=="number")return this._worksheets[m];if(typeof m=="string")return this._worksheets.find(function(N){return N&&N.name===m})}},{key:"eachSheet",value:function(m){this.worksheets.forEach(function(N){m(N,N.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(m){var N=this.media.length;return this.media.push(Object.assign({},m,{type:"image"})),N}},{key:"getImage",value:function(m){return this.media[m]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new b(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new Z(this)),this._csv}},{key:"nextId",get:function(){for(var m=1;m{const f=r.cloneNode(!1);f.getContext("2d").drawImage(r,0,0),l.body.appendChild(f)}),a.print()}};const Eye=[{key:"copy",title:Hn("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:Hn("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:Hn("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:Hn("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:Hn("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:Hn("contextmenu.insertRow")},{key:"insert-column",title:Hn("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:Hn("contextmenu.deleteRow")},{key:"delete-column",title:Hn("contextmenu.deleteColumn")},{key:"delete-cell-text",title:Hn("contextmenu.deleteCellText")},{key:"hide",title:Hn("contextmenu.hide")},{key:"divider"},{key:"validation",title:Hn("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:Hn("contextmenu.cellprintable")},{key:"cell-non-printable",title:Hn("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:Hn("contextmenu.celleditable")},{key:"cell-non-editable",title:Hn("contextmenu.cellnoneditable")}];function Kye(n){return n.key==="divider"?ut("div",`${gt}-item divider`):ut("div",`${gt}-item`).on("click",()=>{this.itemClick(n.key),this.hide()}).children(n.title(),ut("div","label").child(n.label||""))}function Hye(){return Eye.map(n=>Kye.call(this,n))}let Pye=class{constructor(e,t=!1){this.menuItems=Hye.call(this),this.el=ut("div",`${gt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=e,this.itemClick=()=>{},this.isHide=t,this.setMode("range")}setMode(e){const t=this.menuItems[12];e==="row-col"?t.show():t.hide()}hide(){const{el:e}=this;e.hide(),td(e)}setPosition(e,t){if(this.isHide)return;const{el:i}=this,{width:a}=i.show().offset(),l=this.viewFn(),o=l.height/2;let r=e;l.width-e<=a&&(r-=a),i.css("left",`${r}px`),t>o?i.css("bottom",`${l.height-t}px`).css("max-height",`${t}px`).css("top","auto"):i.css("top",`${t}px`).css("max-height",`${l.height-t}px`).css("bottom","auto"),$h(i)}};function Qye(n,e){if(e.classList.contains("active"))return;const{left:t,top:i,width:a,height:l}=e.getBoundingClientRect(),o=ut("div",`${gt}-tooltip`).html(n).show();document.body.appendChild(o.el);const r=o.box();o.css("left",`${t+a/2-r.width/2}px`).css("top",`${i+l+2}px`),va(e,"mouseleave",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)}),va(e,"click",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)})}class cN{constructor(e,t,i){this.tip=_i(`toolbar.${e.replace(/-[a-z]/g,a=>a[1].toUpperCase())}`),t&&(this.tip+=` (${t})`),this.tag=e,this.shortcut=t,this.value=i,this.el=this.element(),this.change=()=>{}}element(){const{tip:e}=this;return ut("div",`${gt}-toolbar-btn`).on("mouseenter",t=>{Qye(e,t.target)}).attr("data-tooltip",e)}setState(){}}class qr extends cN{dropdown(){}getValue(e){return e}element(){const{tag:e}=this;return this.dd=this.dropdown(),this.dd.change=t=>this.change(e,this.getValue(t)),super.element().child(this.dd)}setState(e){e&&(this.value=e,this.dd.setTitle(e))}}class eo extends kp{constructor(e,t,i,a,...l){super("div",`${gt}-dropdown ${a}`),this.title=e,this.change=()=>{},this.headerClick=()=>{},typeof e=="string"?this.title=ut("div",`${gt}-dropdown-title`).child(e):i&&this.title.addClass("arrow-left"),this.contentEl=ut("div",`${gt}-dropdown-content`).css("width",t).hide(),this.setContentChildren(...l),this.headerEl=ut("div",`${gt}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,i?ut("div",`${gt}-icon arrow-right`).child(ut("div",`${gt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...e){this.contentEl.html(""),e.length>0&&this.contentEl.children(...e)}setTitle(e){this.title.html(e),this.hide()}show(){const{contentEl:e}=this;e.show(),this.parent().active(),$h(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),td(this.parent())}}function Bye(n){return ut("div",`${gt}-item`).child(new Jl(n))}class oz extends eo{constructor(e,t){const i=new Jl(`align-${t}`),a=e.map(l=>Bye(`align-${l}`).on("click",()=>{this.setTitle(l),this.change(l)}));super(i,"auto",!0,"bottom-left",...a)}setTitle(e){this.title.setName(`align-${e}`),this.hide()}}class Aye extends qr{constructor(e){super("align","",e)}dropdown(){const{value:e}=this;return new oz(["left","center","right"],e)}}class _ye extends qr{constructor(e){super("valign","",e)}dropdown(){const{value:e}=this;return new oz(["top","middle","bottom"],e)}}class Fo extends cN{element(){const{tag:e}=this;return super.element().child(new Jl(e)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(e){this.el.active(e)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class $ye extends Fo{constructor(){super("autofilter")}setState(){}}class qye extends Fo{constructor(){super("font-bold","Ctrl+B")}}class eZe extends Fo{constructor(){super("font-italic","Ctrl+I")}}class tZe extends Fo{constructor(){super("strike","Ctrl+U")}}class nZe extends Fo{constructor(){super("underline","Ctrl+U")}}const iZe=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],lZe=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],aZe=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function i2(n){return ut("td","").child(ut("div",`${gt}-color-palette-cell`).on("click.stop",()=>this.change(n)).css("background-color",n))}class rZe{constructor(){this.el=ut("div",`${gt}-color-palette`),this.change=()=>{};const e=ut("table","").children(ut("tbody","").children(ut("tr",`${gt}-theme-color-placeholders`).children(...iZe.map(t=>i2.call(this,t))),...lZe.map(t=>ut("tr",`${gt}-theme-colors`).children(...t.map(i=>i2.call(this,i)))),ut("tr",`${gt}-standard-colors`).children(...aZe.map(t=>i2.call(this,t)))));this.el.child(e)}}class uN extends eo{constructor(e,t){const i=new Jl(e).css("height","16px").css("border-bottom",`3px solid ${t}`),a=new rZe;a.change=l=>{this.setTitle(l),this.change(l)},super(i,"auto",!1,"bottom-left",a.el)}setTitle(e){this.title.css("border-color",e),this.hide()}}const oZe=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class sZe extends eo{constructor(e){const t=new Jl("line-type");let i=0;const a=oZe.map((l,o)=>ut("div",`${gt}-item state ${e===l[0]?"checked":""}`).on("click",()=>{a[i].toggle("checked"),a[o].toggle("checked"),i=o,this.hide(),this.change(l)}).child(ut("div",`${gt}-line-type`).html(l[1])));super(t,"auto",!1,"bottom-left",...a)}}function pL(...n){return ut("table","").child(ut("tbody","").children(...n))}function yL(n){return ut("td","").child(ut("div",`${gt}-border-palette-cell`).child(new Jl(`border-${n}`)).on("click",()=>{this.mode=n;const{mode:e,style:t,color:i}=this;this.change({mode:e,style:t,color:i})}))}class cZe{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new uN("line-color",this.color),this.ddColor.change=t=>{this.color=t},this.ddType=new sZe(this.style),this.ddType.change=([t])=>{this.style=t},this.el=ut("div",`${gt}-border-palette`);const e=pL(ut("tr","").children(ut("td",`${gt}-border-palette-left`).child(pL(ut("tr","").children(...["all","inside","horizontal","vertical","outside"].map(t=>yL.call(this,t))),ut("tr","").children(...["left","top","right","bottom","none"].map(t=>yL.call(this,t))))),ut("td",`${gt}-border-palette-right`).children(ut("div",`${gt}-toolbar-btn`).child(this.ddColor.el),ut("div",`${gt}-toolbar-btn`).child(this.ddType.el))));this.el.child(e)}}class uZe extends eo{constructor(){const e=new Jl("border-all"),t=new cZe;t.change=i=>{this.change(i),this.hide()},super(e,"auto",!1,"bottom-left",t.el)}}class dZe extends qr{constructor(){super("border")}dropdown(){return new uZe}}class Fp extends cN{element(){return super.element().child(new Jl(this.tag)).on("click",()=>this.change(this.tag))}setState(e){this.el.disabled(e)}}class hZe extends Fp{constructor(){super("clearformat")}}class fZe extends Fo{constructor(){super("paintformat")}setState(){}}class bZe extends qr{constructor(e){super("color",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new uN(e,t)}}class mZe extends qr{constructor(e){super("bgcolor",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new uN(e,t)}}class pZe extends eo{constructor(){const e=fW.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(`${t.pt}`),this.change(t)}).child(`${t.pt}`));super("10","60px",!0,"bottom-left",...e)}}let yZe=class extends qr{constructor(){super("font-size")}getValue(e){return e.pt}dropdown(){return new pZe}};class ZZe extends eo{constructor(){const e=fL.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(t.title),this.change(t)}).child(t.title));super(fL[0].title,"160px",!0,"bottom-left",...e)}}class vZe extends qr{constructor(){super("font-name")}getValue(e){return e.key}dropdown(){return new ZZe}}class WZe extends eo{constructor(){let e=Fd.slice(0);e.splice(2,0,{key:"divider"}),e.splice(8,0,{key:"divider"}),e=e.map(t=>{const i=ut("div",`${gt}-item`);return t.key==="divider"?i.addClass("divider"):(i.child(t.title()).on("click",()=>{this.setTitle(t.title()),this.change(t)}),t.label&&i.child(ut("div","label").html(t.label))),i}),super("Normal","220px",!0,"bottom-left",...e)}setTitle(e){for(let t=0;tut("div",`${gt}-item`).on("click",()=>{this.hide(),this.change(t)}).child(t.key));super(new Jl("formula"),"180px",!0,"bottom-left",...e)}}class NZe extends qr{constructor(){super("formula")}getValue(e){return e.key}dropdown(){return new XZe}}class MZe extends Fo{constructor(){super("freeze")}}class IZe extends Fo{constructor(){super("merge")}setState(e,t){this.el.active(e).disabled(t)}}class YZe extends Fp{constructor(){super("redo","Ctrl+Y")}}class wZe extends Fp{constructor(){super("undo","Ctrl+Z")}}class gZe extends Fp{constructor(){super("print","Ctrl+P")}}class VZe extends Fo{constructor(){super("textwrap")}}let LZe=class extends eo{constructor(){const e=new Jl("ellipsis"),t=ut("div",`${gt}-toolbar-more`);super(e,"auto",!1,"bottom-right",t),this.moreBtns=t,this.contentEl.css("max-width","420px")}};class RZe extends qr{constructor(){super("more"),this.el.hide()}dropdown(){return new LZe}show(){this.el.show()}hide(){this.el.hide()}}function nu(){return ut("div",`${gt}-toolbar-divider`)}function TZe(){this.btns2=[],this.items.forEach(n=>{if(Array.isArray(n))n.forEach(({el:e})=>{const t=e.box(),{marginLeft:i,marginRight:a}=e.computedStyle();this.btns2.push([e,t.width+parseInt(i,10)+parseInt(a,10)])});else{const e=n.box(),{marginLeft:t,marginRight:i}=n.computedStyle();this.btns2.push([n,e.width+parseInt(t,10)+parseInt(i,10)])}})}function ZL(){const{el:n,btns:e,moreEl:t,btns2:i}=this,{moreBtns:a,contentEl:l}=t.dd;n.css("width",`${this.widthFn()-60}px`);const o=n.box();let r=160,f=12;const v=[],b=[];i.forEach(([Z,p],y)=>{r+=p,y===i.length-1||r0?t.show():t.hide()}class xZe{constructor(e,t,i=!1){this.data=e,this.change=()=>{},this.widthFn=t,this.isHide=i;const a=e.defaultStyle();this.items=[[this.undoEl=new wZe,this.redoEl=new YZe,new gZe,this.paintformatEl=new fZe,this.clearformatEl=new hZe],nu(),[this.formatEl=new GZe],nu(),[this.fontEl=new vZe,this.fontSizeEl=new yZe],nu(),[this.boldEl=new qye,this.italicEl=new eZe,this.underlineEl=new nZe,this.strikeEl=new tZe,this.textColorEl=new bZe(a.color)],nu(),[this.fillColorEl=new mZe(a.bgcolor),this.borderEl=new dZe,this.mergeEl=new IZe],nu(),[this.alignEl=new Aye(a.align),this.valignEl=new _ye(a.valign),this.textwrapEl=new VZe],nu(),[this.freezeEl=new MZe,this.autofilterEl=new $ye,this.formulaEl=new NZe,this.moreEl=new RZe]],this.el=ut("div",`${gt}-toolbar`),this.btns=ut("div",`${gt}-toolbar-btns`),this.items.forEach(l=>{Array.isArray(l)?l.forEach(o=>{this.btns.child(o.el),o.change=(...r)=>{this.change(...r)}}):this.btns.child(l.el)}),this.el.child(this.btns),i?this.el.hide():(this.reset(),setTimeout(()=>{TZe.call(this),ZL.call(this)},0),va(window,"resize",()=>{ZL.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(e){this[`${e}El`].click()}resetData(e){this.data=e,this.reset()}reset(){if(this.isHide)return;const{data:e}=this,t=e.getSelectedCellStyle();this.undoEl.setState(!e.canUndo()),this.redoEl.setState(!e.canRedo()),this.mergeEl.setState(e.canUnmerge(),!e.selector.multiple()),this.autofilterEl.setState(!e.canAutofilter());const{font:i,format:a}=t;this.formatEl.setState(a),this.fontEl.setState(i.name),this.fontSizeEl.setState(i.size),this.boldEl.setState(i.bold),this.italicEl.setState(i.italic),this.underlineEl.setState(t.underline),this.strikeEl.setState(t.strike),this.textColorEl.setState(t.color),this.fillColorEl.setState(t.bgcolor),this.alignEl.setState(t.align),this.valignEl.setState(t.valign),this.textwrapEl.setState(t.textwrap),this.freezeEl.setState(e.freezeIsActive())}}class CZe{constructor(e,t,i="600px"){this.title=e,this.el=ut("div",`${gt}-modal`).css("width",i).children(ut("div",`${gt}-modal-header`).children(new Jl("close").on("click.stop",()=>this.hide()),this.title),ut("div",`${gt}-modal-content`).children(...t)).hide()}show(){this.dimmer=ut("div",`${gt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:e,height:t}=this.el.show().box(),{clientHeight:i,clientWidth:a}=document.documentElement;this.el.offset({left:(a-e)/2,top:(i-t)/3}),window.xkeydownEsc=l=>{l.keyCode===27&&this.hide()},va(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),y0(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class cu{constructor(e,t){this.vchange=()=>{},this.el=ut("div",`${gt}-form-input`),this.input=ut("input","").css("width",e).on("input",i=>this.vchange(i)).attr("placeholder",t),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(e){this.input.attr("placeholder",e)}val(e){return this.input.val(e)}}class l2{constructor(e,t,i,a=o=>o,l=()=>{}){this.key=e,this.getTitle=a,this.vchange=()=>{},this.el=ut("div",`${gt}-form-select`),this.suggest=new ez(t.map(o=>({key:o,title:this.getTitle(o)})),o=>{this.itemClick(o.key),l(o.key),this.vchange(o.key)},i,this.el),this.el.children(this.itemEl=ut("div","input-text").html(this.getTitle(e)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(e){this.key=e,this.itemEl.html(this.getTitle(e))}val(e){return e!==void 0?(this.key=e,this.itemEl.html(this.getTitle(e)),this):this.key}}const SZe={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class ts{constructor(e,t,i,a){this.label="",this.rule=t,i&&(this.label=ut("label","label").css("width",`${a}px`).html(i)),this.tip=ut("div","tip").child("tip").hide(),this.input=e,this.input.vchange=()=>this.validate(),this.el=ut("div",`${gt}-form-field`).children(this.label,e.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(e){return this.input.val(e)}hint(e){this.input.hint(e)}validate(){const{input:e,rule:t,tip:i,el:a}=this,l=e.val();return t.required&&/^\s*$/.test(l)?(i.html(_i("validation.required")),a.addClass("error"),!1):(t.type||t.pattern)&&!(t.pattern||SZe[t.type]).test(l)?(i.html(_i("validation.notMatch")),a.addClass("error"),!1):(a.removeClass("error"),!0)}}const vL=100;class zZe extends CZe{constructor(){const e=new ts(new l2("cell",["cell"],"100%",v=>_i(`dataValidation.modeType.${v}`)),{required:!0},`${_i("dataValidation.range")}:`,vL),t=new ts(new cu("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),i=new ts(new l2("list",["list","number","date","phone","email"],"100%",v=>_i(`dataValidation.type.${v}`),v=>this.criteriaSelected(v)),{required:!0},`${_i("dataValidation.criteria")}:`,vL),a=new ts(new l2("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",v=>_i(`dataValidation.operator.${v}`),v=>this.criteriaOperatorSelected(v)),{required:!0}).hide(),l=new ts(new cu("70px","10"),{required:!0}).hide(),o=new ts(new cu("70px","100"),{required:!0,type:"number"}).hide(),r=new ts(new cu("120px","a,b,c"),{required:!0}),f=new ts(new cu("70px","10"),{required:!0,type:"number"}).hide();super(_i("contextmenu.validation"),[ut("div",`${gt}-form-fields`).children(e.el,t.el),ut("div",`${gt}-form-fields`).children(i.el,a.el,l.el,o.el,f.el,r.el),ut("div",`${gt}-buttons`).children(new Zc("cancel").on("click",()=>this.btnClick("cancel")),new Zc("remove").on("click",()=>this.btnClick("remove")),new Zc("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=e,this.rf=t,this.cf=i,this.of=a,this.minvf=l,this.maxvf=o,this.vf=f,this.svf=r,this.change=()=>{}}showVf(e){const t=e==="date"?"2018-11-12":"10",{vf:i}=this;i.input.hint(t),i.show()}criteriaSelected(e){const{of:t,minvf:i,maxvf:a,vf:l,svf:o}=this;e==="date"||e==="number"?(t.show(),i.rule.type=e,a.rule.type=e,e==="date"?(i.hint("2018-11-12"),a.hint("2019-11-12")):(i.hint("10"),a.hint("100")),i.show(),a.show(),l.hide(),o.hide()):(e==="list"?o.show():o.hide(),l.hide(),t.hide(),i.hide(),a.hide())}criteriaOperatorSelected(e){if(!e)return;const{minvf:t,maxvf:i,vf:a}=this;if(e==="be"||e==="nbe")t.show(),i.show(),a.hide();else{const l=this.cf.val();a.rule.type=l,l==="date"?a.hint("2018-11-12"):a.hint("10"),a.show(),t.hide(),i.hide()}}btnClick(e){if(e==="cancel")this.hide();else if(e==="remove")this.change("remove"),this.hide();else if(e==="save"){const t=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let f=0;fthis.itemClick(n))}function kZe(n){const{filterbEl:e,filterValues:t}=this;e.html(""),Object.keys(n).forEach((a,l)=>{const o=n[a],r=t.includes(a)?"checked":"";e.child(ut("div",`${gt}-item state ${r}`).on("click.stop",()=>this.filterClick(l,a)).children(a===""?_i("filter.empty"):a,ut("div","label").html(`(${o})`)))})}function GL(){const{filterhEl:n,filterValues:e,values:t}=this;n.html(`${e.length} / ${t.length}`),n.checked(e.length===t.length)}class FZe{constructor(){this.filterbEl=ut("div",`${gt}-body`),this.filterhEl=ut("div",`${gt}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=ut("div",`${gt}-sort-filter`).children(this.sortAscEl=WL.call(this,"asc"),this.sortDescEl=WL.call(this,"desc"),sz("divider"),ut("div",`${gt}-filter`).children(this.filterhEl,this.filterbEl),ut("div",`${gt}-buttons`).children(new Zc("cancel").on("click",()=>this.btnClick("cancel")),new Zc("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(e){if(e==="ok"){const{ci:t,sort:i,filterValues:a}=this;this.ok&&this.ok(t,i,"in",a)}this.hide()}itemClick(e){this.sort=e;const{sortAscEl:t,sortDescEl:i}=this;t.checked(e==="asc"),i.checked(e==="desc")}filterClick(e,t){const{filterbEl:i,filterValues:a,values:l}=this,o=i.children();t==="all"?o.length===a.length?(this.filterValues=[],o.forEach(r=>ut(r).checked(!1))):(this.filterValues=Array.from(l),o.forEach(r=>ut(r).checked(!0))):ut(o[e]).toggle("checked")?a.push(t):a.splice(a.findIndex(f=>f===t),1),GL.call(this)}set(e,t,i,a){this.ci=e;const{sortAscEl:l,sortDescEl:o}=this;a!==null?(this.sort=a.order,l.checked(a.asc()),o.checked(a.desc())):(this.sortDesc=null,l.checked(!1),o.checked(!1)),this.values=Object.keys(t),this.filterValues=i?Array.from(i.value):Object.keys(t),kZe.call(this,t,i),GL.call(this)}setOffset(e){this.el.offset(e).show();let t=1;$h(this.el,()=>{t<=0&&this.hide(),t-=1})}show(){this.el.show()}hide(){this.el.hide(),td(this.el)}}function cz(n,e){const t=ut("div",`${gt}-toast`),i=ut("div",`${gt}-dimmer active`),a=()=>{document.body.removeChild(t.el),document.body.removeChild(i.el)};t.children(ut("div",`${gt}-toast-header`).children(new Jl("close").on("click.stop",()=>a()),n),ut("div",`${gt}-toast-content`).html(e)),document.body.appendChild(t.el),document.body.appendChild(i.el);const{width:l,height:o}=t.box(),{clientHeight:r,clientWidth:f}=document.documentElement;t.offset({left:(f-l)/2,top:(r-o)/3})}function a2(n,e){let t;return(...i)=>{const a=this,l=i;t||(t=setTimeout(()=>{t=null,n.apply(a,l)},e))}}function JZe(){const{data:n,verticalScrollbar:e,horizontalScrollbar:t}=this,{l:i,t:a,left:l,top:o,width:r,height:f}=n.getSelectedRect(),v=this.getTableOffset();if(Math.abs(l)+r>v.width)t.move({left:i+r-v.width});else{const b=n.freezeTotalWidth();lv.height)e.move({top:a+f-v.height-1});else{const b=n.freezeTotalHeight();o0&&(r-=1):e==="right"?(v!==r&&(r=v),r0&&(o-=1):e==="down"?(f!==o&&(o=f),of.indexWidth&&t>r.height){i.hide(),a.hide();return}const v=l.box(),b=o.getCellRectByXY(n.offsetX,n.offsetY);b.ri>=0&&b.ci===-1?(b.width=f.indexWidth,i.show(b,{width:v.width}),r.isHide(b.ri-1)?i.showUnhide(b.ri):i.hideUnhide()):i.hide(),b.ri===-1&&b.ci>=0?(b.height=r.height,a.show(b,{height:v.height}),f.isHide(b.ci-1)?a.showUnhide(b.ci):a.hideUnhide()):a.hide()}function OZe(n){const{verticalScrollbar:e,horizontalScrollbar:t,data:i}=this,{top:a}=e.scroll(),{left:l}=t.scroll(),{rows:o,cols:r}=i,{deltaY:f,deltaX:v}=n,b=(N,G)=>{let d=N,u=0;do u=G(d),d+=1;while(u<=0);return u},Z=N=>{if(N>0){const G=i.scroll.ri+1;if(Go.getHeight(u));e.move({top:a+d-1})}}else{const G=i.scroll.ri-1;if(G>=0){const d=b(G,u=>o.getHeight(u));e.move({top:G===0?0:a-d})}}},p=N=>{if(N>0){const G=i.scroll.ci+1;if(Gr.getWidth(u));t.move({left:l+d-1})}}else{const G=i.scroll.ci-1;if(G>=0){const d=b(G,u=>r.getWidth(u));t.move({left:G===0?0:l-d})}}},y=Math.abs(f),X=Math.abs(v),m=Math.max(y,X);/Firefox/i.test(window.navigator.userAgent)&&a2(Z(n.detail),50),m===X&&a2(p(v),50),m===y&&a2(Z(f),50)}function jZe(n,e){const{verticalScrollbar:t,horizontalScrollbar:i}=this,{top:a}=t.scroll(),{left:l}=i.scroll();n==="left"||n==="right"?i.move({left:l-e}):(n==="up"||n==="down")&&t.move({top:a-e})}function dN(){const{data:n,verticalScrollbar:e}=this,{height:t}=this.getTableOffset(),i=n.exceptRowTotalHeight(0,-1);e.set(t,n.rows.totalHeight()-i)}function hN(){const{data:n,horizontalScrollbar:e}=this,{width:t}=this.getTableOffset();n&&e.set(t,n.cols.totalWidth())}function UZe(){const{selector:n,data:e,editor:t}=this,[i,a]=e.freeze;if(i>0||a>0){const l=e.freezeTotalWidth(),o=e.freezeTotalHeight();t.setFreezeLengths(l,o)}n.resetAreaOffset()}function Za(){const{tableEl:n,overlayerEl:e,overlayerCEl:t,table:i,toolbar:a,selector:l,el:o}=this,r=this.getTableOffset(),f=this.getRect();n.attr(f),e.offset(f),t.offset(r),o.css("width",`${f.width}px`),dN.call(this),hN.call(this),UZe.call(this),i.render(),a.reset(),l.reset()}function qh(){const{data:n,selector:e}=this;n.clearClipboard(),e.hideClipboard()}function mW(){const{data:n,selector:e}=this;n.copy(),n.copyToSystemClipboard(),e.showClipboard()}function XL(){const{data:n,selector:e}=this;n.cut(),e.showClipboard()}function Jd(n,e){const{data:t}=this;if(t.settings.mode!=="read"){if(t.paste(n,i=>cz("Tip",i)))Za.call(this);else if(e){const i=e.clipboardData.getData("text/plain");this.data.pasteFromText(i),Za.call(this)}}}function EZe(){this.data.hideRowsOrCols(),Za.call(this)}function NL(n,e){this.data.unhideRowsOrCols(n,e),Za.call(this)}function KZe(){const{data:n}=this;n.autofilter(),Za.call(this)}function HZe(){const{toolbar:n}=this;n.paintformatActive()&&(Jd.call(this,"format"),qh.call(this),n.paintformatToggle())}function ML(n){const{selector:e,data:t,table:i,sortFilter:a}=this,{offsetX:l,offsetY:o}=n,r=n.target.className===`${gt}-selector-corner`,f=t.getCellRectByXY(l,o),{left:v,top:b,width:Z,height:p}=f;let{ri:y,ci:X}=f;const{autoFilter:m}=t;if(m.includes(y,X)&&v+Z-20t.rows.getCell(G,d));a.hide(),a.set(X,N,m.getFilter(X),m.getSort(X)),a.setOffset({left:v,top:b+p+2});return}n.shiftKey||(r?e.showAutofill(y,X):vc.call(this,!1,y,X),BS(window,N=>{({ri:y,ci:X}=t.getCellRectByXY(N.offsetX,N.offsetY)),r?e.showAutofill(y,X):N.buttons===1&&!N.shiftKey&&vc.call(this,!0,y,X,!0,!0)},()=>{r&&e.arange&&t.settings.mode!=="read"&&t.autofill(e.arange,"all",N=>cz("Tip",N))&&i.render(),e.hideAutofill(),HZe.call(this)})),!r&&n.buttons===1&&n.shiftKey&&vc.call(this,!0,y,X)}function ef(){const{editor:n,data:e}=this,t=e.getSelectedRect(),i=this.getTableOffset();let a="top";t.top>i.height/2&&(a="bottom"),n.setOffset(t,a)}function Dd(){const{editor:n,data:e}=this;e.settings.mode!=="read"&&(ef.call(this),n.setCell(e.getSelectedCell(),e.getSelectedValidator()),qh.call(this))}function PZe(n){const{data:e,table:t,selector:i}=this;e.scrolly(n,()=>{i.resetBRLAreaOffset(),ef.call(this),t.render()})}function QZe(n){const{data:e,table:t,selector:i}=this;e.scrollx(n,()=>{i.resetBRTAreaOffset(),ef.call(this),t.render()})}function BZe(n,e){const{ri:t}=n,{table:i,selector:a,data:l}=this;l.rows.setHeight(t,e),i.render(),a.resetAreaOffset(),dN.call(this),ef.call(this)}function AZe(n,e){const{ci:t}=n,{table:i,selector:a,data:l}=this;l.cols.setWidth(t,e),i.render(),a.resetAreaOffset(),hN.call(this),ef.call(this)}function r2(n,e="finished"){const{data:t,table:i}=this;if(t.settings.mode==="read")return;t.setSelectedCellText(n,e);const{ri:a,ci:l}=t.selector;e==="finished"?i.render():this.trigger("cell-edited",n,a,l)}function ym(n){const{data:e}=this;e.settings.mode!=="read"&&(n==="insert-row"?e.insert("row"):n==="delete-row"?e.delete("row"):n==="insert-column"?e.insert("column"):n==="delete-column"?e.delete("column"):n==="delete-cell"?e.deleteCell():n==="delete-cell-format"?e.deleteCell("format"):n==="delete-cell-text"?e.deleteCell("text"):n==="cell-printable"?e.setSelectedCellAttr("printable",!0):n==="cell-non-printable"?e.setSelectedCellAttr("printable",!1):n==="cell-editable"?e.setSelectedCellAttr("editable",!0):n==="cell-non-editable"&&e.setSelectedCellAttr("editable",!1),qh.call(this),Za.call(this))}function _Ze(n,e){const{data:t}=this;if(n==="undo")this.undo();else if(n==="redo")this.redo();else if(n==="print")this.print.preview();else if(n==="paintformat")e===!0?mW.call(this):qh.call(this);else if(n==="clearformat")ym.call(this,"delete-cell-format");else if(n!=="link"){if(n!=="chart")if(n==="autofilter")KZe.call(this);else if(n==="freeze")if(e){const{ri:i,ci:a}=t.selector;this.freeze(i,a)}else this.freeze(0,0);else t.setSelectedCellAttr(n,e),n==="formula"&&!t.selector.multiple()&&Dd.call(this),Za.call(this)}}function $Ze(n,e,t,i){this.data.setAutoFilter(n,e,t,i),Za.call(this)}function qZe(){const{selector:n,overlayerEl:e,rowResizer:t,colResizer:i,verticalScrollbar:a,horizontalScrollbar:l,editor:o,contextMenu:r,toolbar:f,modalValidation:v,sortFilter:b}=this;e.on("mousemove",Z=>{DZe.call(this,Z)}).on("mousedown",Z=>{o.clear(),r.hide(),Z.buttons===2?(this.data.xyInSelectedRect(Z.offsetX,Z.offsetY)||ML.call(this,Z),r.setPosition(Z.offsetX,Z.offsetY),Z.stopPropagation()):Z.detail===2?Dd.call(this):ML.call(this,Z)}).on("mousewheel.stop",Z=>{OZe.call(this,Z)}).on("mouseout",Z=>{const{offsetX:p,offsetY:y}=Z;y<=0&&i.hide(),p<=0&&t.hide()}),n.inputChange=Z=>{r2.call(this,Z,"input"),Dd.call(this)},rye(e.el,{move:(Z,p)=>{jZe.call(this,Z,p)}}),f.change=(Z,p)=>_Ze.call(this,Z,p),b.ok=(Z,p,y,X)=>$Ze.call(this,Z,p,y,X),t.finishedFn=(Z,p)=>{BZe.call(this,Z,p)},i.finishedFn=(Z,p)=>{AZe.call(this,Z,p)},t.unhideFn=Z=>{NL.call(this,"row",Z)},i.unhideFn=Z=>{NL.call(this,"col",Z)},a.moveFn=(Z,p)=>{PZe.call(this,Z,p)},l.moveFn=(Z,p)=>{QZe.call(this,Z,p)},o.change=(Z,p)=>{r2.call(this,p,Z)},v.change=(Z,...p)=>{Z==="save"?this.data.addValidation(...p):this.data.removeValidation()},r.itemClick=Z=>{Z==="validation"?v.setValue(this.data.getSelectedValidation()):Z==="copy"?mW.call(this):Z==="cut"?XL.call(this):Z==="paste"?Jd.call(this,"all"):Z==="paste-value"?Jd.call(this,"text"):Z==="paste-format"?Jd.call(this,"format"):Z==="hide"?EZe.call(this):ym.call(this,Z)},va(window,"resize",()=>{this.reload()}),va(window,"click",Z=>{this.focusing=e.contains(Z.target)}),va(window,"paste",Z=>{this.focusing&&(Jd.call(this,"all",Z),Z.preventDefault())}),va(window,"keydown",Z=>{if(!this.focusing)return;const p=Z.keyCode||Z.which,{key:y,ctrlKey:X,shiftKey:m,metaKey:N}=Z;if(X||N)switch(p){case 90:this.undo(),Z.preventDefault();break;case 89:this.redo(),Z.preventDefault();break;case 67:mW.call(this),Z.preventDefault();break;case 88:XL.call(this),Z.preventDefault();break;case 85:f.trigger("underline"),Z.preventDefault();break;case 86:break;case 37:Fr.call(this,m,"row-first"),Z.preventDefault();break;case 38:Fr.call(this,m,"col-first"),Z.preventDefault();break;case 39:Fr.call(this,m,"row-last"),Z.preventDefault();break;case 40:Fr.call(this,m,"col-last"),Z.preventDefault();break;case 32:vc.call(this,!1,-1,this.data.selector.ci,!1),Z.preventDefault();break;case 66:f.trigger("bold");break;case 73:f.trigger("italic");break}else{switch(p){case 32:m&&vc.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:r.hide(),qh.call(this);break;case 37:Fr.call(this,m,"left"),Z.preventDefault();break;case 38:Fr.call(this,m,"up"),Z.preventDefault();break;case 39:Fr.call(this,m,"right"),Z.preventDefault();break;case 40:Fr.call(this,m,"down"),Z.preventDefault();break;case 9:o.clear(),Fr.call(this,!1,m?"left":"right"),Z.preventDefault();break;case 13:o.clear(),Fr.call(this,!1,m?"up":"down"),Z.preventDefault();break;case 8:ym.call(this,"delete-cell-text"),Z.preventDefault();break}y==="Delete"?(ym.call(this,"delete-cell-text"),Z.preventDefault()):p>=65&&p<=90||p>=48&&p<=57||p>=96&&p<=105||Z.key==="="?(r2.call(this,Z.key,"input"),Dd.call(this)):p===113&&Dd.call(this)}})}class e2e{constructor(e,t){this.eventMap=oye();const{view:i,showToolbar:a,showContextmenu:l}=t.settings;this.el=ut("div",`${gt}-sheet`),this.toolbar=new xZe(t,i.width,!a),this.print=new Uye(t),e.children(this.toolbar.el,this.el,this.print.el),this.data=t,this.tableEl=ut("canvas",`${gt}-table`),this.rowResizer=new rL(!1,t.rows.height),this.colResizer=new rL(!0,t.cols.minWidth),this.verticalScrollbar=new oL(!0),this.horizontalScrollbar=new oL(!1),this.editor=new Iye(Tye,()=>this.getTableOffset(),t.rows.height),this.modalValidation=new zZe,this.contextMenu=new Pye(()=>this.getRect(),!l),this.selector=new uye(t),this.overlayerCEl=ut("div",`${gt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=ut("div",`${gt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new FZe,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new Dye(this.tableEl.el,t),qZe.call(this),Za.call(this),vc.call(this,!1,0,0)}on(e,t){return this.eventMap.on(e,t),this}trigger(e,...t){const{eventMap:i}=this;i.fire(e,t)}resetData(e){this.editor.clear(),this.data=e,dN.call(this),hN.call(this),this.toolbar.resetData(e),this.print.resetData(e),this.selector.resetData(e),this.table.resetData(e)}loadData(e){return this.data.setData(e),Za.call(this),this}freeze(e,t){const{data:i}=this;return i.setFreeze(e,t),Za.call(this),this}undo(){this.data.undo(),Za.call(this)}redo(){this.data.redo(),Za.call(this)}reload(){return Za.call(this),this}getRect(){const{data:e}=this;return{width:e.viewWidth(),height:e.viewHeight()}}getTableOffset(){const{rows:e,cols:t}=this.data,{width:i,height:a}=this.getRect();return{width:i-t.indexWidth,height:a-e.height,left:t.indexWidth,top:e.height}}}class t2e extends eo{constructor(e){const t=new Jl("ellipsis");super(t,"auto",!1,"top-left"),this.contentClick=e}reset(e){const t=e.map((i,a)=>ut("div",`${gt}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(a),this.hide()}).child(i));this.setContentChildren(...t)}setTitle(){}}const n2e=[{key:"delete",title:Hn("contextmenu.deleteSheet")}];function i2e(n){return ut("div",`${gt}-item`).child(n.title()).on("click",()=>{this.itemClick(n.key),this.hide()})}function l2e(){return n2e.map(n=>i2e.call(this,n))}class a2e{constructor(){this.el=ut("div",`${gt}-contextmenu`).css("width","160px").children(...l2e.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:e}=this;e.hide(),td(e)}setOffset(e){const{el:t}=this;t.offset(e),t.show(),$h(t)}}class r2e{constructor(e=()=>{},t=()=>{},i=()=>{},a=()=>{}){this.swapFunc=t,this.updateFunc=a,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new t2e(l=>{this.clickSwap2(this.items[l])}),this.contextMenu=new a2e,this.contextMenu.itemClick=i,this.el=ut("div",`${gt}-bottombar`).children(this.contextMenu.el,this.menuEl=ut("ul",`${gt}-menu`).child(ut("li","").children(new Jl("add").on("click",()=>{e()}),ut("span","").child(this.moreEl))))}addItem(e,t){this.dataNames.push(e);const i=ut("li",t?"active":"").child(e);i.on("click",()=>{this.clickSwap2(i)}).on("contextmenu",a=>{const{offsetLeft:l,offsetHeight:o}=a.target;this.contextMenu.setOffset({left:l,bottom:o+1}),this.deleteEl=i}).on("dblclick",()=>{const a=i.html(),l=new cu("auto","");l.val(a),l.input.on("blur",({target:o})=>{const{value:r}=o,f=this.dataNames.findIndex(v=>v===a);this.renameItem(f,r)}),i.html("").child(l.el),l.focus()}),t&&this.clickSwap(i),this.items.push(i),this.menuEl.child(i),this.moreEl.reset(this.dataNames)}renameItem(e,t){this.dataNames.splice(e,1,t),this.moreEl.reset(this.dataNames),this.items[e].html("").child(t),this.updateFunc(e,t)}clear(){this.items.forEach(e=>{this.menuEl.removeChild(e.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:e,deleteEl:t}=this;if(this.items.length>1){const i=this.items.findIndex(a=>a===t);if(this.items.splice(i,1),this.dataNames.splice(i,1),this.menuEl.removeChild(t.el),this.moreEl.reset(this.dataNames),e===t){const[a]=this.items;return this.activeEl=a,this.activeEl.toggle(),[i,0]}return[i,-1]}return[-1]}clickSwap2(e){const t=this.items.findIndex(i=>i===e);this.clickSwap(e),this.activeEl.toggle(),this.swapFunc(t)}clickSwap(e){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=e}}class uz{constructor(e,t={}){let i=e;this.options={showBottomBar:!0,...t},this.sheetIndex=1,this.datas=[],typeof e=="string"&&(i=document.querySelector(e)),this.bottombar=this.options.showBottomBar?new r2e(()=>{const l=this.addSheet();this.sheet.resetData(l)},l=>{const o=this.datas[l];this.sheet.resetData(o)},()=>{this.deleteSheet()},(l,o)=>{this.datas[l].name=o}):null,this.data=this.addSheet();const a=ut("div",`${gt}`).on("contextmenu",l=>l.preventDefault());i.appendChild(a.el),this.sheet=new e2e(a,this.data),this.bottombar!==null&&a.child(this.bottombar.el)}addSheet(e,t=!0){const i=e||`sheet${this.sheetIndex}`,a=new aye(i,this.options);return a.change=(...l)=>{this.sheet.trigger("change",...l)},this.datas.push(a),this.bottombar!==null&&this.bottombar.addItem(i,t),this.sheetIndex+=1,a}deleteSheet(){if(this.bottombar===null)return;const[e,t]=this.bottombar.deleteItem();e>=0&&(this.datas.splice(e,1),t>=0&&this.sheet.resetData(this.datas[t]))}loadData(e){const t=Array.isArray(e)?e:[e];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],t.length>0)for(let i=0;ie.getData())}cellText(e,t,i,a=0){return this.datas[a].setCellText(e,t,i,"finished"),this}cell(e,t,i=0){return this.datas[i].getCell(e,t)}cellStyle(e,t,i=0){return this.datas[i].getCellStyle(e,t)}reRender(){return this.sheet.table.render(),this}on(e,t){return this.sheet.on(e,t),this}validate(){const{validations:e}=this.data;return e.errors.size<=0}change(e){return this.sheet.on("change",e),this}static locale(e,t){PS(e,t)}}const o2e=(n,e={})=>new uz(n,e);window&&(window.x_spreadsheet=o2e,window.x_spreadsheet.locale=(n,e)=>PS(n,e));var pW={},s2e={get exports(){return pW},set exports(n){pW=n}};(function(n,e){(function(t){n.exports=t()})(function(){return function(){function t(i,a,l){function o(v,b){if(!a[v]){if(!i[v]){var Z=typeof ms=="function"&&ms;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=a[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,a,l)}return a[v].exports}for(var r=typeof ms=="function"&&ms,f=0;f2&&arguments[2]!==void 0?arguments[2]:0;if(l(this,b),!p)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof p=="string"){var X=f.decodeAddress(p);this.nativeCol=X.col+y,this.nativeColOff=0,this.nativeRow=X.row+y,this.nativeRowOff=0}else p.nativeCol!==void 0?(this.nativeCol=p.nativeCol||0,this.nativeColOff=p.nativeColOff||0,this.nativeRow=p.nativeRow||0,this.nativeRowOff=p.nativeRowOff||0):p.col!==void 0?(this.col=p.col+y,this.row=p.row+y):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=Z}return r(b,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(p){this.nativeCol=Math.floor(p),this.nativeColOff=Math.floor((p-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(p){this.nativeRow=Math.floor(p),this.nativeRowOff=Math.floor((p-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(this.worksheet.getColumn(this.nativeCol+1).width*1e4):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(this.worksheet.getRow(this.nativeRow+1).height*1e4):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(p){this.nativeCol=p.nativeCol,this.nativeColOff=p.nativeColOff,this.nativeRow=p.nativeRow,this.nativeRowOff=p.nativeRowOff}}],[{key:"asInstance",value:function(p){return p instanceof b||p==null?p:new b(p)}}]),b}();i.exports=v},{"../utils/col-cache":19}],3:[function(t,i,a){function l(x,R){if(!(x instanceof R))throw new TypeError("Cannot call a class as a function")}function o(x,R){for(var g=0;g0||this.type===x.Types.Merge}},{key:"master",get:function(){return this.type===x.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===x.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(g){if(this.type===x.Types.Merge){this._value.master.value=g;return}this._value.release(),this._value=C.create(C.getType(g),this,g)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(g){this._comment=new y(g)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return v.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var g=this._row.worksheet;return{sheetName:g.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(g){this.names=[g]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(g){var S=this,L=this.workbook.definedNames;L.removeAllNames(this.fullAddress),g.forEach(function(V){L.addEx(S.fullAddress,V)})}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(g){this._dataValidations.add(this.address,g)}},{key:"model",get:function(){var g=this._value.model;return g.style=this.style,this._comment&&(g.comment=this._comment.model),g},set:function(g){if(this._value.release(),this._value=C.create(g.type,this),this._value.model=g,g.comment)switch(g.comment.type){case"note":this._comment=y.fromModel(g.comment);break}g.style?this.style=g.style:this.style={}}}]),x}();X.Types=b.ValueType;var m=function(){function x(R){l(this,x),this.model={address:R.address,type:X.Types.Null}}return r(x,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(g){}},{key:"type",get:function(){return X.Types.Null}},{key:"effectiveType",get:function(){return X.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),N=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Number,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Number}},{key:"effectiveType",get:function(){return X.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),G=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),d=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toString",value:function(){return this.model.value.richText.map(function(g){return g.text}).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.RichText}},{key:"effectiveType",get:function(){return X.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),u=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Date,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Date}},{key:"effectiveType",get:function(){return X.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),s=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Hyperlink,text:g?g.text:void 0,hyperlink:g?g.hyperlink:void 0},g&&g.tooltip&&(this.model.tooltip=g.tooltip)}return r(x,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var g={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(g.tooltip=this.model.tooltip),g},set:function(g){this.model={text:g.text,hyperlink:g.hyperlink},g.tooltip&&(this.model.tooltip=g.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(g){this.model.text=g}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(g){this.model.hyperlink=g}},{key:"type",get:function(){return X.Types.Hyperlink}},{key:"effectiveType",get:function(){return X.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),h=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Merge,master:g?g.address:void 0},this._master=g,g&&g.addMergeRef()}return r(x,[{key:"isMergedTo",value:function(g){return g===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(g){g instanceof X?(this._master&&this._master.releaseMergeRef(),g.addMergeRef(),this._master=g):this._master.value=g}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return X.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),c=function(){function x(R,g){l(this,x),this.cell=R,this.model={address:R.address,type:X.Types.Formula,shareType:g?g.shareType:void 0,ref:g?g.ref:void 0,formula:g?g.formula:void 0,sharedFormula:g?g.sharedFormula:void 0,result:g?g.result:void 0}}return r(x,[{key:"_copyModel",value:function(g){var S={},L=function(Y){var T=g[Y];T&&(S[Y]=T)};return L("formula"),L("result"),L("ref"),L("shareType"),L("sharedFormula"),S}},{key:"validate",value:function(g){switch(C.getType(g)){case X.Types.Null:case X.Types.String:case X.Types.Number:case X.Types.Date:break;case X.Types.Hyperlink:case X.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var g=this.cell.worksheet,S=g.findCell(this.model.sharedFormula);this._translatedFormula=S&&p(S.formula,S.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(g){this.model=this._copyModel(g)}},{key:"dependencies",get:function(){var g=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),S=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:g,cells:S}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(g){this.model.formula=g}},{key:"formulaType",get:function(){return this.model.formula?b.FormulaType.Master:this.model.sharedFormula?b.FormulaType.Shared:b.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(g){this.model.result=g}},{key:"type",get:function(){return X.Types.Formula}},{key:"effectiveType",get:function(){var g=this.model.result;return g==null?b.ValueType.Null:g instanceof String||typeof g=="string"?b.ValueType.String:typeof g=="number"?b.ValueType.Number:g instanceof Date?b.ValueType.Date:g.text&&g.hyperlink?b.ValueType.Hyperlink:g.formula?b.ValueType.Formula:b.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),W=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.SharedString,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.SharedString}},{key:"effectiveType",get:function(){return X.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),M=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Boolean,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Boolean}},{key:"effectiveType",get:function(){return X.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),I=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Error,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Error}},{key:"effectiveType",get:function(){return X.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),w=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:JSON.stringify(g),rawValue:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(g){this.model.rawValue=g,this.model.value=JSON.stringify(g)}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),C={getType:function(R){return R==null?X.Types.Null:R instanceof String||typeof R=="string"?X.Types.String:typeof R=="number"?X.Types.Number:typeof R=="boolean"?X.Types.Boolean:R instanceof Date?X.Types.Date:R.text&&R.hyperlink?X.Types.Hyperlink:R.formula||R.sharedFormula?X.Types.Formula:R.richText?X.Types.RichText:R.sharedString?X.Types.SharedString:R.error?X.Types.Error:X.Types.JSON},types:[{t:X.Types.Null,f:m},{t:X.Types.Number,f:N},{t:X.Types.String,f:G},{t:X.Types.Date,f:u},{t:X.Types.Hyperlink,f:s},{t:X.Types.Formula,f:c},{t:X.Types.Merge,f:h},{t:X.Types.JSON,f:w},{t:X.Types.SharedString,f:W},{t:X.Types.RichText,f:d},{t:X.Types.Boolean,f:M},{t:X.Types.Error,f:I}].reduce(function(x,R){return x[R.t]=R.f,x},[]),create:function(R,g,S){var L=this.types[R];if(!L)throw new Error("Could not create Value of type ".concat(R));return new L(g,S)}};i.exports=X},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var m=this.style;return!(m&&(m.font||m.numFmt||m.alignment||m.border||m.fill||m.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var m=[];return this.eachCell(function(N,G){N&&N.type!==v.ValueType.Null&&(m[G]=N.value)}),m},set:function(m){var N=this;if(m){var G=this.number,d=0;m.hasOwnProperty("0")&&(d=1),m.forEach(function(u,s){N._worksheet.getCell(s+d,G).value=u})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}}],[{key:"toModel",value:function(m){var N=[],G=null;return m&&m.forEach(function(d,u){d.isDefault?G&&(G=null):!G||!d.equivalentTo(G)?(G={min:u+1,max:u+1,width:d.width!==void 0?d.width:Z,style:d.style,isCustomWidth:d.isCustomWidth,hidden:d.hidden,outlineLevel:d.outlineLevel,collapsed:d.collapsed},N.push(G)):G.max=u+1}),N.length?N:void 0}},{key:"fromModel",value:function(m,N){N=N||[];for(var G=[],d=1,u=0;uthis.bottom)&&(this.bottom=X),(!this.model.right||m>this.right)&&(this.right=m)}},{key:"expandRow",value:function(p){if(p){var y=p.dimensions,X=p.number;y&&this.expand(X,y.min,X,y.max)}}},{key:"expandToAddress",value:function(p){var y=f.decodeEx(p);this.expand(y.row,y.col,y.row,y.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(p){return!(p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName||p.bottomthis.bottom||p.rightthis.right)}},{key:"contains",value:function(p){var y=f.decodeEx(p);return this.containsEx(y)}},{key:"containsEx",value:function(p){return p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName?!1:p.row>=this.top&&p.row<=this.bottom&&p.col>=this.left&&p.col<=this.right}},{key:"forEachAddress",value:function(p){for(var y=this.left;y<=this.right;y++)for(var X=this.top;X<=this.bottom;X++)p(f.encodeAddress(X,y),X,y)}},{key:"top",get:function(){return this.model.top||1},set:function(p){this.model.top=p}},{key:"left",get:function(){return this.model.left||1},set:function(p){this.model.left=p}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(p){this.model.bottom=p}},{key:"right",get:function(){return this.model.right||1},set:function(p){this.model.right=p}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(p){this.model.sheetName=p}},{key:"_serialisedSheetName",get:function(){var p=this.model.sheetName;return p?/^[a-zA-Z0-9]*$/.test(p)?"".concat(p,"!"):"'".concat(p,"'!"):""}},{key:"tl",get:function(){return f.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(f.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return f.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(f.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),b}();i.exports=v},{"../utils/col-cache":19}],11:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m2?d-2:0),s=2;s0)for(W=c;W>=G;W--)M=this._cells[W-1],M?(I=this.getCell(W+h),I.value=M.value,I.style=M.style,I._comment=M._comment):this._cells[W+h-1]=void 0;for(W=0;WG.col)&&(m=G.col),N0?{min:m,max:N}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}},{key:"hidden",get:function(){return!!this._hidden},set:function(m){this._hidden=m}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(m){this._outlineLevel=m}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var m=[],N=0,G=0;return this._cells.forEach(function(d){if(d){var u=d.model;u&&((!N||N>d.col)&&(N=d.col),G0,"Table must be on valid row"),N(u>0,"Table must be on valid col");var s=this.width,h=this.filterHeight,c=this.tableHeight;X.autoFilterRef=f.encode(d,u,d+h-1,u+s-1),X.tableRef=f.encode(d,u,d+c-1,u+s-1),X.columns.forEach(function(W,M){N(W.name,"Column ".concat(M," must have a name")),M===0?m(W,"totalsRowLabel","Total"):(m(W,"totalsRowFunction","none"),W.totalsRowFormula=y.getFormula(W))})}},{key:"store",value:function(){var y=this,X=function(M,I){I&&Object.keys(I).forEach(function(w){M[w]=I[w]})},m=this.worksheet,N=this.table,G=N.tl,d=G.row,u=G.col,s=0;if(N.headerRow){var h=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=W.style,w=W.name,C=h.getCell(u+M);C.value=w,X(C,I)})}if(N.rows.forEach(function(W){var M=m.getRow(d+s++);W.forEach(function(I,w){var C=M.getCell(u+w);C.value=I,X(C,N.columns[w].style)})}),N.totalsRow){var c=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=c.getCell(u+M);if(M===0)I.value=W.totalsRowLabel;else{var w=y.getFormula(W);w?I.value={formula:W.totalsRowFormula,result:W.totalsRowResult}:I.value=null}X(I,W.style)})}}},{key:"load",value:function(y){var X=this,m=this.table,N=m.tl,G=N.row,d=N.col,u=0;if(m.headerRow){var s=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=s.getCell(d+W);M.value=c.name})}if(m.rows.forEach(function(c){var W=y.getRow(G+u++);c.forEach(function(M,I){var w=W.getCell(d+I);w.value=M})}),m.totalsRow){var h=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=h.getCell(d+W);if(W===0)M.value=c.totalsRowLabel;else{var I=X.getFormula(c);I&&(M.value={formula:c.totalsRowFormula,result:c.totalsRowResult})}})}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var y=f.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var X=0;X1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(y,X)}},{key:"getColumn",value:function(y){var X=this.table.columns[y];return new v(this,X,y)}},{key:"addColumn",value:function(y,X,m){this.cacheState(),m===void 0?(this.table.columns.push(y),this.table.rows.forEach(function(N,G){N.push(X[G])})):(this.table.columns.splice(m,0,y),this.table.rows.forEach(function(N,G){N.splice(m,0,X[G])}))}},{key:"removeColumns",value:function(y){var X=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(y,X),this.table.rows.forEach(function(m){m.splice(y,X)})}},{key:"_assign",value:function(y,X,m){this.cacheState(),y[X]=m}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(y){this.table=y}},{key:"ref",get:function(){return this.table.ref},set:function(y){this._assign(this.table,"ref",y)}},{key:"name",get:function(){return this.table.name},set:function(y){this.table.name=y}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(y){this.table.displayName=y}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(y){this._assign(this.table,"headerRow",y)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(y){this._assign(this.table,"totalsRow",y)}},{key:"theme",get:function(){return this.table.style.name},set:function(y){this.table.style.name=y}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(y){this.table.style.showFirstColumn=y}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(y){this.table.style.showLastColumn=y}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(y){this.table.style.showRowStripes=y}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(y){this.table.style.showColumnStripes=y}}]),Z}();i.exports=b},{"../utils/col-cache":19}],13:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m31&&console.warn("Worksheet name ".concat(m," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(m))throw new Error("Worksheet name ".concat(m," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(m))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(m));if(m=(m||"sheet".concat(G)).substring(0,31),this._worksheets.find(function(h){return h&&h.name.toLowerCase()===m.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(m));N&&(typeof N=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),N={properties:{tabColor:{argb:N}}}):(N.argb||N.theme||N.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),N={properties:{tabColor:N}}));var d=this._worksheets.reduce(function(h,c){return(c&&c.orderNo)>h?c.orderNo:h},0),u=Object.assign({},N,{id:G,name:m,orderNo:d+1,workbook:this}),s=new f(u);return this._worksheets[G]=s,s}},{key:"removeWorksheetEx",value:function(m){delete this._worksheets[m.id]}},{key:"removeWorksheet",value:function(m){var N=this.getWorksheet(m);N&&N.destroy()}},{key:"getWorksheet",value:function(m){if(m===void 0)return this._worksheets.find(Boolean);if(typeof m=="number")return this._worksheets[m];if(typeof m=="string")return this._worksheets.find(function(N){return N&&N.name===m})}},{key:"eachSheet",value:function(m){this.worksheets.forEach(function(N){m(N,N.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(m){var N=this.media.length;return this.media.push(Object.assign({},m,{type:"image"})),N}},{key:"getImage",value:function(m){return this.media[m]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new b(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new Z(this)),this._csv}},{key:"nextId",get:function(){for(var m=1;mx.length)&&(R=x.length);for(var g=0,S=new Array(R);gthis._columns.length)for(var L=this._columns.length+1;L<=g;)this._columns.push(new h(this,L++));return this._columns[g-1]}},{key:"spliceColumns",value:function(g,S){for(var L=this,V=this._rows,Y=V.length,T=arguments.length,J=new Array(T>2?T-2:0),U=2;U0)for(var K=function(pe){var re=[g,S];J.forEach(function(E){re.push(E[pe]||null)});var _=L.getRow(pe+1);_.splice.apply(_,re)},H=0;H0)for(var oe=O;oe>=F;oe--)this.getColumn(oe+k).defn=this.getColumn(oe).defn;for(var se=g;se1&&arguments[1]!==void 0?arguments[1]:"n",L=this._nextRow,V=this.getRow(L);return V.values=g,this._setStyleOption(L,S[0]==="i"?S:"n"),V}},{key:"addRows",value:function(g){var S=this,L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"n",V=[];return g.forEach(function(Y){V.push(S.addRow(Y,L))}),V}},{key:"insertRow",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";return this.spliceRows(g,0,S),this._setStyleOption(g,L),this.getRow(g)}},{key:"insertRows",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";if(this.spliceRows.apply(this,[g,0].concat(f(S))),L!=="n")for(var V=0;V1&&arguments[1]!==void 0?arguments[1]:"n";S[0]==="o"&&this.findRow(g+1)!==void 0?this._copyStyle(g+1,g,S[1]==="+"):S[0]==="i"&&this.findRow(g-1)!==void 0&&this._copyStyle(g-1,g,S[1]==="+")}},{key:"_copyStyle",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,V=this.getRow(g),Y=this.getRow(S);Y.style=Object.freeze(o({},V.style)),V.eachCell({includeEmpty:L},function(T,J){Y.getCell(J).style=Object.freeze(o({},T.style))}),Y.height=V.height}},{key:"duplicateRow",value:function(g,S){var L=this,V=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Y=this._rows[g-1],T=new Array(S).fill(Y.values);this.spliceRows.apply(this,[g+1,V?0:S].concat(f(T)));for(var J=function(H){var k=L._rows[g+H];k.style=Y.style,k.height=Y.height,Y.eachCell({includeEmpty:!0},function(F,O){k.getCell(O).style=F.style})},U=0;U2?Y-2:0),J=2;J0)for(k=H;k>=V;k--)F=this._rows[k-1],F?function(){var Q=L.getRow(k+K);Q.values=F.values,Q.style=F.style,Q.height=F.height,F.eachCell({includeEmpty:!0},function(oe,se){if(Q.getCell(se).style=oe.style,oe._value.constructor.name==="MergeValue"){var he=L.getRow(oe._row._number+U).getCell(se),pe=oe._value._master,re=L.getRow(pe._row._number+U).getCell(pe._column._number);he.merge(re)}})}():this._rows[k+K-1]=void 0;for(k=0;kg.top||Y>g.left)&&this.getCell(V,Y).merge(L,S);this._merges[L.address]=g}},{key:"_unMergeMaster",value:function(g){var S=this._merges[g.address];if(S){for(var L=S.top;L<=S.bottom;L++)for(var V=S.left;V<=S.right;V++)this.getCell(L,V).unmerge();delete this._merges[g.address]}}},{key:"unMergeCells",value:function(){for(var g=arguments.length,S=new Array(g),L=0;L3&&arguments[3]!==void 0?arguments[3]:"shared",Y=d.decode(g),T=Y.top,J=Y.left,U=Y.bottom,K=Y.right,H=K-J+1,k=d.encodeAddress(T,J),F=V==="shared",O;typeof L=="function"?O=L:Array.isArray(L)?Array.isArray(L[0])?O=function(pe,re){return L[pe-T][re-J]}:O=function(pe,re){return L[(pe-T)*H+(re-J)]}:O=function(){};for(var Q=!0,oe=T;oe<=U;oe++)for(var se=J;se<=K;se++)Q?(this.getCell(oe,se).value={shareType:V,formula:S,ref:g,result:O(oe,se)},Q=!1):this.getCell(oe,se).value=F?{sharedFormula:k,result:O(oe,se)}:O(oe,se)}},{key:"addImage",value:function(g,S){var L={type:"image",imageId:g,range:S};this._media.push(new W(this,L))}},{key:"getImages",value:function(){return this._media.filter(function(g){return g.type==="image"})}},{key:"addBackgroundImage",value:function(g){var S={type:"background",imageId:g};this._media.push(new W(this,S))}},{key:"getBackgroundImageId",value:function(){var g=this._media.find(function(S){return S.type==="background"});return g&&g.imageId}},{key:"protect",value:function(g,S){var L=this;return new Promise(function(V){L.sheetProtection={sheet:!0},S&&"spinCount"in S&&(S.spinCount=Number.isFinite(S.spinCount)?Math.round(Math.max(0,S.spinCount)):1e5),g&&(L.sheetProtection.algorithmName="SHA-512",L.sheetProtection.saltValue=w.randomBytes(16).toString("base64"),L.sheetProtection.spinCount=S&&"spinCount"in S?S.spinCount:1e5,L.sheetProtection.hashValue=w.convertPasswordToHash(g,"SHA512",L.sheetProtection.saltValue,L.sheetProtection.spinCount)),S&&(L.sheetProtection=Object.assign(L.sheetProtection,S),!g&&"spinCount"in S&&delete L.sheetProtection.spinCount),V()})}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(g){var S=new M(this,g);return this.tables[g.name]=S,S}},{key:"getTable",value:function(g){return this.tables[g]}},{key:"removeTable",value:function(g){delete this.tables[g]}},{key:"getTables",value:function(){return Object.values(this.tables)}},{key:"addConditionalFormatting",value:function(g){this.conditionalFormattings.push(g)}},{key:"removeConditionalFormatting",value:function(g){typeof g=="number"?this.conditionalFormattings.splice(g,1):g instanceof Function?this.conditionalFormattings=this.conditionalFormattings.filter(g):this.conditionalFormattings=[]}},{key:"_parseRows",value:function(g){var S=this;this._rows=[],g.rows.forEach(function(L){var V=new s(S,L.number);S._rows[V.number-1]=V,V.model=L})}},{key:"_parseMergeCells",value:function(g){var S=this;G.each(g.mergeCells,function(L){S.mergeCellsWithoutStyle(L)})}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var g=new u;return this._rows.forEach(function(S){if(S){var L=S.dimensions;L&&g.expand(S.number,L.min,S.number,L.max)}}),g}},{key:"columns",get:function(){return this._columns},set:function(g){var S=this;this._headerRowCount=g.reduce(function(Y,T){var J=T.header&&1||T.headers&&T.headers.length||0;return Math.max(Y,J)},0);var L=1,V=this._columns=[];g.forEach(function(Y){var T=new h(S,L++,!1);V.push(T),T.defn=Y})}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var g=0;return this.eachRow(function(S){g=Math.max(g,S.cellCount)}),g}},{key:"actualColumnCount",get:function(){var g=[],S=0;return this.eachRow(function(L){L.eachCell(function(V){var Y=V.col;g[Y]||(g[Y]=!0,S++)})}),S}},{key:"_lastRowNumber",get:function(){for(var g=this._rows,S=g.length;S>0&&g[S-1]===void 0;)S--;return S}},{key:"_nextRow",get:function(){return this._lastRowNumber+1}},{key:"lastRow",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:"rowCount",get:function(){return this._lastRowNumber}},{key:"actualRowCount",get:function(){var g=0;return this.eachRow(function(){g++}),g}},{key:"hasMerges",get:function(){return G.some(this._merges,Boolean)}},{key:"tabColor",get:function(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor},set:function(g){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=g}},{key:"model",get:function(){var g={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map(function(V){return V.model}),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map(function(V){return V.model}),conditionalFormattings:this.conditionalFormattings};g.cols=h.toModel(this.columns);var S=g.rows=[],L=g.dimensions=new u;return this._rows.forEach(function(V){var Y=V&&V.model;Y&&(L.expand(Y.number,Y.min,Y.number,Y.max),S.push(Y))}),g.merges=[],G.each(this._merges,function(V){g.merges.push(V.range)}),g},set:function(g){var S=this;this.name=g.name,this._columns=h.fromModel(this,g.cols),this._parseRows(g),this._parseMergeCells(g),this.dataValidations=new I(g.dataValidations),this.properties=g.properties,this.pageSetup=g.pageSetup,this.headerFooter=g.headerFooter,this.views=g.views,this.autoFilter=g.autoFilter,this._media=g.media.map(function(L){return new W(S,L)}),this.sheetProtection=g.sheetProtection,this.tables=g.tables.reduce(function(L,V){var Y=new M;return Y.model=V,L[V.name]=Y,L},{}),this.conditionalFormattings=g.conditionalFormattings}}]),x}();i.exports=C},{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(t,i,a){t("core-js/modules/es.promise"),t("core-js/modules/es.object.assign"),t("core-js/modules/es.object.keys"),t("core-js/modules/es.object.values"),t("core-js/modules/es.symbol"),t("core-js/modules/es.symbol.async-iterator"),t("core-js/modules/es.array.iterator"),t("core-js/modules/es.array.includes"),t("core-js/modules/es.array.find-index"),t("core-js/modules/es.array.find"),t("core-js/modules/es.string.from-code-point"),t("core-js/modules/es.string.includes"),t("core-js/modules/es.number.is-nan"),t("regenerator-runtime/runtime");var l={Workbook:t("./doc/workbook")},o=t("./doc/enums");Object.keys(o).forEach(function(r){l[r]=o[r]}),i.exports=l},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(t,i,a){var l=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function o(r){return typeof r=="string"?r:l?l.decode(r):r.toString()}a.bufferToString=o},{}],17:[function(t,i,a){var l=typeof TextEncoder>"u"?null:new TextEncoder("utf-8"),o=t("buffer"),r=o.Buffer;function f(v){return typeof v!="string"?v:l?r.from(l.encode(v).buffer):r.from(v)}a.stringToBuffer=f},{buffer:216}],18:[function(t,i,a){function l(Z,p){if(!(Z instanceof p))throw new TypeError("Cannot call a class as a function")}function o(Z,p){for(var y=0;yN.length)&&(G=N.length);for(var d=0,u=new Array(G);d"u"||!(Symbol.iterator in Object(N)))){var d=[],u=!0,s=!1,h=void 0;try{for(var c=N[Symbol.iterator](),W;!(u=(W=c.next()).done)&&(d.push(W.value),!(G&&d.length===G));u=!0);}catch(M){s=!0,h=M}finally{try{!u&&c.return!=null&&c.return()}finally{if(s)throw h}}return d}}function b(N){if(Array.isArray(N))return N}function Z(N,G){var d=Object.keys(N);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(N);G&&(u=u.filter(function(s){return Object.getOwnPropertyDescriptor(N,s).enumerable})),d.push.apply(d,u)}return d}function p(N){for(var G=1;G=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&G>=1){for(;W<=26;)d=this._dictionary[W-1],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=1}if(this._l2nFill<2&&G>=2){for(W=27;W<=26+26*26;)u=W-(26+1),s=u%26,h=Math.floor(u/26),d=this._dictionary[h]+this._dictionary[s],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=2}if(this._l2nFill<3&&G>=3){for(W=26+26*26+1;W<=16384;)u=W-(26*26+26+1),s=u%26,h=Math.floor(u/26)%26,c=Math.floor(u/(26*26)),d=this._dictionary[c]+this._dictionary[h]+this._dictionary[s],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=3}},l2n:function(G){if(this._l2n[G]||this._fill(G.length),!this._l2n[G])throw new Error("Out of bounds. Invalid column letter: ".concat(G));return this._l2n[G]},n2l:function(G){if(G<1||G>16384)throw new Error("".concat(G," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[G]||this._fill(this._level(G)),this._n2l[G]},_hash:{},validateAddress:function(G){if(!X.test(G))throw new Error("Invalid Address: ".concat(G));return!0},decodeAddress:function(G){var d=G.length<5&&this._hash[G];if(d)return d;for(var u=!1,s="",h=0,c=!1,W="",M=0,I=0,w;I=65&&w<=90)u=!0,s+=G[I],h=h*26+w-64;else if(w>=48&&w<=57)c=!0,W+=G[I],M=M*10+w-48;else if(c&&u&&w!==36)break;if(!u)h=void 0;else if(h>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(s));c||(M=void 0),G=s+W;var C={address:G,col:h,row:M,$col$row:"$".concat(s,"$").concat(W)};return h<=100&&M<=100&&(this._hash[G]=C,this._hash[C.$col$row]=C),C},getAddress:function(G,d){if(d){var u=this.n2l(d)+G;return this.decodeAddress(u)}return this.decodeAddress(G)},decode:function(G){var d=G.split(":");if(d.length===2){var u=this.decodeAddress(d[0]),s=this.decodeAddress(d[1]),h={top:Math.min(u.row,s.row),left:Math.min(u.col,s.col),bottom:Math.max(u.row,s.row),right:Math.max(u.col,s.col)};return h.tl=this.n2l(h.left)+h.top,h.br=this.n2l(h.right)+h.bottom,h.dimensions="".concat(h.tl,":").concat(h.br),h}return this.decodeAddress(G)},decodeEx:function(G){var d=G.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),u=d[1]||d[2],s=d[3],h=s.split(":");if(h.length>1){var c=this.decodeAddress(h[0]),W=this.decodeAddress(h[1]),M=Math.min(c.row,W.row),I=Math.min(c.col,W.col),w=Math.max(c.row,W.row),C=Math.max(c.col,W.col);return c=this.n2l(I)+M,W=this.n2l(C)+w,{top:M,left:I,bottom:w,right:C,sheetName:u,tl:{address:c,col:I,row:M,$col$row:"$".concat(this.n2l(I),"$").concat(M),sheetName:u},br:{address:W,col:C,row:w,$col$row:"$".concat(this.n2l(C),"$").concat(w),sheetName:u},dimensions:"".concat(c,":").concat(W)}}if(s.startsWith("#"))return u?{sheetName:u,error:s}:{error:s};var x=this.decodeAddress(s);return u?p({sheetName:u},x):x},encodeAddress:function(G,d){return m.n2l(d)+G},encode:function(){switch(arguments.length){case 2:return m.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(m.encodeAddress(arguments[0],arguments[1]),":").concat(m.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(G,d){var u=l(G,5),s=u[0],h=u[1],c=u[3],W=u[4],M=l(d,2),I=M[0],w=M[1];return I>=s&&I<=c&&w>=h&&w<=W}};i.exports=m},{}],20:[function(t,i,a){(function(l){var o=t("crypto"),r={hash:function(v){for(var b=o.createHash(v),Z=arguments.length,p=new Array(Z>1?Z-1:0),y=1;y3||h.length===3&&h>"XFD")return X;var M=l.l2n(h),I=parseInt(W,10);s||(M+=y.col-p.col),c||(I+=y.row-p.row);var w=(m||"")+(s||"")+l.n2l(M)+(c||"")+I;return w}return X})}i.exports={slideFormula:f}},{"./col-cache":19}],23:[function(t,i,a){(function(l,o){function r(s,h,c,W,M,I,w){try{var C=s[I](w),x=C.value}catch(R){c(R);return}C.done?h(x):Promise.resolve(x).then(W,M)}function f(s){return function(){var h=this,c=arguments;return new Promise(function(W,M){var I=s.apply(h,c);function w(x){r(I,W,M,w,C,"next",x)}function C(x){r(I,W,M,w,C,"throw",x)}w(void 0)})}}function v(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function b(s,h){for(var c=0;c=this.length?(W=this.toBuffer(),this.iRead=this.iWrite,W):(W=o.alloc(c),this.buffer.copy(W,0,this.iRead,c),this.iRead+=c,W)}},{key:"write",value:function(c,W,M){var I=Math.min(M,this.size-this.iWrite);return c.copy(this.buffer,this.iWrite,W,W+I),this.iWrite+=I,I}},{key:"length",get:function(){return this.iWrite-this.iRead}},{key:"eod",get:function(){return this.iRead===this.iWrite}},{key:"full",get:function(){return this.iWrite===this.size}}]),s}(),u=function(h){h=h||{},this.bufSize=h.bufSize||1024*1024,this.buffers=[],this.batch=h.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};y.inherits(u,p.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return o.concat(this.buffers.map(function(h){return h.toBuffer()}))}},_getWritableBuffer:function(){if(this.buffers.length){var h=this.buffers[this.buffers.length-1];if(!h.full)return h}var c=new d(this.bufSize);return this.buffers.push(c),c},_pipe:function(h){var c=this;return f(regeneratorRuntime.mark(function W(){var M;return regeneratorRuntime.wrap(function(w){for(;;)switch(w.prev=w.next){case 0:return M=function(x){return new Promise(function(R){x.write(h.toBuffer(),function(){R()})})},w.next=3,Promise.all(c.pipes.map(M));case 3:case"end":return w.stop()}},W)}))()},_writeToBuffers:function(h){for(var c=0,W=h.length;c1;)M._pipe(M.buffers.shift());x.next=29;break;case 21:if(M.corked){x.next=27;break}return x.next=24,M._pipe(w);case 24:W(),x.next=29;break;case 27:M._writeToBuffers(w),l.nextTick(W);case 29:x.next=34;break;case 31:M.paused||M.emit("data",w.toBuffer()),M._writeToBuffers(w),M.emit("readable");case 34:return x.abrupt("return",!0);case 35:case"end":return x.stop()}},I)}))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(h,c,W){var M=this,I=function(C){C?W(C):(M._flush(),M.pipes.forEach(function(x){x.end()}),M.emit("finish"))};h?this.write(h,c,I):I()},read:function(h){var c;if(h){for(c=[];h&&this.buffers.length&&!this.buffers[0].eod;){var W=this.buffers[0],M=W.read(h);h-=M.length,c.push(M),W.eod&&W.full&&this.buffers.shift()}return o.concat(c)}return c=this.buffers.map(function(I){return I.toBuffer()}).filter(Boolean),this.buffers=[],o.concat(c)},setEncoding:function(h){this.encoding=h},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(h){this.pipes.push(h),!this.paused&&this.buffers.length&&this.end()},unpipe:function(h){this.pipes=this.pipes.filter(function(c){return c!==h})},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),i.exports=u}).call(this,t("_process"),t("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(t,i,a){(function(l){function o(b,Z){if(!(b instanceof Z))throw new TypeError("Cannot call a class as a function")}function r(b,Z){for(var p=0;p=this._buf.length-4;)this._grow(this._inPos+p.length),y=this._inPos+this._buf.write(p,this._inPos,this._encoding);this._inPos=y}},{key:"addStringBuf",value:function(p){p.length&&(this._buffer=void 0,this.length+p.length>this.capacity&&this._grow(this.length+p.length),p._buf.copy(this._buf,this._inPos,0,p.length),this._inPos+=p.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),b}();i.exports=v}).call(this,t("buffer").Buffer)},{buffer:216}],25:[function(t,i,a){function l(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Z){return typeof Z}:l=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},l(v)}var o=Object.prototype.toString,r=/["&<>]/,f={each:function(b,Z){b&&(Array.isArray(b)?b.forEach(Z):Object.keys(b).forEach(function(p){Z(b[p],p)}))},some:function(b,Z){return b?Array.isArray(b)?b.some(Z):Object.keys(b).some(function(p){return Z(b[p],p)}):!1},every:function(b,Z){return b?Array.isArray(b)?b.every(Z):Object.keys(b).every(function(p){return Z(b[p],p)}):!0},map:function(b,Z){return b?Array.isArray(b)?b.map(Z):Object.keys(b).map(function(p){return Z(b[p],p)}):[]},keyBy:function(b,Z){return b.reduce(function(p,y){return p[y[Z]]=y,p},{})},isEqual:function(b,Z){var p=l(b),y=l(Z),X=Array.isArray(b),m=Array.isArray(Z);if(p!==y)return!1;switch(l(b)){case"object":return X||m?X&&m?b.length===Z.length&&b.every(function(N,G){var d=Z[G];return f.isEqual(N,d)}):!1:f.every(b,function(N,G){var d=Z[G];return f.isEqual(N,d)});default:return b===Z}},escapeHtml:function(b){var Z=r.exec(b);if(!Z)return b;for(var p="",y="",X=0,m=Z.index;m":y=">";break;default:continue}X!==m&&(p+=b.substring(X,m)),X=m+1,p+=y}return X!==m?p+b.substring(X,m):p},strcmp:function(b,Z){return bZ?1:0},isUndefined:function(b){return o.call(b)==="[object Undefined]"},isObject:function(b){return o.call(b)==="[object Object]"},deepMerge:function(){var b=arguments[0]||{},Z=arguments.length,p,y,X;function m(G,d){p=b[d],X=Array.isArray(G),f.isObject(G)||X?(X?(X=!1,y=p&&Array.isArray(p)?p:[]):y=p&&f.isObject(p)?p:{},b[d]=f.deepMerge(y,G)):f.isUndefined(G)||(b[d]=G)}for(var N=0;N&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,b={nop:function(){},promiseImmediate:function(p){return new Promise(function(y){l.setImmediate?o(function(){y(p)}):setTimeout(function(){y(p)},1)})},inherits:f,dateToExcel:function(p,y){return 25569+p.getTime()/(24*3600*1e3)-(y?1462:0)},excelToDate:function(p,y){var X=Math.round((p-25569+(y?1462:0))*24*3600*1e3);return new Date(X)},parsePath:function(p){var y=p.lastIndexOf("/");return{path:p.substring(0,y),name:p.substring(y+1)}},getRelsPath:function(p){var y=b.parsePath(p);return"".concat(y.path,"/_rels/").concat(y.name,".rels")},xmlEncode:function(p){var y=v.exec(p);if(!y)return p;for(var X="",m="",N=0,G=y.index;G=11&&d!==13)){m="";break}continue}}N!==G&&(X+=p.substring(N,G)),N=G+1,m&&(X+=m)}return N!==G?X+p.substring(N,G):X},xmlDecode:function(p){return p.replace(/&([a-z]*);/g,function(y){switch(y){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return y}})},validInt:function(p){var y=parseInt(p,10);return Number.isNaN(y)?0:y},isDateFmt:function(p){if(!p)return!1;p=p.replace(/\[[^\]]*]/g,""),p=p.replace(/"[^"]*"/g,"");var y=p.match(/[ymdhMsb]+/)!==null;return y},fs:{exists:function(p){return new Promise(function(y){r.access(p,r.constants.F_OK,function(X){y(!X)})})}},toIsoDateString:function(p){return p.toIsoString().subsstr(0,10)}};i.exports=b}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{},t("timers").setImmediate)},{fs:215,timers:521}],27:[function(t,i,a){function l(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function o(s,h){for(var c=0;c",p="",X='="',m='"',N=" ";function G(s,h,c){s.push(N),s.push(h),s.push(X),s.push(v.xmlEncode(c.toString())),s.push(m)}function d(s,h){h&&f.each(h,function(c,W){c!==void 0&&G(s,W,c)})}var u=function(){function s(){l(this,s),this._xml=[],this._stack=[],this._rollbacks=[]}return r(s,[{key:"openXml",value:function(c){var W=this._xml;W.push(" `)}},{key:"openNode",value:function(c,W){var M=this.tos,I=this._xml;M&&this.open&&I.push(Z),this._stack.push(c),I.push(b),I.push(c),d(I,W),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(c,W){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");W!==void 0&&G(this._xml,c,W)}},{key:"addAttributes",value:function(c){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");d(this._xml,c)}},{key:"writeText",value:function(c){var W=this._xml;this.open&&(W.push(Z),this.open=!1),this.leaf=!1,W.push(v.xmlEncode(c.toString()))}},{key:"writeXml",value:function(c){this.open&&(this._xml.push(Z),this.open=!1),this.leaf=!1,this._xml.push(c)}},{key:"closeNode",value:function(){var c=this._stack.pop(),W=this._xml;this.leaf?W.push(y):(W.push(p),W.push(c),W.push(Z)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(c,W,M){this.openNode(c,W),M!==void 0&&this.writeText(M),this.closeNode()}},{key:"closeAll",value:function(){for(;this._stack.length;)this.closeNode()}},{key:"addRollback",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:"commit",value:function(){this._rollbacks.pop()}},{key:"rollback",value:function(){var c=this._rollbacks.pop();this._xml.length>c.xml&&this._xml.splice(c.xml,this._xml.length-c.xml),this._stack.length>c.stack&&this._stack.splice(c.stack,this._stack.length-c.stack),this.leaf=c.leaf,this.open=c.open}},{key:"tos",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:"cursor",get:function(){return this._xml.length}},{key:"xml",get:function(){return this.closeAll(),this._xml.join("")}}]),s}();u.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},i.exports=u},{"./under-dash":25,"./utils":26}],28:[function(t,i,a){(function(l){function o(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(C){return typeof C}:o=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},o(I)}function r(I,w,C,x,R,g,S){try{var L=I[g](S),V=L.value}catch(Y){C(Y);return}L.done?w(V):Promise.resolve(V).then(x,R)}function f(I){return function(){var w=this,C=arguments;return new Promise(function(x,R){var g=I.apply(w,C);function S(V){r(g,x,R,S,L,"next",V)}function L(V){r(g,x,R,S,L,"throw",V)}S(void 0)})}}function v(I,w){if(!(I instanceof w))throw new TypeError("Cannot call a class as a function")}function b(I,w){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(I){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},d(I)}var u=t("events"),s=t("jszip"),h=t("./stream-buf"),c=t("./browser-buffer-encode"),W=c.stringToBuffer,M=function(I){p(C,I);var w=X(C);function C(x){var R;return v(this,C),R=w.call(this),R.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},x),R.zip=new s,R.stream=new h,R}return Z(C,[{key:"append",value:function(R,g){g.hasOwnProperty("base64")&&g.base64?this.zip.file(g.name,R,{base64:!0}):(l.browser&&typeof R=="string"&&(R=W(R)),this.zip.file(g.name,R))}},{key:"finalize",value:function(){var x=f(regeneratorRuntime.mark(function g(){var S;return regeneratorRuntime.wrap(function(V){for(;;)switch(V.prev=V.next){case 0:return V.next=2,this.zip.generateAsync(this.options);case 2:S=V.sent,this.stream.end(S),this.emit("finish");case 5:case"end":return V.stop()}},g,this)}));function R(){return x.apply(this,arguments)}return R}()},{key:"read",value:function(R){return this.stream.read(R)}},{key:"setEncoding",value:function(R){return this.stream.setEncoding(R)}},{key:"pause",value:function(){return this.stream.pause()}},{key:"resume",value:function(){return this.stream.resume()}},{key:"isPaused",value:function(){return this.stream.isPaused()}},{key:"pipe",value:function(R,g){return this.stream.pipe(R,g)}},{key:"unpipe",value:function(R){return this.stream.unpipe(R)}},{key:"unshift",value:function(R){return this.stream.unshift(R)}},{key:"wrap",value:function(R){return this.stream.wrap(R)}}]),C}(u.EventEmitter);i.exports={ZipWriter:M}}).call(this,t("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(t,i,a){i.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],30:[function(t,i,a){i.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],31:[function(t,i,a){function l(G,d){var u;if(typeof Symbol>"u"||G[Symbol.iterator]==null){if(Array.isArray(G)||(u=o(G))||d&&G&&typeof G.length=="number"){u&&(G=u);var s=0,h=function(){};return{s:h,n:function(){return s>=G.length?{done:!0}:{done:!1,value:G[s++]}},e:function(w){throw w},f:h}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. @@ -235,23 +235,23 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho ']`);this.ESCAPE_REGEXP=new RegExp(m)}return r(y,[{key:"shouldQuote",value:function(m,N){var G=N?this.formatterOptions.quoteHeaders:this.formatterOptions.quoteColumns;return v.default(G)?G:Array.isArray(G)?G[m]:this._headers!==null?G[this._headers[m]]:!1}},{key:"format",value:function(m,N,G){var d="".concat(b.default(m)?"":m).replace(/\0/g,""),u=this.formatterOptions;if(u.quote!==""){var s=d.indexOf(u.quote)!==-1;if(s)return this.quoteField(d.replace(this.REPLACE_REGEXP,u.escapedQuote))}var h=d.search(this.ESCAPE_REGEXP)!==-1;return h||this.shouldQuote(N,G)?this.quoteField(d):d}},{key:"quoteField",value:function(m){var N=this.formatterOptions.quote;return"".concat(N).concat(m).concat(N)}},{key:"headers",set:function(m){this._headers=m}}]),y}();a.FieldFormatter=p},{"lodash.escaperegexp":426,"lodash.isboolean":428,"lodash.isnil":431}],146:[function(t,i,a){function l(X,m){if(!(X instanceof m))throw new TypeError("Cannot call a class as a function")}function o(X,m){for(var N=0;N1&&arguments[1]!==void 0?arguments[1]:{},u=[],s=new Z.Writable({write:function(c,W,M){u.push(c),M()}});return new Promise(function(h,c){s.on("error",c).on("finish",function(){return h(l.concat(u))}),a.write(G,d).pipe(s)})},a.writeToString=function(G,d){return a.writeToBuffer(G,d).then(function(u){return u.toString()})},a.writeToPath=function(G,d,u){var s=p.createWriteStream(G,{encoding:"utf8"});return a.write(d,u).pipe(s)}}).call(this,t("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.isSyncTransform=void 0,a.isSyncTransform=function(l){return l.length===1}},{}],150:[function(t,i,a){(function(l){function o(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(w){return typeof w}:o=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},o(M)}function r(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function f(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(M){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},d(M)}Object.defineProperty(a,"__esModule",{value:!0}),a.CsvParserStream=void 0;var u=t("string_decoder"),s=t("stream"),h=t("./transforms"),c=t("./parser"),W=function(M){p(w,M);var I=X(w);function w(C){var x;return r(this,w),x=I.call(this,{objectMode:C.objectMode}),x.lines="",x.rowCount=0,x.parsedRowCount=0,x.parsedLineCount=0,x.endEmitted=!1,x.headersEmitted=!1,x.parserOptions=C,x.parser=new c.Parser(C),x.headerTransformer=new h.HeaderTransformer(C),x.decoder=new u.StringDecoder(C.encoding),x.rowTransformerValidator=new h.RowTransformerValidator,x}return v(w,[{key:"transform",value:function(x){return this.rowTransformerValidator.rowTransform=x,this}},{key:"validate",value:function(x){return this.rowTransformerValidator.rowValidator=x,this}},{key:"emit",value:function(x){var R;if(x==="end")return this.endEmitted||(this.endEmitted=!0,b(d(w.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var g=arguments.length,S=new Array(g>1?g-1:0),L=1;L=S||g.hasHitRowLimit)return R();if(g.parsedLineCount+=1,g.shouldSkipLine)return T();var J=x[Y];g.rowCount+=1,g.parsedRowCount+=1;var U=g.rowCount;return g.transformRow(J,function(K,H){if(K)return g.rowCount-=1,T(K);if(!H)return T(new Error("expected transform result"));if(!H.isValid)g.emit("data-invalid",H.row,U,H.reason);else if(H.row)return g.pushRow(H.row,T);return T()})};L(0)}},{key:"transformRow",value:function(x,R){var g=this;try{this.headerTransformer.transform(x,function(S,L){return S?R(S):L?L.isValid?L.row?g.shouldEmitRows?g.rowTransformerValidator.transformAndValidate(L.row,R):g.skipRow(R):(g.rowCount-=1,g.parsedRowCount-=1,R(null,{row:null,isValid:!0})):g.shouldEmitRows?R(null,{isValid:!1,row:x}):g.skipRow(R):R(new Error("Expected result from header transform"))})}catch(S){R(S)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(x){return this.rowCount-=1,x(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(x,R){try{this.parserOptions.objectMode?this.push(x):this.push(JSON.stringify(x)),R()}catch(g){R(g)}}},{key:"hasHitRowLimit",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:"shouldEmitRows",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:"shouldSkipLine",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}]),w}(s.Transform);a.CsvParserStream=W}).call(this,t("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(t,i,a){function l(b,Z){if(!(b instanceof Z))throw new TypeError("Cannot call a class as a function")}var o=function(b){return b&&b.__esModule?b:{default:b}};Object.defineProperty(a,"__esModule",{value:!0}),a.ParserOptions=void 0;var r=o(t("lodash.escaperegexp")),f=o(t("lodash.isnil")),v=function b(Z){l(this,b);var p;if(this.objectMode=!0,this.delimiter=",",this.ignoreEmpty=!1,this.quote='"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn="\r",this.encoding="utf8",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,Z||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=r.default(this.delimiter),this.escapeChar=(p=this.escape)!==null&&p!==void 0?p:this.quote,this.supportsComments=!f.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};a.ParserOptions=v},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(t,i,a){var l=Object.create?function(m,N,G,d){d===void 0&&(d=G),Object.defineProperty(m,d,{enumerable:!0,get:function(){return N[G]}})}:function(m,N,G,d){d===void 0&&(d=G),m[d]=N[G]},o=Object.create?function(m,N){Object.defineProperty(m,"default",{enumerable:!0,value:N})}:function(m,N){m.default=N},r=function(m){if(m&&m.__esModule)return m;var N={};if(m!=null)for(var G in m)G!=="default"&&Object.hasOwnProperty.call(m,G)&&l(N,m,G);return o(N,m),N},f=function(m,N){for(var G in m)G!=="default"&&!N.hasOwnProperty(G)&&l(N,m,G)};Object.defineProperty(a,"__esModule",{value:!0}),a.parseString=a.parseFile=a.parseStream=a.parse=void 0;var v=r(t("fs")),b=t("stream"),Z=t("./ParserOptions"),p=t("./CsvParserStream");f(t("./types"),a);var y=t("./CsvParserStream");Object.defineProperty(a,"CsvParserStream",{enumerable:!0,get:function(){return y.CsvParserStream}});var X=t("./ParserOptions");Object.defineProperty(a,"ParserOptions",{enumerable:!0,get:function(){return X.ParserOptions}}),a.parse=function(m){return new p.CsvParserStream(new Z.ParserOptions(m))},a.parseStream=function(m,N){return m.pipe(new p.CsvParserStream(new Z.ParserOptions(N)))},a.parseFile=function(m){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return v.createReadStream(m).pipe(new p.CsvParserStream(new Z.ParserOptions(N)))},a.parseString=function(m,N){var G=new b.Readable;return G.push(m),G.push(null),G.pipe(new p.CsvParserStream(new Z.ParserOptions(N)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;mthis.cursor}},{key:"nextNonSpaceToken",get:function(){var y=this.lineFromCursor,X=this.parserOptions.NEXT_TOKEN_REGEXP;if(y.search(X)===-1)return null;var m=X.exec(y);if(m==null)return null;var N=m[1],G=this.cursor+(m.index||0);return new f.Token({token:N,startCursor:G,endCursor:G+N.length-1})}},{key:"nextCharacterToken",get:function(){var y=this.cursor,X=this.lineLength;return X<=y?null:new f.Token({token:this.line[y],startCursor:y,endCursor:y})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),Z}();a.Scanner=b},{"./Token":156}],156:[function(t,i,a){function l(v,b){if(!(v instanceof b))throw new TypeError("Cannot call a class as a function")}function o(v,b){for(var Z=0;Zthis.headersLength){if(!G.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(N.length));return{row:N,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(N.length)}}return G.strictColumnHandling&&N.length1});throw new Error("Duplicate headers found ".concat(JSON.stringify(s)))}this.headers=N,this.receivedHeaders=!0,this.headersLength=((G=this.headers)===null||G===void 0?void 0:G.length)||0}}]),X}();a.HeaderTransformer=y},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(t,i,a){function l(p,y){if(!(p instanceof y))throw new TypeError("Cannot call a class as a function")}function o(p,y){for(var X=0;X>6],d=(N&32)===0;if((N&31)===31){var u=N;for(N=0;(u&128)===128;){if(u=X.readUInt8(m),X.isError(u))return u;N<<=7,N|=u&127}}else N&=31;var s=v.tag[N];return{cls:G,primitive:d,tag:N,tagStr:s}}function y(X,m,N){var G=X.readUInt8(N);if(X.isError(G))return G;if(!m&&G===128)return null;if(!(G&128))return G;var d=G&127;if(d>4)return X.error("length octect is too long");G=0;for(var u=0;u=256;h>>=8)s++;var c=o.alloc(1+1+s);c[0]=d,c[1]=128|s;for(var W=1+s,M=G.length;M>0;W--,M>>=8)c[W]=M&255;return this._createEncoderBuffer([c,G])},b.prototype._encodeStr=function(X,m){if(m==="bitstr")return this._createEncoderBuffer([X.unused|0,X.data]);if(m==="bmpstr"){for(var N=o.alloc(X.length*2),G=0;G=40)return this.reporter.error("Second objid identifier OOB");X.splice(0,2,X[0]*40+X[1])}for(var u=0,s=0;s=128;h>>=7)u++}for(var c=o.alloc(u),W=c.length-1,M=X.length-1;M>=0;M--){var I=X[M];for(c[W--]=I&127;(I>>=7)>0;)c[W--]=128|I&127}return this._createEncoderBuffer(c)};function Z(y){return y<10?"0"+y:y}b.prototype._encodeTime=function(X,m){var N,G=new Date(X);return m==="gentime"?N=[Z(G.getUTCFullYear()),Z(G.getUTCMonth()+1),Z(G.getUTCDate()),Z(G.getUTCHours()),Z(G.getUTCMinutes()),Z(G.getUTCSeconds()),"Z"].join(""):m==="utctime"?N=[Z(G.getUTCFullYear()%100),Z(G.getUTCMonth()+1),Z(G.getUTCDate()),Z(G.getUTCHours()),Z(G.getUTCMinutes()),Z(G.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+m+" time is not supported yet"),this._encodeStr(N,"octstr")},b.prototype._encodeNull=function(){return this._createEncoderBuffer("")},b.prototype._encodeInt=function(X,m){if(typeof X=="string"){if(!m)return this.reporter.error("String int or enum given, but no values map");if(!m.hasOwnProperty(X))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(X));X=m[X]}if(typeof X!="number"&&!o.isBuffer(X)){var N=X.toArray();!X.sign&&N[0]&128&&N.unshift(0),X=o.from(N)}if(o.isBuffer(X)){var G=X.length;X.length===0&&G++;var d=o.alloc(G);return X.copy(d),X.length===0&&(d[0]=0),this._createEncoderBuffer(d)}if(X<128)return this._createEncoderBuffer(X);if(X<256)return this._createEncoderBuffer([0,X]);for(var u=1,s=X;s>=256;s>>=8)u++;for(var h=new Array(u),c=h.length-1;c>=0;c--)h[c]=X&255,X>>=8;return h[0]&128&&h.unshift(0),this._createEncoderBuffer(o.from(h))},b.prototype._encodeBool=function(X){return this._createEncoderBuffer(X?255:0)},b.prototype._use=function(X,m){return typeof X=="function"&&(X=X(m)),X._getEncoder("der").tree},b.prototype._skipDefault=function(X,m,N){var G=this._baseState,d;if(G.default===null)return!1;var u=X.join();if(G.defaultBuffer===void 0&&(G.defaultBuffer=this._encodeValue(G.default,m,N).join()),u.length!==G.defaultBuffer.length)return!1;for(d=0;d=31?N.error("Multi-octet tag encoding unsupported"):(X||(G|=32),G|=f.tagClassByName[m||"universal"]<<6,G)}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(t,i,a){var l=a;l.der=t("./der"),l.pem=t("./pem")},{"./der":178,"./pem":180}],180:[function(t,i,a){var l=t("inherits"),o=t("./der");function r(f){o.call(this,f),this.enc="pem"}l(r,o),i.exports=r,r.prototype.encode=function(v,b){for(var Z=o.prototype.encode.call(this,v),p=Z.toString("base64"),y=["-----BEGIN "+b.label+"-----"],X=0;X0?L:V},b.min=function(L,V){return L.cmp(V)<0?L:V},b.prototype._init=function(L,V,Y){if(typeof L=="number")return this._initNumber(L,V,Y);if(l(L)==="object")return this._initArray(L,V,Y);V==="hex"&&(V=16),f(V===(V|0)&&V>=2&&V<=36),L=L.toString().replace(/\s+/g,"");var T=0;L[0]==="-"&&T++,V===16?this._parseHex(L,T):this._parseBase(L,V,T),L[0]==="-"&&(this.negative=1),this.strip(),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initNumber=function(L,V,Y){L<0&&(this.negative=1,L=-L),L<67108864?(this.words=[L&67108863],this.length=1):L<4503599627370496?(this.words=[L&67108863,L/67108864&67108863],this.length=2):(f(L<9007199254740992),this.words=[L&67108863,L/67108864&67108863,1],this.length=3),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initArray=function(L,V,Y){if(f(typeof L.length=="number"),L.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(L.length/3),this.words=new Array(this.length);for(var T=0;T=0;T-=3)U=L[T]|L[T-1]<<8|L[T-2]<<16,this.words[J]|=U<>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);else if(Y==="le")for(T=0,J=0;T>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);return this.strip()};function p(S,L,V){for(var Y=0,T=Math.min(S.length,V),J=L;J=49&&U<=54?Y|=U-49+10:U>=17&&U<=22?Y|=U-17+10:Y|=U&15}return Y}b.prototype._parseHex=function(L,V){this.length=Math.ceil((L.length-V)/6),this.words=new Array(this.length);for(var Y=0;Y=V;Y-=6)J=p(L,Y,Y+6),this.words[T]|=J<>>26-U&4194303,U+=24,U>=26&&(U-=26,T++);Y+6!==V&&(J=p(L,V,Y+6),this.words[T]|=J<>>26-U&4194303),this.strip()};function y(S,L,V,Y){for(var T=0,J=Math.min(S.length,V),U=L;U=49?T+=K-49+10:K>=17?T+=K-17+10:T+=K}return T}b.prototype._parseBase=function(L,V,Y){this.words=[0],this.length=1;for(var T=0,J=1;J<=67108863;J*=V)T++;T--,J=J/V|0;for(var U=L.length-Y,K=U%T,H=Math.min(U,U-K)+Y,k=0,F=Y;F1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},b.prototype.inspect=function(){return(this.red?""};var X=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],m=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(L,V){L=L||10,V=V|0||1;var Y;if(L===16||L==="hex"){Y="";for(var T=0,J=0,U=0;U>>24-T&16777215,J!==0||U!==this.length-1?Y=X[6-H.length]+H+Y:Y=H+Y,T+=2,T>=26&&(T-=26,U--)}for(J!==0&&(Y=J.toString(16)+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}if(L===(L|0)&&L>=2&&L<=36){var k=m[L],F=N[L];Y="";var O=this.clone();for(O.negative=0;!O.isZero();){var Q=O.modn(F).toString(L);O=O.idivn(F),O.isZero()?Y=Q+Y:Y=X[k-Q.length]+Q+Y}for(this.isZero()&&(Y="0"+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var L=this.words[0];return this.length===2?L+=this.words[1]*67108864:this.length===3&&this.words[2]===1?L+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-L:L},b.prototype.toJSON=function(){return this.toString(16)},b.prototype.toBuffer=function(L,V){return f(typeof Z<"u"),this.toArrayLike(Z,L,V)},b.prototype.toArray=function(L,V){return this.toArrayLike(Array,L,V)},b.prototype.toArrayLike=function(L,V,Y){var T=this.byteLength(),J=Y||Math.max(1,T);f(T<=J,"byte array longer than desired length"),f(J>0,"Requested array length <= 0"),this.strip();var U=V==="le",K=new L(J),H,k,F=this.clone();if(U){for(k=0;!F.isZero();k++)H=F.andln(255),F.iushrn(8),K[k]=H;for(;k=4096&&(Y+=13,V>>>=13),V>=64&&(Y+=7,V>>>=7),V>=8&&(Y+=4,V>>>=4),V>=2&&(Y+=2,V>>>=2),Y+V},b.prototype._zeroBits=function(L){if(L===0)return 26;var V=L,Y=0;return V&8191||(Y+=13,V>>>=13),V&127||(Y+=7,V>>>=7),V&15||(Y+=4,V>>>=4),V&3||(Y+=2,V>>>=2),V&1||Y++,Y},b.prototype.bitLength=function(){var L=this.words[this.length-1],V=this._countBits(L);return(this.length-1)*26+V};function G(S){for(var L=new Array(S.bitLength()),V=0;V>>T}return L}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var L=0,V=0;VL.length?this.clone().ior(L):L.clone().ior(this)},b.prototype.uor=function(L){return this.length>L.length?this.clone().iuor(L):L.clone().iuor(this)},b.prototype.iuand=function(L){var V;this.length>L.length?V=L:V=this;for(var Y=0;YL.length?this.clone().iand(L):L.clone().iand(this)},b.prototype.uand=function(L){return this.length>L.length?this.clone().iuand(L):L.clone().iuand(this)},b.prototype.iuxor=function(L){var V,Y;this.length>L.length?(V=this,Y=L):(V=L,Y=this);for(var T=0;TL.length?this.clone().ixor(L):L.clone().ixor(this)},b.prototype.uxor=function(L){return this.length>L.length?this.clone().iuxor(L):L.clone().iuxor(this)},b.prototype.inotn=function(L){f(typeof L=="number"&&L>=0);var V=Math.ceil(L/26)|0,Y=L%26;this._expand(V),Y>0&&V--;for(var T=0;T0&&(this.words[T]=~this.words[T]&67108863>>26-Y),this.strip()},b.prototype.notn=function(L){return this.clone().inotn(L)},b.prototype.setn=function(L,V){f(typeof L=="number"&&L>=0);var Y=L/26|0,T=L%26;return this._expand(Y+1),V?this.words[Y]=this.words[Y]|1<L.length?(Y=this,T=L):(Y=L,T=this);for(var J=0,U=0;U>>26;for(;J!==0&&U>>26;if(this.length=Y.length,J!==0)this.words[this.length]=J,this.length++;else if(Y!==this)for(;UL.length?this.clone().iadd(L):L.clone().iadd(this)},b.prototype.isub=function(L){if(L.negative!==0){L.negative=0;var V=this.iadd(L);return L.negative=1,V._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(L),this.negative=1,this._normSign();var Y=this.cmp(L);if(Y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var T,J;Y>0?(T=this,J=L):(T=L,J=this);for(var U=0,K=0;K>26,this.words[K]=V&67108863;for(;U!==0&&K>26,this.words[K]=V&67108863;if(U===0&&K>>26,O=H&67108863,Q=Math.min(k,L.length-1),oe=Math.max(0,k-S.length+1);oe<=Q;oe++){var se=k-oe|0;T=S.words[se]|0,J=L.words[oe]|0,U=T*J+O,F+=U/67108864|0,O=U&67108863}V.words[k]=O|0,H=F|0}return H!==0?V.words[k]=H|0:V.length--,V.strip()}var u=function(L,V,Y){var T=L.words,J=V.words,U=Y.words,K=0,H,k,F,O=T[0]|0,Q=O&8191,oe=O>>>13,se=T[1]|0,he=se&8191,pe=se>>>13,re=T[2]|0,_=re&8191,E=re>>>13,$=T[3]|0,ae=$&8191,le=$>>>13,ee=T[4]|0,te=ee&8191,be=ee>>>13,ne=T[5]|0,B=ne&8191,q=ne>>>13,ue=T[6]|0,ve=ue&8191,Ge=ue>>>13,Je=T[7]|0,xe=Je&8191,ke=Je>>>13,Pe=T[8]|0,Be=Pe&8191,Te=Pe>>>13,we=T[9]|0,Se=we&8191,De=we>>>13,me=J[0]|0,Ve=me&8191,Me=me>>>13,Ie=J[1]|0,Ze=Ie&8191,Ce=Ie>>>13,ye=J[2]|0,Ue=ye&8191,qe=ye>>>13,ie=J[3]|0,Oe=ie&8191,Ke=ie>>>13,Xe=J[4]|0,Re=Xe&8191,Ae=Xe>>>13,ct=J[5]|0,lt=ct&8191,ot=ct>>>13,wt=J[6]|0,Mt=wt&8191,xt=wt>>>13,Gt=J[7]|0,Zt=Gt&8191,Tt=Gt>>>13,Ct=J[8]|0,St=Ct&8191,Pt=Ct>>>13,Ut=J[9]|0,kt=Ut&8191,en=Ut>>>13;Y.negative=L.negative^V.negative,Y.length=19,H=Math.imul(Q,Ve),k=Math.imul(Q,Me),k=k+Math.imul(oe,Ve)|0,F=Math.imul(oe,Me);var nn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nn>>>26)|0,nn&=67108863,H=Math.imul(he,Ve),k=Math.imul(he,Me),k=k+Math.imul(pe,Ve)|0,F=Math.imul(pe,Me),H=H+Math.imul(Q,Ze)|0,k=k+Math.imul(Q,Ce)|0,k=k+Math.imul(oe,Ze)|0,F=F+Math.imul(oe,Ce)|0;var Ft=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,H=Math.imul(_,Ve),k=Math.imul(_,Me),k=k+Math.imul(E,Ve)|0,F=Math.imul(E,Me),H=H+Math.imul(he,Ze)|0,k=k+Math.imul(he,Ce)|0,k=k+Math.imul(pe,Ze)|0,F=F+Math.imul(pe,Ce)|0,H=H+Math.imul(Q,Ue)|0,k=k+Math.imul(Q,qe)|0,k=k+Math.imul(oe,Ue)|0,F=F+Math.imul(oe,qe)|0;var Ln=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,H=Math.imul(ae,Ve),k=Math.imul(ae,Me),k=k+Math.imul(le,Ve)|0,F=Math.imul(le,Me),H=H+Math.imul(_,Ze)|0,k=k+Math.imul(_,Ce)|0,k=k+Math.imul(E,Ze)|0,F=F+Math.imul(E,Ce)|0,H=H+Math.imul(he,Ue)|0,k=k+Math.imul(he,qe)|0,k=k+Math.imul(pe,Ue)|0,F=F+Math.imul(pe,qe)|0,H=H+Math.imul(Q,Oe)|0,k=k+Math.imul(Q,Ke)|0,k=k+Math.imul(oe,Oe)|0,F=F+Math.imul(oe,Ke)|0;var An=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(An>>>26)|0,An&=67108863,H=Math.imul(te,Ve),k=Math.imul(te,Me),k=k+Math.imul(be,Ve)|0,F=Math.imul(be,Me),H=H+Math.imul(ae,Ze)|0,k=k+Math.imul(ae,Ce)|0,k=k+Math.imul(le,Ze)|0,F=F+Math.imul(le,Ce)|0,H=H+Math.imul(_,Ue)|0,k=k+Math.imul(_,qe)|0,k=k+Math.imul(E,Ue)|0,F=F+Math.imul(E,qe)|0,H=H+Math.imul(he,Oe)|0,k=k+Math.imul(he,Ke)|0,k=k+Math.imul(pe,Oe)|0,F=F+Math.imul(pe,Ke)|0,H=H+Math.imul(Q,Re)|0,k=k+Math.imul(Q,Ae)|0,k=k+Math.imul(oe,Re)|0,F=F+Math.imul(oe,Ae)|0;var Gi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,H=Math.imul(B,Ve),k=Math.imul(B,Me),k=k+Math.imul(q,Ve)|0,F=Math.imul(q,Me),H=H+Math.imul(te,Ze)|0,k=k+Math.imul(te,Ce)|0,k=k+Math.imul(be,Ze)|0,F=F+Math.imul(be,Ce)|0,H=H+Math.imul(ae,Ue)|0,k=k+Math.imul(ae,qe)|0,k=k+Math.imul(le,Ue)|0,F=F+Math.imul(le,qe)|0,H=H+Math.imul(_,Oe)|0,k=k+Math.imul(_,Ke)|0,k=k+Math.imul(E,Oe)|0,F=F+Math.imul(E,Ke)|0,H=H+Math.imul(he,Re)|0,k=k+Math.imul(he,Ae)|0,k=k+Math.imul(pe,Re)|0,F=F+Math.imul(pe,Ae)|0,H=H+Math.imul(Q,lt)|0,k=k+Math.imul(Q,ot)|0,k=k+Math.imul(oe,lt)|0,F=F+Math.imul(oe,ot)|0;var Pi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,H=Math.imul(ve,Ve),k=Math.imul(ve,Me),k=k+Math.imul(Ge,Ve)|0,F=Math.imul(Ge,Me),H=H+Math.imul(B,Ze)|0,k=k+Math.imul(B,Ce)|0,k=k+Math.imul(q,Ze)|0,F=F+Math.imul(q,Ce)|0,H=H+Math.imul(te,Ue)|0,k=k+Math.imul(te,qe)|0,k=k+Math.imul(be,Ue)|0,F=F+Math.imul(be,qe)|0,H=H+Math.imul(ae,Oe)|0,k=k+Math.imul(ae,Ke)|0,k=k+Math.imul(le,Oe)|0,F=F+Math.imul(le,Ke)|0,H=H+Math.imul(_,Re)|0,k=k+Math.imul(_,Ae)|0,k=k+Math.imul(E,Re)|0,F=F+Math.imul(E,Ae)|0,H=H+Math.imul(he,lt)|0,k=k+Math.imul(he,ot)|0,k=k+Math.imul(pe,lt)|0,F=F+Math.imul(pe,ot)|0,H=H+Math.imul(Q,Mt)|0,k=k+Math.imul(Q,xt)|0,k=k+Math.imul(oe,Mt)|0,F=F+Math.imul(oe,xt)|0;var Gl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,H=Math.imul(xe,Ve),k=Math.imul(xe,Me),k=k+Math.imul(ke,Ve)|0,F=Math.imul(ke,Me),H=H+Math.imul(ve,Ze)|0,k=k+Math.imul(ve,Ce)|0,k=k+Math.imul(Ge,Ze)|0,F=F+Math.imul(Ge,Ce)|0,H=H+Math.imul(B,Ue)|0,k=k+Math.imul(B,qe)|0,k=k+Math.imul(q,Ue)|0,F=F+Math.imul(q,qe)|0,H=H+Math.imul(te,Oe)|0,k=k+Math.imul(te,Ke)|0,k=k+Math.imul(be,Oe)|0,F=F+Math.imul(be,Ke)|0,H=H+Math.imul(ae,Re)|0,k=k+Math.imul(ae,Ae)|0,k=k+Math.imul(le,Re)|0,F=F+Math.imul(le,Ae)|0,H=H+Math.imul(_,lt)|0,k=k+Math.imul(_,ot)|0,k=k+Math.imul(E,lt)|0,F=F+Math.imul(E,ot)|0,H=H+Math.imul(he,Mt)|0,k=k+Math.imul(he,xt)|0,k=k+Math.imul(pe,Mt)|0,F=F+Math.imul(pe,xt)|0,H=H+Math.imul(Q,Zt)|0,k=k+Math.imul(Q,Tt)|0,k=k+Math.imul(oe,Zt)|0,F=F+Math.imul(oe,Tt)|0;var Fn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,H=Math.imul(Be,Ve),k=Math.imul(Be,Me),k=k+Math.imul(Te,Ve)|0,F=Math.imul(Te,Me),H=H+Math.imul(xe,Ze)|0,k=k+Math.imul(xe,Ce)|0,k=k+Math.imul(ke,Ze)|0,F=F+Math.imul(ke,Ce)|0,H=H+Math.imul(ve,Ue)|0,k=k+Math.imul(ve,qe)|0,k=k+Math.imul(Ge,Ue)|0,F=F+Math.imul(Ge,qe)|0,H=H+Math.imul(B,Oe)|0,k=k+Math.imul(B,Ke)|0,k=k+Math.imul(q,Oe)|0,F=F+Math.imul(q,Ke)|0,H=H+Math.imul(te,Re)|0,k=k+Math.imul(te,Ae)|0,k=k+Math.imul(be,Re)|0,F=F+Math.imul(be,Ae)|0,H=H+Math.imul(ae,lt)|0,k=k+Math.imul(ae,ot)|0,k=k+Math.imul(le,lt)|0,F=F+Math.imul(le,ot)|0,H=H+Math.imul(_,Mt)|0,k=k+Math.imul(_,xt)|0,k=k+Math.imul(E,Mt)|0,F=F+Math.imul(E,xt)|0,H=H+Math.imul(he,Zt)|0,k=k+Math.imul(he,Tt)|0,k=k+Math.imul(pe,Zt)|0,F=F+Math.imul(pe,Tt)|0,H=H+Math.imul(Q,St)|0,k=k+Math.imul(Q,Pt)|0,k=k+Math.imul(oe,St)|0,F=F+Math.imul(oe,Pt)|0;var cl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(cl>>>26)|0,cl&=67108863,H=Math.imul(Se,Ve),k=Math.imul(Se,Me),k=k+Math.imul(De,Ve)|0,F=Math.imul(De,Me),H=H+Math.imul(Be,Ze)|0,k=k+Math.imul(Be,Ce)|0,k=k+Math.imul(Te,Ze)|0,F=F+Math.imul(Te,Ce)|0,H=H+Math.imul(xe,Ue)|0,k=k+Math.imul(xe,qe)|0,k=k+Math.imul(ke,Ue)|0,F=F+Math.imul(ke,qe)|0,H=H+Math.imul(ve,Oe)|0,k=k+Math.imul(ve,Ke)|0,k=k+Math.imul(Ge,Oe)|0,F=F+Math.imul(Ge,Ke)|0,H=H+Math.imul(B,Re)|0,k=k+Math.imul(B,Ae)|0,k=k+Math.imul(q,Re)|0,F=F+Math.imul(q,Ae)|0,H=H+Math.imul(te,lt)|0,k=k+Math.imul(te,ot)|0,k=k+Math.imul(be,lt)|0,F=F+Math.imul(be,ot)|0,H=H+Math.imul(ae,Mt)|0,k=k+Math.imul(ae,xt)|0,k=k+Math.imul(le,Mt)|0,F=F+Math.imul(le,xt)|0,H=H+Math.imul(_,Zt)|0,k=k+Math.imul(_,Tt)|0,k=k+Math.imul(E,Zt)|0,F=F+Math.imul(E,Tt)|0,H=H+Math.imul(he,St)|0,k=k+Math.imul(he,Pt)|0,k=k+Math.imul(pe,St)|0,F=F+Math.imul(pe,Pt)|0,H=H+Math.imul(Q,kt)|0,k=k+Math.imul(Q,en)|0,k=k+Math.imul(oe,kt)|0,F=F+Math.imul(oe,en)|0;var ki=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ki>>>26)|0,ki&=67108863,H=Math.imul(Se,Ze),k=Math.imul(Se,Ce),k=k+Math.imul(De,Ze)|0,F=Math.imul(De,Ce),H=H+Math.imul(Be,Ue)|0,k=k+Math.imul(Be,qe)|0,k=k+Math.imul(Te,Ue)|0,F=F+Math.imul(Te,qe)|0,H=H+Math.imul(xe,Oe)|0,k=k+Math.imul(xe,Ke)|0,k=k+Math.imul(ke,Oe)|0,F=F+Math.imul(ke,Ke)|0,H=H+Math.imul(ve,Re)|0,k=k+Math.imul(ve,Ae)|0,k=k+Math.imul(Ge,Re)|0,F=F+Math.imul(Ge,Ae)|0,H=H+Math.imul(B,lt)|0,k=k+Math.imul(B,ot)|0,k=k+Math.imul(q,lt)|0,F=F+Math.imul(q,ot)|0,H=H+Math.imul(te,Mt)|0,k=k+Math.imul(te,xt)|0,k=k+Math.imul(be,Mt)|0,F=F+Math.imul(be,xt)|0,H=H+Math.imul(ae,Zt)|0,k=k+Math.imul(ae,Tt)|0,k=k+Math.imul(le,Zt)|0,F=F+Math.imul(le,Tt)|0,H=H+Math.imul(_,St)|0,k=k+Math.imul(_,Pt)|0,k=k+Math.imul(E,St)|0,F=F+Math.imul(E,Pt)|0,H=H+Math.imul(he,kt)|0,k=k+Math.imul(he,en)|0,k=k+Math.imul(pe,kt)|0,F=F+Math.imul(pe,en)|0;var tl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tl>>>26)|0,tl&=67108863,H=Math.imul(Se,Ue),k=Math.imul(Se,qe),k=k+Math.imul(De,Ue)|0,F=Math.imul(De,qe),H=H+Math.imul(Be,Oe)|0,k=k+Math.imul(Be,Ke)|0,k=k+Math.imul(Te,Oe)|0,F=F+Math.imul(Te,Ke)|0,H=H+Math.imul(xe,Re)|0,k=k+Math.imul(xe,Ae)|0,k=k+Math.imul(ke,Re)|0,F=F+Math.imul(ke,Ae)|0,H=H+Math.imul(ve,lt)|0,k=k+Math.imul(ve,ot)|0,k=k+Math.imul(Ge,lt)|0,F=F+Math.imul(Ge,ot)|0,H=H+Math.imul(B,Mt)|0,k=k+Math.imul(B,xt)|0,k=k+Math.imul(q,Mt)|0,F=F+Math.imul(q,xt)|0,H=H+Math.imul(te,Zt)|0,k=k+Math.imul(te,Tt)|0,k=k+Math.imul(be,Zt)|0,F=F+Math.imul(be,Tt)|0,H=H+Math.imul(ae,St)|0,k=k+Math.imul(ae,Pt)|0,k=k+Math.imul(le,St)|0,F=F+Math.imul(le,Pt)|0,H=H+Math.imul(_,kt)|0,k=k+Math.imul(_,en)|0,k=k+Math.imul(E,kt)|0,F=F+Math.imul(E,en)|0;var nl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nl>>>26)|0,nl&=67108863,H=Math.imul(Se,Oe),k=Math.imul(Se,Ke),k=k+Math.imul(De,Oe)|0,F=Math.imul(De,Ke),H=H+Math.imul(Be,Re)|0,k=k+Math.imul(Be,Ae)|0,k=k+Math.imul(Te,Re)|0,F=F+Math.imul(Te,Ae)|0,H=H+Math.imul(xe,lt)|0,k=k+Math.imul(xe,ot)|0,k=k+Math.imul(ke,lt)|0,F=F+Math.imul(ke,ot)|0,H=H+Math.imul(ve,Mt)|0,k=k+Math.imul(ve,xt)|0,k=k+Math.imul(Ge,Mt)|0,F=F+Math.imul(Ge,xt)|0,H=H+Math.imul(B,Zt)|0,k=k+Math.imul(B,Tt)|0,k=k+Math.imul(q,Zt)|0,F=F+Math.imul(q,Tt)|0,H=H+Math.imul(te,St)|0,k=k+Math.imul(te,Pt)|0,k=k+Math.imul(be,St)|0,F=F+Math.imul(be,Pt)|0,H=H+Math.imul(ae,kt)|0,k=k+Math.imul(ae,en)|0,k=k+Math.imul(le,kt)|0,F=F+Math.imul(le,en)|0;var Dt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,H=Math.imul(Se,Re),k=Math.imul(Se,Ae),k=k+Math.imul(De,Re)|0,F=Math.imul(De,Ae),H=H+Math.imul(Be,lt)|0,k=k+Math.imul(Be,ot)|0,k=k+Math.imul(Te,lt)|0,F=F+Math.imul(Te,ot)|0,H=H+Math.imul(xe,Mt)|0,k=k+Math.imul(xe,xt)|0,k=k+Math.imul(ke,Mt)|0,F=F+Math.imul(ke,xt)|0,H=H+Math.imul(ve,Zt)|0,k=k+Math.imul(ve,Tt)|0,k=k+Math.imul(Ge,Zt)|0,F=F+Math.imul(Ge,Tt)|0,H=H+Math.imul(B,St)|0,k=k+Math.imul(B,Pt)|0,k=k+Math.imul(q,St)|0,F=F+Math.imul(q,Pt)|0,H=H+Math.imul(te,kt)|0,k=k+Math.imul(te,en)|0,k=k+Math.imul(be,kt)|0,F=F+Math.imul(be,en)|0;var ht=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ht>>>26)|0,ht&=67108863,H=Math.imul(Se,lt),k=Math.imul(Se,ot),k=k+Math.imul(De,lt)|0,F=Math.imul(De,ot),H=H+Math.imul(Be,Mt)|0,k=k+Math.imul(Be,xt)|0,k=k+Math.imul(Te,Mt)|0,F=F+Math.imul(Te,xt)|0,H=H+Math.imul(xe,Zt)|0,k=k+Math.imul(xe,Tt)|0,k=k+Math.imul(ke,Zt)|0,F=F+Math.imul(ke,Tt)|0,H=H+Math.imul(ve,St)|0,k=k+Math.imul(ve,Pt)|0,k=k+Math.imul(Ge,St)|0,F=F+Math.imul(Ge,Pt)|0,H=H+Math.imul(B,kt)|0,k=k+Math.imul(B,en)|0,k=k+Math.imul(q,kt)|0,F=F+Math.imul(q,en)|0;var Fe=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,H=Math.imul(Se,Mt),k=Math.imul(Se,xt),k=k+Math.imul(De,Mt)|0,F=Math.imul(De,xt),H=H+Math.imul(Be,Zt)|0,k=k+Math.imul(Be,Tt)|0,k=k+Math.imul(Te,Zt)|0,F=F+Math.imul(Te,Tt)|0,H=H+Math.imul(xe,St)|0,k=k+Math.imul(xe,Pt)|0,k=k+Math.imul(ke,St)|0,F=F+Math.imul(ke,Pt)|0,H=H+Math.imul(ve,kt)|0,k=k+Math.imul(ve,en)|0,k=k+Math.imul(Ge,kt)|0,F=F+Math.imul(Ge,en)|0;var tt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tt>>>26)|0,tt&=67108863,H=Math.imul(Se,Zt),k=Math.imul(Se,Tt),k=k+Math.imul(De,Zt)|0,F=Math.imul(De,Tt),H=H+Math.imul(Be,St)|0,k=k+Math.imul(Be,Pt)|0,k=k+Math.imul(Te,St)|0,F=F+Math.imul(Te,Pt)|0,H=H+Math.imul(xe,kt)|0,k=k+Math.imul(xe,en)|0,k=k+Math.imul(ke,kt)|0,F=F+Math.imul(ke,en)|0;var nt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nt>>>26)|0,nt&=67108863,H=Math.imul(Se,St),k=Math.imul(Se,Pt),k=k+Math.imul(De,St)|0,F=Math.imul(De,Pt),H=H+Math.imul(Be,kt)|0,k=k+Math.imul(Be,en)|0,k=k+Math.imul(Te,kt)|0,F=F+Math.imul(Te,en)|0;var Vt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,H=Math.imul(Se,kt),k=Math.imul(Se,en),k=k+Math.imul(De,kt)|0,F=Math.imul(De,en);var Bt=(K+H|0)+((k&8191)<<13)|0;return K=(F+(k>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,U[0]=nn,U[1]=Ft,U[2]=Ln,U[3]=An,U[4]=Gi,U[5]=Pi,U[6]=Gl,U[7]=Fn,U[8]=cl,U[9]=ki,U[10]=tl,U[11]=nl,U[12]=Dt,U[13]=ht,U[14]=Fe,U[15]=tt,U[16]=nt,U[17]=Vt,U[18]=Bt,K!==0&&(U[19]=K,Y.length++),Y};Math.imul||(u=d);function s(S,L,V){V.negative=L.negative^S.negative,V.length=S.length+L.length;for(var Y=0,T=0,J=0;J>>26)|0,T+=U>>>26,U&=67108863}V.words[J]=K,Y=U,U=T}return Y!==0?V.words[J]=Y:V.length--,V.strip()}function h(S,L,V){var Y=new c;return Y.mulp(S,L,V)}b.prototype.mulTo=function(L,V){var Y,T=this.length+L.length;return this.length===10&&L.length===10?Y=u(this,L,V):T<63?Y=d(this,L,V):T<1024?Y=s(this,L,V):Y=h(this,L,V),Y};function c(S,L){this.x=S,this.y=L}c.prototype.makeRBT=function(L){for(var V=new Array(L),Y=b.prototype._countBits(L)-1,T=0;T>=1;return T},c.prototype.permute=function(L,V,Y,T,J,U){for(var K=0;K>>1)J++;return 1<>>13,Y[2*U+1]=J&8191,J=J>>>13;for(U=2*V;U>=26,V+=T/67108864|0,V+=J>>>26,this.words[Y]=J&67108863}return V!==0&&(this.words[Y]=V,this.length++),this},b.prototype.muln=function(L){return this.clone().imuln(L)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(L){var V=G(L);if(V.length===0)return new b(1);for(var Y=this,T=0;T=0);var V=L%26,Y=(L-V)/26,T=67108863>>>26-V<<26-V,J;if(V!==0){var U=0;for(J=0;J>>26-V}U&&(this.words[J]=U,this.length++)}if(Y!==0){for(J=this.length-1;J>=0;J--)this.words[J+Y]=this.words[J];for(J=0;J=0);var T;V?T=(V-V%26)/26:T=0;var J=L%26,U=Math.min((L-J)/26,this.length),K=67108863^67108863>>>J<U)for(this.length-=U,k=0;k=0&&(F!==0||k>=T);k--){var O=this.words[k]|0;this.words[k]=F<<26-J|O>>>J,F=O&K}return H&&F!==0&&(H.words[H.length++]=F),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},b.prototype.ishrn=function(L,V,Y){return f(this.negative===0),this.iushrn(L,V,Y)},b.prototype.shln=function(L){return this.clone().ishln(L)},b.prototype.ushln=function(L){return this.clone().iushln(L)},b.prototype.shrn=function(L){return this.clone().ishrn(L)},b.prototype.ushrn=function(L){return this.clone().iushrn(L)},b.prototype.testn=function(L){f(typeof L=="number"&&L>=0);var V=L%26,Y=(L-V)/26,T=1<=0);var V=L%26,Y=(L-V)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=Y)return this;if(V!==0&&Y++,this.length=Math.min(Y,this.length),V!==0){var T=67108863^67108863>>>V<=67108864;V++)this.words[V]-=67108864,V===this.length-1?this.words[V+1]=1:this.words[V+1]++;return this.length=Math.max(this.length,V+1),this},b.prototype.isubn=function(L){if(f(typeof L=="number"),f(L<67108864),L<0)return this.iaddn(-L);if(this.negative!==0)return this.negative=0,this.iaddn(L),this.negative=1,this;if(this.words[0]-=L,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var V=0;V>26)-(H/67108864|0),this.words[J+Y]=U&67108863}for(;J>26,this.words[J+Y]=U&67108863;if(K===0)return this.strip();for(f(K===-1),K=0,J=0;J>26,this.words[J]=U&67108863;return this.negative=1,this.strip()},b.prototype._wordDiv=function(L,V){var Y=this.length-L.length,T=this.clone(),J=L,U=J.words[J.length-1]|0,K=this._countBits(U);Y=26-K,Y!==0&&(J=J.ushln(Y),T.iushln(Y),U=J.words[J.length-1]|0);var H=T.length-J.length,k;if(V!=="mod"){k=new b(null),k.length=H+1,k.words=new Array(k.length);for(var F=0;F=0;Q--){var oe=(T.words[J.length+Q]|0)*67108864+(T.words[J.length+Q-1]|0);for(oe=Math.min(oe/U|0,67108863),T._ishlnsubmul(J,oe,Q);T.negative!==0;)oe--,T.negative=0,T._ishlnsubmul(J,1,Q),T.isZero()||(T.negative^=1);k&&(k.words[Q]=oe)}return k&&k.strip(),T.strip(),V!=="div"&&Y!==0&&T.iushrn(Y),{div:k||null,mod:T}},b.prototype.divmod=function(L,V,Y){if(f(!L.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var T,J,U;return this.negative!==0&&L.negative===0?(U=this.neg().divmod(L,V),V!=="mod"&&(T=U.div.neg()),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.iadd(L)),{div:T,mod:J}):this.negative===0&&L.negative!==0?(U=this.divmod(L.neg(),V),V!=="mod"&&(T=U.div.neg()),{div:T,mod:U.mod}):this.negative&L.negative?(U=this.neg().divmod(L.neg(),V),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.isub(L)),{div:U.div,mod:J}):L.length>this.length||this.cmp(L)<0?{div:new b(0),mod:this}:L.length===1?V==="div"?{div:this.divn(L.words[0]),mod:null}:V==="mod"?{div:null,mod:new b(this.modn(L.words[0]))}:{div:this.divn(L.words[0]),mod:new b(this.modn(L.words[0]))}:this._wordDiv(L,V)},b.prototype.div=function(L){return this.divmod(L,"div",!1).div},b.prototype.mod=function(L){return this.divmod(L,"mod",!1).mod},b.prototype.umod=function(L){return this.divmod(L,"mod",!0).mod},b.prototype.divRound=function(L){var V=this.divmod(L);if(V.mod.isZero())return V.div;var Y=V.div.negative!==0?V.mod.isub(L):V.mod,T=L.ushrn(1),J=L.andln(1),U=Y.cmp(T);return U<0||J===1&&U===0?V.div:V.div.negative!==0?V.div.isubn(1):V.div.iaddn(1)},b.prototype.modn=function(L){f(L<=67108863);for(var V=(1<<26)%L,Y=0,T=this.length-1;T>=0;T--)Y=(V*Y+(this.words[T]|0))%L;return Y},b.prototype.idivn=function(L){f(L<=67108863);for(var V=0,Y=this.length-1;Y>=0;Y--){var T=(this.words[Y]|0)+V*67108864;this.words[Y]=T/L|0,V=T%L}return this.strip()},b.prototype.divn=function(L){return this.clone().idivn(L)},b.prototype.egcd=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=new b(0),K=new b(1),H=0;V.isEven()&&Y.isEven();)V.iushrn(1),Y.iushrn(1),++H;for(var k=Y.clone(),F=V.clone();!V.isZero();){for(var O=0,Q=1;!(V.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(V.iushrn(O);O-- >0;)(T.isOdd()||J.isOdd())&&(T.iadd(k),J.isub(F)),T.iushrn(1),J.iushrn(1);for(var oe=0,se=1;!(Y.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(Y.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(k),K.isub(F)),U.iushrn(1),K.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(U),J.isub(K)):(Y.isub(V),U.isub(T),K.isub(J))}return{a:U,b:K,gcd:Y.iushln(H)}},b.prototype._invmp=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=Y.clone();V.cmpn(1)>0&&Y.cmpn(1)>0;){for(var K=0,H=1;!(V.words[0]&H)&&K<26;++K,H<<=1);if(K>0)for(V.iushrn(K);K-- >0;)T.isOdd()&&T.iadd(U),T.iushrn(1);for(var k=0,F=1;!(Y.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(Y.iushrn(k);k-- >0;)J.isOdd()&&J.iadd(U),J.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(J)):(Y.isub(V),J.isub(T))}var O;return V.cmpn(1)===0?O=T:O=J,O.cmpn(0)<0&&O.iadd(L),O},b.prototype.gcd=function(L){if(this.isZero())return L.abs();if(L.isZero())return this.abs();var V=this.clone(),Y=L.clone();V.negative=0,Y.negative=0;for(var T=0;V.isEven()&&Y.isEven();T++)V.iushrn(1),Y.iushrn(1);do{for(;V.isEven();)V.iushrn(1);for(;Y.isEven();)Y.iushrn(1);var J=V.cmp(Y);if(J<0){var U=V;V=Y,Y=U}else if(J===0||Y.cmpn(1)===0)break;V.isub(Y)}while(!0);return Y.iushln(T)},b.prototype.invm=function(L){return this.egcd(L).a.umod(L)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(L){return this.words[0]&L},b.prototype.bincn=function(L){f(typeof L=="number");var V=L%26,Y=(L-V)/26,T=1<>>26,K&=67108863,this.words[U]=K}return J!==0&&(this.words[U]=J,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(L){var V=L<0;if(this.negative!==0&&!V)return-1;if(this.negative===0&&V)return 1;this.strip();var Y;if(this.length>1)Y=1;else{V&&(L=-L),f(L<=67108863,"Number is too big");var T=this.words[0]|0;Y=T===L?0:TL.length)return 1;if(this.length=0;Y--){var T=this.words[Y]|0,J=L.words[Y]|0;if(T!==J){TJ&&(V=1);break}}return V},b.prototype.gtn=function(L){return this.cmpn(L)===1},b.prototype.gt=function(L){return this.cmp(L)===1},b.prototype.gten=function(L){return this.cmpn(L)>=0},b.prototype.gte=function(L){return this.cmp(L)>=0},b.prototype.ltn=function(L){return this.cmpn(L)===-1},b.prototype.lt=function(L){return this.cmp(L)===-1},b.prototype.lten=function(L){return this.cmpn(L)<=0},b.prototype.lte=function(L){return this.cmp(L)<=0},b.prototype.eqn=function(L){return this.cmpn(L)===0},b.prototype.eq=function(L){return this.cmp(L)===0},b.red=function(L){return new R(L)},b.prototype.toRed=function(L){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),L.convertTo(this)._forceRed(L)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(L){return this.red=L,this},b.prototype.forceRed=function(L){return f(!this.red,"Already a number in reduction context"),this._forceRed(L)},b.prototype.redAdd=function(L){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,L)},b.prototype.redIAdd=function(L){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,L)},b.prototype.redSub=function(L){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,L)},b.prototype.redISub=function(L){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,L)},b.prototype.redShl=function(L){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,L)},b.prototype.redMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.mul(this,L)},b.prototype.redIMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.imul(this,L)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(L){return f(this.red&&!L.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,L)};var W={k256:null,p224:null,p192:null,p25519:null};function M(S,L){this.name=S,this.p=new b(L,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}M.prototype._tmp=function(){var L=new b(null);return L.words=new Array(Math.ceil(this.n/13)),L},M.prototype.ireduce=function(L){var V=L,Y;do this.split(V,this.tmp),V=this.imulK(V),V=V.iadd(this.tmp),Y=V.bitLength();while(Y>this.n);var T=Y0?V.isub(this.p):V.strip!==void 0?V.strip():V._strip(),V},M.prototype.split=function(L,V){L.iushrn(this.n,0,V)},M.prototype.imulK=function(L){return L.imul(this.k)};function I(){M.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(I,M),I.prototype.split=function(L,V){for(var Y=4194303,T=Math.min(L.length,9),J=0;J>>22,U=K}U>>>=22,L.words[J-10]=U,U===0&&L.length>10?L.length-=10:L.length-=9},I.prototype.imulK=function(L){L.words[L.length]=0,L.words[L.length+1]=0,L.length+=2;for(var V=0,Y=0;Y>>=26,L.words[Y]=J,V=T}return V!==0&&(L.words[L.length++]=V),L},b._prime=function(L){if(W[L])return W[L];var V;if(L==="k256")V=new I;else if(L==="p224")V=new w;else if(L==="p192")V=new C;else if(L==="p25519")V=new x;else throw new Error("Unknown prime "+L);return W[L]=V,V};function R(S){if(typeof S=="string"){var L=b._prime(S);this.m=L.p,this.prime=L}else f(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}R.prototype._verify1=function(L){f(L.negative===0,"red works only with positives"),f(L.red,"red works only with red numbers")},R.prototype._verify2=function(L,V){f((L.negative|V.negative)===0,"red works only with positives"),f(L.red&&L.red===V.red,"red works only with red numbers")},R.prototype.imod=function(L){return this.prime?this.prime.ireduce(L)._forceRed(this):L.umod(this.m)._forceRed(this)},R.prototype.neg=function(L){return L.isZero()?L.clone():this.m.sub(L)._forceRed(this)},R.prototype.add=function(L,V){this._verify2(L,V);var Y=L.add(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y._forceRed(this)},R.prototype.iadd=function(L,V){this._verify2(L,V);var Y=L.iadd(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y},R.prototype.sub=function(L,V){this._verify2(L,V);var Y=L.sub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y._forceRed(this)},R.prototype.isub=function(L,V){this._verify2(L,V);var Y=L.isub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y},R.prototype.shl=function(L,V){return this._verify1(L),this.imod(L.ushln(V))},R.prototype.imul=function(L,V){return this._verify2(L,V),this.imod(L.imul(V))},R.prototype.mul=function(L,V){return this._verify2(L,V),this.imod(L.mul(V))},R.prototype.isqr=function(L){return this.imul(L,L.clone())},R.prototype.sqr=function(L){return this.mul(L,L)},R.prototype.sqrt=function(L){if(L.isZero())return L.clone();var V=this.m.andln(3);if(f(V%2===1),V===3){var Y=this.m.add(new b(1)).iushrn(2);return this.pow(L,Y)}for(var T=this.m.subn(1),J=0;!T.isZero()&&T.andln(1)===0;)J++,T.iushrn(1);f(!T.isZero());var U=new b(1).toRed(this),K=U.redNeg(),H=this.m.subn(1).iushrn(1),k=this.m.bitLength();for(k=new b(2*k*k).toRed(this);this.pow(k,H).cmp(K)!==0;)k.redIAdd(K);for(var F=this.pow(k,T),O=this.pow(L,T.addn(1).iushrn(1)),Q=this.pow(L,T),oe=J;Q.cmp(U)!==0;){for(var se=Q,he=0;se.cmp(U)!==0;he++)se=se.redSqr();f(he=0;J--){for(var F=V.words[J],O=k-1;O>=0;O--){var Q=F>>O&1;if(U!==T[0]&&(U=this.sqr(U)),Q===0&&K===0){H=0;continue}K<<=1,K|=Q,H++,!(H!==Y&&(J!==0||O!==0))&&(U=this.mul(U,T[K]),H=0,K=0)}k=26}return U},R.prototype.convertTo=function(L){var V=L.umod(this.m);return V===L?V.clone():V},R.prototype.convertFrom=function(L){var V=L.clone();return V.red=null,V},b.mont=function(L){return new g(L)};function g(S){R.call(this,S),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(g,R),g.prototype.convertTo=function(L){return this.imod(L.ushln(this.shift))},g.prototype.convertFrom=function(L){var V=this.imod(L.mul(this.rinv));return V.red=null,V},g.prototype.imul=function(L,V){if(L.isZero()||V.isZero())return L.words[0]=0,L.length=1,L;var Y=L.imul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.mul=function(L,V){if(L.isZero()||V.isZero())return new b(0)._forceRed(this);var Y=L.mul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.invm=function(L){var V=this.imod(L._invmp(this.m).mul(this.r2));return V._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],182:[function(t,i,a){a.byteLength=p,a.toByteArray=X,a.fromByteArray=G;for(var l=[],o=[],r=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,b=f.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var s=d.indexOf("=");s===-1&&(s=u);var h=s===u?0:4-s%4;return[s,h]}function p(d){var u=Z(d),s=u[0],h=u[1];return(s+h)*3/4-h}function y(d,u,s){return(u+s)*3/4-s}function X(d){var u,s=Z(d),h=s[0],c=s[1],W=new r(y(d,h,c)),M=0,I=c>0?h-4:h,w;for(w=0;w>16&255,W[M++]=u>>8&255,W[M++]=u&255;return c===2&&(u=o[d.charCodeAt(w)]<<2|o[d.charCodeAt(w+1)]>>4,W[M++]=u&255),c===1&&(u=o[d.charCodeAt(w)]<<10|o[d.charCodeAt(w+1)]<<4|o[d.charCodeAt(w+2)]>>2,W[M++]=u>>8&255,W[M++]=u&255),W}function m(d){return l[d>>18&63]+l[d>>12&63]+l[d>>6&63]+l[d&63]}function N(d,u,s){for(var h,c=[],W=u;WI?I:M+W));return h===1?(u=d[s-1],c.push(l[u>>2]+l[u<<4&63]+"==")):h===2&&(u=(d[s-2]<<8)+d[s-1],c.push(l[u>>10]+l[u>>4&63]+l[u<<2&63]+"=")),c.join("")}},{}],183:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}(function(o,r){function f(V,Y){if(!V)throw new Error(Y||"Assertion failed")}function v(V,Y){V.super_=Y;var T=function(){};T.prototype=Y.prototype,V.prototype=new T,V.prototype.constructor=V}function b(V,Y,T){if(b.isBN(V))return V;this.negative=0,this.words=null,this.length=0,this.red=null,V!==null&&((Y==="le"||Y==="be")&&(T=Y,Y=10),this._init(V||0,Y||10,T||"be"))}l(o)==="object"?o.exports=b:r.BN=b,b.BN=b,b.wordSize=26;var Z;try{Z=t("buffer").Buffer}catch{}b.isBN=function(Y){return Y instanceof b?!0:Y!==null&&l(Y)==="object"&&Y.constructor.wordSize===b.wordSize&&Array.isArray(Y.words)},b.max=function(Y,T){return Y.cmp(T)>0?Y:T},b.min=function(Y,T){return Y.cmp(T)<0?Y:T},b.prototype._init=function(Y,T,J){if(typeof Y=="number")return this._initNumber(Y,T,J);if(l(Y)==="object")return this._initArray(Y,T,J);T==="hex"&&(T=16),f(T===(T|0)&&T>=2&&T<=36),Y=Y.toString().replace(/\s+/g,"");var U=0;Y[0]==="-"&&U++,T===16?this._parseHex(Y,U):this._parseBase(Y,T,U),Y[0]==="-"&&(this.negative=1),this._strip(),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initNumber=function(Y,T,J){Y<0&&(this.negative=1,Y=-Y),Y<67108864?(this.words=[Y&67108863],this.length=1):Y<4503599627370496?(this.words=[Y&67108863,Y/67108864&67108863],this.length=2):(f(Y<9007199254740992),this.words=[Y&67108863,Y/67108864&67108863,1],this.length=3),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initArray=function(Y,T,J){if(f(typeof Y.length=="number"),Y.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(Y.length/3),this.words=new Array(this.length);for(var U=0;U=0;U-=3)H=Y[U]|Y[U-1]<<8|Y[U-2]<<16,this.words[K]|=H<>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);else if(J==="le")for(U=0,K=0;U>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);return this._strip()};function p(V,Y,T){for(var J=0,U=Math.min(V.length,T),K=0,H=Y;H=49&&k<=54?F=k-49+10:k>=17&&k<=22?F=k-17+10:F=k,J|=F,K|=F}return f(!(K&240),"Invalid character in "+V),J}b.prototype._parseHex=function(Y,T){this.length=Math.ceil((Y.length-T)/6),this.words=new Array(this.length);for(var J=0;J=T;J-=6)K=p(Y,J,J+6),this.words[U]|=K<>>26-H&4194303,H+=24,H>=26&&(H-=26,U++);J+6!==T&&(K=p(Y,T,J+6),this.words[U]|=K<>>26-H&4194303),this._strip()};function y(V,Y,T,J){for(var U=0,K=0,H=Math.min(V.length,T),k=Y;k=49?K=F-49+10:F>=17?K=F-17+10:K=F,f(F>=0&&K1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{b.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{b.prototype.inspect=m}else b.prototype.inspect=m;function m(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],G=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(Y,T){Y=Y||10,T=T|0||1;var J;if(Y===16||Y==="hex"){J="";for(var U=0,K=0,H=0;H>>24-U&16777215,K!==0||H!==this.length-1?J=N[6-F.length]+F+J:J=F+J,U+=2,U>=26&&(U-=26,H--)}for(K!==0&&(J=K.toString(16)+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}if(Y===(Y|0)&&Y>=2&&Y<=36){var O=G[Y],Q=d[Y];J="";var oe=this.clone();for(oe.negative=0;!oe.isZero();){var se=oe.modrn(Q).toString(Y);oe=oe.idivn(Q),oe.isZero()?J=se+J:J=N[O-se.length]+se+J}for(this.isZero()&&(J="0"+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var Y=this.words[0];return this.length===2?Y+=this.words[1]*67108864:this.length===3&&this.words[2]===1?Y+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-Y:Y},b.prototype.toJSON=function(){return this.toString(16,2)},Z&&(b.prototype.toBuffer=function(Y,T){return this.toArrayLike(Z,Y,T)}),b.prototype.toArray=function(Y,T){return this.toArrayLike(Array,Y,T)};var u=function(Y,T){return Y.allocUnsafe?Y.allocUnsafe(T):new Y(T)};b.prototype.toArrayLike=function(Y,T,J){this._strip();var U=this.byteLength(),K=J||Math.max(1,U);f(U<=K,"byte array longer than desired length"),f(K>0,"Requested array length <= 0");var H=u(Y,K),k=T==="le"?"LE":"BE";return this["_toArrayLike"+k](H,U),H},b.prototype._toArrayLikeLE=function(Y,T){for(var J=0,U=0,K=0,H=0;K>8&255),J>16&255),H===6?(J>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J=0&&(Y[J--]=k>>8&255),J>=0&&(Y[J--]=k>>16&255),H===6?(J>=0&&(Y[J--]=k>>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J>=0)for(Y[J--]=U;J>=0;)Y[J--]=0},Math.clz32?b.prototype._countBits=function(Y){return 32-Math.clz32(Y)}:b.prototype._countBits=function(Y){var T=Y,J=0;return T>=4096&&(J+=13,T>>>=13),T>=64&&(J+=7,T>>>=7),T>=8&&(J+=4,T>>>=4),T>=2&&(J+=2,T>>>=2),J+T},b.prototype._zeroBits=function(Y){if(Y===0)return 26;var T=Y,J=0;return T&8191||(J+=13,T>>>=13),T&127||(J+=7,T>>>=7),T&15||(J+=4,T>>>=4),T&3||(J+=2,T>>>=2),T&1||J++,J},b.prototype.bitLength=function(){var Y=this.words[this.length-1],T=this._countBits(Y);return(this.length-1)*26+T};function s(V){for(var Y=new Array(V.bitLength()),T=0;T>>U&1}return Y}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var Y=0,T=0;TY.length?this.clone().ior(Y):Y.clone().ior(this)},b.prototype.uor=function(Y){return this.length>Y.length?this.clone().iuor(Y):Y.clone().iuor(this)},b.prototype.iuand=function(Y){var T;this.length>Y.length?T=Y:T=this;for(var J=0;JY.length?this.clone().iand(Y):Y.clone().iand(this)},b.prototype.uand=function(Y){return this.length>Y.length?this.clone().iuand(Y):Y.clone().iuand(this)},b.prototype.iuxor=function(Y){var T,J;this.length>Y.length?(T=this,J=Y):(T=Y,J=this);for(var U=0;UY.length?this.clone().ixor(Y):Y.clone().ixor(this)},b.prototype.uxor=function(Y){return this.length>Y.length?this.clone().iuxor(Y):Y.clone().iuxor(this)},b.prototype.inotn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Math.ceil(Y/26)|0,J=Y%26;this._expand(T),J>0&&T--;for(var U=0;U0&&(this.words[U]=~this.words[U]&67108863>>26-J),this._strip()},b.prototype.notn=function(Y){return this.clone().inotn(Y)},b.prototype.setn=function(Y,T){f(typeof Y=="number"&&Y>=0);var J=Y/26|0,U=Y%26;return this._expand(J+1),T?this.words[J]=this.words[J]|1<Y.length?(J=this,U=Y):(J=Y,U=this);for(var K=0,H=0;H>>26;for(;K!==0&&H>>26;if(this.length=J.length,K!==0)this.words[this.length]=K,this.length++;else if(J!==this)for(;HY.length?this.clone().iadd(Y):Y.clone().iadd(this)},b.prototype.isub=function(Y){if(Y.negative!==0){Y.negative=0;var T=this.iadd(Y);return Y.negative=1,T._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(Y),this.negative=1,this._normSign();var J=this.cmp(Y);if(J===0)return this.negative=0,this.length=1,this.words[0]=0,this;var U,K;J>0?(U=this,K=Y):(U=Y,K=this);for(var H=0,k=0;k>26,this.words[k]=T&67108863;for(;H!==0&&k>26,this.words[k]=T&67108863;if(H===0&&k>>26,oe=F&67108863,se=Math.min(O,Y.length-1),he=Math.max(0,O-V.length+1);he<=se;he++){var pe=O-he|0;U=V.words[pe]|0,K=Y.words[he]|0,H=U*K+oe,Q+=H/67108864|0,oe=H&67108863}T.words[O]=oe|0,F=Q|0}return F!==0?T.words[O]=F|0:T.length--,T._strip()}var c=function(Y,T,J){var U=Y.words,K=T.words,H=J.words,k=0,F,O,Q,oe=U[0]|0,se=oe&8191,he=oe>>>13,pe=U[1]|0,re=pe&8191,_=pe>>>13,E=U[2]|0,$=E&8191,ae=E>>>13,le=U[3]|0,ee=le&8191,te=le>>>13,be=U[4]|0,ne=be&8191,B=be>>>13,q=U[5]|0,ue=q&8191,ve=q>>>13,Ge=U[6]|0,Je=Ge&8191,xe=Ge>>>13,ke=U[7]|0,Pe=ke&8191,Be=ke>>>13,Te=U[8]|0,we=Te&8191,Se=Te>>>13,De=U[9]|0,me=De&8191,Ve=De>>>13,Me=K[0]|0,Ie=Me&8191,Ze=Me>>>13,Ce=K[1]|0,ye=Ce&8191,Ue=Ce>>>13,qe=K[2]|0,ie=qe&8191,Oe=qe>>>13,Ke=K[3]|0,Xe=Ke&8191,Re=Ke>>>13,Ae=K[4]|0,ct=Ae&8191,lt=Ae>>>13,ot=K[5]|0,wt=ot&8191,Mt=ot>>>13,xt=K[6]|0,Gt=xt&8191,Zt=xt>>>13,Tt=K[7]|0,Ct=Tt&8191,St=Tt>>>13,Pt=K[8]|0,Ut=Pt&8191,kt=Pt>>>13,en=K[9]|0,nn=en&8191,Ft=en>>>13;J.negative=Y.negative^T.negative,J.length=19,F=Math.imul(se,Ie),O=Math.imul(se,Ze),O=O+Math.imul(he,Ie)|0,Q=Math.imul(he,Ze);var Ln=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,F=Math.imul(re,Ie),O=Math.imul(re,Ze),O=O+Math.imul(_,Ie)|0,Q=Math.imul(_,Ze),F=F+Math.imul(se,ye)|0,O=O+Math.imul(se,Ue)|0,O=O+Math.imul(he,ye)|0,Q=Q+Math.imul(he,Ue)|0;var An=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(An>>>26)|0,An&=67108863,F=Math.imul($,Ie),O=Math.imul($,Ze),O=O+Math.imul(ae,Ie)|0,Q=Math.imul(ae,Ze),F=F+Math.imul(re,ye)|0,O=O+Math.imul(re,Ue)|0,O=O+Math.imul(_,ye)|0,Q=Q+Math.imul(_,Ue)|0,F=F+Math.imul(se,ie)|0,O=O+Math.imul(se,Oe)|0,O=O+Math.imul(he,ie)|0,Q=Q+Math.imul(he,Oe)|0;var Gi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,F=Math.imul(ee,Ie),O=Math.imul(ee,Ze),O=O+Math.imul(te,Ie)|0,Q=Math.imul(te,Ze),F=F+Math.imul($,ye)|0,O=O+Math.imul($,Ue)|0,O=O+Math.imul(ae,ye)|0,Q=Q+Math.imul(ae,Ue)|0,F=F+Math.imul(re,ie)|0,O=O+Math.imul(re,Oe)|0,O=O+Math.imul(_,ie)|0,Q=Q+Math.imul(_,Oe)|0,F=F+Math.imul(se,Xe)|0,O=O+Math.imul(se,Re)|0,O=O+Math.imul(he,Xe)|0,Q=Q+Math.imul(he,Re)|0;var Pi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,F=Math.imul(ne,Ie),O=Math.imul(ne,Ze),O=O+Math.imul(B,Ie)|0,Q=Math.imul(B,Ze),F=F+Math.imul(ee,ye)|0,O=O+Math.imul(ee,Ue)|0,O=O+Math.imul(te,ye)|0,Q=Q+Math.imul(te,Ue)|0,F=F+Math.imul($,ie)|0,O=O+Math.imul($,Oe)|0,O=O+Math.imul(ae,ie)|0,Q=Q+Math.imul(ae,Oe)|0,F=F+Math.imul(re,Xe)|0,O=O+Math.imul(re,Re)|0,O=O+Math.imul(_,Xe)|0,Q=Q+Math.imul(_,Re)|0,F=F+Math.imul(se,ct)|0,O=O+Math.imul(se,lt)|0,O=O+Math.imul(he,ct)|0,Q=Q+Math.imul(he,lt)|0;var Gl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,F=Math.imul(ue,Ie),O=Math.imul(ue,Ze),O=O+Math.imul(ve,Ie)|0,Q=Math.imul(ve,Ze),F=F+Math.imul(ne,ye)|0,O=O+Math.imul(ne,Ue)|0,O=O+Math.imul(B,ye)|0,Q=Q+Math.imul(B,Ue)|0,F=F+Math.imul(ee,ie)|0,O=O+Math.imul(ee,Oe)|0,O=O+Math.imul(te,ie)|0,Q=Q+Math.imul(te,Oe)|0,F=F+Math.imul($,Xe)|0,O=O+Math.imul($,Re)|0,O=O+Math.imul(ae,Xe)|0,Q=Q+Math.imul(ae,Re)|0,F=F+Math.imul(re,ct)|0,O=O+Math.imul(re,lt)|0,O=O+Math.imul(_,ct)|0,Q=Q+Math.imul(_,lt)|0,F=F+Math.imul(se,wt)|0,O=O+Math.imul(se,Mt)|0,O=O+Math.imul(he,wt)|0,Q=Q+Math.imul(he,Mt)|0;var Fn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,F=Math.imul(Je,Ie),O=Math.imul(Je,Ze),O=O+Math.imul(xe,Ie)|0,Q=Math.imul(xe,Ze),F=F+Math.imul(ue,ye)|0,O=O+Math.imul(ue,Ue)|0,O=O+Math.imul(ve,ye)|0,Q=Q+Math.imul(ve,Ue)|0,F=F+Math.imul(ne,ie)|0,O=O+Math.imul(ne,Oe)|0,O=O+Math.imul(B,ie)|0,Q=Q+Math.imul(B,Oe)|0,F=F+Math.imul(ee,Xe)|0,O=O+Math.imul(ee,Re)|0,O=O+Math.imul(te,Xe)|0,Q=Q+Math.imul(te,Re)|0,F=F+Math.imul($,ct)|0,O=O+Math.imul($,lt)|0,O=O+Math.imul(ae,ct)|0,Q=Q+Math.imul(ae,lt)|0,F=F+Math.imul(re,wt)|0,O=O+Math.imul(re,Mt)|0,O=O+Math.imul(_,wt)|0,Q=Q+Math.imul(_,Mt)|0,F=F+Math.imul(se,Gt)|0,O=O+Math.imul(se,Zt)|0,O=O+Math.imul(he,Gt)|0,Q=Q+Math.imul(he,Zt)|0;var cl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(cl>>>26)|0,cl&=67108863,F=Math.imul(Pe,Ie),O=Math.imul(Pe,Ze),O=O+Math.imul(Be,Ie)|0,Q=Math.imul(Be,Ze),F=F+Math.imul(Je,ye)|0,O=O+Math.imul(Je,Ue)|0,O=O+Math.imul(xe,ye)|0,Q=Q+Math.imul(xe,Ue)|0,F=F+Math.imul(ue,ie)|0,O=O+Math.imul(ue,Oe)|0,O=O+Math.imul(ve,ie)|0,Q=Q+Math.imul(ve,Oe)|0,F=F+Math.imul(ne,Xe)|0,O=O+Math.imul(ne,Re)|0,O=O+Math.imul(B,Xe)|0,Q=Q+Math.imul(B,Re)|0,F=F+Math.imul(ee,ct)|0,O=O+Math.imul(ee,lt)|0,O=O+Math.imul(te,ct)|0,Q=Q+Math.imul(te,lt)|0,F=F+Math.imul($,wt)|0,O=O+Math.imul($,Mt)|0,O=O+Math.imul(ae,wt)|0,Q=Q+Math.imul(ae,Mt)|0,F=F+Math.imul(re,Gt)|0,O=O+Math.imul(re,Zt)|0,O=O+Math.imul(_,Gt)|0,Q=Q+Math.imul(_,Zt)|0,F=F+Math.imul(se,Ct)|0,O=O+Math.imul(se,St)|0,O=O+Math.imul(he,Ct)|0,Q=Q+Math.imul(he,St)|0;var ki=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ki>>>26)|0,ki&=67108863,F=Math.imul(we,Ie),O=Math.imul(we,Ze),O=O+Math.imul(Se,Ie)|0,Q=Math.imul(Se,Ze),F=F+Math.imul(Pe,ye)|0,O=O+Math.imul(Pe,Ue)|0,O=O+Math.imul(Be,ye)|0,Q=Q+Math.imul(Be,Ue)|0,F=F+Math.imul(Je,ie)|0,O=O+Math.imul(Je,Oe)|0,O=O+Math.imul(xe,ie)|0,Q=Q+Math.imul(xe,Oe)|0,F=F+Math.imul(ue,Xe)|0,O=O+Math.imul(ue,Re)|0,O=O+Math.imul(ve,Xe)|0,Q=Q+Math.imul(ve,Re)|0,F=F+Math.imul(ne,ct)|0,O=O+Math.imul(ne,lt)|0,O=O+Math.imul(B,ct)|0,Q=Q+Math.imul(B,lt)|0,F=F+Math.imul(ee,wt)|0,O=O+Math.imul(ee,Mt)|0,O=O+Math.imul(te,wt)|0,Q=Q+Math.imul(te,Mt)|0,F=F+Math.imul($,Gt)|0,O=O+Math.imul($,Zt)|0,O=O+Math.imul(ae,Gt)|0,Q=Q+Math.imul(ae,Zt)|0,F=F+Math.imul(re,Ct)|0,O=O+Math.imul(re,St)|0,O=O+Math.imul(_,Ct)|0,Q=Q+Math.imul(_,St)|0,F=F+Math.imul(se,Ut)|0,O=O+Math.imul(se,kt)|0,O=O+Math.imul(he,Ut)|0,Q=Q+Math.imul(he,kt)|0;var tl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tl>>>26)|0,tl&=67108863,F=Math.imul(me,Ie),O=Math.imul(me,Ze),O=O+Math.imul(Ve,Ie)|0,Q=Math.imul(Ve,Ze),F=F+Math.imul(we,ye)|0,O=O+Math.imul(we,Ue)|0,O=O+Math.imul(Se,ye)|0,Q=Q+Math.imul(Se,Ue)|0,F=F+Math.imul(Pe,ie)|0,O=O+Math.imul(Pe,Oe)|0,O=O+Math.imul(Be,ie)|0,Q=Q+Math.imul(Be,Oe)|0,F=F+Math.imul(Je,Xe)|0,O=O+Math.imul(Je,Re)|0,O=O+Math.imul(xe,Xe)|0,Q=Q+Math.imul(xe,Re)|0,F=F+Math.imul(ue,ct)|0,O=O+Math.imul(ue,lt)|0,O=O+Math.imul(ve,ct)|0,Q=Q+Math.imul(ve,lt)|0,F=F+Math.imul(ne,wt)|0,O=O+Math.imul(ne,Mt)|0,O=O+Math.imul(B,wt)|0,Q=Q+Math.imul(B,Mt)|0,F=F+Math.imul(ee,Gt)|0,O=O+Math.imul(ee,Zt)|0,O=O+Math.imul(te,Gt)|0,Q=Q+Math.imul(te,Zt)|0,F=F+Math.imul($,Ct)|0,O=O+Math.imul($,St)|0,O=O+Math.imul(ae,Ct)|0,Q=Q+Math.imul(ae,St)|0,F=F+Math.imul(re,Ut)|0,O=O+Math.imul(re,kt)|0,O=O+Math.imul(_,Ut)|0,Q=Q+Math.imul(_,kt)|0,F=F+Math.imul(se,nn)|0,O=O+Math.imul(se,Ft)|0,O=O+Math.imul(he,nn)|0,Q=Q+Math.imul(he,Ft)|0;var nl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nl>>>26)|0,nl&=67108863,F=Math.imul(me,ye),O=Math.imul(me,Ue),O=O+Math.imul(Ve,ye)|0,Q=Math.imul(Ve,Ue),F=F+Math.imul(we,ie)|0,O=O+Math.imul(we,Oe)|0,O=O+Math.imul(Se,ie)|0,Q=Q+Math.imul(Se,Oe)|0,F=F+Math.imul(Pe,Xe)|0,O=O+Math.imul(Pe,Re)|0,O=O+Math.imul(Be,Xe)|0,Q=Q+Math.imul(Be,Re)|0,F=F+Math.imul(Je,ct)|0,O=O+Math.imul(Je,lt)|0,O=O+Math.imul(xe,ct)|0,Q=Q+Math.imul(xe,lt)|0,F=F+Math.imul(ue,wt)|0,O=O+Math.imul(ue,Mt)|0,O=O+Math.imul(ve,wt)|0,Q=Q+Math.imul(ve,Mt)|0,F=F+Math.imul(ne,Gt)|0,O=O+Math.imul(ne,Zt)|0,O=O+Math.imul(B,Gt)|0,Q=Q+Math.imul(B,Zt)|0,F=F+Math.imul(ee,Ct)|0,O=O+Math.imul(ee,St)|0,O=O+Math.imul(te,Ct)|0,Q=Q+Math.imul(te,St)|0,F=F+Math.imul($,Ut)|0,O=O+Math.imul($,kt)|0,O=O+Math.imul(ae,Ut)|0,Q=Q+Math.imul(ae,kt)|0,F=F+Math.imul(re,nn)|0,O=O+Math.imul(re,Ft)|0,O=O+Math.imul(_,nn)|0,Q=Q+Math.imul(_,Ft)|0;var Dt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,F=Math.imul(me,ie),O=Math.imul(me,Oe),O=O+Math.imul(Ve,ie)|0,Q=Math.imul(Ve,Oe),F=F+Math.imul(we,Xe)|0,O=O+Math.imul(we,Re)|0,O=O+Math.imul(Se,Xe)|0,Q=Q+Math.imul(Se,Re)|0,F=F+Math.imul(Pe,ct)|0,O=O+Math.imul(Pe,lt)|0,O=O+Math.imul(Be,ct)|0,Q=Q+Math.imul(Be,lt)|0,F=F+Math.imul(Je,wt)|0,O=O+Math.imul(Je,Mt)|0,O=O+Math.imul(xe,wt)|0,Q=Q+Math.imul(xe,Mt)|0,F=F+Math.imul(ue,Gt)|0,O=O+Math.imul(ue,Zt)|0,O=O+Math.imul(ve,Gt)|0,Q=Q+Math.imul(ve,Zt)|0,F=F+Math.imul(ne,Ct)|0,O=O+Math.imul(ne,St)|0,O=O+Math.imul(B,Ct)|0,Q=Q+Math.imul(B,St)|0,F=F+Math.imul(ee,Ut)|0,O=O+Math.imul(ee,kt)|0,O=O+Math.imul(te,Ut)|0,Q=Q+Math.imul(te,kt)|0,F=F+Math.imul($,nn)|0,O=O+Math.imul($,Ft)|0,O=O+Math.imul(ae,nn)|0,Q=Q+Math.imul(ae,Ft)|0;var ht=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ht>>>26)|0,ht&=67108863,F=Math.imul(me,Xe),O=Math.imul(me,Re),O=O+Math.imul(Ve,Xe)|0,Q=Math.imul(Ve,Re),F=F+Math.imul(we,ct)|0,O=O+Math.imul(we,lt)|0,O=O+Math.imul(Se,ct)|0,Q=Q+Math.imul(Se,lt)|0,F=F+Math.imul(Pe,wt)|0,O=O+Math.imul(Pe,Mt)|0,O=O+Math.imul(Be,wt)|0,Q=Q+Math.imul(Be,Mt)|0,F=F+Math.imul(Je,Gt)|0,O=O+Math.imul(Je,Zt)|0,O=O+Math.imul(xe,Gt)|0,Q=Q+Math.imul(xe,Zt)|0,F=F+Math.imul(ue,Ct)|0,O=O+Math.imul(ue,St)|0,O=O+Math.imul(ve,Ct)|0,Q=Q+Math.imul(ve,St)|0,F=F+Math.imul(ne,Ut)|0,O=O+Math.imul(ne,kt)|0,O=O+Math.imul(B,Ut)|0,Q=Q+Math.imul(B,kt)|0,F=F+Math.imul(ee,nn)|0,O=O+Math.imul(ee,Ft)|0,O=O+Math.imul(te,nn)|0,Q=Q+Math.imul(te,Ft)|0;var Fe=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,F=Math.imul(me,ct),O=Math.imul(me,lt),O=O+Math.imul(Ve,ct)|0,Q=Math.imul(Ve,lt),F=F+Math.imul(we,wt)|0,O=O+Math.imul(we,Mt)|0,O=O+Math.imul(Se,wt)|0,Q=Q+Math.imul(Se,Mt)|0,F=F+Math.imul(Pe,Gt)|0,O=O+Math.imul(Pe,Zt)|0,O=O+Math.imul(Be,Gt)|0,Q=Q+Math.imul(Be,Zt)|0,F=F+Math.imul(Je,Ct)|0,O=O+Math.imul(Je,St)|0,O=O+Math.imul(xe,Ct)|0,Q=Q+Math.imul(xe,St)|0,F=F+Math.imul(ue,Ut)|0,O=O+Math.imul(ue,kt)|0,O=O+Math.imul(ve,Ut)|0,Q=Q+Math.imul(ve,kt)|0,F=F+Math.imul(ne,nn)|0,O=O+Math.imul(ne,Ft)|0,O=O+Math.imul(B,nn)|0,Q=Q+Math.imul(B,Ft)|0;var tt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tt>>>26)|0,tt&=67108863,F=Math.imul(me,wt),O=Math.imul(me,Mt),O=O+Math.imul(Ve,wt)|0,Q=Math.imul(Ve,Mt),F=F+Math.imul(we,Gt)|0,O=O+Math.imul(we,Zt)|0,O=O+Math.imul(Se,Gt)|0,Q=Q+Math.imul(Se,Zt)|0,F=F+Math.imul(Pe,Ct)|0,O=O+Math.imul(Pe,St)|0,O=O+Math.imul(Be,Ct)|0,Q=Q+Math.imul(Be,St)|0,F=F+Math.imul(Je,Ut)|0,O=O+Math.imul(Je,kt)|0,O=O+Math.imul(xe,Ut)|0,Q=Q+Math.imul(xe,kt)|0,F=F+Math.imul(ue,nn)|0,O=O+Math.imul(ue,Ft)|0,O=O+Math.imul(ve,nn)|0,Q=Q+Math.imul(ve,Ft)|0;var nt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nt>>>26)|0,nt&=67108863,F=Math.imul(me,Gt),O=Math.imul(me,Zt),O=O+Math.imul(Ve,Gt)|0,Q=Math.imul(Ve,Zt),F=F+Math.imul(we,Ct)|0,O=O+Math.imul(we,St)|0,O=O+Math.imul(Se,Ct)|0,Q=Q+Math.imul(Se,St)|0,F=F+Math.imul(Pe,Ut)|0,O=O+Math.imul(Pe,kt)|0,O=O+Math.imul(Be,Ut)|0,Q=Q+Math.imul(Be,kt)|0,F=F+Math.imul(Je,nn)|0,O=O+Math.imul(Je,Ft)|0,O=O+Math.imul(xe,nn)|0,Q=Q+Math.imul(xe,Ft)|0;var Vt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,F=Math.imul(me,Ct),O=Math.imul(me,St),O=O+Math.imul(Ve,Ct)|0,Q=Math.imul(Ve,St),F=F+Math.imul(we,Ut)|0,O=O+Math.imul(we,kt)|0,O=O+Math.imul(Se,Ut)|0,Q=Q+Math.imul(Se,kt)|0,F=F+Math.imul(Pe,nn)|0,O=O+Math.imul(Pe,Ft)|0,O=O+Math.imul(Be,nn)|0,Q=Q+Math.imul(Be,Ft)|0;var Bt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,F=Math.imul(me,Ut),O=Math.imul(me,kt),O=O+Math.imul(Ve,Ut)|0,Q=Math.imul(Ve,kt),F=F+Math.imul(we,nn)|0,O=O+Math.imul(we,Ft)|0,O=O+Math.imul(Se,nn)|0,Q=Q+Math.imul(Se,Ft)|0;var Nn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,F=Math.imul(me,nn),O=Math.imul(me,Ft),O=O+Math.imul(Ve,nn)|0,Q=Math.imul(Ve,Ft);var oi=(k+F|0)+((O&8191)<<13)|0;return k=(Q+(O>>>13)|0)+(oi>>>26)|0,oi&=67108863,H[0]=Ln,H[1]=An,H[2]=Gi,H[3]=Pi,H[4]=Gl,H[5]=Fn,H[6]=cl,H[7]=ki,H[8]=tl,H[9]=nl,H[10]=Dt,H[11]=ht,H[12]=Fe,H[13]=tt,H[14]=nt,H[15]=Vt,H[16]=Bt,H[17]=Nn,H[18]=oi,k!==0&&(H[19]=k,J.length++),J};Math.imul||(c=h);function W(V,Y,T){T.negative=Y.negative^V.negative,T.length=V.length+Y.length;for(var J=0,U=0,K=0;K>>26)|0,U+=H>>>26,H&=67108863}T.words[K]=k,J=H,H=U}return J!==0?T.words[K]=J:T.length--,T._strip()}function M(V,Y,T){return W(V,Y,T)}b.prototype.mulTo=function(Y,T){var J,U=this.length+Y.length;return this.length===10&&Y.length===10?J=c(this,Y,T):U<63?J=h(this,Y,T):U<1024?J=W(this,Y,T):J=M(this,Y,T),J},b.prototype.mul=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),this.mulTo(Y,T)},b.prototype.mulf=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),M(this,Y,T)},b.prototype.imul=function(Y){return this.clone().mulTo(Y,this)},b.prototype.imuln=function(Y){var T=Y<0;T&&(Y=-Y),f(typeof Y=="number"),f(Y<67108864);for(var J=0,U=0;U>=26,J+=K/67108864|0,J+=H>>>26,this.words[U]=H&67108863}return J!==0&&(this.words[U]=J,this.length++),T?this.ineg():this},b.prototype.muln=function(Y){return this.clone().imuln(Y)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(Y){var T=s(Y);if(T.length===0)return new b(1);for(var J=this,U=0;U=0);var T=Y%26,J=(Y-T)/26,U=67108863>>>26-T<<26-T,K;if(T!==0){var H=0;for(K=0;K>>26-T}H&&(this.words[K]=H,this.length++)}if(J!==0){for(K=this.length-1;K>=0;K--)this.words[K+J]=this.words[K];for(K=0;K=0);var U;T?U=(T-T%26)/26:U=0;var K=Y%26,H=Math.min((Y-K)/26,this.length),k=67108863^67108863>>>K<H)for(this.length-=H,O=0;O=0&&(Q!==0||O>=U);O--){var oe=this.words[O]|0;this.words[O]=Q<<26-K|oe>>>K,Q=oe&k}return F&&Q!==0&&(F.words[F.length++]=Q),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},b.prototype.ishrn=function(Y,T,J){return f(this.negative===0),this.iushrn(Y,T,J)},b.prototype.shln=function(Y){return this.clone().ishln(Y)},b.prototype.ushln=function(Y){return this.clone().iushln(Y)},b.prototype.shrn=function(Y){return this.clone().ishrn(Y)},b.prototype.ushrn=function(Y){return this.clone().iushrn(Y)},b.prototype.testn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Y%26,J=(Y-T)/26,U=1<=0);var T=Y%26,J=(Y-T)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=J)return this;if(T!==0&&J++,this.length=Math.min(J,this.length),T!==0){var U=67108863^67108863>>>T<=67108864;T++)this.words[T]-=67108864,T===this.length-1?this.words[T+1]=1:this.words[T+1]++;return this.length=Math.max(this.length,T+1),this},b.prototype.isubn=function(Y){if(f(typeof Y=="number"),f(Y<67108864),Y<0)return this.iaddn(-Y);if(this.negative!==0)return this.negative=0,this.iaddn(Y),this.negative=1,this;if(this.words[0]-=Y,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var T=0;T>26)-(F/67108864|0),this.words[K+J]=H&67108863}for(;K>26,this.words[K+J]=H&67108863;if(k===0)return this._strip();for(f(k===-1),k=0,K=0;K>26,this.words[K]=H&67108863;return this.negative=1,this._strip()},b.prototype._wordDiv=function(Y,T){var J=this.length-Y.length,U=this.clone(),K=Y,H=K.words[K.length-1]|0,k=this._countBits(H);J=26-k,J!==0&&(K=K.ushln(J),U.iushln(J),H=K.words[K.length-1]|0);var F=U.length-K.length,O;if(T!=="mod"){O=new b(null),O.length=F+1,O.words=new Array(O.length);for(var Q=0;Q=0;se--){var he=(U.words[K.length+se]|0)*67108864+(U.words[K.length+se-1]|0);for(he=Math.min(he/H|0,67108863),U._ishlnsubmul(K,he,se);U.negative!==0;)he--,U.negative=0,U._ishlnsubmul(K,1,se),U.isZero()||(U.negative^=1);O&&(O.words[se]=he)}return O&&O._strip(),U._strip(),T!=="div"&&J!==0&&U.iushrn(J),{div:O||null,mod:U}},b.prototype.divmod=function(Y,T,J){if(f(!Y.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var U,K,H;return this.negative!==0&&Y.negative===0?(H=this.neg().divmod(Y,T),T!=="mod"&&(U=H.div.neg()),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.iadd(Y)),{div:U,mod:K}):this.negative===0&&Y.negative!==0?(H=this.divmod(Y.neg(),T),T!=="mod"&&(U=H.div.neg()),{div:U,mod:H.mod}):this.negative&Y.negative?(H=this.neg().divmod(Y.neg(),T),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.isub(Y)),{div:H.div,mod:K}):Y.length>this.length||this.cmp(Y)<0?{div:new b(0),mod:this}:Y.length===1?T==="div"?{div:this.divn(Y.words[0]),mod:null}:T==="mod"?{div:null,mod:new b(this.modrn(Y.words[0]))}:{div:this.divn(Y.words[0]),mod:new b(this.modrn(Y.words[0]))}:this._wordDiv(Y,T)},b.prototype.div=function(Y){return this.divmod(Y,"div",!1).div},b.prototype.mod=function(Y){return this.divmod(Y,"mod",!1).mod},b.prototype.umod=function(Y){return this.divmod(Y,"mod",!0).mod},b.prototype.divRound=function(Y){var T=this.divmod(Y);if(T.mod.isZero())return T.div;var J=T.div.negative!==0?T.mod.isub(Y):T.mod,U=Y.ushrn(1),K=Y.andln(1),H=J.cmp(U);return H<0||K===1&&H===0?T.div:T.div.negative!==0?T.div.isubn(1):T.div.iaddn(1)},b.prototype.modrn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=(1<<26)%Y,U=0,K=this.length-1;K>=0;K--)U=(J*U+(this.words[K]|0))%Y;return T?-U:U},b.prototype.modn=function(Y){return this.modrn(Y)},b.prototype.idivn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=0,U=this.length-1;U>=0;U--){var K=(this.words[U]|0)+J*67108864;this.words[U]=K/Y|0,J=K%Y}return this._strip(),T?this.ineg():this},b.prototype.divn=function(Y){return this.clone().idivn(Y)},b.prototype.egcd=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=new b(0),k=new b(1),F=0;T.isEven()&&J.isEven();)T.iushrn(1),J.iushrn(1),++F;for(var O=J.clone(),Q=T.clone();!T.isZero();){for(var oe=0,se=1;!(T.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(T.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(O),K.isub(Q)),U.iushrn(1),K.iushrn(1);for(var he=0,pe=1;!(J.words[0]&pe)&&he<26;++he,pe<<=1);if(he>0)for(J.iushrn(he);he-- >0;)(H.isOdd()||k.isOdd())&&(H.iadd(O),k.isub(Q)),H.iushrn(1),k.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(H),K.isub(k)):(J.isub(T),H.isub(U),k.isub(K))}return{a:H,b:k,gcd:J.iushln(F)}},b.prototype._invmp=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=J.clone();T.cmpn(1)>0&&J.cmpn(1)>0;){for(var k=0,F=1;!(T.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(T.iushrn(k);k-- >0;)U.isOdd()&&U.iadd(H),U.iushrn(1);for(var O=0,Q=1;!(J.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(J.iushrn(O);O-- >0;)K.isOdd()&&K.iadd(H),K.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(K)):(J.isub(T),K.isub(U))}var oe;return T.cmpn(1)===0?oe=U:oe=K,oe.cmpn(0)<0&&oe.iadd(Y),oe},b.prototype.gcd=function(Y){if(this.isZero())return Y.abs();if(Y.isZero())return this.abs();var T=this.clone(),J=Y.clone();T.negative=0,J.negative=0;for(var U=0;T.isEven()&&J.isEven();U++)T.iushrn(1),J.iushrn(1);do{for(;T.isEven();)T.iushrn(1);for(;J.isEven();)J.iushrn(1);var K=T.cmp(J);if(K<0){var H=T;T=J,J=H}else if(K===0||J.cmpn(1)===0)break;T.isub(J)}while(!0);return J.iushln(U)},b.prototype.invm=function(Y){return this.egcd(Y).a.umod(Y)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(Y){return this.words[0]&Y},b.prototype.bincn=function(Y){f(typeof Y=="number");var T=Y%26,J=(Y-T)/26,U=1<>>26,k&=67108863,this.words[H]=k}return K!==0&&(this.words[H]=K,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(Y){var T=Y<0;if(this.negative!==0&&!T)return-1;if(this.negative===0&&T)return 1;this._strip();var J;if(this.length>1)J=1;else{T&&(Y=-Y),f(Y<=67108863,"Number is too big");var U=this.words[0]|0;J=U===Y?0:UY.length)return 1;if(this.length=0;J--){var U=this.words[J]|0,K=Y.words[J]|0;if(U!==K){UK&&(T=1);break}}return T},b.prototype.gtn=function(Y){return this.cmpn(Y)===1},b.prototype.gt=function(Y){return this.cmp(Y)===1},b.prototype.gten=function(Y){return this.cmpn(Y)>=0},b.prototype.gte=function(Y){return this.cmp(Y)>=0},b.prototype.ltn=function(Y){return this.cmpn(Y)===-1},b.prototype.lt=function(Y){return this.cmp(Y)===-1},b.prototype.lten=function(Y){return this.cmpn(Y)<=0},b.prototype.lte=function(Y){return this.cmp(Y)<=0},b.prototype.eqn=function(Y){return this.cmpn(Y)===0},b.prototype.eq=function(Y){return this.cmp(Y)===0},b.red=function(Y){return new S(Y)},b.prototype.toRed=function(Y){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),Y.convertTo(this)._forceRed(Y)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(Y){return this.red=Y,this},b.prototype.forceRed=function(Y){return f(!this.red,"Already a number in reduction context"),this._forceRed(Y)},b.prototype.redAdd=function(Y){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,Y)},b.prototype.redIAdd=function(Y){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,Y)},b.prototype.redSub=function(Y){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,Y)},b.prototype.redISub=function(Y){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,Y)},b.prototype.redShl=function(Y){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,Y)},b.prototype.redMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.mul(this,Y)},b.prototype.redIMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.imul(this,Y)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(Y){return f(this.red&&!Y.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,Y)};var I={k256:null,p224:null,p192:null,p25519:null};function w(V,Y){this.name=V,this.p=new b(Y,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}w.prototype._tmp=function(){var Y=new b(null);return Y.words=new Array(Math.ceil(this.n/13)),Y},w.prototype.ireduce=function(Y){var T=Y,J;do this.split(T,this.tmp),T=this.imulK(T),T=T.iadd(this.tmp),J=T.bitLength();while(J>this.n);var U=J0?T.isub(this.p):T.strip!==void 0?T.strip():T._strip(),T},w.prototype.split=function(Y,T){Y.iushrn(this.n,0,T)},w.prototype.imulK=function(Y){return Y.imul(this.k)};function C(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(C,w),C.prototype.split=function(Y,T){for(var J=4194303,U=Math.min(Y.length,9),K=0;K>>22,H=k}H>>>=22,Y.words[K-10]=H,H===0&&Y.length>10?Y.length-=10:Y.length-=9},C.prototype.imulK=function(Y){Y.words[Y.length]=0,Y.words[Y.length+1]=0,Y.length+=2;for(var T=0,J=0;J>>=26,Y.words[J]=K,T=U}return T!==0&&(Y.words[Y.length++]=T),Y},b._prime=function(Y){if(I[Y])return I[Y];var T;if(Y==="k256")T=new C;else if(Y==="p224")T=new x;else if(Y==="p192")T=new R;else if(Y==="p25519")T=new g;else throw new Error("Unknown prime "+Y);return I[Y]=T,T};function S(V){if(typeof V=="string"){var Y=b._prime(V);this.m=Y.p,this.prime=Y}else f(V.gtn(1),"modulus must be greater than 1"),this.m=V,this.prime=null}S.prototype._verify1=function(Y){f(Y.negative===0,"red works only with positives"),f(Y.red,"red works only with red numbers")},S.prototype._verify2=function(Y,T){f((Y.negative|T.negative)===0,"red works only with positives"),f(Y.red&&Y.red===T.red,"red works only with red numbers")},S.prototype.imod=function(Y){return this.prime?this.prime.ireduce(Y)._forceRed(this):(X(Y,Y.umod(this.m)._forceRed(this)),Y)},S.prototype.neg=function(Y){return Y.isZero()?Y.clone():this.m.sub(Y)._forceRed(this)},S.prototype.add=function(Y,T){this._verify2(Y,T);var J=Y.add(T);return J.cmp(this.m)>=0&&J.isub(this.m),J._forceRed(this)},S.prototype.iadd=function(Y,T){this._verify2(Y,T);var J=Y.iadd(T);return J.cmp(this.m)>=0&&J.isub(this.m),J},S.prototype.sub=function(Y,T){this._verify2(Y,T);var J=Y.sub(T);return J.cmpn(0)<0&&J.iadd(this.m),J._forceRed(this)},S.prototype.isub=function(Y,T){this._verify2(Y,T);var J=Y.isub(T);return J.cmpn(0)<0&&J.iadd(this.m),J},S.prototype.shl=function(Y,T){return this._verify1(Y),this.imod(Y.ushln(T))},S.prototype.imul=function(Y,T){return this._verify2(Y,T),this.imod(Y.imul(T))},S.prototype.mul=function(Y,T){return this._verify2(Y,T),this.imod(Y.mul(T))},S.prototype.isqr=function(Y){return this.imul(Y,Y.clone())},S.prototype.sqr=function(Y){return this.mul(Y,Y)},S.prototype.sqrt=function(Y){if(Y.isZero())return Y.clone();var T=this.m.andln(3);if(f(T%2===1),T===3){var J=this.m.add(new b(1)).iushrn(2);return this.pow(Y,J)}for(var U=this.m.subn(1),K=0;!U.isZero()&&U.andln(1)===0;)K++,U.iushrn(1);f(!U.isZero());var H=new b(1).toRed(this),k=H.redNeg(),F=this.m.subn(1).iushrn(1),O=this.m.bitLength();for(O=new b(2*O*O).toRed(this);this.pow(O,F).cmp(k)!==0;)O.redIAdd(k);for(var Q=this.pow(O,U),oe=this.pow(Y,U.addn(1).iushrn(1)),se=this.pow(Y,U),he=K;se.cmp(H)!==0;){for(var pe=se,re=0;pe.cmp(H)!==0;re++)pe=pe.redSqr();f(re=0;K--){for(var Q=T.words[K],oe=O-1;oe>=0;oe--){var se=Q>>oe&1;if(H!==U[0]&&(H=this.sqr(H)),se===0&&k===0){F=0;continue}k<<=1,k|=se,F++,!(F!==J&&(K!==0||oe!==0))&&(H=this.mul(H,U[k]),F=0,k=0)}O=26}return H},S.prototype.convertTo=function(Y){var T=Y.umod(this.m);return T===Y?T.clone():T},S.prototype.convertFrom=function(Y){var T=Y.clone();return T.red=null,T},b.mont=function(Y){return new L(Y)};function L(V){S.call(this,V),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(L,S),L.prototype.convertTo=function(Y){return this.imod(Y.ushln(this.shift))},L.prototype.convertFrom=function(Y){var T=this.imod(Y.mul(this.rinv));return T.red=null,T},L.prototype.imul=function(Y,T){if(Y.isZero()||T.isZero())return Y.words[0]=0,Y.length=1,Y;var J=Y.imul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.mul=function(Y,T){if(Y.isZero()||T.isZero())return new b(0)._forceRed(this);var J=Y.mul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.invm=function(Y){var T=this.imod(Y._invmp(this.m).mul(this.r2));return T._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],184:[function(t,i,a){function l(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Z){return typeof Z}:l=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},l(v)}var o;i.exports=function(b){return o||(o=new r(null)),o.generate(b)};function r(v){this.rand=v}if(i.exports.Rand=r,r.prototype.generate=function(b){return this._rand(b)},r.prototype._rand=function(b){if(this.rand.getBytes)return this.rand.getBytes(b);for(var Z=new Uint8Array(b),p=0;p"u"?"undefined":l(self))==="object")self.crypto&&self.crypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.crypto.getRandomValues(Z),Z}:self.msCrypto&&self.msCrypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.msCrypto.getRandomValues(Z),Z}:(typeof window>"u"?"undefined":l(window))==="object"&&(r.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var f=t("crypto");if(typeof f.randomBytes!="function")throw new Error("Not supported");r.prototype._rand=function(b){return f.randomBytes(b)}}catch{}},{crypto:185}],185:[function(t,i,a){},{}],186:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(p){l.isBuffer(p)||(p=l.from(p));for(var y=p.length/4|0,X=new Array(y),m=0;m>>24]^d[c>>>16&255]^u[W>>>8&255]^s[M&255]^y[R++],w=G[c>>>24]^d[W>>>16&255]^u[M>>>8&255]^s[h&255]^y[R++],C=G[W>>>24]^d[M>>>16&255]^u[h>>>8&255]^s[c&255]^y[R++],x=G[M>>>24]^d[h>>>16&255]^u[c>>>8&255]^s[W&255]^y[R++],h=I,c=w,W=C,M=x;return I=(m[h>>>24]<<24|m[c>>>16&255]<<16|m[W>>>8&255]<<8|m[M&255])^y[R++],w=(m[c>>>24]<<24|m[W>>>16&255]<<16|m[M>>>8&255]<<8|m[h&255])^y[R++],C=(m[W>>>24]<<24|m[M>>>16&255]<<16|m[h>>>8&255]<<8|m[c&255])^y[R++],x=(m[M>>>24]<<24|m[h>>>16&255]<<16|m[c>>>8&255]<<8|m[W&255])^y[R++],I=I>>>0,w=w>>>0,C=C>>>0,x=x>>>0,[I,w,C,x]}var v=[0,1,2,4,8,16,32,64,128,27,54],b=function(){for(var p=new Array(256),y=0;y<256;y++)y<128?p[y]=y<<1:p[y]=y<<1^283;for(var X=[],m=[],N=[[],[],[],[]],G=[[],[],[],[]],d=0,u=0,s=0;s<256;++s){var h=u^u<<1^u<<2^u<<3^u<<4;h=h>>>8^h&255^99,X[d]=h,m[h]=d;var c=p[d],W=p[c],M=p[W],I=p[h]*257^h*16843008;N[0][d]=I<<24|I>>>8,N[1][d]=I<<16|I>>>16,N[2][d]=I<<8|I>>>24,N[3][d]=I,I=M*16843009^W*65537^c*257^d*16843008,G[0][h]=I<<24|I>>>8,G[1][h]=I<<16|I>>>16,G[2][h]=I<<8|I>>>24,G[3][h]=I,d===0?d=u=1:(d=c^p[p[p[M^c]]],u^=p[p[u]])}return{SBOX:X,INV_SBOX:m,SUB_MIX:N,INV_SUB_MIX:G}}();function Z(p){this._key=o(p),this._reset()}Z.blockSize=4*4,Z.keySize=256/8,Z.prototype.blockSize=Z.blockSize,Z.prototype.keySize=Z.keySize,Z.prototype._reset=function(){for(var p=this._key,y=p.length,X=y+6,m=(X+1)*4,N=[],G=0;G>>24,d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255],d^=v[G/y|0]<<24):y>6&&G%y===4&&(d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255]),N[G]=N[G-y]^d}for(var u=[],s=0;s>>24]]^b.INV_SUB_MIX[1][b.SBOX[c>>>16&255]]^b.INV_SUB_MIX[2][b.SBOX[c>>>8&255]]^b.INV_SUB_MIX[3][b.SBOX[c&255]]}this._nRounds=X,this._keySchedule=N,this._invKeySchedule=u},Z.prototype.encryptBlockRaw=function(p){return p=o(p),f(p,this._keySchedule,b.SUB_MIX,b.SBOX,this._nRounds)},Z.prototype.encryptBlock=function(p){var y=this.encryptBlockRaw(p),X=l.allocUnsafe(16);return X.writeUInt32BE(y[0],0),X.writeUInt32BE(y[1],4),X.writeUInt32BE(y[2],8),X.writeUInt32BE(y[3],12),X},Z.prototype.decryptBlock=function(p){p=o(p);var y=p[1];p[1]=p[3],p[3]=y;var X=f(p,this._invKeySchedule,b.INV_SUB_MIX,b.INV_SBOX,this._nRounds),m=l.allocUnsafe(16);return m.writeUInt32BE(X[0],0),m.writeUInt32BE(X[3],4),m.writeUInt32BE(X[2],8),m.writeUInt32BE(X[1],12),m},Z.prototype.scrub=function(){r(this._keySchedule),r(this._invKeySchedule),r(this._key)},i.exports.AES=Z},{"safe-buffer":494}],187:[function(t,i,a){var l=t("./aes"),o=t("safe-buffer").Buffer,r=t("cipher-base"),f=t("inherits"),v=t("./ghash"),b=t("buffer-xor"),Z=t("./incr32");function p(m,N){var G=0;m.length!==N.length&&G++;for(var d=Math.min(m.length,N.length),u=0;u16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u}else if(this.cache.length>=16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u;return null},X.prototype.flush=function(){if(this.cache.length)return this.cache};function m(d){var u=d[15];if(u<1||u>16)throw new Error("unable to decrypt data");for(var s=-1;++s15){var d=this.cache.slice(0,16);return this.cache=this.cache.slice(16),d}return null},m.prototype.flush=function(){for(var d=16-this.cache.length,u=r.allocUnsafe(d),s=-1;++s>>0,0),Z.writeUInt32BE(b[1]>>>0,4),Z.writeUInt32BE(b[2]>>>0,8),Z.writeUInt32BE(b[3]>>>0,12),Z}function v(b){this.h=b,this.state=l.alloc(16,0),this.cache=l.allocUnsafe(0)}v.prototype.ghash=function(b){for(var Z=-1;++Z0;p--)b[p]=b[p]>>>1|(b[p-1]&1)<<31;b[0]=b[0]>>>1,X&&(b[0]=b[0]^225<<24)}this.state=f(Z)},v.prototype.update=function(b){this.cache=l.concat([this.cache,b]);for(var Z;this.cache.length>=16;)Z=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(Z)},v.prototype.final=function(b,Z){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(f([0,b,0,Z])),this.state},i.exports=v},{"safe-buffer":494}],192:[function(t,i,a){function l(o){for(var r=o.length,f;r--;)if(f=o.readUInt8(r),f===255)o.writeUInt8(0,r);else{f++,o.writeUInt8(f,r);break}}i.exports=l},{}],193:[function(t,i,a){var l=t("buffer-xor");a.encrypt=function(o,r){var f=l(r,o._prev);return o._prev=o._cipher.encryptBlock(f),o._prev},a.decrypt=function(o,r){var f=o._prev;o._prev=r;var v=o._cipher.decryptBlock(r);return l(v,f)}},{"buffer-xor":217}],194:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("buffer-xor");function r(f,v,b){var Z=v.length,p=o(v,f._cache);return f._cache=f._cache.slice(Z),f._prev=l.concat([f._prev,b?v:p]),p}a.encrypt=function(f,v,b){for(var Z=l.allocUnsafe(0),p;v.length;)if(f._cache.length===0&&(f._cache=f._cipher.encryptBlock(f._prev),f._prev=l.allocUnsafe(0)),f._cache.length<=v.length)p=f._cache.length,Z=l.concat([Z,r(f,v.slice(0,p),b)]),v=v.slice(p);else{Z=l.concat([Z,r(f,v,b)]);break}return Z}},{"buffer-xor":217,"safe-buffer":494}],195:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(f,v,b){for(var Z,p=-1,y=8,X=0,m,N;++p>p%8,f._prev=r(f._prev,b?m:N);return X}function r(f,v){var b=f.length,Z=-1,p=l.allocUnsafe(f.length);for(f=l.concat([f,l.from([v])]);++Z>7;return p}a.encrypt=function(f,v,b){for(var Z=v.length,p=l.allocUnsafe(Z),y=-1;++y=0||!y.umod(Z.prime1)||!y.umod(Z.prime2);)y=new o(r(p));return y}}).call(this,t("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],208:[function(t,i,a){i.exports=t("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(t,i,a){i.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(t,i,a){i.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("create-hash"),r=t("readable-stream"),f=t("inherits"),v=t("./sign"),b=t("./verify"),Z=t("./algorithms.json");Object.keys(Z).forEach(function(N){Z[N].id=l.from(Z[N].id,"hex"),Z[N.toLowerCase()]=Z[N]});function p(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hashType=G.hash,this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(p,r.Writable),p.prototype._write=function(G,d,u){this._hash.update(G),u()},p.prototype.update=function(G,d){return typeof G=="string"&&(G=l.from(G,d)),this._hash.update(G),this},p.prototype.sign=function(G,d){this.end();var u=this._hash.digest(),s=v(u,G,this._hashType,this._signType,this._tag);return d?s.toString(d):s};function y(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(y,r.Writable),y.prototype._write=function(G,d,u){this._hash.update(G),u()},y.prototype.update=function(G,d){return typeof G=="string"&&(G=l.from(G,d)),this._hash.update(G),this},y.prototype.verify=function(G,d,u){typeof d=="string"&&(d=l.from(d,u)),this.end();var s=this._hash.digest();return b(d,s,G,this._signType,this._tag)};function X(N){return new p(N)}function m(N){return new y(N)}i.exports={Sign:X,Verify:m,createSign:X,createVerify:m}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("create-hmac"),r=t("browserify-rsa"),f=t("elliptic").ec,v=t("bn.js"),b=t("parse-asn1"),Z=t("./curves.json");function p(h,c,W,M,I){var w=b(c);if(w.curve){if(M!=="ecdsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");return y(h,w)}else if(w.type==="dsa"){if(M!=="dsa")throw new Error("wrong private key type");return X(h,w,W)}else if(M!=="rsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");h=l.concat([I,h]);for(var C=w.modulus.byteLength(),x=[0,1];h.length+x.length+10&&W.ishrn(M),W}function d(h,c){h=G(h,c),h=h.mod(c);var W=l.from(h.toArray());if(W.length=m)throw new Error("invalid sig")}i.exports=b},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(t,i,a){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var l=t("buffer"),o=l.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=l:(r(l,a),a.Buffer=f);function f(v,b,Z){return o(v,b,Z)}f.prototype=Object.create(o.prototype),r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return l.SlowBuffer(v)}},{buffer:216}],215:[function(t,i,a){arguments[4][185][0].apply(a,arguments)},{dup:185}],216:[function(t,i,a){(function(p){function o(ne){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(q){return typeof q}:o=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},o(ne)}var r=t("base64-js"),f=t("ieee754");a.Buffer=p,a.SlowBuffer=c,a.INSPECT_MAX_BYTES=50;var v=2147483647;a.kMaxLength=v,p.TYPED_ARRAY_SUPPORT=b(),!p.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function b(){try{var ne=new Uint8Array(1);return ne.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},ne.foo()===42}catch{return!1}}Object.defineProperty(p.prototype,"parent",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.buffer}}),Object.defineProperty(p.prototype,"offset",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.byteOffset}});function Z(ne){if(ne>v)throw new RangeError('The value "'+ne+'" is invalid for option "size"');var B=new Uint8Array(ne);return B.__proto__=p.prototype,B}function p(ne,B,q){if(typeof ne=="number"){if(typeof B=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return N(ne)}return y(ne,B,q)}typeof Symbol<"u"&&Symbol.species!=null&&p[Symbol.species]===p&&Object.defineProperty(p,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),p.poolSize=8192;function y(ne,B,q){if(typeof ne=="string")return G(ne,B);if(ArrayBuffer.isView(ne))return d(ne);if(ne==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne));if(te(ne,ArrayBuffer)||ne&&te(ne.buffer,ArrayBuffer))return u(ne,B,q);if(typeof ne=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ue=ne.valueOf&&ne.valueOf();if(ue!=null&&ue!==ne)return p.from(ue,B,q);var ve=s(ne);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ne[Symbol.toPrimitive]=="function")return p.from(ne[Symbol.toPrimitive]("string"),B,q);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne))}p.from=function(ne,B,q){return y(ne,B,q)},p.prototype.__proto__=Uint8Array.prototype,p.__proto__=Uint8Array;function X(ne){if(typeof ne!="number")throw new TypeError('"size" argument must be of type number');if(ne<0)throw new RangeError('The value "'+ne+'" is invalid for option "size"')}function m(ne,B,q){return X(ne),ne<=0?Z(ne):B!==void 0?typeof q=="string"?Z(ne).fill(B,q):Z(ne).fill(B):Z(ne)}p.alloc=function(ne,B,q){return m(ne,B,q)};function N(ne){return X(ne),Z(ne<0?0:h(ne)|0)}p.allocUnsafe=function(ne){return N(ne)},p.allocUnsafeSlow=function(ne){return N(ne)};function G(ne,B){if((typeof B!="string"||B==="")&&(B="utf8"),!p.isEncoding(B))throw new TypeError("Unknown encoding: "+B);var q=W(ne,B)|0,ue=Z(q),ve=ue.write(ne,B);return ve!==q&&(ue=ue.slice(0,ve)),ue}function d(ne){for(var B=ne.length<0?0:h(ne.length)|0,q=Z(B),ue=0;ue=v)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+v.toString(16)+" bytes");return ne|0}function c(ne){return+ne!=ne&&(ne=0),p.alloc(+ne)}p.isBuffer=function(B){return B!=null&&B._isBuffer===!0&&B!==p.prototype},p.compare=function(B,q){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),te(q,Uint8Array)&&(q=p.from(q,q.offset,q.byteLength)),!p.isBuffer(B)||!p.isBuffer(q))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(B===q)return 0;for(var ue=B.length,ve=q.length,Ge=0,Je=Math.min(ue,ve);Ge2&&arguments[2]===!0;if(!ue&&q===0)return 0;for(var ve=!1;;)switch(B){case"ascii":case"latin1":case"binary":return q;case"utf8":case"utf-8":return E(ne).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q*2;case"hex":return q>>>1;case"base64":return le(ne).length;default:if(ve)return ue?-1:E(ne).length;B=(""+B).toLowerCase(),ve=!0}}p.byteLength=W;function M(ne,B,q){var ue=!1;if((B===void 0||B<0)&&(B=0),B>this.length||((q===void 0||q>this.length)&&(q=this.length),q<=0)||(q>>>=0,B>>>=0,q<=B))return"";for(ne||(ne="utf8");;)switch(ne){case"hex":return k(this,B,q);case"utf8":case"utf-8":return T(this,B,q);case"ascii":return K(this,B,q);case"latin1":case"binary":return H(this,B,q);case"base64":return Y(this,B,q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,B,q);default:if(ue)throw new TypeError("Unknown encoding: "+ne);ne=(ne+"").toLowerCase(),ue=!0}}p.prototype._isBuffer=!0;function I(ne,B,q){var ue=ne[B];ne[B]=ne[q],ne[q]=ue}p.prototype.swap16=function(){var B=this.length;if(B%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var q=0;qq&&(B+=" ... "),""},p.prototype.compare=function(B,q,ue,ve,Ge){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),!p.isBuffer(B))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+o(B));if(q===void 0&&(q=0),ue===void 0&&(ue=B?B.length:0),ve===void 0&&(ve=0),Ge===void 0&&(Ge=this.length),q<0||ue>B.length||ve<0||Ge>this.length)throw new RangeError("out of range index");if(ve>=Ge&&q>=ue)return 0;if(ve>=Ge)return-1;if(q>=ue)return 1;if(q>>>=0,ue>>>=0,ve>>>=0,Ge>>>=0,this===B)return 0;for(var Je=Ge-ve,xe=ue-q,ke=Math.min(Je,xe),Pe=this.slice(ve,Ge),Be=B.slice(q,ue),Te=0;Te2147483647?q=2147483647:q<-2147483648&&(q=-2147483648),q=+q,be(q)&&(q=ve?0:ne.length-1),q<0&&(q=ne.length+q),q>=ne.length){if(ve)return-1;q=ne.length-1}else if(q<0)if(ve)q=0;else return-1;if(typeof B=="string"&&(B=p.from(B,ue)),p.isBuffer(B))return B.length===0?-1:C(ne,B,q,ue,ve);if(typeof B=="number")return B=B&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(ne,B,q):Uint8Array.prototype.lastIndexOf.call(ne,B,q):C(ne,[B],q,ue,ve);throw new TypeError("val must be string, number or Buffer")}function C(ne,B,q,ue,ve){var Ge=1,Je=ne.length,xe=B.length;if(ue!==void 0&&(ue=String(ue).toLowerCase(),ue==="ucs2"||ue==="ucs-2"||ue==="utf16le"||ue==="utf-16le")){if(ne.length<2||B.length<2)return-1;Ge=2,Je/=2,xe/=2,q/=2}function ke(Se,De){return Ge===1?Se[De]:Se.readUInt16BE(De*Ge)}var Pe;if(ve){var Be=-1;for(Pe=q;PeJe&&(q=Je-xe),Pe=q;Pe>=0;Pe--){for(var Te=!0,we=0;weve&&(ue=ve)):ue=ve;var Ge=B.length;ue>Ge/2&&(ue=Ge/2);for(var Je=0;Je>>0,isFinite(ue)?(ue=ue>>>0,ve===void 0&&(ve="utf8")):(ve=ue,ue=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Ge=this.length-q;if((ue===void 0||ue>Ge)&&(ue=Ge),B.length>0&&(ue<0||q<0)||q>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var Je=!1;;)switch(ve){case"hex":return x(this,B,q,ue);case"utf8":case"utf-8":return R(this,B,q,ue);case"ascii":return g(this,B,q,ue);case"latin1":case"binary":return S(this,B,q,ue);case"base64":return L(this,B,q,ue);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,B,q,ue);default:if(Je)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),Je=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Y(ne,B,q){return B===0&&q===ne.length?r.fromByteArray(ne):r.fromByteArray(ne.slice(B,q))}function T(ne,B,q){q=Math.min(ne.length,q);for(var ue=[],ve=B;ve239?4:Ge>223?3:Ge>191?2:1;if(ve+xe<=q){var ke,Pe,Be,Te;switch(xe){case 1:Ge<128&&(Je=Ge);break;case 2:ke=ne[ve+1],(ke&192)===128&&(Te=(Ge&31)<<6|ke&63,Te>127&&(Je=Te));break;case 3:ke=ne[ve+1],Pe=ne[ve+2],(ke&192)===128&&(Pe&192)===128&&(Te=(Ge&15)<<12|(ke&63)<<6|Pe&63,Te>2047&&(Te<55296||Te>57343)&&(Je=Te));break;case 4:ke=ne[ve+1],Pe=ne[ve+2],Be=ne[ve+3],(ke&192)===128&&(Pe&192)===128&&(Be&192)===128&&(Te=(Ge&15)<<18|(ke&63)<<12|(Pe&63)<<6|Be&63,Te>65535&&Te<1114112&&(Je=Te))}}Je===null?(Je=65533,xe=1):Je>65535&&(Je-=65536,ue.push(Je>>>10&1023|55296),Je=56320|Je&1023),ue.push(Je),ve+=xe}return U(ue)}var J=4096;function U(ne){var B=ne.length;if(B<=J)return String.fromCharCode.apply(String,ne);for(var q="",ue=0;ueue)&&(q=ue);for(var ve="",Ge=B;Geue&&(B=ue),q<0?(q+=ue,q<0&&(q=0)):q>ue&&(q=ue),qq)throw new RangeError("Trying to access beyond buffer length")}p.prototype.readUIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B+--q],Ge=1;q>0&&(Ge*=256);)ve+=this[B+--q]*Ge;return ve},p.prototype.readUInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]},p.prototype.readUInt16LE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]|this[B+1]<<8},p.prototype.readUInt16BE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]<<8|this[B+1]},p.prototype.readUInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),(this[B]|this[B+1]<<8|this[B+2]<<16)+this[B+3]*16777216},p.prototype.readUInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]*16777216+(this[B+1]<<16|this[B+2]<<8|this[B+3])},p.prototype.readIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je=Ge&&(ve-=Math.pow(2,8*q)),ve},p.prototype.readIntBE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=q,Ge=1,Je=this[B+--ve];ve>0&&(Ge*=256);)Je+=this[B+--ve]*Ge;return Ge*=128,Je>=Ge&&(Je-=Math.pow(2,8*q)),Je},p.prototype.readInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]&128?(255-this[B]+1)*-1:this[B]},p.prototype.readInt16LE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B]|this[B+1]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt16BE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B+1]|this[B]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]|this[B+1]<<8|this[B+2]<<16|this[B+3]<<24},p.prototype.readInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]<<24|this[B+1]<<16|this[B+2]<<8|this[B+3]},p.prototype.readFloatLE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!0,23,4)},p.prototype.readFloatBE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!1,23,4)},p.prototype.readDoubleLE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!0,52,8)},p.prototype.readDoubleBE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!1,52,8)};function Q(ne,B,q,ue,ve,Ge){if(!p.isBuffer(ne))throw new TypeError('"buffer" argument must be a Buffer instance');if(B>ve||Bne.length)throw new RangeError("Index out of range")}p.prototype.writeUIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=1,xe=0;for(this[q]=B&255;++xe>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=ue-1,xe=1;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)this[q+Je]=B/xe&255;return q+ue},p.prototype.writeUInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,255,0),this[q]=B&255,q+1},p.prototype.writeUInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeUInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeUInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q+3]=B>>>24,this[q+2]=B>>>16,this[q+1]=B>>>8,this[q]=B&255,q+4},p.prototype.writeUInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4},p.prototype.writeIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=0,xe=1,ke=0;for(this[q]=B&255;++Je>0)-ke&255;return q+ue},p.prototype.writeIntBE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=ue-1,xe=1,ke=0;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)B<0&&ke===0&&this[q+Je+1]!==0&&(ke=1),this[q+Je]=(B/xe>>0)-ke&255;return q+ue},p.prototype.writeInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,127,-128),B<0&&(B=255+B+1),this[q]=B&255,q+1},p.prototype.writeInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),this[q]=B&255,this[q+1]=B>>>8,this[q+2]=B>>>16,this[q+3]=B>>>24,q+4},p.prototype.writeInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),B<0&&(B=4294967295+B+1),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4};function oe(ne,B,q,ue,ve,Ge){if(q+ue>ne.length)throw new RangeError("Index out of range");if(q<0)throw new RangeError("Index out of range")}function se(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,4),f.write(ne,B,q,ue,23,4),q+4}p.prototype.writeFloatLE=function(B,q,ue){return se(this,B,q,!0,ue)},p.prototype.writeFloatBE=function(B,q,ue){return se(this,B,q,!1,ue)};function he(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,8),f.write(ne,B,q,ue,52,8),q+8}p.prototype.writeDoubleLE=function(B,q,ue){return he(this,B,q,!0,ue)},p.prototype.writeDoubleBE=function(B,q,ue){return he(this,B,q,!1,ue)},p.prototype.copy=function(B,q,ue,ve){if(!p.isBuffer(B))throw new TypeError("argument should be a Buffer");if(ue||(ue=0),!ve&&ve!==0&&(ve=this.length),q>=B.length&&(q=B.length),q||(q=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),B.length-q=0;--Je)B[Je+q]=this[Je+ue];else Uint8Array.prototype.set.call(B,this.subarray(ue,ve),q);return Ge},p.prototype.fill=function(B,q,ue,ve){if(typeof B=="string"){if(typeof q=="string"?(ve=q,q=0,ue=this.length):typeof ue=="string"&&(ve=ue,ue=this.length),ve!==void 0&&typeof ve!="string")throw new TypeError("encoding must be a string");if(typeof ve=="string"&&!p.isEncoding(ve))throw new TypeError("Unknown encoding: "+ve);if(B.length===1){var Ge=B.charCodeAt(0);(ve==="utf8"&&Ge<128||ve==="latin1")&&(B=Ge)}}else typeof B=="number"&&(B=B&255);if(q<0||this.length>>0,ue=ue===void 0?this.length:ue>>>0,B||(B=0);var Je;if(typeof B=="number")for(Je=q;Je55295&&q<57344){if(!ve){if(q>56319){(B-=3)>-1&&Ge.push(239,191,189);continue}else if(Je+1===ue){(B-=3)>-1&&Ge.push(239,191,189);continue}ve=q;continue}if(q<56320){(B-=3)>-1&&Ge.push(239,191,189),ve=q;continue}q=(ve-55296<<10|q-56320)+65536}else ve&&(B-=3)>-1&&Ge.push(239,191,189);if(ve=null,q<128){if((B-=1)<0)break;Ge.push(q)}else if(q<2048){if((B-=2)<0)break;Ge.push(q>>6|192,q&63|128)}else if(q<65536){if((B-=3)<0)break;Ge.push(q>>12|224,q>>6&63|128,q&63|128)}else if(q<1114112){if((B-=4)<0)break;Ge.push(q>>18|240,q>>12&63|128,q>>6&63|128,q&63|128)}else throw new Error("Invalid code point")}return Ge}function $(ne){for(var B=[],q=0;q>8,ve=q%256,Ge.push(ve),Ge.push(ue);return Ge}function le(ne){return r.toByteArray(re(ne))}function ee(ne,B,q,ue){for(var ve=0;ve=B.length||ve>=ne.length);++ve)B[ve+q]=ne[ve];return ve}function te(ne,B){return ne instanceof B||ne!=null&&ne.constructor!=null&&ne.constructor.name!=null&&ne.constructor.name===B.name}function be(ne){return ne!==ne}}).call(this,t("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(t,i,a){(function(l){i.exports=function(r,f){for(var v=Math.min(r.length,f.length),b=new l(v),Z=0;Zm;)if(N=y[m++],N!=N)return!0}else for(;X>m;m++)if((v||m in y)&&y[m]===Z)return v||m||0;return!v&&-1}};i.exports={includes:f(!0),indexOf:f(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(t,i,a){var l=t("../internals/function-bind-context"),o=t("../internals/indexed-object"),r=t("../internals/to-object"),f=t("../internals/to-length"),v=t("../internals/array-species-create"),b=[].push,Z=function(p){var y=p==1,X=p==2,m=p==3,N=p==4,G=p==6,d=p==5||G;return function(u,s,h,c){for(var W=r(u),M=o(W),I=l(s,h,3),w=f(M.length),C=0,x=c||v,R=y?x(u,w):X?x(u,0):void 0,g,S;w>C;C++)if((d||C in M)&&(g=M[C],S=I(g,C,W),p)){if(y)R[C]=S;else if(S)switch(p){case 3:return!0;case 5:return g;case 6:return C;case 2:b.call(R,g)}else if(N)return!1}return G?-1:m||N?N:R}};i.exports={forEach:Z(0),map:Z(1),filter:Z(2),some:Z(3),every:Z(4),find:Z(5),findIndex:Z(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/has"),f=Object.defineProperty,v={},b=function(Z){throw Z};i.exports=function(Z,p){if(r(v,Z))return v[Z];p||(p={});var y=[][Z],X=r(p,"ACCESSORS")?p.ACCESSORS:!1,m=r(p,0)?p[0]:b,N=r(p,1)?p[1]:void 0;return v[Z]=!!y&&!o(function(){if(X&&!l)return!0;var G={length:-1};X?f(G,1,{enumerable:!0,get:b}):G[1]=1,y.call(G,m,N)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(t,i,a){var l=t("../internals/is-object"),o=t("../internals/is-array"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z;return o(v)&&(Z=v.constructor,typeof Z=="function"&&(Z===Array||o(Z.prototype))?Z=void 0:l(Z)&&(Z=Z[f],Z===null&&(Z=void 0))),new(Z===void 0?Array:Z)(b===0?0:b)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(t,i,a){var l=t("../internals/an-object");i.exports=function(o,r,f,v){try{return v?r(l(f)[0],f[1]):r(f)}catch(Z){var b=o.return;throw b!==void 0&&l(b.call(o)),Z}}},{"../internals/an-object":223}],229:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=l("iterator"),r=!1;try{var f=0,v={next:function(){return{done:!!f++}},return:function(){r=!0}};v[o]=function(){return this},Array.from(v,function(){throw 2})}catch{}i.exports=function(b,Z){if(!Z&&!r)return!1;var p=!1;try{var y={};y[o]=function(){return{next:function(){return{done:p=!0}}}},b(y)}catch{}return p}},{"../internals/well-known-symbol":314}],230:[function(t,i,a){var l={}.toString;i.exports=function(o){return l.call(o).slice(8,-1)}},{}],231:[function(t,i,a){var l=t("../internals/to-string-tag-support"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("toStringTag"),v=o(function(){return arguments}())=="Arguments",b=function(Z,p){try{return Z[p]}catch{}};i.exports=l?o:function(Z){var p,y,X;return Z===void 0?"Undefined":Z===null?"Null":typeof(y=b(p=Object(Z),f))=="string"?y:v?o(p):(X=o(p))=="Object"&&typeof p.callee=="function"?"Arguments":X}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/own-keys"),r=t("../internals/object-get-own-property-descriptor"),f=t("../internals/object-define-property");i.exports=function(v,b){for(var Z=o(b),p=f.f,y=r.f,X=0;X=74)&&(b=o.match(/Chrome\/(\d+)/),b&&(Z=b[1]))),i.exports=Z&&+Z},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(t,i,a){i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/create-non-enumerable-property"),f=t("../internals/redefine"),v=t("../internals/set-global"),b=t("../internals/copy-constructor-properties"),Z=t("../internals/is-forced");i.exports=function(p,y){var X=p.target,m=p.global,N=p.stat,G,d,u,s,h,c;if(m?d=l:N?d=l[X]||v(X,{}):d=(l[X]||{}).prototype,d)for(u in y){if(h=y[u],p.noTargetGet?(c=o(d,u),s=c&&c.value):s=d[u],G=Z(m?u:X+(N?".":"#")+u,p.forced),!G&&s!==void 0){if(typeof h==typeof s)continue;b(h,s)}(p.sham||s&&s.sham)&&r(h,"sham",!0),f(d,u,h,p)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(t,i,a){i.exports=function(l){try{return!!l()}catch{return!0}}},{}],248:[function(t,i,a){var l=t("../internals/a-function");i.exports=function(o,r,f){if(l(o),r===void 0)return o;switch(f){case 0:return function(){return o.call(r)};case 1:return function(v){return o.call(r,v)};case 2:return function(v,b){return o.call(r,v,b)};case 3:return function(v,b,Z){return o.call(r,v,b,Z)}}return function(){return o.apply(r,arguments)}}},{"../internals/a-function":219}],249:[function(t,i,a){var l=t("../internals/path"),o=t("../internals/global"),r=function(f){return typeof f=="function"?f:void 0};i.exports=function(f,v){return arguments.length<2?r(l[f])||r(o[f]):l[f]&&l[f][v]||o[f]&&o[f][v]}},{"../internals/global":251,"../internals/path":290}],250:[function(t,i,a){var l=t("../internals/classof"),o=t("../internals/iterators"),r=t("../internals/well-known-symbol"),f=r("iterator");i.exports=function(v){if(v!=null)return v[f]||v["@@iterator"]||o[l(v)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(t,i,a){(function(l){var o=function(r){return r&&r.Math==Math&&r};i.exports=o(typeof globalThis=="object"&&globalThis)||o(typeof window=="object"&&window)||o(typeof self=="object"&&self)||o(typeof l=="object"&&l)||Function("return this")()}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(t,i,a){var l={}.hasOwnProperty;i.exports=function(o,r){return l.call(o,r)}},{}],253:[function(t,i,a){i.exports={}},{}],254:[function(t,i,a){var l=t("../internals/global");i.exports=function(o,r){var f=l.console;f&&f.error&&(arguments.length===1?f.error(o):f.error(o,r))}},{"../internals/global":251}],255:[function(t,i,a){var l=t("../internals/get-built-in");i.exports=l("document","documentElement")},{"../internals/get-built-in":249}],256:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/document-create-element");i.exports=!l&&!o(function(){return Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(t,i,a){var l=t("../internals/fails"),o=t("../internals/classof-raw"),r="".split;i.exports=l(function(){return!Object("z").propertyIsEnumerable(0)})?function(f){return o(f)=="String"?r.call(f,""):Object(f)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(t,i,a){var l=t("../internals/shared-store"),o=Function.toString;typeof l.inspectSource!="function"&&(l.inspectSource=function(r){return o.call(r)}),i.exports=l.inspectSource},{"../internals/shared-store":300}],259:[function(t,i,a){var l=t("../internals/native-weak-map"),o=t("../internals/global"),r=t("../internals/is-object"),f=t("../internals/create-non-enumerable-property"),v=t("../internals/has"),b=t("../internals/shared-key"),Z=t("../internals/hidden-keys"),p=o.WeakMap,y,X,m,N=function(W){return m(W)?X(W):y(W,{})},G=function(W){return function(M){var I;if(!r(M)||(I=X(M)).type!==W)throw TypeError("Incompatible receiver, "+W+" required");return I}};if(l){var d=new p,u=d.get,s=d.has,h=d.set;y=function(W,M){return h.call(d,W,M),M},X=function(W){return u.call(d,W)||{}},m=function(W){return s.call(d,W)}}else{var c=b("state");Z[c]=!0,y=function(W,M){return f(W,c,M),M},X=function(W){return v(W,c)?W[c]:{}},m=function(W){return v(W,c)}}i.exports={set:y,get:X,has:m,enforce:N,getterFor:G}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=t("../internals/iterators"),r=l("iterator"),f=Array.prototype;i.exports=function(v){return v!==void 0&&(o.Array===v||f[r]===v)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(t,i,a){var l=t("../internals/classof-raw");i.exports=Array.isArray||function(r){return l(r)=="Array"}},{"../internals/classof-raw":230}],262:[function(t,i,a){var l=t("../internals/fails"),o=/#|\.prototype\./,r=function(p,y){var X=v[f(p)];return X==Z?!0:X==b?!1:typeof y=="function"?l(y):!!y},f=r.normalize=function(p){return String(p).replace(o,".").toLowerCase()},v=r.data={},b=r.NATIVE="N",Z=r.POLYFILL="P";i.exports=r},{"../internals/fails":247}],263:[function(t,i,a){i.exports=function(l){return typeof l=="object"?l!==null:typeof l=="function"}},{}],264:[function(t,i,a){i.exports=!1},{}],265:[function(t,i,a){var l=t("../internals/is-object"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("match");i.exports=function(v){var b;return l(v)&&((b=v[f])!==void 0?!!b:o(v)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/is-array-iterator-method"),r=t("../internals/to-length"),f=t("../internals/function-bind-context"),v=t("../internals/get-iterator-method"),b=t("../internals/call-with-safe-iteration-closing"),Z=function(y,X){this.stopped=y,this.result=X},p=i.exports=function(y,X,m,N,G){var d=f(X,m,N?2:1),u,s,h,c,W,M,I;if(G)u=y;else{if(s=v(y),typeof s!="function")throw TypeError("Target is not iterable");if(o(s)){for(h=0,c=r(y.length);c>h;h++)if(W=N?d(l(I=y[h])[0],I[1]):d(y[h]),W&&W instanceof Z)return W;return new Z(!1)}u=s.call(y)}for(M=u.next;!(I=M.call(u)).done;)if(W=b(u,d,I.value,N),typeof W=="object"&&W&&W instanceof Z)return W;return new Z(!1)};p.stop=function(y){return new Z(!0,y)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(t,i,a){var l=t("../internals/object-get-prototype-of"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/well-known-symbol"),v=t("../internals/is-pure"),b=f("iterator"),Z=!1,p=function(){return this},y,X,m;[].keys&&(m=[].keys(),"next"in m?(X=l(l(m)),X!==Object.prototype&&(y=X)):Z=!0),y==null&&(y={}),!v&&!r(y,b)&&o(y,b,p),i.exports={IteratorPrototype:y,BUGGY_SAFARI_ITERATORS:Z}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(t,i,a){arguments[4][253][0].apply(a,arguments)},{dup:253}],269:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/classof-raw"),f=t("../internals/task").set,v=t("../internals/engine-is-ios"),b=l.MutationObserver||l.WebKitMutationObserver,Z=l.process,p=l.Promise,y=r(Z)=="process",X=o(l,"queueMicrotask"),m=X&&X.value,N,G,d,u,s,h,c,W;m||(N=function(){var M,I;for(y&&(M=Z.domain)&&M.exit();G;){I=G.fn,G=G.next;try{I()}catch(w){throw G?u():d=void 0,w}}d=void 0,M&&M.enter()},y?u=function(){Z.nextTick(N)}:b&&!v?(s=!0,h=document.createTextNode(""),new b(N).observe(h,{characterData:!0}),u=function(){h.data=s=!s}):p&&p.resolve?(c=p.resolve(void 0),W=c.then,u=function(){W.call(c,N)}):u=function(){f.call(l,N)}),i.exports=m||function(M){var I={fn:M,next:void 0};d&&(d.next=I),G||(G=I,u()),d=I}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(t,i,a){var l=t("../internals/global");i.exports=l.Promise},{"../internals/global":251}],271:[function(t,i,a){var l=t("../internals/fails");i.exports=!!Object.getOwnPropertySymbols&&!l(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/inspect-source"),r=l.WeakMap;i.exports=typeof r=="function"&&/native code/.test(o(r))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(t,i,a){var l=t("../internals/a-function"),o=function(r){var f,v;this.promise=new r(function(b,Z){if(f!==void 0||v!==void 0)throw TypeError("Bad Promise constructor");f=b,v=Z}),this.resolve=l(f),this.reject=l(v)};i.exports.f=function(r){return new o(r)}},{"../internals/a-function":219}],274:[function(t,i,a){var l=t("../internals/is-regexp");i.exports=function(o){if(l(o))throw TypeError("The method doesn't accept regular expressions");return o}},{"../internals/is-regexp":265}],275:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/object-keys"),f=t("../internals/object-get-own-property-symbols"),v=t("../internals/object-property-is-enumerable"),b=t("../internals/to-object"),Z=t("../internals/indexed-object"),p=Object.assign,y=Object.defineProperty;i.exports=!p||o(function(){if(l&&p({b:1},p(y({},"a",{enumerable:!0,get:function(){y(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var X={},m={},N=Symbol(),G="abcdefghijklmnopqrst";return X[N]=7,G.split("").forEach(function(d){m[d]=d}),p({},X)[N]!=7||r(p({},m)).join("")!=G})?function(m,N){for(var G=b(m),d=arguments.length,u=1,s=f.f,h=v.f;d>u;)for(var c=Z(arguments[u++]),W=s?r(c).concat(s(c)):r(c),M=W.length,I=0,w;M>I;)w=W[I++],(!l||h.call(c,w))&&(G[w]=c[w]);return G}:p},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/object-define-properties"),r=t("../internals/enum-bug-keys"),f=t("../internals/hidden-keys"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/shared-key"),p=">",y="<",X="prototype",m="script",N=Z("IE_PROTO"),G=function(){},d=function(W){return y+m+p+W+y+"/"+m+p},u=function(W){W.write(d("")),W.close();var M=W.parentWindow.Object;return W=null,M},s=function(){var W=b("iframe"),M="java"+m+":",I;return W.style.display="none",v.appendChild(W),W.src=String(M),I=W.contentWindow.document,I.open(),I.write(d("document.F=Object")),I.close(),I.F},h,c=function(){try{h=document.domain&&new ActiveXObject("htmlfile")}catch{}c=h?u(h):s();for(var W=r.length;W--;)delete c[X][r[W]];return c()};f[N]=!0,i.exports=Object.create||function(M,I){var w;return M!==null?(G[X]=l(M),w=new G,G[X]=null,w[N]=M):w=c(),I===void 0?w:o(w,I)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-define-property"),r=t("../internals/an-object"),f=t("../internals/object-keys");i.exports=l?Object.defineProperties:function(b,Z){r(b);for(var p=f(Z),y=p.length,X=0,m;y>X;)o.f(b,m=p[X++],Z[m]);return b}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/ie8-dom-define"),r=t("../internals/an-object"),f=t("../internals/to-primitive"),v=Object.defineProperty;a.f=l?v:function(Z,p,y){if(r(Z),p=f(p,!0),r(y),o)try{return v(Z,p,y)}catch{}if("get"in y||"set"in y)throw TypeError("Accessors not supported");return"value"in y&&(Z[p]=y.value),Z}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-property-is-enumerable"),r=t("../internals/create-property-descriptor"),f=t("../internals/to-indexed-object"),v=t("../internals/to-primitive"),b=t("../internals/has"),Z=t("../internals/ie8-dom-define"),p=Object.getOwnPropertyDescriptor;a.f=l?p:function(X,m){if(X=f(X),m=v(m,!0),Z)try{return p(X,m)}catch{}if(b(X,m))return r(!o.f.call(X,m),X[m])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(t,i,a){var l=t("../internals/to-indexed-object"),o=t("../internals/object-get-own-property-names").f,r={}.toString,f=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],v=function(b){try{return o(b)}catch{return f.slice()}};i.exports.f=function(Z){return f&&r.call(Z)=="[object Window]"?v(Z):o(l(Z))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(t,i,a){var l=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys"),r=o.concat("length","prototype");a.f=Object.getOwnPropertyNames||function(v){return l(v,r)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(t,i,a){a.f=Object.getOwnPropertySymbols},{}],283:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/to-object"),r=t("../internals/shared-key"),f=t("../internals/correct-prototype-getter"),v=r("IE_PROTO"),b=Object.prototype;i.exports=f?Object.getPrototypeOf:function(Z){return Z=o(Z),l(Z,v)?Z[v]:typeof Z.constructor=="function"&&Z instanceof Z.constructor?Z.constructor.prototype:Z instanceof Object?b:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/to-indexed-object"),r=t("../internals/array-includes").indexOf,f=t("../internals/hidden-keys");i.exports=function(v,b){var Z=o(v),p=0,y=[],X;for(X in Z)!l(f,X)&&l(Z,X)&&y.push(X);for(;b.length>p;)l(Z,X=b[p++])&&(~r(y,X)||y.push(X));return y}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(t,i,a){var l=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys");i.exports=Object.keys||function(f){return l(f,o)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(t,i,a){var l={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!l.call({1:2},1);a.f=r?function(v){var b=o(this,v);return!!b&&b.enumerable}:l},{}],287:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/a-possible-prototype");i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,f={},v;try{v=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,v.call(f,[]),r=f instanceof Array}catch{}return function(Z,p){return l(Z),o(p),r?v.call(Z,p):Z.__proto__=p,Z}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-keys"),r=t("../internals/to-indexed-object"),f=t("../internals/object-property-is-enumerable").f,v=function(b){return function(Z){for(var p=r(Z),y=o(p),X=y.length,m=0,N=[],G;X>m;)G=y[m++],(!l||f.call(p,G))&&N.push(b?[G,p[G]]:p[G]);return N}};i.exports={entries:v(!0),values:v(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(t,i,a){var l=t("../internals/get-built-in"),o=t("../internals/object-get-own-property-names"),r=t("../internals/object-get-own-property-symbols"),f=t("../internals/an-object");i.exports=l("Reflect","ownKeys")||function(b){var Z=o.f(f(b)),p=r.f;return p?Z.concat(p(b)):Z}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(t,i,a){var l=t("../internals/global");i.exports=l},{"../internals/global":251}],291:[function(t,i,a){i.exports=function(l){try{return{error:!1,value:l()}}catch(o){return{error:!0,value:o}}}},{}],292:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/is-object"),r=t("../internals/new-promise-capability");i.exports=function(f,v){if(l(f),o(v)&&v.constructor===f)return v;var b=r.f(f),Z=b.resolve;return Z(v),b.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(t,i,a){var l=t("../internals/redefine");i.exports=function(o,r,f){for(var v in r)l(o,v,r[v],f);return o}},{"../internals/redefine":294}],294:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/set-global"),v=t("../internals/inspect-source"),b=t("../internals/internal-state"),Z=b.get,p=b.enforce,y=String(String).split("String");(i.exports=function(X,m,N,G){var d=G?!!G.unsafe:!1,u=G?!!G.enumerable:!1,s=G?!!G.noTargetGet:!1;if(typeof N=="function"&&(typeof m=="string"&&!r(N,"name")&&o(N,"name",m),p(N).source=y.join(typeof m=="string"?m:"")),X===l){u?X[m]=N:f(m,N);return}else d?!s&&X[m]&&(u=!0):delete X[m];u?X[m]=N:o(X,m,N)})(Function.prototype,"toString",function(){return typeof this=="function"&&Z(this).source||v(this)})},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(t,i,a){i.exports=function(l){if(l==null)throw TypeError("Can't call method on "+l);return l}},{}],296:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/create-non-enumerable-property");i.exports=function(r,f){try{o(l,r,f)}catch{l[r]=f}return f}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(t,i,a){var l=t("../internals/get-built-in"),o=t("../internals/object-define-property"),r=t("../internals/well-known-symbol"),f=t("../internals/descriptors"),v=r("species");i.exports=function(b){var Z=l(b),p=o.f;f&&Z&&!Z[v]&&p(Z,v,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(t,i,a){var l=t("../internals/object-define-property").f,o=t("../internals/has"),r=t("../internals/well-known-symbol"),f=r("toStringTag");i.exports=function(v,b,Z){v&&!o(v=Z?v:v.prototype,f)&&l(v,f,{configurable:!0,value:b})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(t,i,a){var l=t("../internals/shared"),o=t("../internals/uid"),r=l("keys");i.exports=function(f){return r[f]||(r[f]=o(f))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/set-global"),r="__core-js_shared__",f=l[r]||o(r,{});i.exports=f},{"../internals/global":251,"../internals/set-global":296}],301:[function(t,i,a){var l=t("../internals/is-pure"),o=t("../internals/shared-store");(i.exports=function(r,f){return o[r]||(o[r]=f!==void 0?f:{})})("versions",[]).push({version:"3.6.5",mode:l?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/a-function"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z=l(v).constructor,p;return Z===void 0||(p=l(Z)[f])==null?b:o(p)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/fails"),r=t("../internals/classof-raw"),f=t("../internals/function-bind-context"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/engine-is-ios"),p=l.location,y=l.setImmediate,X=l.clearImmediate,m=l.process,N=l.MessageChannel,G=l.Dispatch,d=0,u={},s="onreadystatechange",h,c,W,M=function(x){if(u.hasOwnProperty(x)){var R=u[x];delete u[x],R()}},I=function(x){return function(){M(x)}},w=function(x){M(x.data)},C=function(x){l.postMessage(x+"",p.protocol+"//"+p.host)};(!y||!X)&&(y=function(R){for(var g=[],S=1;arguments.length>S;)g.push(arguments[S++]);return u[++d]=function(){(typeof R=="function"?R:Function(R)).apply(void 0,g)},h(d),d},X=function(R){delete u[R]},r(m)=="process"?h=function(x){m.nextTick(I(x))}:G&&G.now?h=function(x){G.now(I(x))}:N&&!Z?(c=new N,W=c.port2,c.port1.onmessage=w,h=f(W.postMessage,W,1)):l.addEventListener&&typeof postMessage=="function"&&!l.importScripts&&!o(C)&&p.protocol!=="file:"?(h=C,l.addEventListener("message",w,!1)):s in b("script")?h=function(x){v.appendChild(b("script"))[s]=function(){v.removeChild(this),M(x)}}:h=function(x){setTimeout(I(x),0)}),i.exports={set:y,clear:X}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(t,i,a){var l=t("../internals/to-integer"),o=Math.max,r=Math.min;i.exports=function(f,v){var b=l(f);return b<0?o(b+v,0):r(b,v)}},{"../internals/to-integer":306}],305:[function(t,i,a){var l=t("../internals/indexed-object"),o=t("../internals/require-object-coercible");i.exports=function(r){return l(o(r))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(t,i,a){var l=Math.ceil,o=Math.floor;i.exports=function(r){return isNaN(r=+r)?0:(r>0?o:l)(r)}},{}],307:[function(t,i,a){var l=t("../internals/to-integer"),o=Math.min;i.exports=function(r){return r>0?o(l(r),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(t,i,a){var l=t("../internals/require-object-coercible");i.exports=function(o){return Object(l(o))}},{"../internals/require-object-coercible":295}],309:[function(t,i,a){var l=t("../internals/is-object");i.exports=function(o,r){if(!l(o))return o;var f,v;if(r&&typeof(f=o.toString)=="function"&&!l(v=f.call(o))||typeof(f=o.valueOf)=="function"&&!l(v=f.call(o))||!r&&typeof(f=o.toString)=="function"&&!l(v=f.call(o)))return v;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=l("toStringTag"),r={};r[o]="z",i.exports=String(r)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(t,i,a){var l=0,o=Math.random();i.exports=function(r){return"Symbol("+String(r===void 0?"":r)+")_"+(++l+o).toString(36)}},{}],312:[function(t,i,a){var l=t("../internals/native-symbol");i.exports=l&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(t,i,a){var l=t("../internals/well-known-symbol");a.f=l},{"../internals/well-known-symbol":314}],314:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/shared"),r=t("../internals/has"),f=t("../internals/uid"),v=t("../internals/native-symbol"),b=t("../internals/use-symbol-as-uid"),Z=o("wks"),p=l.Symbol,y=b?p:p&&p.withoutSetter||f;i.exports=function(X){return r(Z,X)||(v&&r(p,X)?Z[X]=p[X]:Z[X]=y("Symbol."+X)),Z[X]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-iteration").findIndex,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="findIndex",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),l({target:"Array",proto:!0,forced:b||!Z},{findIndex:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-iteration").find,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="find",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),l({target:"Array",proto:!0,forced:b||!Z},{find:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-includes").includes,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v=f("indexOf",{ACCESSORS:!0,1:0});l({target:"Array",proto:!0,forced:!v},{includes:function(Z){return o(this,Z,arguments.length>1?arguments[1]:void 0)}}),r("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(t,i,a){var l=t("../internals/to-indexed-object"),o=t("../internals/add-to-unscopables"),r=t("../internals/iterators"),f=t("../internals/internal-state"),v=t("../internals/define-iterator"),b="Array Iterator",Z=f.set,p=f.getterFor(b);i.exports=v(Array,"Array",function(y,X){Z(this,{type:b,target:l(y),index:0,kind:X})},function(){var y=p(this),X=y.target,m=y.kind,N=y.index++;return!X||N>=X.length?(y.target=void 0,{value:void 0,done:!0}):m=="keys"?{value:N,done:!1}:m=="values"?{value:X[N],done:!1}:{value:[N,X[N]],done:!1}},"values"),r.Arguments=r.Array,o("keys"),o("values"),o("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(t,i,a){var l=t("../internals/export");l({target:"Number",stat:!0},{isNaN:function(r){return r!=r}})},{"../internals/export":246}],320:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/object-assign");l({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/to-object"),r=t("../internals/object-keys"),f=t("../internals/fails"),v=f(function(){r(1)});l({target:"Object",stat:!0,forced:v},{keys:function(Z){return r(o(Z))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/object-to-array").values;l({target:"Object",stat:!0},{values:function(f){return o(f)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/is-pure"),r=t("../internals/global"),f=t("../internals/get-built-in"),v=t("../internals/native-promise-constructor"),b=t("../internals/redefine"),Z=t("../internals/redefine-all"),p=t("../internals/set-to-string-tag"),y=t("../internals/set-species"),X=t("../internals/is-object"),m=t("../internals/a-function"),N=t("../internals/an-instance"),G=t("../internals/classof-raw"),d=t("../internals/inspect-source"),u=t("../internals/iterate"),s=t("../internals/check-correctness-of-iteration"),h=t("../internals/species-constructor"),c=t("../internals/task").set,W=t("../internals/microtask"),M=t("../internals/promise-resolve"),I=t("../internals/host-report-errors"),w=t("../internals/new-promise-capability"),C=t("../internals/perform"),x=t("../internals/internal-state"),R=t("../internals/is-forced"),g=t("../internals/well-known-symbol"),S=t("../internals/engine-v8-version"),L=g("species"),V="Promise",Y=x.get,T=x.set,J=x.getterFor(V),U=v,K=r.TypeError,H=r.document,k=r.process,F=f("fetch"),O=w.f,Q=O,oe=G(k)=="process",se=!!(H&&H.createEvent&&r.dispatchEvent),he="unhandledrejection",pe="rejectionhandled",re=0,_=1,E=2,$=1,ae=2,le,ee,te,be,ne=R(V,function(){var Te=d(U)!==String(U);if(!Te&&(S===66||!oe&&typeof PromiseRejectionEvent!="function")||o&&!U.prototype.finally)return!0;if(S>=51&&/native code/.test(U))return!1;var we=U.resolve(1),Se=function(me){me(function(){},function(){})},De=we.constructor={};return De[L]=Se,!(we.then(function(){})instanceof Se)}),B=ne||!s(function(Te){U.all(Te).catch(function(){})}),q=function(Te){var we;return X(Te)&&typeof(we=Te.then)=="function"?we:!1},ue=function(Te,we,Se){if(!we.notified){we.notified=!0;var De=we.reactions;W(function(){for(var me=we.value,Ve=we.state==_,Me=0;De.length>Me;){var Ie=De[Me++],Ze=Ve?Ie.ok:Ie.fail,Ce=Ie.resolve,ye=Ie.reject,Ue=Ie.domain,qe,ie,Oe;try{Ze?(Ve||(we.rejection===ae&&xe(Te,we),we.rejection=$),Ze===!0?qe=me:(Ue&&Ue.enter(),qe=Ze(me),Ue&&(Ue.exit(),Oe=!0)),qe===Ie.promise?ye(K("Promise-chain cycle")):(ie=q(qe))?ie.call(qe,Ce,ye):Ce(qe)):ye(me)}catch(Ke){Ue&&!Oe&&Ue.exit(),ye(Ke)}}we.reactions=[],we.notified=!1,Se&&!we.rejection&&Ge(Te,we)})}},ve=function(Te,we,Se){var De,me;se?(De=H.createEvent("Event"),De.promise=we,De.reason=Se,De.initEvent(Te,!1,!0),r.dispatchEvent(De)):De={promise:we,reason:Se},(me=r["on"+Te])?me(De):Te===he&&I("Unhandled promise rejection",Se)},Ge=function(Te,we){c.call(r,function(){var Se=we.value,De=Je(we),me;if(De&&(me=C(function(){oe?k.emit("unhandledRejection",Se,Te):ve(he,Te,Se)}),we.rejection=oe||Je(we)?ae:$,me.error))throw me.value})},Je=function(Te){return Te.rejection!==$&&!Te.parent},xe=function(Te,we){c.call(r,function(){oe?k.emit("rejectionHandled",Te):ve(pe,Te,we.value)})},ke=function(Te,we,Se,De){return function(me){Te(we,Se,me,De)}},Pe=function(Te,we,Se,De){we.done||(we.done=!0,De&&(we=De),we.value=Se,we.state=E,ue(Te,we,!0))},Be=function(Te,we,Se,De){if(!we.done){we.done=!0,De&&(we=De);try{if(Te===Se)throw K("Promise can't be resolved itself");var me=q(Se);me?W(function(){var Ve={done:!1};try{me.call(Se,ke(Be,Te,Ve,we),ke(Pe,Te,Ve,we))}catch(Me){Pe(Te,Ve,Me,we)}}):(we.value=Se,we.state=_,ue(Te,we,!1))}catch(Ve){Pe(Te,{done:!1},Ve,we)}}};ne&&(U=function(we){N(this,U,V),m(we),le.call(this);var Se=Y(this);try{we(ke(Be,this,Se),ke(Pe,this,Se))}catch(De){Pe(this,Se,De)}},le=function(we){T(this,{type:V,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:re,value:void 0})},le.prototype=Z(U.prototype,{then:function(we,Se){var De=J(this),me=O(h(this,U));return me.ok=typeof we=="function"?we:!0,me.fail=typeof Se=="function"&&Se,me.domain=oe?k.domain:void 0,De.parent=!0,De.reactions.push(me),De.state!=re&&ue(this,De,!1),me.promise},catch:function(Te){return this.then(void 0,Te)}}),ee=function(){var Te=new le,we=Y(Te);this.promise=Te,this.resolve=ke(Be,Te,we),this.reject=ke(Pe,Te,we)},w.f=O=function(Te){return Te===U||Te===te?new ee(Te):Q(Te)},!o&&typeof v=="function"&&(be=v.prototype.then,b(v.prototype,"then",function(we,Se){var De=this;return new U(function(me,Ve){be.call(De,me,Ve)}).then(we,Se)},{unsafe:!0}),typeof F=="function"&&l({global:!0,enumerable:!0,forced:!0},{fetch:function(we){return M(U,F.apply(r,arguments))}}))),l({global:!0,wrap:!0,forced:ne},{Promise:U}),p(U,V,!1,!0),y(V),te=f(V),l({target:V,stat:!0,forced:ne},{reject:function(we){var Se=O(this);return Se.reject.call(void 0,we),Se.promise}}),l({target:V,stat:!0,forced:o||ne},{resolve:function(we){return M(o&&this===te?U:this,we)}}),l({target:V,stat:!0,forced:B},{all:function(we){var Se=this,De=O(Se),me=De.resolve,Ve=De.reject,Me=C(function(){var Ie=m(Se.resolve),Ze=[],Ce=0,ye=1;u(we,function(Ue){var qe=Ce++,ie=!1;Ze.push(void 0),ye++,Ie.call(Se,Ue).then(function(Oe){ie||(ie=!0,Ze[qe]=Oe,--ye||me(Ze))},Ve)}),--ye||me(Ze)});return Me.error&&Ve(Me.value),De.promise},race:function(we){var Se=this,De=O(Se),me=De.reject,Ve=C(function(){var Me=m(Se.resolve);u(we,function(Ie){Me.call(Se,Ie).then(De.resolve,me)})});return Ve.error&&me(Ve.value),De.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/to-absolute-index"),r=String.fromCharCode,f=String.fromCodePoint,v=!!f&&f.length!=1;l({target:"String",stat:!0,forced:v},{fromCodePoint:function(Z){for(var p=[],y=arguments.length,X=0,m;y>X;){if(m=+arguments[X++],o(m,1114111)!==m)throw RangeError(m+" is not a valid code point");p.push(m<65536?r(m):r(((m-=65536)>>10)+55296,m%1024+56320))}return p.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/not-a-regexp"),r=t("../internals/require-object-coercible"),f=t("../internals/correct-is-regexp-logic");l({target:"String",proto:!0,forced:!f("includes")},{includes:function(b){return!!~String(r(this)).indexOf(o(b),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(t,i,a){var l=t("../internals/define-well-known-symbol");l("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/global"),r=t("../internals/get-built-in"),f=t("../internals/is-pure"),v=t("../internals/descriptors"),b=t("../internals/native-symbol"),Z=t("../internals/use-symbol-as-uid"),p=t("../internals/fails"),y=t("../internals/has"),X=t("../internals/is-array"),m=t("../internals/is-object"),N=t("../internals/an-object"),G=t("../internals/to-object"),d=t("../internals/to-indexed-object"),u=t("../internals/to-primitive"),s=t("../internals/create-property-descriptor"),h=t("../internals/object-create"),c=t("../internals/object-keys"),W=t("../internals/object-get-own-property-names"),M=t("../internals/object-get-own-property-names-external"),I=t("../internals/object-get-own-property-symbols"),w=t("../internals/object-get-own-property-descriptor"),C=t("../internals/object-define-property"),x=t("../internals/object-property-is-enumerable"),R=t("../internals/create-non-enumerable-property"),g=t("../internals/redefine"),S=t("../internals/shared"),L=t("../internals/shared-key"),V=t("../internals/hidden-keys"),Y=t("../internals/uid"),T=t("../internals/well-known-symbol"),J=t("../internals/well-known-symbol-wrapped"),U=t("../internals/define-well-known-symbol"),K=t("../internals/set-to-string-tag"),H=t("../internals/internal-state"),k=t("../internals/array-iteration").forEach,F=L("hidden"),O="Symbol",Q="prototype",oe=T("toPrimitive"),se=H.set,he=H.getterFor(O),pe=Object[Q],re=o.Symbol,_=r("JSON","stringify"),E=w.f,$=C.f,ae=M.f,le=x.f,ee=S("symbols"),te=S("op-symbols"),be=S("string-to-symbol-registry"),ne=S("symbol-to-string-registry"),B=S("wks"),q=o.QObject,ue=!q||!q[Q]||!q[Q].findChild,ve=v&&p(function(){return h($({},"a",{get:function(){return $(this,"a",{value:7}).a}})).a!=7})?function(me,Ve,Me){var Ie=E(pe,Ve);Ie&&delete pe[Ve],$(me,Ve,Me),Ie&&me!==pe&&$(pe,Ve,Ie)}:$,Ge=function(me,Ve){var Me=ee[me]=h(re[Q]);return se(Me,{type:O,tag:me,description:Ve}),v||(Me.description=Ve),Me},Je=Z?function(me){return typeof me=="symbol"}:function(me){return Object(me)instanceof re},xe=function(Ve,Me,Ie){Ve===pe&&xe(te,Me,Ie),N(Ve);var Ze=u(Me,!0);return N(Ie),y(ee,Ze)?(Ie.enumerable?(y(Ve,F)&&Ve[F][Ze]&&(Ve[F][Ze]=!1),Ie=h(Ie,{enumerable:s(0,!1)})):(y(Ve,F)||$(Ve,F,s(1,{})),Ve[F][Ze]=!0),ve(Ve,Ze,Ie)):$(Ve,Ze,Ie)},ke=function(Ve,Me){N(Ve);var Ie=d(Me),Ze=c(Ie).concat(Se(Ie));return k(Ze,function(Ce){(!v||Be.call(Ie,Ce))&&xe(Ve,Ce,Ie[Ce])}),Ve},Pe=function(Ve,Me){return Me===void 0?h(Ve):ke(h(Ve),Me)},Be=function(Ve){var Me=u(Ve,!0),Ie=le.call(this,Me);return this===pe&&y(ee,Me)&&!y(te,Me)?!1:Ie||!y(this,Me)||!y(ee,Me)||y(this,F)&&this[F][Me]?Ie:!0},Te=function(Ve,Me){var Ie=d(Ve),Ze=u(Me,!0);if(!(Ie===pe&&y(ee,Ze)&&!y(te,Ze))){var Ce=E(Ie,Ze);return Ce&&y(ee,Ze)&&!(y(Ie,F)&&Ie[F][Ze])&&(Ce.enumerable=!0),Ce}},we=function(Ve){var Me=ae(d(Ve)),Ie=[];return k(Me,function(Ze){!y(ee,Ze)&&!y(V,Ze)&&Ie.push(Ze)}),Ie},Se=function(Ve){var Me=Ve===pe,Ie=ae(Me?te:d(Ve)),Ze=[];return k(Ie,function(Ce){y(ee,Ce)&&(!Me||y(pe,Ce))&&Ze.push(ee[Ce])}),Ze};if(b||(re=function(){if(this instanceof re)throw TypeError("Symbol is not a constructor");var Ve=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Me=Y(Ve),Ie=function(Ze){this===pe&&Ie.call(te,Ze),y(this,F)&&y(this[F],Me)&&(this[F][Me]=!1),ve(this,Me,s(1,Ze))};return v&&ue&&ve(pe,Me,{configurable:!0,set:Ie}),Ge(Me,Ve)},g(re[Q],"toString",function(){return he(this).tag}),g(re,"withoutSetter",function(me){return Ge(Y(me),me)}),x.f=Be,C.f=xe,w.f=Te,W.f=M.f=we,I.f=Se,J.f=function(me){return Ge(T(me),me)},v&&($(re[Q],"description",{configurable:!0,get:function(){return he(this).description}}),f||g(pe,"propertyIsEnumerable",Be,{unsafe:!0}))),l({global:!0,wrap:!0,forced:!b,sham:!b},{Symbol:re}),k(c(B),function(me){U(me)}),l({target:O,stat:!0,forced:!b},{for:function(me){var Ve=String(me);if(y(be,Ve))return be[Ve];var Me=re(Ve);return be[Ve]=Me,ne[Me]=Ve,Me},keyFor:function(Ve){if(!Je(Ve))throw TypeError(Ve+" is not a symbol");if(y(ne,Ve))return ne[Ve]},useSetter:function(){ue=!0},useSimple:function(){ue=!1}}),l({target:"Object",stat:!0,forced:!b,sham:!v},{create:Pe,defineProperty:xe,defineProperties:ke,getOwnPropertyDescriptor:Te}),l({target:"Object",stat:!0,forced:!b},{getOwnPropertyNames:we,getOwnPropertySymbols:Se}),l({target:"Object",stat:!0,forced:p(function(){I.f(1)})},{getOwnPropertySymbols:function(Ve){return I.f(G(Ve))}}),_){var De=!b||p(function(){var me=re();return _([me])!="[null]"||_({a:me})!="{}"||_(Object(me))!="{}"});l({target:"JSON",stat:!0,forced:De},{stringify:function(Ve,Me,Ie){for(var Ze=[Ve],Ce=1,ye;arguments.length>Ce;)Ze.push(arguments[Ce++]);if(ye=Me,!(!m(Me)&&Ve===void 0||Je(Ve)))return X(Me)||(Me=function(Ue,qe){if(typeof ye=="function"&&(qe=ye.call(this,Ue,qe)),!Je(qe))return qe}),Ze[1]=Me,_.apply(null,Ze)}})}re[Q][oe]||R(re[Q],oe,re[Q].valueOf),K(re,O),V[F]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(t,i,a){(function(l){function o(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(M){return typeof M}:o=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},o(c)}function r(c){return Array.isArray?Array.isArray(c):h(c)==="[object Array]"}a.isArray=r;function f(c){return typeof c=="boolean"}a.isBoolean=f;function v(c){return c===null}a.isNull=v;function b(c){return c==null}a.isNullOrUndefined=b;function Z(c){return typeof c=="number"}a.isNumber=Z;function p(c){return typeof c=="string"}a.isString=p;function y(c){return o(c)==="symbol"}a.isSymbol=y;function X(c){return c===void 0}a.isUndefined=X;function m(c){return h(c)==="[object RegExp]"}a.isRegExp=m;function N(c){return o(c)==="object"&&c!==null}a.isObject=N;function G(c){return h(c)==="[object Date]"}a.isDate=G;function d(c){return h(c)==="[object Error]"||c instanceof Error}a.isError=d;function u(c){return typeof c=="function"}a.isFunction=u;function s(c){return c===null||typeof c=="boolean"||typeof c=="number"||typeof c=="string"||o(c)==="symbol"||typeof c>"u"}a.isPrimitive=s,a.isBuffer=l.isBuffer;function h(c){return Object.prototype.toString.call(c)}}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(t,i,a){(function(l){var o=t("elliptic"),r=t("bn.js");i.exports=function(p){return new v(p)};var f={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};f.p224=f.secp224r1,f.p256=f.secp256r1=f.prime256v1,f.p192=f.secp192r1=f.prime192v1,f.p384=f.secp384r1,f.p521=f.secp521r1;function v(Z){this.curveType=f[Z],this.curveType||(this.curveType={name:Z}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}v.prototype.generateKeys=function(Z,p){return this.keys=this.curve.genKeyPair(),this.getPublicKey(Z,p)},v.prototype.computeSecret=function(Z,p,y){p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p));var X=this.curve.keyFromPublic(Z).getPublic(),m=X.mul(this.keys.getPrivate()).getX();return b(m,y,this.curveType.byteLength)},v.prototype.getPublicKey=function(Z,p){var y=this.keys.getPublic(p==="compressed",!0);return p==="hybrid"&&(y[y.length-1]%2?y[0]=7:y[0]=6),b(y,Z)},v.prototype.getPrivateKey=function(Z){return b(this.keys.getPrivate(),Z)},v.prototype.setPublicKey=function(Z,p){return p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p)),this.keys._importPublic(Z),this},v.prototype.setPrivateKey=function(Z,p){p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p));var y=new r(Z);return y=y.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(y),this};function b(Z,p,y){Array.isArray(Z)||(Z=Z.toArray());var X=new l(Z);if(y&&X.lengthN){var G=X==="rmd160"?new b:Z(X);m=G.update(m).digest()}else m.lengthv?p=Z(p):p.length0?L:V},b.min=function(L,V){return L.cmp(V)<0?L:V},b.prototype._init=function(L,V,Y){if(typeof L=="number")return this._initNumber(L,V,Y);if(l(L)==="object")return this._initArray(L,V,Y);V==="hex"&&(V=16),f(V===(V|0)&&V>=2&&V<=36),L=L.toString().replace(/\s+/g,"");var T=0;L[0]==="-"&&T++,V===16?this._parseHex(L,T):this._parseBase(L,V,T),L[0]==="-"&&(this.negative=1),this.strip(),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initNumber=function(L,V,Y){L<0&&(this.negative=1,L=-L),L<67108864?(this.words=[L&67108863],this.length=1):L<4503599627370496?(this.words=[L&67108863,L/67108864&67108863],this.length=2):(f(L<9007199254740992),this.words=[L&67108863,L/67108864&67108863,1],this.length=3),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initArray=function(L,V,Y){if(f(typeof L.length=="number"),L.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(L.length/3),this.words=new Array(this.length);for(var T=0;T=0;T-=3)U=L[T]|L[T-1]<<8|L[T-2]<<16,this.words[J]|=U<>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);else if(Y==="le")for(T=0,J=0;T>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);return this.strip()};function p(S,L,V){for(var Y=0,T=Math.min(S.length,V),J=L;J=49&&U<=54?Y|=U-49+10:U>=17&&U<=22?Y|=U-17+10:Y|=U&15}return Y}b.prototype._parseHex=function(L,V){this.length=Math.ceil((L.length-V)/6),this.words=new Array(this.length);for(var Y=0;Y=V;Y-=6)J=p(L,Y,Y+6),this.words[T]|=J<>>26-U&4194303,U+=24,U>=26&&(U-=26,T++);Y+6!==V&&(J=p(L,V,Y+6),this.words[T]|=J<>>26-U&4194303),this.strip()};function y(S,L,V,Y){for(var T=0,J=Math.min(S.length,V),U=L;U=49?T+=K-49+10:K>=17?T+=K-17+10:T+=K}return T}b.prototype._parseBase=function(L,V,Y){this.words=[0],this.length=1;for(var T=0,J=1;J<=67108863;J*=V)T++;T--,J=J/V|0;for(var U=L.length-Y,K=U%T,H=Math.min(U,U-K)+Y,k=0,F=Y;F1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},b.prototype.inspect=function(){return(this.red?""};var X=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],m=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(L,V){L=L||10,V=V|0||1;var Y;if(L===16||L==="hex"){Y="";for(var T=0,J=0,U=0;U>>24-T&16777215,J!==0||U!==this.length-1?Y=X[6-H.length]+H+Y:Y=H+Y,T+=2,T>=26&&(T-=26,U--)}for(J!==0&&(Y=J.toString(16)+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}if(L===(L|0)&&L>=2&&L<=36){var k=m[L],F=N[L];Y="";var O=this.clone();for(O.negative=0;!O.isZero();){var Q=O.modn(F).toString(L);O=O.idivn(F),O.isZero()?Y=Q+Y:Y=X[k-Q.length]+Q+Y}for(this.isZero()&&(Y="0"+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var L=this.words[0];return this.length===2?L+=this.words[1]*67108864:this.length===3&&this.words[2]===1?L+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-L:L},b.prototype.toJSON=function(){return this.toString(16)},b.prototype.toBuffer=function(L,V){return f(typeof Z<"u"),this.toArrayLike(Z,L,V)},b.prototype.toArray=function(L,V){return this.toArrayLike(Array,L,V)},b.prototype.toArrayLike=function(L,V,Y){var T=this.byteLength(),J=Y||Math.max(1,T);f(T<=J,"byte array longer than desired length"),f(J>0,"Requested array length <= 0"),this.strip();var U=V==="le",K=new L(J),H,k,F=this.clone();if(U){for(k=0;!F.isZero();k++)H=F.andln(255),F.iushrn(8),K[k]=H;for(;k=4096&&(Y+=13,V>>>=13),V>=64&&(Y+=7,V>>>=7),V>=8&&(Y+=4,V>>>=4),V>=2&&(Y+=2,V>>>=2),Y+V},b.prototype._zeroBits=function(L){if(L===0)return 26;var V=L,Y=0;return V&8191||(Y+=13,V>>>=13),V&127||(Y+=7,V>>>=7),V&15||(Y+=4,V>>>=4),V&3||(Y+=2,V>>>=2),V&1||Y++,Y},b.prototype.bitLength=function(){var L=this.words[this.length-1],V=this._countBits(L);return(this.length-1)*26+V};function G(S){for(var L=new Array(S.bitLength()),V=0;V>>T}return L}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var L=0,V=0;VL.length?this.clone().ior(L):L.clone().ior(this)},b.prototype.uor=function(L){return this.length>L.length?this.clone().iuor(L):L.clone().iuor(this)},b.prototype.iuand=function(L){var V;this.length>L.length?V=L:V=this;for(var Y=0;YL.length?this.clone().iand(L):L.clone().iand(this)},b.prototype.uand=function(L){return this.length>L.length?this.clone().iuand(L):L.clone().iuand(this)},b.prototype.iuxor=function(L){var V,Y;this.length>L.length?(V=this,Y=L):(V=L,Y=this);for(var T=0;TL.length?this.clone().ixor(L):L.clone().ixor(this)},b.prototype.uxor=function(L){return this.length>L.length?this.clone().iuxor(L):L.clone().iuxor(this)},b.prototype.inotn=function(L){f(typeof L=="number"&&L>=0);var V=Math.ceil(L/26)|0,Y=L%26;this._expand(V),Y>0&&V--;for(var T=0;T0&&(this.words[T]=~this.words[T]&67108863>>26-Y),this.strip()},b.prototype.notn=function(L){return this.clone().inotn(L)},b.prototype.setn=function(L,V){f(typeof L=="number"&&L>=0);var Y=L/26|0,T=L%26;return this._expand(Y+1),V?this.words[Y]=this.words[Y]|1<L.length?(Y=this,T=L):(Y=L,T=this);for(var J=0,U=0;U>>26;for(;J!==0&&U>>26;if(this.length=Y.length,J!==0)this.words[this.length]=J,this.length++;else if(Y!==this)for(;UL.length?this.clone().iadd(L):L.clone().iadd(this)},b.prototype.isub=function(L){if(L.negative!==0){L.negative=0;var V=this.iadd(L);return L.negative=1,V._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(L),this.negative=1,this._normSign();var Y=this.cmp(L);if(Y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var T,J;Y>0?(T=this,J=L):(T=L,J=this);for(var U=0,K=0;K>26,this.words[K]=V&67108863;for(;U!==0&&K>26,this.words[K]=V&67108863;if(U===0&&K>>26,O=H&67108863,Q=Math.min(k,L.length-1),oe=Math.max(0,k-S.length+1);oe<=Q;oe++){var se=k-oe|0;T=S.words[se]|0,J=L.words[oe]|0,U=T*J+O,F+=U/67108864|0,O=U&67108863}V.words[k]=O|0,H=F|0}return H!==0?V.words[k]=H|0:V.length--,V.strip()}var u=function(L,V,Y){var T=L.words,J=V.words,U=Y.words,K=0,H,k,F,O=T[0]|0,Q=O&8191,oe=O>>>13,se=T[1]|0,he=se&8191,pe=se>>>13,re=T[2]|0,_=re&8191,E=re>>>13,$=T[3]|0,ae=$&8191,le=$>>>13,ee=T[4]|0,te=ee&8191,be=ee>>>13,ne=T[5]|0,B=ne&8191,q=ne>>>13,ue=T[6]|0,ve=ue&8191,Ge=ue>>>13,Je=T[7]|0,xe=Je&8191,ke=Je>>>13,Pe=T[8]|0,Be=Pe&8191,Te=Pe>>>13,we=T[9]|0,Se=we&8191,De=we>>>13,me=J[0]|0,Ve=me&8191,Me=me>>>13,Ie=J[1]|0,Ze=Ie&8191,Ce=Ie>>>13,ye=J[2]|0,Ue=ye&8191,qe=ye>>>13,ie=J[3]|0,Oe=ie&8191,Ke=ie>>>13,Xe=J[4]|0,Re=Xe&8191,Ae=Xe>>>13,ct=J[5]|0,lt=ct&8191,ot=ct>>>13,wt=J[6]|0,Mt=wt&8191,xt=wt>>>13,Gt=J[7]|0,Zt=Gt&8191,Tt=Gt>>>13,Ct=J[8]|0,St=Ct&8191,Pt=Ct>>>13,Ut=J[9]|0,kt=Ut&8191,en=Ut>>>13;Y.negative=L.negative^V.negative,Y.length=19,H=Math.imul(Q,Ve),k=Math.imul(Q,Me),k=k+Math.imul(oe,Ve)|0,F=Math.imul(oe,Me);var nn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nn>>>26)|0,nn&=67108863,H=Math.imul(he,Ve),k=Math.imul(he,Me),k=k+Math.imul(pe,Ve)|0,F=Math.imul(pe,Me),H=H+Math.imul(Q,Ze)|0,k=k+Math.imul(Q,Ce)|0,k=k+Math.imul(oe,Ze)|0,F=F+Math.imul(oe,Ce)|0;var Ft=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,H=Math.imul(_,Ve),k=Math.imul(_,Me),k=k+Math.imul(E,Ve)|0,F=Math.imul(E,Me),H=H+Math.imul(he,Ze)|0,k=k+Math.imul(he,Ce)|0,k=k+Math.imul(pe,Ze)|0,F=F+Math.imul(pe,Ce)|0,H=H+Math.imul(Q,Ue)|0,k=k+Math.imul(Q,qe)|0,k=k+Math.imul(oe,Ue)|0,F=F+Math.imul(oe,qe)|0;var Ln=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,H=Math.imul(ae,Ve),k=Math.imul(ae,Me),k=k+Math.imul(le,Ve)|0,F=Math.imul(le,Me),H=H+Math.imul(_,Ze)|0,k=k+Math.imul(_,Ce)|0,k=k+Math.imul(E,Ze)|0,F=F+Math.imul(E,Ce)|0,H=H+Math.imul(he,Ue)|0,k=k+Math.imul(he,qe)|0,k=k+Math.imul(pe,Ue)|0,F=F+Math.imul(pe,qe)|0,H=H+Math.imul(Q,Oe)|0,k=k+Math.imul(Q,Ke)|0,k=k+Math.imul(oe,Oe)|0,F=F+Math.imul(oe,Ke)|0;var An=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(An>>>26)|0,An&=67108863,H=Math.imul(te,Ve),k=Math.imul(te,Me),k=k+Math.imul(be,Ve)|0,F=Math.imul(be,Me),H=H+Math.imul(ae,Ze)|0,k=k+Math.imul(ae,Ce)|0,k=k+Math.imul(le,Ze)|0,F=F+Math.imul(le,Ce)|0,H=H+Math.imul(_,Ue)|0,k=k+Math.imul(_,qe)|0,k=k+Math.imul(E,Ue)|0,F=F+Math.imul(E,qe)|0,H=H+Math.imul(he,Oe)|0,k=k+Math.imul(he,Ke)|0,k=k+Math.imul(pe,Oe)|0,F=F+Math.imul(pe,Ke)|0,H=H+Math.imul(Q,Re)|0,k=k+Math.imul(Q,Ae)|0,k=k+Math.imul(oe,Re)|0,F=F+Math.imul(oe,Ae)|0;var Gi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,H=Math.imul(B,Ve),k=Math.imul(B,Me),k=k+Math.imul(q,Ve)|0,F=Math.imul(q,Me),H=H+Math.imul(te,Ze)|0,k=k+Math.imul(te,Ce)|0,k=k+Math.imul(be,Ze)|0,F=F+Math.imul(be,Ce)|0,H=H+Math.imul(ae,Ue)|0,k=k+Math.imul(ae,qe)|0,k=k+Math.imul(le,Ue)|0,F=F+Math.imul(le,qe)|0,H=H+Math.imul(_,Oe)|0,k=k+Math.imul(_,Ke)|0,k=k+Math.imul(E,Oe)|0,F=F+Math.imul(E,Ke)|0,H=H+Math.imul(he,Re)|0,k=k+Math.imul(he,Ae)|0,k=k+Math.imul(pe,Re)|0,F=F+Math.imul(pe,Ae)|0,H=H+Math.imul(Q,lt)|0,k=k+Math.imul(Q,ot)|0,k=k+Math.imul(oe,lt)|0,F=F+Math.imul(oe,ot)|0;var Pi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,H=Math.imul(ve,Ve),k=Math.imul(ve,Me),k=k+Math.imul(Ge,Ve)|0,F=Math.imul(Ge,Me),H=H+Math.imul(B,Ze)|0,k=k+Math.imul(B,Ce)|0,k=k+Math.imul(q,Ze)|0,F=F+Math.imul(q,Ce)|0,H=H+Math.imul(te,Ue)|0,k=k+Math.imul(te,qe)|0,k=k+Math.imul(be,Ue)|0,F=F+Math.imul(be,qe)|0,H=H+Math.imul(ae,Oe)|0,k=k+Math.imul(ae,Ke)|0,k=k+Math.imul(le,Oe)|0,F=F+Math.imul(le,Ke)|0,H=H+Math.imul(_,Re)|0,k=k+Math.imul(_,Ae)|0,k=k+Math.imul(E,Re)|0,F=F+Math.imul(E,Ae)|0,H=H+Math.imul(he,lt)|0,k=k+Math.imul(he,ot)|0,k=k+Math.imul(pe,lt)|0,F=F+Math.imul(pe,ot)|0,H=H+Math.imul(Q,Mt)|0,k=k+Math.imul(Q,xt)|0,k=k+Math.imul(oe,Mt)|0,F=F+Math.imul(oe,xt)|0;var Gl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,H=Math.imul(xe,Ve),k=Math.imul(xe,Me),k=k+Math.imul(ke,Ve)|0,F=Math.imul(ke,Me),H=H+Math.imul(ve,Ze)|0,k=k+Math.imul(ve,Ce)|0,k=k+Math.imul(Ge,Ze)|0,F=F+Math.imul(Ge,Ce)|0,H=H+Math.imul(B,Ue)|0,k=k+Math.imul(B,qe)|0,k=k+Math.imul(q,Ue)|0,F=F+Math.imul(q,qe)|0,H=H+Math.imul(te,Oe)|0,k=k+Math.imul(te,Ke)|0,k=k+Math.imul(be,Oe)|0,F=F+Math.imul(be,Ke)|0,H=H+Math.imul(ae,Re)|0,k=k+Math.imul(ae,Ae)|0,k=k+Math.imul(le,Re)|0,F=F+Math.imul(le,Ae)|0,H=H+Math.imul(_,lt)|0,k=k+Math.imul(_,ot)|0,k=k+Math.imul(E,lt)|0,F=F+Math.imul(E,ot)|0,H=H+Math.imul(he,Mt)|0,k=k+Math.imul(he,xt)|0,k=k+Math.imul(pe,Mt)|0,F=F+Math.imul(pe,xt)|0,H=H+Math.imul(Q,Zt)|0,k=k+Math.imul(Q,Tt)|0,k=k+Math.imul(oe,Zt)|0,F=F+Math.imul(oe,Tt)|0;var Fn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,H=Math.imul(Be,Ve),k=Math.imul(Be,Me),k=k+Math.imul(Te,Ve)|0,F=Math.imul(Te,Me),H=H+Math.imul(xe,Ze)|0,k=k+Math.imul(xe,Ce)|0,k=k+Math.imul(ke,Ze)|0,F=F+Math.imul(ke,Ce)|0,H=H+Math.imul(ve,Ue)|0,k=k+Math.imul(ve,qe)|0,k=k+Math.imul(Ge,Ue)|0,F=F+Math.imul(Ge,qe)|0,H=H+Math.imul(B,Oe)|0,k=k+Math.imul(B,Ke)|0,k=k+Math.imul(q,Oe)|0,F=F+Math.imul(q,Ke)|0,H=H+Math.imul(te,Re)|0,k=k+Math.imul(te,Ae)|0,k=k+Math.imul(be,Re)|0,F=F+Math.imul(be,Ae)|0,H=H+Math.imul(ae,lt)|0,k=k+Math.imul(ae,ot)|0,k=k+Math.imul(le,lt)|0,F=F+Math.imul(le,ot)|0,H=H+Math.imul(_,Mt)|0,k=k+Math.imul(_,xt)|0,k=k+Math.imul(E,Mt)|0,F=F+Math.imul(E,xt)|0,H=H+Math.imul(he,Zt)|0,k=k+Math.imul(he,Tt)|0,k=k+Math.imul(pe,Zt)|0,F=F+Math.imul(pe,Tt)|0,H=H+Math.imul(Q,St)|0,k=k+Math.imul(Q,Pt)|0,k=k+Math.imul(oe,St)|0,F=F+Math.imul(oe,Pt)|0;var ul=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ul>>>26)|0,ul&=67108863,H=Math.imul(Se,Ve),k=Math.imul(Se,Me),k=k+Math.imul(De,Ve)|0,F=Math.imul(De,Me),H=H+Math.imul(Be,Ze)|0,k=k+Math.imul(Be,Ce)|0,k=k+Math.imul(Te,Ze)|0,F=F+Math.imul(Te,Ce)|0,H=H+Math.imul(xe,Ue)|0,k=k+Math.imul(xe,qe)|0,k=k+Math.imul(ke,Ue)|0,F=F+Math.imul(ke,qe)|0,H=H+Math.imul(ve,Oe)|0,k=k+Math.imul(ve,Ke)|0,k=k+Math.imul(Ge,Oe)|0,F=F+Math.imul(Ge,Ke)|0,H=H+Math.imul(B,Re)|0,k=k+Math.imul(B,Ae)|0,k=k+Math.imul(q,Re)|0,F=F+Math.imul(q,Ae)|0,H=H+Math.imul(te,lt)|0,k=k+Math.imul(te,ot)|0,k=k+Math.imul(be,lt)|0,F=F+Math.imul(be,ot)|0,H=H+Math.imul(ae,Mt)|0,k=k+Math.imul(ae,xt)|0,k=k+Math.imul(le,Mt)|0,F=F+Math.imul(le,xt)|0,H=H+Math.imul(_,Zt)|0,k=k+Math.imul(_,Tt)|0,k=k+Math.imul(E,Zt)|0,F=F+Math.imul(E,Tt)|0,H=H+Math.imul(he,St)|0,k=k+Math.imul(he,Pt)|0,k=k+Math.imul(pe,St)|0,F=F+Math.imul(pe,Pt)|0,H=H+Math.imul(Q,kt)|0,k=k+Math.imul(Q,en)|0,k=k+Math.imul(oe,kt)|0,F=F+Math.imul(oe,en)|0;var ki=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ki>>>26)|0,ki&=67108863,H=Math.imul(Se,Ze),k=Math.imul(Se,Ce),k=k+Math.imul(De,Ze)|0,F=Math.imul(De,Ce),H=H+Math.imul(Be,Ue)|0,k=k+Math.imul(Be,qe)|0,k=k+Math.imul(Te,Ue)|0,F=F+Math.imul(Te,qe)|0,H=H+Math.imul(xe,Oe)|0,k=k+Math.imul(xe,Ke)|0,k=k+Math.imul(ke,Oe)|0,F=F+Math.imul(ke,Ke)|0,H=H+Math.imul(ve,Re)|0,k=k+Math.imul(ve,Ae)|0,k=k+Math.imul(Ge,Re)|0,F=F+Math.imul(Ge,Ae)|0,H=H+Math.imul(B,lt)|0,k=k+Math.imul(B,ot)|0,k=k+Math.imul(q,lt)|0,F=F+Math.imul(q,ot)|0,H=H+Math.imul(te,Mt)|0,k=k+Math.imul(te,xt)|0,k=k+Math.imul(be,Mt)|0,F=F+Math.imul(be,xt)|0,H=H+Math.imul(ae,Zt)|0,k=k+Math.imul(ae,Tt)|0,k=k+Math.imul(le,Zt)|0,F=F+Math.imul(le,Tt)|0,H=H+Math.imul(_,St)|0,k=k+Math.imul(_,Pt)|0,k=k+Math.imul(E,St)|0,F=F+Math.imul(E,Pt)|0,H=H+Math.imul(he,kt)|0,k=k+Math.imul(he,en)|0,k=k+Math.imul(pe,kt)|0,F=F+Math.imul(pe,en)|0;var tl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tl>>>26)|0,tl&=67108863,H=Math.imul(Se,Ue),k=Math.imul(Se,qe),k=k+Math.imul(De,Ue)|0,F=Math.imul(De,qe),H=H+Math.imul(Be,Oe)|0,k=k+Math.imul(Be,Ke)|0,k=k+Math.imul(Te,Oe)|0,F=F+Math.imul(Te,Ke)|0,H=H+Math.imul(xe,Re)|0,k=k+Math.imul(xe,Ae)|0,k=k+Math.imul(ke,Re)|0,F=F+Math.imul(ke,Ae)|0,H=H+Math.imul(ve,lt)|0,k=k+Math.imul(ve,ot)|0,k=k+Math.imul(Ge,lt)|0,F=F+Math.imul(Ge,ot)|0,H=H+Math.imul(B,Mt)|0,k=k+Math.imul(B,xt)|0,k=k+Math.imul(q,Mt)|0,F=F+Math.imul(q,xt)|0,H=H+Math.imul(te,Zt)|0,k=k+Math.imul(te,Tt)|0,k=k+Math.imul(be,Zt)|0,F=F+Math.imul(be,Tt)|0,H=H+Math.imul(ae,St)|0,k=k+Math.imul(ae,Pt)|0,k=k+Math.imul(le,St)|0,F=F+Math.imul(le,Pt)|0,H=H+Math.imul(_,kt)|0,k=k+Math.imul(_,en)|0,k=k+Math.imul(E,kt)|0,F=F+Math.imul(E,en)|0;var nl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nl>>>26)|0,nl&=67108863,H=Math.imul(Se,Oe),k=Math.imul(Se,Ke),k=k+Math.imul(De,Oe)|0,F=Math.imul(De,Ke),H=H+Math.imul(Be,Re)|0,k=k+Math.imul(Be,Ae)|0,k=k+Math.imul(Te,Re)|0,F=F+Math.imul(Te,Ae)|0,H=H+Math.imul(xe,lt)|0,k=k+Math.imul(xe,ot)|0,k=k+Math.imul(ke,lt)|0,F=F+Math.imul(ke,ot)|0,H=H+Math.imul(ve,Mt)|0,k=k+Math.imul(ve,xt)|0,k=k+Math.imul(Ge,Mt)|0,F=F+Math.imul(Ge,xt)|0,H=H+Math.imul(B,Zt)|0,k=k+Math.imul(B,Tt)|0,k=k+Math.imul(q,Zt)|0,F=F+Math.imul(q,Tt)|0,H=H+Math.imul(te,St)|0,k=k+Math.imul(te,Pt)|0,k=k+Math.imul(be,St)|0,F=F+Math.imul(be,Pt)|0,H=H+Math.imul(ae,kt)|0,k=k+Math.imul(ae,en)|0,k=k+Math.imul(le,kt)|0,F=F+Math.imul(le,en)|0;var Dt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,H=Math.imul(Se,Re),k=Math.imul(Se,Ae),k=k+Math.imul(De,Re)|0,F=Math.imul(De,Ae),H=H+Math.imul(Be,lt)|0,k=k+Math.imul(Be,ot)|0,k=k+Math.imul(Te,lt)|0,F=F+Math.imul(Te,ot)|0,H=H+Math.imul(xe,Mt)|0,k=k+Math.imul(xe,xt)|0,k=k+Math.imul(ke,Mt)|0,F=F+Math.imul(ke,xt)|0,H=H+Math.imul(ve,Zt)|0,k=k+Math.imul(ve,Tt)|0,k=k+Math.imul(Ge,Zt)|0,F=F+Math.imul(Ge,Tt)|0,H=H+Math.imul(B,St)|0,k=k+Math.imul(B,Pt)|0,k=k+Math.imul(q,St)|0,F=F+Math.imul(q,Pt)|0,H=H+Math.imul(te,kt)|0,k=k+Math.imul(te,en)|0,k=k+Math.imul(be,kt)|0,F=F+Math.imul(be,en)|0;var ht=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ht>>>26)|0,ht&=67108863,H=Math.imul(Se,lt),k=Math.imul(Se,ot),k=k+Math.imul(De,lt)|0,F=Math.imul(De,ot),H=H+Math.imul(Be,Mt)|0,k=k+Math.imul(Be,xt)|0,k=k+Math.imul(Te,Mt)|0,F=F+Math.imul(Te,xt)|0,H=H+Math.imul(xe,Zt)|0,k=k+Math.imul(xe,Tt)|0,k=k+Math.imul(ke,Zt)|0,F=F+Math.imul(ke,Tt)|0,H=H+Math.imul(ve,St)|0,k=k+Math.imul(ve,Pt)|0,k=k+Math.imul(Ge,St)|0,F=F+Math.imul(Ge,Pt)|0,H=H+Math.imul(B,kt)|0,k=k+Math.imul(B,en)|0,k=k+Math.imul(q,kt)|0,F=F+Math.imul(q,en)|0;var Fe=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,H=Math.imul(Se,Mt),k=Math.imul(Se,xt),k=k+Math.imul(De,Mt)|0,F=Math.imul(De,xt),H=H+Math.imul(Be,Zt)|0,k=k+Math.imul(Be,Tt)|0,k=k+Math.imul(Te,Zt)|0,F=F+Math.imul(Te,Tt)|0,H=H+Math.imul(xe,St)|0,k=k+Math.imul(xe,Pt)|0,k=k+Math.imul(ke,St)|0,F=F+Math.imul(ke,Pt)|0,H=H+Math.imul(ve,kt)|0,k=k+Math.imul(ve,en)|0,k=k+Math.imul(Ge,kt)|0,F=F+Math.imul(Ge,en)|0;var tt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tt>>>26)|0,tt&=67108863,H=Math.imul(Se,Zt),k=Math.imul(Se,Tt),k=k+Math.imul(De,Zt)|0,F=Math.imul(De,Tt),H=H+Math.imul(Be,St)|0,k=k+Math.imul(Be,Pt)|0,k=k+Math.imul(Te,St)|0,F=F+Math.imul(Te,Pt)|0,H=H+Math.imul(xe,kt)|0,k=k+Math.imul(xe,en)|0,k=k+Math.imul(ke,kt)|0,F=F+Math.imul(ke,en)|0;var nt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nt>>>26)|0,nt&=67108863,H=Math.imul(Se,St),k=Math.imul(Se,Pt),k=k+Math.imul(De,St)|0,F=Math.imul(De,Pt),H=H+Math.imul(Be,kt)|0,k=k+Math.imul(Be,en)|0,k=k+Math.imul(Te,kt)|0,F=F+Math.imul(Te,en)|0;var Vt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,H=Math.imul(Se,kt),k=Math.imul(Se,en),k=k+Math.imul(De,kt)|0,F=Math.imul(De,en);var Bt=(K+H|0)+((k&8191)<<13)|0;return K=(F+(k>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,U[0]=nn,U[1]=Ft,U[2]=Ln,U[3]=An,U[4]=Gi,U[5]=Pi,U[6]=Gl,U[7]=Fn,U[8]=ul,U[9]=ki,U[10]=tl,U[11]=nl,U[12]=Dt,U[13]=ht,U[14]=Fe,U[15]=tt,U[16]=nt,U[17]=Vt,U[18]=Bt,K!==0&&(U[19]=K,Y.length++),Y};Math.imul||(u=d);function s(S,L,V){V.negative=L.negative^S.negative,V.length=S.length+L.length;for(var Y=0,T=0,J=0;J>>26)|0,T+=U>>>26,U&=67108863}V.words[J]=K,Y=U,U=T}return Y!==0?V.words[J]=Y:V.length--,V.strip()}function h(S,L,V){var Y=new c;return Y.mulp(S,L,V)}b.prototype.mulTo=function(L,V){var Y,T=this.length+L.length;return this.length===10&&L.length===10?Y=u(this,L,V):T<63?Y=d(this,L,V):T<1024?Y=s(this,L,V):Y=h(this,L,V),Y};function c(S,L){this.x=S,this.y=L}c.prototype.makeRBT=function(L){for(var V=new Array(L),Y=b.prototype._countBits(L)-1,T=0;T>=1;return T},c.prototype.permute=function(L,V,Y,T,J,U){for(var K=0;K>>1)J++;return 1<>>13,Y[2*U+1]=J&8191,J=J>>>13;for(U=2*V;U>=26,V+=T/67108864|0,V+=J>>>26,this.words[Y]=J&67108863}return V!==0&&(this.words[Y]=V,this.length++),this},b.prototype.muln=function(L){return this.clone().imuln(L)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(L){var V=G(L);if(V.length===0)return new b(1);for(var Y=this,T=0;T=0);var V=L%26,Y=(L-V)/26,T=67108863>>>26-V<<26-V,J;if(V!==0){var U=0;for(J=0;J>>26-V}U&&(this.words[J]=U,this.length++)}if(Y!==0){for(J=this.length-1;J>=0;J--)this.words[J+Y]=this.words[J];for(J=0;J=0);var T;V?T=(V-V%26)/26:T=0;var J=L%26,U=Math.min((L-J)/26,this.length),K=67108863^67108863>>>J<U)for(this.length-=U,k=0;k=0&&(F!==0||k>=T);k--){var O=this.words[k]|0;this.words[k]=F<<26-J|O>>>J,F=O&K}return H&&F!==0&&(H.words[H.length++]=F),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},b.prototype.ishrn=function(L,V,Y){return f(this.negative===0),this.iushrn(L,V,Y)},b.prototype.shln=function(L){return this.clone().ishln(L)},b.prototype.ushln=function(L){return this.clone().iushln(L)},b.prototype.shrn=function(L){return this.clone().ishrn(L)},b.prototype.ushrn=function(L){return this.clone().iushrn(L)},b.prototype.testn=function(L){f(typeof L=="number"&&L>=0);var V=L%26,Y=(L-V)/26,T=1<=0);var V=L%26,Y=(L-V)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=Y)return this;if(V!==0&&Y++,this.length=Math.min(Y,this.length),V!==0){var T=67108863^67108863>>>V<=67108864;V++)this.words[V]-=67108864,V===this.length-1?this.words[V+1]=1:this.words[V+1]++;return this.length=Math.max(this.length,V+1),this},b.prototype.isubn=function(L){if(f(typeof L=="number"),f(L<67108864),L<0)return this.iaddn(-L);if(this.negative!==0)return this.negative=0,this.iaddn(L),this.negative=1,this;if(this.words[0]-=L,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var V=0;V>26)-(H/67108864|0),this.words[J+Y]=U&67108863}for(;J>26,this.words[J+Y]=U&67108863;if(K===0)return this.strip();for(f(K===-1),K=0,J=0;J>26,this.words[J]=U&67108863;return this.negative=1,this.strip()},b.prototype._wordDiv=function(L,V){var Y=this.length-L.length,T=this.clone(),J=L,U=J.words[J.length-1]|0,K=this._countBits(U);Y=26-K,Y!==0&&(J=J.ushln(Y),T.iushln(Y),U=J.words[J.length-1]|0);var H=T.length-J.length,k;if(V!=="mod"){k=new b(null),k.length=H+1,k.words=new Array(k.length);for(var F=0;F=0;Q--){var oe=(T.words[J.length+Q]|0)*67108864+(T.words[J.length+Q-1]|0);for(oe=Math.min(oe/U|0,67108863),T._ishlnsubmul(J,oe,Q);T.negative!==0;)oe--,T.negative=0,T._ishlnsubmul(J,1,Q),T.isZero()||(T.negative^=1);k&&(k.words[Q]=oe)}return k&&k.strip(),T.strip(),V!=="div"&&Y!==0&&T.iushrn(Y),{div:k||null,mod:T}},b.prototype.divmod=function(L,V,Y){if(f(!L.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var T,J,U;return this.negative!==0&&L.negative===0?(U=this.neg().divmod(L,V),V!=="mod"&&(T=U.div.neg()),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.iadd(L)),{div:T,mod:J}):this.negative===0&&L.negative!==0?(U=this.divmod(L.neg(),V),V!=="mod"&&(T=U.div.neg()),{div:T,mod:U.mod}):this.negative&L.negative?(U=this.neg().divmod(L.neg(),V),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.isub(L)),{div:U.div,mod:J}):L.length>this.length||this.cmp(L)<0?{div:new b(0),mod:this}:L.length===1?V==="div"?{div:this.divn(L.words[0]),mod:null}:V==="mod"?{div:null,mod:new b(this.modn(L.words[0]))}:{div:this.divn(L.words[0]),mod:new b(this.modn(L.words[0]))}:this._wordDiv(L,V)},b.prototype.div=function(L){return this.divmod(L,"div",!1).div},b.prototype.mod=function(L){return this.divmod(L,"mod",!1).mod},b.prototype.umod=function(L){return this.divmod(L,"mod",!0).mod},b.prototype.divRound=function(L){var V=this.divmod(L);if(V.mod.isZero())return V.div;var Y=V.div.negative!==0?V.mod.isub(L):V.mod,T=L.ushrn(1),J=L.andln(1),U=Y.cmp(T);return U<0||J===1&&U===0?V.div:V.div.negative!==0?V.div.isubn(1):V.div.iaddn(1)},b.prototype.modn=function(L){f(L<=67108863);for(var V=(1<<26)%L,Y=0,T=this.length-1;T>=0;T--)Y=(V*Y+(this.words[T]|0))%L;return Y},b.prototype.idivn=function(L){f(L<=67108863);for(var V=0,Y=this.length-1;Y>=0;Y--){var T=(this.words[Y]|0)+V*67108864;this.words[Y]=T/L|0,V=T%L}return this.strip()},b.prototype.divn=function(L){return this.clone().idivn(L)},b.prototype.egcd=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=new b(0),K=new b(1),H=0;V.isEven()&&Y.isEven();)V.iushrn(1),Y.iushrn(1),++H;for(var k=Y.clone(),F=V.clone();!V.isZero();){for(var O=0,Q=1;!(V.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(V.iushrn(O);O-- >0;)(T.isOdd()||J.isOdd())&&(T.iadd(k),J.isub(F)),T.iushrn(1),J.iushrn(1);for(var oe=0,se=1;!(Y.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(Y.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(k),K.isub(F)),U.iushrn(1),K.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(U),J.isub(K)):(Y.isub(V),U.isub(T),K.isub(J))}return{a:U,b:K,gcd:Y.iushln(H)}},b.prototype._invmp=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=Y.clone();V.cmpn(1)>0&&Y.cmpn(1)>0;){for(var K=0,H=1;!(V.words[0]&H)&&K<26;++K,H<<=1);if(K>0)for(V.iushrn(K);K-- >0;)T.isOdd()&&T.iadd(U),T.iushrn(1);for(var k=0,F=1;!(Y.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(Y.iushrn(k);k-- >0;)J.isOdd()&&J.iadd(U),J.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(J)):(Y.isub(V),J.isub(T))}var O;return V.cmpn(1)===0?O=T:O=J,O.cmpn(0)<0&&O.iadd(L),O},b.prototype.gcd=function(L){if(this.isZero())return L.abs();if(L.isZero())return this.abs();var V=this.clone(),Y=L.clone();V.negative=0,Y.negative=0;for(var T=0;V.isEven()&&Y.isEven();T++)V.iushrn(1),Y.iushrn(1);do{for(;V.isEven();)V.iushrn(1);for(;Y.isEven();)Y.iushrn(1);var J=V.cmp(Y);if(J<0){var U=V;V=Y,Y=U}else if(J===0||Y.cmpn(1)===0)break;V.isub(Y)}while(!0);return Y.iushln(T)},b.prototype.invm=function(L){return this.egcd(L).a.umod(L)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(L){return this.words[0]&L},b.prototype.bincn=function(L){f(typeof L=="number");var V=L%26,Y=(L-V)/26,T=1<>>26,K&=67108863,this.words[U]=K}return J!==0&&(this.words[U]=J,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(L){var V=L<0;if(this.negative!==0&&!V)return-1;if(this.negative===0&&V)return 1;this.strip();var Y;if(this.length>1)Y=1;else{V&&(L=-L),f(L<=67108863,"Number is too big");var T=this.words[0]|0;Y=T===L?0:TL.length)return 1;if(this.length=0;Y--){var T=this.words[Y]|0,J=L.words[Y]|0;if(T!==J){TJ&&(V=1);break}}return V},b.prototype.gtn=function(L){return this.cmpn(L)===1},b.prototype.gt=function(L){return this.cmp(L)===1},b.prototype.gten=function(L){return this.cmpn(L)>=0},b.prototype.gte=function(L){return this.cmp(L)>=0},b.prototype.ltn=function(L){return this.cmpn(L)===-1},b.prototype.lt=function(L){return this.cmp(L)===-1},b.prototype.lten=function(L){return this.cmpn(L)<=0},b.prototype.lte=function(L){return this.cmp(L)<=0},b.prototype.eqn=function(L){return this.cmpn(L)===0},b.prototype.eq=function(L){return this.cmp(L)===0},b.red=function(L){return new R(L)},b.prototype.toRed=function(L){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),L.convertTo(this)._forceRed(L)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(L){return this.red=L,this},b.prototype.forceRed=function(L){return f(!this.red,"Already a number in reduction context"),this._forceRed(L)},b.prototype.redAdd=function(L){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,L)},b.prototype.redIAdd=function(L){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,L)},b.prototype.redSub=function(L){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,L)},b.prototype.redISub=function(L){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,L)},b.prototype.redShl=function(L){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,L)},b.prototype.redMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.mul(this,L)},b.prototype.redIMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.imul(this,L)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(L){return f(this.red&&!L.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,L)};var W={k256:null,p224:null,p192:null,p25519:null};function M(S,L){this.name=S,this.p=new b(L,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}M.prototype._tmp=function(){var L=new b(null);return L.words=new Array(Math.ceil(this.n/13)),L},M.prototype.ireduce=function(L){var V=L,Y;do this.split(V,this.tmp),V=this.imulK(V),V=V.iadd(this.tmp),Y=V.bitLength();while(Y>this.n);var T=Y0?V.isub(this.p):V.strip!==void 0?V.strip():V._strip(),V},M.prototype.split=function(L,V){L.iushrn(this.n,0,V)},M.prototype.imulK=function(L){return L.imul(this.k)};function I(){M.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(I,M),I.prototype.split=function(L,V){for(var Y=4194303,T=Math.min(L.length,9),J=0;J>>22,U=K}U>>>=22,L.words[J-10]=U,U===0&&L.length>10?L.length-=10:L.length-=9},I.prototype.imulK=function(L){L.words[L.length]=0,L.words[L.length+1]=0,L.length+=2;for(var V=0,Y=0;Y>>=26,L.words[Y]=J,V=T}return V!==0&&(L.words[L.length++]=V),L},b._prime=function(L){if(W[L])return W[L];var V;if(L==="k256")V=new I;else if(L==="p224")V=new w;else if(L==="p192")V=new C;else if(L==="p25519")V=new x;else throw new Error("Unknown prime "+L);return W[L]=V,V};function R(S){if(typeof S=="string"){var L=b._prime(S);this.m=L.p,this.prime=L}else f(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}R.prototype._verify1=function(L){f(L.negative===0,"red works only with positives"),f(L.red,"red works only with red numbers")},R.prototype._verify2=function(L,V){f((L.negative|V.negative)===0,"red works only with positives"),f(L.red&&L.red===V.red,"red works only with red numbers")},R.prototype.imod=function(L){return this.prime?this.prime.ireduce(L)._forceRed(this):L.umod(this.m)._forceRed(this)},R.prototype.neg=function(L){return L.isZero()?L.clone():this.m.sub(L)._forceRed(this)},R.prototype.add=function(L,V){this._verify2(L,V);var Y=L.add(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y._forceRed(this)},R.prototype.iadd=function(L,V){this._verify2(L,V);var Y=L.iadd(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y},R.prototype.sub=function(L,V){this._verify2(L,V);var Y=L.sub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y._forceRed(this)},R.prototype.isub=function(L,V){this._verify2(L,V);var Y=L.isub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y},R.prototype.shl=function(L,V){return this._verify1(L),this.imod(L.ushln(V))},R.prototype.imul=function(L,V){return this._verify2(L,V),this.imod(L.imul(V))},R.prototype.mul=function(L,V){return this._verify2(L,V),this.imod(L.mul(V))},R.prototype.isqr=function(L){return this.imul(L,L.clone())},R.prototype.sqr=function(L){return this.mul(L,L)},R.prototype.sqrt=function(L){if(L.isZero())return L.clone();var V=this.m.andln(3);if(f(V%2===1),V===3){var Y=this.m.add(new b(1)).iushrn(2);return this.pow(L,Y)}for(var T=this.m.subn(1),J=0;!T.isZero()&&T.andln(1)===0;)J++,T.iushrn(1);f(!T.isZero());var U=new b(1).toRed(this),K=U.redNeg(),H=this.m.subn(1).iushrn(1),k=this.m.bitLength();for(k=new b(2*k*k).toRed(this);this.pow(k,H).cmp(K)!==0;)k.redIAdd(K);for(var F=this.pow(k,T),O=this.pow(L,T.addn(1).iushrn(1)),Q=this.pow(L,T),oe=J;Q.cmp(U)!==0;){for(var se=Q,he=0;se.cmp(U)!==0;he++)se=se.redSqr();f(he=0;J--){for(var F=V.words[J],O=k-1;O>=0;O--){var Q=F>>O&1;if(U!==T[0]&&(U=this.sqr(U)),Q===0&&K===0){H=0;continue}K<<=1,K|=Q,H++,!(H!==Y&&(J!==0||O!==0))&&(U=this.mul(U,T[K]),H=0,K=0)}k=26}return U},R.prototype.convertTo=function(L){var V=L.umod(this.m);return V===L?V.clone():V},R.prototype.convertFrom=function(L){var V=L.clone();return V.red=null,V},b.mont=function(L){return new g(L)};function g(S){R.call(this,S),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(g,R),g.prototype.convertTo=function(L){return this.imod(L.ushln(this.shift))},g.prototype.convertFrom=function(L){var V=this.imod(L.mul(this.rinv));return V.red=null,V},g.prototype.imul=function(L,V){if(L.isZero()||V.isZero())return L.words[0]=0,L.length=1,L;var Y=L.imul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.mul=function(L,V){if(L.isZero()||V.isZero())return new b(0)._forceRed(this);var Y=L.mul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.invm=function(L){var V=this.imod(L._invmp(this.m).mul(this.r2));return V._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],182:[function(t,i,a){a.byteLength=p,a.toByteArray=X,a.fromByteArray=G;for(var l=[],o=[],r=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,b=f.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var s=d.indexOf("=");s===-1&&(s=u);var h=s===u?0:4-s%4;return[s,h]}function p(d){var u=Z(d),s=u[0],h=u[1];return(s+h)*3/4-h}function y(d,u,s){return(u+s)*3/4-s}function X(d){var u,s=Z(d),h=s[0],c=s[1],W=new r(y(d,h,c)),M=0,I=c>0?h-4:h,w;for(w=0;w>16&255,W[M++]=u>>8&255,W[M++]=u&255;return c===2&&(u=o[d.charCodeAt(w)]<<2|o[d.charCodeAt(w+1)]>>4,W[M++]=u&255),c===1&&(u=o[d.charCodeAt(w)]<<10|o[d.charCodeAt(w+1)]<<4|o[d.charCodeAt(w+2)]>>2,W[M++]=u>>8&255,W[M++]=u&255),W}function m(d){return l[d>>18&63]+l[d>>12&63]+l[d>>6&63]+l[d&63]}function N(d,u,s){for(var h,c=[],W=u;WI?I:M+W));return h===1?(u=d[s-1],c.push(l[u>>2]+l[u<<4&63]+"==")):h===2&&(u=(d[s-2]<<8)+d[s-1],c.push(l[u>>10]+l[u>>4&63]+l[u<<2&63]+"=")),c.join("")}},{}],183:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}(function(o,r){function f(V,Y){if(!V)throw new Error(Y||"Assertion failed")}function v(V,Y){V.super_=Y;var T=function(){};T.prototype=Y.prototype,V.prototype=new T,V.prototype.constructor=V}function b(V,Y,T){if(b.isBN(V))return V;this.negative=0,this.words=null,this.length=0,this.red=null,V!==null&&((Y==="le"||Y==="be")&&(T=Y,Y=10),this._init(V||0,Y||10,T||"be"))}l(o)==="object"?o.exports=b:r.BN=b,b.BN=b,b.wordSize=26;var Z;try{Z=t("buffer").Buffer}catch{}b.isBN=function(Y){return Y instanceof b?!0:Y!==null&&l(Y)==="object"&&Y.constructor.wordSize===b.wordSize&&Array.isArray(Y.words)},b.max=function(Y,T){return Y.cmp(T)>0?Y:T},b.min=function(Y,T){return Y.cmp(T)<0?Y:T},b.prototype._init=function(Y,T,J){if(typeof Y=="number")return this._initNumber(Y,T,J);if(l(Y)==="object")return this._initArray(Y,T,J);T==="hex"&&(T=16),f(T===(T|0)&&T>=2&&T<=36),Y=Y.toString().replace(/\s+/g,"");var U=0;Y[0]==="-"&&U++,T===16?this._parseHex(Y,U):this._parseBase(Y,T,U),Y[0]==="-"&&(this.negative=1),this._strip(),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initNumber=function(Y,T,J){Y<0&&(this.negative=1,Y=-Y),Y<67108864?(this.words=[Y&67108863],this.length=1):Y<4503599627370496?(this.words=[Y&67108863,Y/67108864&67108863],this.length=2):(f(Y<9007199254740992),this.words=[Y&67108863,Y/67108864&67108863,1],this.length=3),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initArray=function(Y,T,J){if(f(typeof Y.length=="number"),Y.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(Y.length/3),this.words=new Array(this.length);for(var U=0;U=0;U-=3)H=Y[U]|Y[U-1]<<8|Y[U-2]<<16,this.words[K]|=H<>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);else if(J==="le")for(U=0,K=0;U>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);return this._strip()};function p(V,Y,T){for(var J=0,U=Math.min(V.length,T),K=0,H=Y;H=49&&k<=54?F=k-49+10:k>=17&&k<=22?F=k-17+10:F=k,J|=F,K|=F}return f(!(K&240),"Invalid character in "+V),J}b.prototype._parseHex=function(Y,T){this.length=Math.ceil((Y.length-T)/6),this.words=new Array(this.length);for(var J=0;J=T;J-=6)K=p(Y,J,J+6),this.words[U]|=K<>>26-H&4194303,H+=24,H>=26&&(H-=26,U++);J+6!==T&&(K=p(Y,T,J+6),this.words[U]|=K<>>26-H&4194303),this._strip()};function y(V,Y,T,J){for(var U=0,K=0,H=Math.min(V.length,T),k=Y;k=49?K=F-49+10:F>=17?K=F-17+10:K=F,f(F>=0&&K1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{b.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{b.prototype.inspect=m}else b.prototype.inspect=m;function m(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],G=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(Y,T){Y=Y||10,T=T|0||1;var J;if(Y===16||Y==="hex"){J="";for(var U=0,K=0,H=0;H>>24-U&16777215,K!==0||H!==this.length-1?J=N[6-F.length]+F+J:J=F+J,U+=2,U>=26&&(U-=26,H--)}for(K!==0&&(J=K.toString(16)+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}if(Y===(Y|0)&&Y>=2&&Y<=36){var O=G[Y],Q=d[Y];J="";var oe=this.clone();for(oe.negative=0;!oe.isZero();){var se=oe.modrn(Q).toString(Y);oe=oe.idivn(Q),oe.isZero()?J=se+J:J=N[O-se.length]+se+J}for(this.isZero()&&(J="0"+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var Y=this.words[0];return this.length===2?Y+=this.words[1]*67108864:this.length===3&&this.words[2]===1?Y+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-Y:Y},b.prototype.toJSON=function(){return this.toString(16,2)},Z&&(b.prototype.toBuffer=function(Y,T){return this.toArrayLike(Z,Y,T)}),b.prototype.toArray=function(Y,T){return this.toArrayLike(Array,Y,T)};var u=function(Y,T){return Y.allocUnsafe?Y.allocUnsafe(T):new Y(T)};b.prototype.toArrayLike=function(Y,T,J){this._strip();var U=this.byteLength(),K=J||Math.max(1,U);f(U<=K,"byte array longer than desired length"),f(K>0,"Requested array length <= 0");var H=u(Y,K),k=T==="le"?"LE":"BE";return this["_toArrayLike"+k](H,U),H},b.prototype._toArrayLikeLE=function(Y,T){for(var J=0,U=0,K=0,H=0;K>8&255),J>16&255),H===6?(J>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J=0&&(Y[J--]=k>>8&255),J>=0&&(Y[J--]=k>>16&255),H===6?(J>=0&&(Y[J--]=k>>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J>=0)for(Y[J--]=U;J>=0;)Y[J--]=0},Math.clz32?b.prototype._countBits=function(Y){return 32-Math.clz32(Y)}:b.prototype._countBits=function(Y){var T=Y,J=0;return T>=4096&&(J+=13,T>>>=13),T>=64&&(J+=7,T>>>=7),T>=8&&(J+=4,T>>>=4),T>=2&&(J+=2,T>>>=2),J+T},b.prototype._zeroBits=function(Y){if(Y===0)return 26;var T=Y,J=0;return T&8191||(J+=13,T>>>=13),T&127||(J+=7,T>>>=7),T&15||(J+=4,T>>>=4),T&3||(J+=2,T>>>=2),T&1||J++,J},b.prototype.bitLength=function(){var Y=this.words[this.length-1],T=this._countBits(Y);return(this.length-1)*26+T};function s(V){for(var Y=new Array(V.bitLength()),T=0;T>>U&1}return Y}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var Y=0,T=0;TY.length?this.clone().ior(Y):Y.clone().ior(this)},b.prototype.uor=function(Y){return this.length>Y.length?this.clone().iuor(Y):Y.clone().iuor(this)},b.prototype.iuand=function(Y){var T;this.length>Y.length?T=Y:T=this;for(var J=0;JY.length?this.clone().iand(Y):Y.clone().iand(this)},b.prototype.uand=function(Y){return this.length>Y.length?this.clone().iuand(Y):Y.clone().iuand(this)},b.prototype.iuxor=function(Y){var T,J;this.length>Y.length?(T=this,J=Y):(T=Y,J=this);for(var U=0;UY.length?this.clone().ixor(Y):Y.clone().ixor(this)},b.prototype.uxor=function(Y){return this.length>Y.length?this.clone().iuxor(Y):Y.clone().iuxor(this)},b.prototype.inotn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Math.ceil(Y/26)|0,J=Y%26;this._expand(T),J>0&&T--;for(var U=0;U0&&(this.words[U]=~this.words[U]&67108863>>26-J),this._strip()},b.prototype.notn=function(Y){return this.clone().inotn(Y)},b.prototype.setn=function(Y,T){f(typeof Y=="number"&&Y>=0);var J=Y/26|0,U=Y%26;return this._expand(J+1),T?this.words[J]=this.words[J]|1<Y.length?(J=this,U=Y):(J=Y,U=this);for(var K=0,H=0;H>>26;for(;K!==0&&H>>26;if(this.length=J.length,K!==0)this.words[this.length]=K,this.length++;else if(J!==this)for(;HY.length?this.clone().iadd(Y):Y.clone().iadd(this)},b.prototype.isub=function(Y){if(Y.negative!==0){Y.negative=0;var T=this.iadd(Y);return Y.negative=1,T._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(Y),this.negative=1,this._normSign();var J=this.cmp(Y);if(J===0)return this.negative=0,this.length=1,this.words[0]=0,this;var U,K;J>0?(U=this,K=Y):(U=Y,K=this);for(var H=0,k=0;k>26,this.words[k]=T&67108863;for(;H!==0&&k>26,this.words[k]=T&67108863;if(H===0&&k>>26,oe=F&67108863,se=Math.min(O,Y.length-1),he=Math.max(0,O-V.length+1);he<=se;he++){var pe=O-he|0;U=V.words[pe]|0,K=Y.words[he]|0,H=U*K+oe,Q+=H/67108864|0,oe=H&67108863}T.words[O]=oe|0,F=Q|0}return F!==0?T.words[O]=F|0:T.length--,T._strip()}var c=function(Y,T,J){var U=Y.words,K=T.words,H=J.words,k=0,F,O,Q,oe=U[0]|0,se=oe&8191,he=oe>>>13,pe=U[1]|0,re=pe&8191,_=pe>>>13,E=U[2]|0,$=E&8191,ae=E>>>13,le=U[3]|0,ee=le&8191,te=le>>>13,be=U[4]|0,ne=be&8191,B=be>>>13,q=U[5]|0,ue=q&8191,ve=q>>>13,Ge=U[6]|0,Je=Ge&8191,xe=Ge>>>13,ke=U[7]|0,Pe=ke&8191,Be=ke>>>13,Te=U[8]|0,we=Te&8191,Se=Te>>>13,De=U[9]|0,me=De&8191,Ve=De>>>13,Me=K[0]|0,Ie=Me&8191,Ze=Me>>>13,Ce=K[1]|0,ye=Ce&8191,Ue=Ce>>>13,qe=K[2]|0,ie=qe&8191,Oe=qe>>>13,Ke=K[3]|0,Xe=Ke&8191,Re=Ke>>>13,Ae=K[4]|0,ct=Ae&8191,lt=Ae>>>13,ot=K[5]|0,wt=ot&8191,Mt=ot>>>13,xt=K[6]|0,Gt=xt&8191,Zt=xt>>>13,Tt=K[7]|0,Ct=Tt&8191,St=Tt>>>13,Pt=K[8]|0,Ut=Pt&8191,kt=Pt>>>13,en=K[9]|0,nn=en&8191,Ft=en>>>13;J.negative=Y.negative^T.negative,J.length=19,F=Math.imul(se,Ie),O=Math.imul(se,Ze),O=O+Math.imul(he,Ie)|0,Q=Math.imul(he,Ze);var Ln=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,F=Math.imul(re,Ie),O=Math.imul(re,Ze),O=O+Math.imul(_,Ie)|0,Q=Math.imul(_,Ze),F=F+Math.imul(se,ye)|0,O=O+Math.imul(se,Ue)|0,O=O+Math.imul(he,ye)|0,Q=Q+Math.imul(he,Ue)|0;var An=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(An>>>26)|0,An&=67108863,F=Math.imul($,Ie),O=Math.imul($,Ze),O=O+Math.imul(ae,Ie)|0,Q=Math.imul(ae,Ze),F=F+Math.imul(re,ye)|0,O=O+Math.imul(re,Ue)|0,O=O+Math.imul(_,ye)|0,Q=Q+Math.imul(_,Ue)|0,F=F+Math.imul(se,ie)|0,O=O+Math.imul(se,Oe)|0,O=O+Math.imul(he,ie)|0,Q=Q+Math.imul(he,Oe)|0;var Gi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,F=Math.imul(ee,Ie),O=Math.imul(ee,Ze),O=O+Math.imul(te,Ie)|0,Q=Math.imul(te,Ze),F=F+Math.imul($,ye)|0,O=O+Math.imul($,Ue)|0,O=O+Math.imul(ae,ye)|0,Q=Q+Math.imul(ae,Ue)|0,F=F+Math.imul(re,ie)|0,O=O+Math.imul(re,Oe)|0,O=O+Math.imul(_,ie)|0,Q=Q+Math.imul(_,Oe)|0,F=F+Math.imul(se,Xe)|0,O=O+Math.imul(se,Re)|0,O=O+Math.imul(he,Xe)|0,Q=Q+Math.imul(he,Re)|0;var Pi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,F=Math.imul(ne,Ie),O=Math.imul(ne,Ze),O=O+Math.imul(B,Ie)|0,Q=Math.imul(B,Ze),F=F+Math.imul(ee,ye)|0,O=O+Math.imul(ee,Ue)|0,O=O+Math.imul(te,ye)|0,Q=Q+Math.imul(te,Ue)|0,F=F+Math.imul($,ie)|0,O=O+Math.imul($,Oe)|0,O=O+Math.imul(ae,ie)|0,Q=Q+Math.imul(ae,Oe)|0,F=F+Math.imul(re,Xe)|0,O=O+Math.imul(re,Re)|0,O=O+Math.imul(_,Xe)|0,Q=Q+Math.imul(_,Re)|0,F=F+Math.imul(se,ct)|0,O=O+Math.imul(se,lt)|0,O=O+Math.imul(he,ct)|0,Q=Q+Math.imul(he,lt)|0;var Gl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,F=Math.imul(ue,Ie),O=Math.imul(ue,Ze),O=O+Math.imul(ve,Ie)|0,Q=Math.imul(ve,Ze),F=F+Math.imul(ne,ye)|0,O=O+Math.imul(ne,Ue)|0,O=O+Math.imul(B,ye)|0,Q=Q+Math.imul(B,Ue)|0,F=F+Math.imul(ee,ie)|0,O=O+Math.imul(ee,Oe)|0,O=O+Math.imul(te,ie)|0,Q=Q+Math.imul(te,Oe)|0,F=F+Math.imul($,Xe)|0,O=O+Math.imul($,Re)|0,O=O+Math.imul(ae,Xe)|0,Q=Q+Math.imul(ae,Re)|0,F=F+Math.imul(re,ct)|0,O=O+Math.imul(re,lt)|0,O=O+Math.imul(_,ct)|0,Q=Q+Math.imul(_,lt)|0,F=F+Math.imul(se,wt)|0,O=O+Math.imul(se,Mt)|0,O=O+Math.imul(he,wt)|0,Q=Q+Math.imul(he,Mt)|0;var Fn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,F=Math.imul(Je,Ie),O=Math.imul(Je,Ze),O=O+Math.imul(xe,Ie)|0,Q=Math.imul(xe,Ze),F=F+Math.imul(ue,ye)|0,O=O+Math.imul(ue,Ue)|0,O=O+Math.imul(ve,ye)|0,Q=Q+Math.imul(ve,Ue)|0,F=F+Math.imul(ne,ie)|0,O=O+Math.imul(ne,Oe)|0,O=O+Math.imul(B,ie)|0,Q=Q+Math.imul(B,Oe)|0,F=F+Math.imul(ee,Xe)|0,O=O+Math.imul(ee,Re)|0,O=O+Math.imul(te,Xe)|0,Q=Q+Math.imul(te,Re)|0,F=F+Math.imul($,ct)|0,O=O+Math.imul($,lt)|0,O=O+Math.imul(ae,ct)|0,Q=Q+Math.imul(ae,lt)|0,F=F+Math.imul(re,wt)|0,O=O+Math.imul(re,Mt)|0,O=O+Math.imul(_,wt)|0,Q=Q+Math.imul(_,Mt)|0,F=F+Math.imul(se,Gt)|0,O=O+Math.imul(se,Zt)|0,O=O+Math.imul(he,Gt)|0,Q=Q+Math.imul(he,Zt)|0;var ul=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ul>>>26)|0,ul&=67108863,F=Math.imul(Pe,Ie),O=Math.imul(Pe,Ze),O=O+Math.imul(Be,Ie)|0,Q=Math.imul(Be,Ze),F=F+Math.imul(Je,ye)|0,O=O+Math.imul(Je,Ue)|0,O=O+Math.imul(xe,ye)|0,Q=Q+Math.imul(xe,Ue)|0,F=F+Math.imul(ue,ie)|0,O=O+Math.imul(ue,Oe)|0,O=O+Math.imul(ve,ie)|0,Q=Q+Math.imul(ve,Oe)|0,F=F+Math.imul(ne,Xe)|0,O=O+Math.imul(ne,Re)|0,O=O+Math.imul(B,Xe)|0,Q=Q+Math.imul(B,Re)|0,F=F+Math.imul(ee,ct)|0,O=O+Math.imul(ee,lt)|0,O=O+Math.imul(te,ct)|0,Q=Q+Math.imul(te,lt)|0,F=F+Math.imul($,wt)|0,O=O+Math.imul($,Mt)|0,O=O+Math.imul(ae,wt)|0,Q=Q+Math.imul(ae,Mt)|0,F=F+Math.imul(re,Gt)|0,O=O+Math.imul(re,Zt)|0,O=O+Math.imul(_,Gt)|0,Q=Q+Math.imul(_,Zt)|0,F=F+Math.imul(se,Ct)|0,O=O+Math.imul(se,St)|0,O=O+Math.imul(he,Ct)|0,Q=Q+Math.imul(he,St)|0;var ki=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ki>>>26)|0,ki&=67108863,F=Math.imul(we,Ie),O=Math.imul(we,Ze),O=O+Math.imul(Se,Ie)|0,Q=Math.imul(Se,Ze),F=F+Math.imul(Pe,ye)|0,O=O+Math.imul(Pe,Ue)|0,O=O+Math.imul(Be,ye)|0,Q=Q+Math.imul(Be,Ue)|0,F=F+Math.imul(Je,ie)|0,O=O+Math.imul(Je,Oe)|0,O=O+Math.imul(xe,ie)|0,Q=Q+Math.imul(xe,Oe)|0,F=F+Math.imul(ue,Xe)|0,O=O+Math.imul(ue,Re)|0,O=O+Math.imul(ve,Xe)|0,Q=Q+Math.imul(ve,Re)|0,F=F+Math.imul(ne,ct)|0,O=O+Math.imul(ne,lt)|0,O=O+Math.imul(B,ct)|0,Q=Q+Math.imul(B,lt)|0,F=F+Math.imul(ee,wt)|0,O=O+Math.imul(ee,Mt)|0,O=O+Math.imul(te,wt)|0,Q=Q+Math.imul(te,Mt)|0,F=F+Math.imul($,Gt)|0,O=O+Math.imul($,Zt)|0,O=O+Math.imul(ae,Gt)|0,Q=Q+Math.imul(ae,Zt)|0,F=F+Math.imul(re,Ct)|0,O=O+Math.imul(re,St)|0,O=O+Math.imul(_,Ct)|0,Q=Q+Math.imul(_,St)|0,F=F+Math.imul(se,Ut)|0,O=O+Math.imul(se,kt)|0,O=O+Math.imul(he,Ut)|0,Q=Q+Math.imul(he,kt)|0;var tl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tl>>>26)|0,tl&=67108863,F=Math.imul(me,Ie),O=Math.imul(me,Ze),O=O+Math.imul(Ve,Ie)|0,Q=Math.imul(Ve,Ze),F=F+Math.imul(we,ye)|0,O=O+Math.imul(we,Ue)|0,O=O+Math.imul(Se,ye)|0,Q=Q+Math.imul(Se,Ue)|0,F=F+Math.imul(Pe,ie)|0,O=O+Math.imul(Pe,Oe)|0,O=O+Math.imul(Be,ie)|0,Q=Q+Math.imul(Be,Oe)|0,F=F+Math.imul(Je,Xe)|0,O=O+Math.imul(Je,Re)|0,O=O+Math.imul(xe,Xe)|0,Q=Q+Math.imul(xe,Re)|0,F=F+Math.imul(ue,ct)|0,O=O+Math.imul(ue,lt)|0,O=O+Math.imul(ve,ct)|0,Q=Q+Math.imul(ve,lt)|0,F=F+Math.imul(ne,wt)|0,O=O+Math.imul(ne,Mt)|0,O=O+Math.imul(B,wt)|0,Q=Q+Math.imul(B,Mt)|0,F=F+Math.imul(ee,Gt)|0,O=O+Math.imul(ee,Zt)|0,O=O+Math.imul(te,Gt)|0,Q=Q+Math.imul(te,Zt)|0,F=F+Math.imul($,Ct)|0,O=O+Math.imul($,St)|0,O=O+Math.imul(ae,Ct)|0,Q=Q+Math.imul(ae,St)|0,F=F+Math.imul(re,Ut)|0,O=O+Math.imul(re,kt)|0,O=O+Math.imul(_,Ut)|0,Q=Q+Math.imul(_,kt)|0,F=F+Math.imul(se,nn)|0,O=O+Math.imul(se,Ft)|0,O=O+Math.imul(he,nn)|0,Q=Q+Math.imul(he,Ft)|0;var nl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nl>>>26)|0,nl&=67108863,F=Math.imul(me,ye),O=Math.imul(me,Ue),O=O+Math.imul(Ve,ye)|0,Q=Math.imul(Ve,Ue),F=F+Math.imul(we,ie)|0,O=O+Math.imul(we,Oe)|0,O=O+Math.imul(Se,ie)|0,Q=Q+Math.imul(Se,Oe)|0,F=F+Math.imul(Pe,Xe)|0,O=O+Math.imul(Pe,Re)|0,O=O+Math.imul(Be,Xe)|0,Q=Q+Math.imul(Be,Re)|0,F=F+Math.imul(Je,ct)|0,O=O+Math.imul(Je,lt)|0,O=O+Math.imul(xe,ct)|0,Q=Q+Math.imul(xe,lt)|0,F=F+Math.imul(ue,wt)|0,O=O+Math.imul(ue,Mt)|0,O=O+Math.imul(ve,wt)|0,Q=Q+Math.imul(ve,Mt)|0,F=F+Math.imul(ne,Gt)|0,O=O+Math.imul(ne,Zt)|0,O=O+Math.imul(B,Gt)|0,Q=Q+Math.imul(B,Zt)|0,F=F+Math.imul(ee,Ct)|0,O=O+Math.imul(ee,St)|0,O=O+Math.imul(te,Ct)|0,Q=Q+Math.imul(te,St)|0,F=F+Math.imul($,Ut)|0,O=O+Math.imul($,kt)|0,O=O+Math.imul(ae,Ut)|0,Q=Q+Math.imul(ae,kt)|0,F=F+Math.imul(re,nn)|0,O=O+Math.imul(re,Ft)|0,O=O+Math.imul(_,nn)|0,Q=Q+Math.imul(_,Ft)|0;var Dt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,F=Math.imul(me,ie),O=Math.imul(me,Oe),O=O+Math.imul(Ve,ie)|0,Q=Math.imul(Ve,Oe),F=F+Math.imul(we,Xe)|0,O=O+Math.imul(we,Re)|0,O=O+Math.imul(Se,Xe)|0,Q=Q+Math.imul(Se,Re)|0,F=F+Math.imul(Pe,ct)|0,O=O+Math.imul(Pe,lt)|0,O=O+Math.imul(Be,ct)|0,Q=Q+Math.imul(Be,lt)|0,F=F+Math.imul(Je,wt)|0,O=O+Math.imul(Je,Mt)|0,O=O+Math.imul(xe,wt)|0,Q=Q+Math.imul(xe,Mt)|0,F=F+Math.imul(ue,Gt)|0,O=O+Math.imul(ue,Zt)|0,O=O+Math.imul(ve,Gt)|0,Q=Q+Math.imul(ve,Zt)|0,F=F+Math.imul(ne,Ct)|0,O=O+Math.imul(ne,St)|0,O=O+Math.imul(B,Ct)|0,Q=Q+Math.imul(B,St)|0,F=F+Math.imul(ee,Ut)|0,O=O+Math.imul(ee,kt)|0,O=O+Math.imul(te,Ut)|0,Q=Q+Math.imul(te,kt)|0,F=F+Math.imul($,nn)|0,O=O+Math.imul($,Ft)|0,O=O+Math.imul(ae,nn)|0,Q=Q+Math.imul(ae,Ft)|0;var ht=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ht>>>26)|0,ht&=67108863,F=Math.imul(me,Xe),O=Math.imul(me,Re),O=O+Math.imul(Ve,Xe)|0,Q=Math.imul(Ve,Re),F=F+Math.imul(we,ct)|0,O=O+Math.imul(we,lt)|0,O=O+Math.imul(Se,ct)|0,Q=Q+Math.imul(Se,lt)|0,F=F+Math.imul(Pe,wt)|0,O=O+Math.imul(Pe,Mt)|0,O=O+Math.imul(Be,wt)|0,Q=Q+Math.imul(Be,Mt)|0,F=F+Math.imul(Je,Gt)|0,O=O+Math.imul(Je,Zt)|0,O=O+Math.imul(xe,Gt)|0,Q=Q+Math.imul(xe,Zt)|0,F=F+Math.imul(ue,Ct)|0,O=O+Math.imul(ue,St)|0,O=O+Math.imul(ve,Ct)|0,Q=Q+Math.imul(ve,St)|0,F=F+Math.imul(ne,Ut)|0,O=O+Math.imul(ne,kt)|0,O=O+Math.imul(B,Ut)|0,Q=Q+Math.imul(B,kt)|0,F=F+Math.imul(ee,nn)|0,O=O+Math.imul(ee,Ft)|0,O=O+Math.imul(te,nn)|0,Q=Q+Math.imul(te,Ft)|0;var Fe=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,F=Math.imul(me,ct),O=Math.imul(me,lt),O=O+Math.imul(Ve,ct)|0,Q=Math.imul(Ve,lt),F=F+Math.imul(we,wt)|0,O=O+Math.imul(we,Mt)|0,O=O+Math.imul(Se,wt)|0,Q=Q+Math.imul(Se,Mt)|0,F=F+Math.imul(Pe,Gt)|0,O=O+Math.imul(Pe,Zt)|0,O=O+Math.imul(Be,Gt)|0,Q=Q+Math.imul(Be,Zt)|0,F=F+Math.imul(Je,Ct)|0,O=O+Math.imul(Je,St)|0,O=O+Math.imul(xe,Ct)|0,Q=Q+Math.imul(xe,St)|0,F=F+Math.imul(ue,Ut)|0,O=O+Math.imul(ue,kt)|0,O=O+Math.imul(ve,Ut)|0,Q=Q+Math.imul(ve,kt)|0,F=F+Math.imul(ne,nn)|0,O=O+Math.imul(ne,Ft)|0,O=O+Math.imul(B,nn)|0,Q=Q+Math.imul(B,Ft)|0;var tt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tt>>>26)|0,tt&=67108863,F=Math.imul(me,wt),O=Math.imul(me,Mt),O=O+Math.imul(Ve,wt)|0,Q=Math.imul(Ve,Mt),F=F+Math.imul(we,Gt)|0,O=O+Math.imul(we,Zt)|0,O=O+Math.imul(Se,Gt)|0,Q=Q+Math.imul(Se,Zt)|0,F=F+Math.imul(Pe,Ct)|0,O=O+Math.imul(Pe,St)|0,O=O+Math.imul(Be,Ct)|0,Q=Q+Math.imul(Be,St)|0,F=F+Math.imul(Je,Ut)|0,O=O+Math.imul(Je,kt)|0,O=O+Math.imul(xe,Ut)|0,Q=Q+Math.imul(xe,kt)|0,F=F+Math.imul(ue,nn)|0,O=O+Math.imul(ue,Ft)|0,O=O+Math.imul(ve,nn)|0,Q=Q+Math.imul(ve,Ft)|0;var nt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nt>>>26)|0,nt&=67108863,F=Math.imul(me,Gt),O=Math.imul(me,Zt),O=O+Math.imul(Ve,Gt)|0,Q=Math.imul(Ve,Zt),F=F+Math.imul(we,Ct)|0,O=O+Math.imul(we,St)|0,O=O+Math.imul(Se,Ct)|0,Q=Q+Math.imul(Se,St)|0,F=F+Math.imul(Pe,Ut)|0,O=O+Math.imul(Pe,kt)|0,O=O+Math.imul(Be,Ut)|0,Q=Q+Math.imul(Be,kt)|0,F=F+Math.imul(Je,nn)|0,O=O+Math.imul(Je,Ft)|0,O=O+Math.imul(xe,nn)|0,Q=Q+Math.imul(xe,Ft)|0;var Vt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,F=Math.imul(me,Ct),O=Math.imul(me,St),O=O+Math.imul(Ve,Ct)|0,Q=Math.imul(Ve,St),F=F+Math.imul(we,Ut)|0,O=O+Math.imul(we,kt)|0,O=O+Math.imul(Se,Ut)|0,Q=Q+Math.imul(Se,kt)|0,F=F+Math.imul(Pe,nn)|0,O=O+Math.imul(Pe,Ft)|0,O=O+Math.imul(Be,nn)|0,Q=Q+Math.imul(Be,Ft)|0;var Bt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,F=Math.imul(me,Ut),O=Math.imul(me,kt),O=O+Math.imul(Ve,Ut)|0,Q=Math.imul(Ve,kt),F=F+Math.imul(we,nn)|0,O=O+Math.imul(we,Ft)|0,O=O+Math.imul(Se,nn)|0,Q=Q+Math.imul(Se,Ft)|0;var Nn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,F=Math.imul(me,nn),O=Math.imul(me,Ft),O=O+Math.imul(Ve,nn)|0,Q=Math.imul(Ve,Ft);var oi=(k+F|0)+((O&8191)<<13)|0;return k=(Q+(O>>>13)|0)+(oi>>>26)|0,oi&=67108863,H[0]=Ln,H[1]=An,H[2]=Gi,H[3]=Pi,H[4]=Gl,H[5]=Fn,H[6]=ul,H[7]=ki,H[8]=tl,H[9]=nl,H[10]=Dt,H[11]=ht,H[12]=Fe,H[13]=tt,H[14]=nt,H[15]=Vt,H[16]=Bt,H[17]=Nn,H[18]=oi,k!==0&&(H[19]=k,J.length++),J};Math.imul||(c=h);function W(V,Y,T){T.negative=Y.negative^V.negative,T.length=V.length+Y.length;for(var J=0,U=0,K=0;K>>26)|0,U+=H>>>26,H&=67108863}T.words[K]=k,J=H,H=U}return J!==0?T.words[K]=J:T.length--,T._strip()}function M(V,Y,T){return W(V,Y,T)}b.prototype.mulTo=function(Y,T){var J,U=this.length+Y.length;return this.length===10&&Y.length===10?J=c(this,Y,T):U<63?J=h(this,Y,T):U<1024?J=W(this,Y,T):J=M(this,Y,T),J},b.prototype.mul=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),this.mulTo(Y,T)},b.prototype.mulf=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),M(this,Y,T)},b.prototype.imul=function(Y){return this.clone().mulTo(Y,this)},b.prototype.imuln=function(Y){var T=Y<0;T&&(Y=-Y),f(typeof Y=="number"),f(Y<67108864);for(var J=0,U=0;U>=26,J+=K/67108864|0,J+=H>>>26,this.words[U]=H&67108863}return J!==0&&(this.words[U]=J,this.length++),T?this.ineg():this},b.prototype.muln=function(Y){return this.clone().imuln(Y)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(Y){var T=s(Y);if(T.length===0)return new b(1);for(var J=this,U=0;U=0);var T=Y%26,J=(Y-T)/26,U=67108863>>>26-T<<26-T,K;if(T!==0){var H=0;for(K=0;K>>26-T}H&&(this.words[K]=H,this.length++)}if(J!==0){for(K=this.length-1;K>=0;K--)this.words[K+J]=this.words[K];for(K=0;K=0);var U;T?U=(T-T%26)/26:U=0;var K=Y%26,H=Math.min((Y-K)/26,this.length),k=67108863^67108863>>>K<H)for(this.length-=H,O=0;O=0&&(Q!==0||O>=U);O--){var oe=this.words[O]|0;this.words[O]=Q<<26-K|oe>>>K,Q=oe&k}return F&&Q!==0&&(F.words[F.length++]=Q),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},b.prototype.ishrn=function(Y,T,J){return f(this.negative===0),this.iushrn(Y,T,J)},b.prototype.shln=function(Y){return this.clone().ishln(Y)},b.prototype.ushln=function(Y){return this.clone().iushln(Y)},b.prototype.shrn=function(Y){return this.clone().ishrn(Y)},b.prototype.ushrn=function(Y){return this.clone().iushrn(Y)},b.prototype.testn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Y%26,J=(Y-T)/26,U=1<=0);var T=Y%26,J=(Y-T)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=J)return this;if(T!==0&&J++,this.length=Math.min(J,this.length),T!==0){var U=67108863^67108863>>>T<=67108864;T++)this.words[T]-=67108864,T===this.length-1?this.words[T+1]=1:this.words[T+1]++;return this.length=Math.max(this.length,T+1),this},b.prototype.isubn=function(Y){if(f(typeof Y=="number"),f(Y<67108864),Y<0)return this.iaddn(-Y);if(this.negative!==0)return this.negative=0,this.iaddn(Y),this.negative=1,this;if(this.words[0]-=Y,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var T=0;T>26)-(F/67108864|0),this.words[K+J]=H&67108863}for(;K>26,this.words[K+J]=H&67108863;if(k===0)return this._strip();for(f(k===-1),k=0,K=0;K>26,this.words[K]=H&67108863;return this.negative=1,this._strip()},b.prototype._wordDiv=function(Y,T){var J=this.length-Y.length,U=this.clone(),K=Y,H=K.words[K.length-1]|0,k=this._countBits(H);J=26-k,J!==0&&(K=K.ushln(J),U.iushln(J),H=K.words[K.length-1]|0);var F=U.length-K.length,O;if(T!=="mod"){O=new b(null),O.length=F+1,O.words=new Array(O.length);for(var Q=0;Q=0;se--){var he=(U.words[K.length+se]|0)*67108864+(U.words[K.length+se-1]|0);for(he=Math.min(he/H|0,67108863),U._ishlnsubmul(K,he,se);U.negative!==0;)he--,U.negative=0,U._ishlnsubmul(K,1,se),U.isZero()||(U.negative^=1);O&&(O.words[se]=he)}return O&&O._strip(),U._strip(),T!=="div"&&J!==0&&U.iushrn(J),{div:O||null,mod:U}},b.prototype.divmod=function(Y,T,J){if(f(!Y.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var U,K,H;return this.negative!==0&&Y.negative===0?(H=this.neg().divmod(Y,T),T!=="mod"&&(U=H.div.neg()),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.iadd(Y)),{div:U,mod:K}):this.negative===0&&Y.negative!==0?(H=this.divmod(Y.neg(),T),T!=="mod"&&(U=H.div.neg()),{div:U,mod:H.mod}):this.negative&Y.negative?(H=this.neg().divmod(Y.neg(),T),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.isub(Y)),{div:H.div,mod:K}):Y.length>this.length||this.cmp(Y)<0?{div:new b(0),mod:this}:Y.length===1?T==="div"?{div:this.divn(Y.words[0]),mod:null}:T==="mod"?{div:null,mod:new b(this.modrn(Y.words[0]))}:{div:this.divn(Y.words[0]),mod:new b(this.modrn(Y.words[0]))}:this._wordDiv(Y,T)},b.prototype.div=function(Y){return this.divmod(Y,"div",!1).div},b.prototype.mod=function(Y){return this.divmod(Y,"mod",!1).mod},b.prototype.umod=function(Y){return this.divmod(Y,"mod",!0).mod},b.prototype.divRound=function(Y){var T=this.divmod(Y);if(T.mod.isZero())return T.div;var J=T.div.negative!==0?T.mod.isub(Y):T.mod,U=Y.ushrn(1),K=Y.andln(1),H=J.cmp(U);return H<0||K===1&&H===0?T.div:T.div.negative!==0?T.div.isubn(1):T.div.iaddn(1)},b.prototype.modrn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=(1<<26)%Y,U=0,K=this.length-1;K>=0;K--)U=(J*U+(this.words[K]|0))%Y;return T?-U:U},b.prototype.modn=function(Y){return this.modrn(Y)},b.prototype.idivn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=0,U=this.length-1;U>=0;U--){var K=(this.words[U]|0)+J*67108864;this.words[U]=K/Y|0,J=K%Y}return this._strip(),T?this.ineg():this},b.prototype.divn=function(Y){return this.clone().idivn(Y)},b.prototype.egcd=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=new b(0),k=new b(1),F=0;T.isEven()&&J.isEven();)T.iushrn(1),J.iushrn(1),++F;for(var O=J.clone(),Q=T.clone();!T.isZero();){for(var oe=0,se=1;!(T.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(T.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(O),K.isub(Q)),U.iushrn(1),K.iushrn(1);for(var he=0,pe=1;!(J.words[0]&pe)&&he<26;++he,pe<<=1);if(he>0)for(J.iushrn(he);he-- >0;)(H.isOdd()||k.isOdd())&&(H.iadd(O),k.isub(Q)),H.iushrn(1),k.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(H),K.isub(k)):(J.isub(T),H.isub(U),k.isub(K))}return{a:H,b:k,gcd:J.iushln(F)}},b.prototype._invmp=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=J.clone();T.cmpn(1)>0&&J.cmpn(1)>0;){for(var k=0,F=1;!(T.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(T.iushrn(k);k-- >0;)U.isOdd()&&U.iadd(H),U.iushrn(1);for(var O=0,Q=1;!(J.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(J.iushrn(O);O-- >0;)K.isOdd()&&K.iadd(H),K.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(K)):(J.isub(T),K.isub(U))}var oe;return T.cmpn(1)===0?oe=U:oe=K,oe.cmpn(0)<0&&oe.iadd(Y),oe},b.prototype.gcd=function(Y){if(this.isZero())return Y.abs();if(Y.isZero())return this.abs();var T=this.clone(),J=Y.clone();T.negative=0,J.negative=0;for(var U=0;T.isEven()&&J.isEven();U++)T.iushrn(1),J.iushrn(1);do{for(;T.isEven();)T.iushrn(1);for(;J.isEven();)J.iushrn(1);var K=T.cmp(J);if(K<0){var H=T;T=J,J=H}else if(K===0||J.cmpn(1)===0)break;T.isub(J)}while(!0);return J.iushln(U)},b.prototype.invm=function(Y){return this.egcd(Y).a.umod(Y)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(Y){return this.words[0]&Y},b.prototype.bincn=function(Y){f(typeof Y=="number");var T=Y%26,J=(Y-T)/26,U=1<>>26,k&=67108863,this.words[H]=k}return K!==0&&(this.words[H]=K,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(Y){var T=Y<0;if(this.negative!==0&&!T)return-1;if(this.negative===0&&T)return 1;this._strip();var J;if(this.length>1)J=1;else{T&&(Y=-Y),f(Y<=67108863,"Number is too big");var U=this.words[0]|0;J=U===Y?0:UY.length)return 1;if(this.length=0;J--){var U=this.words[J]|0,K=Y.words[J]|0;if(U!==K){UK&&(T=1);break}}return T},b.prototype.gtn=function(Y){return this.cmpn(Y)===1},b.prototype.gt=function(Y){return this.cmp(Y)===1},b.prototype.gten=function(Y){return this.cmpn(Y)>=0},b.prototype.gte=function(Y){return this.cmp(Y)>=0},b.prototype.ltn=function(Y){return this.cmpn(Y)===-1},b.prototype.lt=function(Y){return this.cmp(Y)===-1},b.prototype.lten=function(Y){return this.cmpn(Y)<=0},b.prototype.lte=function(Y){return this.cmp(Y)<=0},b.prototype.eqn=function(Y){return this.cmpn(Y)===0},b.prototype.eq=function(Y){return this.cmp(Y)===0},b.red=function(Y){return new S(Y)},b.prototype.toRed=function(Y){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),Y.convertTo(this)._forceRed(Y)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(Y){return this.red=Y,this},b.prototype.forceRed=function(Y){return f(!this.red,"Already a number in reduction context"),this._forceRed(Y)},b.prototype.redAdd=function(Y){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,Y)},b.prototype.redIAdd=function(Y){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,Y)},b.prototype.redSub=function(Y){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,Y)},b.prototype.redISub=function(Y){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,Y)},b.prototype.redShl=function(Y){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,Y)},b.prototype.redMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.mul(this,Y)},b.prototype.redIMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.imul(this,Y)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(Y){return f(this.red&&!Y.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,Y)};var I={k256:null,p224:null,p192:null,p25519:null};function w(V,Y){this.name=V,this.p=new b(Y,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}w.prototype._tmp=function(){var Y=new b(null);return Y.words=new Array(Math.ceil(this.n/13)),Y},w.prototype.ireduce=function(Y){var T=Y,J;do this.split(T,this.tmp),T=this.imulK(T),T=T.iadd(this.tmp),J=T.bitLength();while(J>this.n);var U=J0?T.isub(this.p):T.strip!==void 0?T.strip():T._strip(),T},w.prototype.split=function(Y,T){Y.iushrn(this.n,0,T)},w.prototype.imulK=function(Y){return Y.imul(this.k)};function C(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(C,w),C.prototype.split=function(Y,T){for(var J=4194303,U=Math.min(Y.length,9),K=0;K>>22,H=k}H>>>=22,Y.words[K-10]=H,H===0&&Y.length>10?Y.length-=10:Y.length-=9},C.prototype.imulK=function(Y){Y.words[Y.length]=0,Y.words[Y.length+1]=0,Y.length+=2;for(var T=0,J=0;J>>=26,Y.words[J]=K,T=U}return T!==0&&(Y.words[Y.length++]=T),Y},b._prime=function(Y){if(I[Y])return I[Y];var T;if(Y==="k256")T=new C;else if(Y==="p224")T=new x;else if(Y==="p192")T=new R;else if(Y==="p25519")T=new g;else throw new Error("Unknown prime "+Y);return I[Y]=T,T};function S(V){if(typeof V=="string"){var Y=b._prime(V);this.m=Y.p,this.prime=Y}else f(V.gtn(1),"modulus must be greater than 1"),this.m=V,this.prime=null}S.prototype._verify1=function(Y){f(Y.negative===0,"red works only with positives"),f(Y.red,"red works only with red numbers")},S.prototype._verify2=function(Y,T){f((Y.negative|T.negative)===0,"red works only with positives"),f(Y.red&&Y.red===T.red,"red works only with red numbers")},S.prototype.imod=function(Y){return this.prime?this.prime.ireduce(Y)._forceRed(this):(X(Y,Y.umod(this.m)._forceRed(this)),Y)},S.prototype.neg=function(Y){return Y.isZero()?Y.clone():this.m.sub(Y)._forceRed(this)},S.prototype.add=function(Y,T){this._verify2(Y,T);var J=Y.add(T);return J.cmp(this.m)>=0&&J.isub(this.m),J._forceRed(this)},S.prototype.iadd=function(Y,T){this._verify2(Y,T);var J=Y.iadd(T);return J.cmp(this.m)>=0&&J.isub(this.m),J},S.prototype.sub=function(Y,T){this._verify2(Y,T);var J=Y.sub(T);return J.cmpn(0)<0&&J.iadd(this.m),J._forceRed(this)},S.prototype.isub=function(Y,T){this._verify2(Y,T);var J=Y.isub(T);return J.cmpn(0)<0&&J.iadd(this.m),J},S.prototype.shl=function(Y,T){return this._verify1(Y),this.imod(Y.ushln(T))},S.prototype.imul=function(Y,T){return this._verify2(Y,T),this.imod(Y.imul(T))},S.prototype.mul=function(Y,T){return this._verify2(Y,T),this.imod(Y.mul(T))},S.prototype.isqr=function(Y){return this.imul(Y,Y.clone())},S.prototype.sqr=function(Y){return this.mul(Y,Y)},S.prototype.sqrt=function(Y){if(Y.isZero())return Y.clone();var T=this.m.andln(3);if(f(T%2===1),T===3){var J=this.m.add(new b(1)).iushrn(2);return this.pow(Y,J)}for(var U=this.m.subn(1),K=0;!U.isZero()&&U.andln(1)===0;)K++,U.iushrn(1);f(!U.isZero());var H=new b(1).toRed(this),k=H.redNeg(),F=this.m.subn(1).iushrn(1),O=this.m.bitLength();for(O=new b(2*O*O).toRed(this);this.pow(O,F).cmp(k)!==0;)O.redIAdd(k);for(var Q=this.pow(O,U),oe=this.pow(Y,U.addn(1).iushrn(1)),se=this.pow(Y,U),he=K;se.cmp(H)!==0;){for(var pe=se,re=0;pe.cmp(H)!==0;re++)pe=pe.redSqr();f(re=0;K--){for(var Q=T.words[K],oe=O-1;oe>=0;oe--){var se=Q>>oe&1;if(H!==U[0]&&(H=this.sqr(H)),se===0&&k===0){F=0;continue}k<<=1,k|=se,F++,!(F!==J&&(K!==0||oe!==0))&&(H=this.mul(H,U[k]),F=0,k=0)}O=26}return H},S.prototype.convertTo=function(Y){var T=Y.umod(this.m);return T===Y?T.clone():T},S.prototype.convertFrom=function(Y){var T=Y.clone();return T.red=null,T},b.mont=function(Y){return new L(Y)};function L(V){S.call(this,V),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(L,S),L.prototype.convertTo=function(Y){return this.imod(Y.ushln(this.shift))},L.prototype.convertFrom=function(Y){var T=this.imod(Y.mul(this.rinv));return T.red=null,T},L.prototype.imul=function(Y,T){if(Y.isZero()||T.isZero())return Y.words[0]=0,Y.length=1,Y;var J=Y.imul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.mul=function(Y,T){if(Y.isZero()||T.isZero())return new b(0)._forceRed(this);var J=Y.mul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.invm=function(Y){var T=this.imod(Y._invmp(this.m).mul(this.r2));return T._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],184:[function(t,i,a){function l(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Z){return typeof Z}:l=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},l(v)}var o;i.exports=function(b){return o||(o=new r(null)),o.generate(b)};function r(v){this.rand=v}if(i.exports.Rand=r,r.prototype.generate=function(b){return this._rand(b)},r.prototype._rand=function(b){if(this.rand.getBytes)return this.rand.getBytes(b);for(var Z=new Uint8Array(b),p=0;p"u"?"undefined":l(self))==="object")self.crypto&&self.crypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.crypto.getRandomValues(Z),Z}:self.msCrypto&&self.msCrypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.msCrypto.getRandomValues(Z),Z}:(typeof window>"u"?"undefined":l(window))==="object"&&(r.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var f=t("crypto");if(typeof f.randomBytes!="function")throw new Error("Not supported");r.prototype._rand=function(b){return f.randomBytes(b)}}catch{}},{crypto:185}],185:[function(t,i,a){},{}],186:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(p){l.isBuffer(p)||(p=l.from(p));for(var y=p.length/4|0,X=new Array(y),m=0;m>>24]^d[c>>>16&255]^u[W>>>8&255]^s[M&255]^y[R++],w=G[c>>>24]^d[W>>>16&255]^u[M>>>8&255]^s[h&255]^y[R++],C=G[W>>>24]^d[M>>>16&255]^u[h>>>8&255]^s[c&255]^y[R++],x=G[M>>>24]^d[h>>>16&255]^u[c>>>8&255]^s[W&255]^y[R++],h=I,c=w,W=C,M=x;return I=(m[h>>>24]<<24|m[c>>>16&255]<<16|m[W>>>8&255]<<8|m[M&255])^y[R++],w=(m[c>>>24]<<24|m[W>>>16&255]<<16|m[M>>>8&255]<<8|m[h&255])^y[R++],C=(m[W>>>24]<<24|m[M>>>16&255]<<16|m[h>>>8&255]<<8|m[c&255])^y[R++],x=(m[M>>>24]<<24|m[h>>>16&255]<<16|m[c>>>8&255]<<8|m[W&255])^y[R++],I=I>>>0,w=w>>>0,C=C>>>0,x=x>>>0,[I,w,C,x]}var v=[0,1,2,4,8,16,32,64,128,27,54],b=function(){for(var p=new Array(256),y=0;y<256;y++)y<128?p[y]=y<<1:p[y]=y<<1^283;for(var X=[],m=[],N=[[],[],[],[]],G=[[],[],[],[]],d=0,u=0,s=0;s<256;++s){var h=u^u<<1^u<<2^u<<3^u<<4;h=h>>>8^h&255^99,X[d]=h,m[h]=d;var c=p[d],W=p[c],M=p[W],I=p[h]*257^h*16843008;N[0][d]=I<<24|I>>>8,N[1][d]=I<<16|I>>>16,N[2][d]=I<<8|I>>>24,N[3][d]=I,I=M*16843009^W*65537^c*257^d*16843008,G[0][h]=I<<24|I>>>8,G[1][h]=I<<16|I>>>16,G[2][h]=I<<8|I>>>24,G[3][h]=I,d===0?d=u=1:(d=c^p[p[p[M^c]]],u^=p[p[u]])}return{SBOX:X,INV_SBOX:m,SUB_MIX:N,INV_SUB_MIX:G}}();function Z(p){this._key=o(p),this._reset()}Z.blockSize=4*4,Z.keySize=256/8,Z.prototype.blockSize=Z.blockSize,Z.prototype.keySize=Z.keySize,Z.prototype._reset=function(){for(var p=this._key,y=p.length,X=y+6,m=(X+1)*4,N=[],G=0;G>>24,d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255],d^=v[G/y|0]<<24):y>6&&G%y===4&&(d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255]),N[G]=N[G-y]^d}for(var u=[],s=0;s>>24]]^b.INV_SUB_MIX[1][b.SBOX[c>>>16&255]]^b.INV_SUB_MIX[2][b.SBOX[c>>>8&255]]^b.INV_SUB_MIX[3][b.SBOX[c&255]]}this._nRounds=X,this._keySchedule=N,this._invKeySchedule=u},Z.prototype.encryptBlockRaw=function(p){return p=o(p),f(p,this._keySchedule,b.SUB_MIX,b.SBOX,this._nRounds)},Z.prototype.encryptBlock=function(p){var y=this.encryptBlockRaw(p),X=l.allocUnsafe(16);return X.writeUInt32BE(y[0],0),X.writeUInt32BE(y[1],4),X.writeUInt32BE(y[2],8),X.writeUInt32BE(y[3],12),X},Z.prototype.decryptBlock=function(p){p=o(p);var y=p[1];p[1]=p[3],p[3]=y;var X=f(p,this._invKeySchedule,b.INV_SUB_MIX,b.INV_SBOX,this._nRounds),m=l.allocUnsafe(16);return m.writeUInt32BE(X[0],0),m.writeUInt32BE(X[3],4),m.writeUInt32BE(X[2],8),m.writeUInt32BE(X[1],12),m},Z.prototype.scrub=function(){r(this._keySchedule),r(this._invKeySchedule),r(this._key)},i.exports.AES=Z},{"safe-buffer":494}],187:[function(t,i,a){var l=t("./aes"),o=t("safe-buffer").Buffer,r=t("cipher-base"),f=t("inherits"),v=t("./ghash"),b=t("buffer-xor"),Z=t("./incr32");function p(m,N){var G=0;m.length!==N.length&&G++;for(var d=Math.min(m.length,N.length),u=0;u16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u}else if(this.cache.length>=16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u;return null},X.prototype.flush=function(){if(this.cache.length)return this.cache};function m(d){var u=d[15];if(u<1||u>16)throw new Error("unable to decrypt data");for(var s=-1;++s15){var d=this.cache.slice(0,16);return this.cache=this.cache.slice(16),d}return null},m.prototype.flush=function(){for(var d=16-this.cache.length,u=r.allocUnsafe(d),s=-1;++s>>0,0),Z.writeUInt32BE(b[1]>>>0,4),Z.writeUInt32BE(b[2]>>>0,8),Z.writeUInt32BE(b[3]>>>0,12),Z}function v(b){this.h=b,this.state=l.alloc(16,0),this.cache=l.allocUnsafe(0)}v.prototype.ghash=function(b){for(var Z=-1;++Z0;p--)b[p]=b[p]>>>1|(b[p-1]&1)<<31;b[0]=b[0]>>>1,X&&(b[0]=b[0]^225<<24)}this.state=f(Z)},v.prototype.update=function(b){this.cache=l.concat([this.cache,b]);for(var Z;this.cache.length>=16;)Z=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(Z)},v.prototype.final=function(b,Z){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(f([0,b,0,Z])),this.state},i.exports=v},{"safe-buffer":494}],192:[function(t,i,a){function l(o){for(var r=o.length,f;r--;)if(f=o.readUInt8(r),f===255)o.writeUInt8(0,r);else{f++,o.writeUInt8(f,r);break}}i.exports=l},{}],193:[function(t,i,a){var l=t("buffer-xor");a.encrypt=function(o,r){var f=l(r,o._prev);return o._prev=o._cipher.encryptBlock(f),o._prev},a.decrypt=function(o,r){var f=o._prev;o._prev=r;var v=o._cipher.decryptBlock(r);return l(v,f)}},{"buffer-xor":217}],194:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("buffer-xor");function r(f,v,b){var Z=v.length,p=o(v,f._cache);return f._cache=f._cache.slice(Z),f._prev=l.concat([f._prev,b?v:p]),p}a.encrypt=function(f,v,b){for(var Z=l.allocUnsafe(0),p;v.length;)if(f._cache.length===0&&(f._cache=f._cipher.encryptBlock(f._prev),f._prev=l.allocUnsafe(0)),f._cache.length<=v.length)p=f._cache.length,Z=l.concat([Z,r(f,v.slice(0,p),b)]),v=v.slice(p);else{Z=l.concat([Z,r(f,v,b)]);break}return Z}},{"buffer-xor":217,"safe-buffer":494}],195:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(f,v,b){for(var Z,p=-1,y=8,X=0,m,N;++p>p%8,f._prev=r(f._prev,b?m:N);return X}function r(f,v){var b=f.length,Z=-1,p=l.allocUnsafe(f.length);for(f=l.concat([f,l.from([v])]);++Z>7;return p}a.encrypt=function(f,v,b){for(var Z=v.length,p=l.allocUnsafe(Z),y=-1;++y=0||!y.umod(Z.prime1)||!y.umod(Z.prime2);)y=new o(r(p));return y}}).call(this,t("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],208:[function(t,i,a){i.exports=t("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(t,i,a){i.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(t,i,a){i.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("create-hash"),r=t("readable-stream"),f=t("inherits"),v=t("./sign"),b=t("./verify"),Z=t("./algorithms.json");Object.keys(Z).forEach(function(N){Z[N].id=l.from(Z[N].id,"hex"),Z[N.toLowerCase()]=Z[N]});function p(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hashType=G.hash,this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(p,r.Writable),p.prototype._write=function(G,d,u){this._hash.update(G),u()},p.prototype.update=function(G,d){return typeof G=="string"&&(G=l.from(G,d)),this._hash.update(G),this},p.prototype.sign=function(G,d){this.end();var u=this._hash.digest(),s=v(u,G,this._hashType,this._signType,this._tag);return d?s.toString(d):s};function y(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(y,r.Writable),y.prototype._write=function(G,d,u){this._hash.update(G),u()},y.prototype.update=function(G,d){return typeof G=="string"&&(G=l.from(G,d)),this._hash.update(G),this},y.prototype.verify=function(G,d,u){typeof d=="string"&&(d=l.from(d,u)),this.end();var s=this._hash.digest();return b(d,s,G,this._signType,this._tag)};function X(N){return new p(N)}function m(N){return new y(N)}i.exports={Sign:X,Verify:m,createSign:X,createVerify:m}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("create-hmac"),r=t("browserify-rsa"),f=t("elliptic").ec,v=t("bn.js"),b=t("parse-asn1"),Z=t("./curves.json");function p(h,c,W,M,I){var w=b(c);if(w.curve){if(M!=="ecdsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");return y(h,w)}else if(w.type==="dsa"){if(M!=="dsa")throw new Error("wrong private key type");return X(h,w,W)}else if(M!=="rsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");h=l.concat([I,h]);for(var C=w.modulus.byteLength(),x=[0,1];h.length+x.length+10&&W.ishrn(M),W}function d(h,c){h=G(h,c),h=h.mod(c);var W=l.from(h.toArray());if(W.length=m)throw new Error("invalid sig")}i.exports=b},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(t,i,a){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var l=t("buffer"),o=l.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=l:(r(l,a),a.Buffer=f);function f(v,b,Z){return o(v,b,Z)}f.prototype=Object.create(o.prototype),r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return l.SlowBuffer(v)}},{buffer:216}],215:[function(t,i,a){arguments[4][185][0].apply(a,arguments)},{dup:185}],216:[function(t,i,a){(function(p){function o(ne){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(q){return typeof q}:o=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},o(ne)}var r=t("base64-js"),f=t("ieee754");a.Buffer=p,a.SlowBuffer=c,a.INSPECT_MAX_BYTES=50;var v=2147483647;a.kMaxLength=v,p.TYPED_ARRAY_SUPPORT=b(),!p.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function b(){try{var ne=new Uint8Array(1);return ne.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},ne.foo()===42}catch{return!1}}Object.defineProperty(p.prototype,"parent",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.buffer}}),Object.defineProperty(p.prototype,"offset",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.byteOffset}});function Z(ne){if(ne>v)throw new RangeError('The value "'+ne+'" is invalid for option "size"');var B=new Uint8Array(ne);return B.__proto__=p.prototype,B}function p(ne,B,q){if(typeof ne=="number"){if(typeof B=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return N(ne)}return y(ne,B,q)}typeof Symbol<"u"&&Symbol.species!=null&&p[Symbol.species]===p&&Object.defineProperty(p,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),p.poolSize=8192;function y(ne,B,q){if(typeof ne=="string")return G(ne,B);if(ArrayBuffer.isView(ne))return d(ne);if(ne==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne));if(te(ne,ArrayBuffer)||ne&&te(ne.buffer,ArrayBuffer))return u(ne,B,q);if(typeof ne=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ue=ne.valueOf&&ne.valueOf();if(ue!=null&&ue!==ne)return p.from(ue,B,q);var ve=s(ne);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ne[Symbol.toPrimitive]=="function")return p.from(ne[Symbol.toPrimitive]("string"),B,q);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne))}p.from=function(ne,B,q){return y(ne,B,q)},p.prototype.__proto__=Uint8Array.prototype,p.__proto__=Uint8Array;function X(ne){if(typeof ne!="number")throw new TypeError('"size" argument must be of type number');if(ne<0)throw new RangeError('The value "'+ne+'" is invalid for option "size"')}function m(ne,B,q){return X(ne),ne<=0?Z(ne):B!==void 0?typeof q=="string"?Z(ne).fill(B,q):Z(ne).fill(B):Z(ne)}p.alloc=function(ne,B,q){return m(ne,B,q)};function N(ne){return X(ne),Z(ne<0?0:h(ne)|0)}p.allocUnsafe=function(ne){return N(ne)},p.allocUnsafeSlow=function(ne){return N(ne)};function G(ne,B){if((typeof B!="string"||B==="")&&(B="utf8"),!p.isEncoding(B))throw new TypeError("Unknown encoding: "+B);var q=W(ne,B)|0,ue=Z(q),ve=ue.write(ne,B);return ve!==q&&(ue=ue.slice(0,ve)),ue}function d(ne){for(var B=ne.length<0?0:h(ne.length)|0,q=Z(B),ue=0;ue=v)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+v.toString(16)+" bytes");return ne|0}function c(ne){return+ne!=ne&&(ne=0),p.alloc(+ne)}p.isBuffer=function(B){return B!=null&&B._isBuffer===!0&&B!==p.prototype},p.compare=function(B,q){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),te(q,Uint8Array)&&(q=p.from(q,q.offset,q.byteLength)),!p.isBuffer(B)||!p.isBuffer(q))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(B===q)return 0;for(var ue=B.length,ve=q.length,Ge=0,Je=Math.min(ue,ve);Ge2&&arguments[2]===!0;if(!ue&&q===0)return 0;for(var ve=!1;;)switch(B){case"ascii":case"latin1":case"binary":return q;case"utf8":case"utf-8":return E(ne).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q*2;case"hex":return q>>>1;case"base64":return le(ne).length;default:if(ve)return ue?-1:E(ne).length;B=(""+B).toLowerCase(),ve=!0}}p.byteLength=W;function M(ne,B,q){var ue=!1;if((B===void 0||B<0)&&(B=0),B>this.length||((q===void 0||q>this.length)&&(q=this.length),q<=0)||(q>>>=0,B>>>=0,q<=B))return"";for(ne||(ne="utf8");;)switch(ne){case"hex":return k(this,B,q);case"utf8":case"utf-8":return T(this,B,q);case"ascii":return K(this,B,q);case"latin1":case"binary":return H(this,B,q);case"base64":return Y(this,B,q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,B,q);default:if(ue)throw new TypeError("Unknown encoding: "+ne);ne=(ne+"").toLowerCase(),ue=!0}}p.prototype._isBuffer=!0;function I(ne,B,q){var ue=ne[B];ne[B]=ne[q],ne[q]=ue}p.prototype.swap16=function(){var B=this.length;if(B%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var q=0;qq&&(B+=" ... "),""},p.prototype.compare=function(B,q,ue,ve,Ge){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),!p.isBuffer(B))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+o(B));if(q===void 0&&(q=0),ue===void 0&&(ue=B?B.length:0),ve===void 0&&(ve=0),Ge===void 0&&(Ge=this.length),q<0||ue>B.length||ve<0||Ge>this.length)throw new RangeError("out of range index");if(ve>=Ge&&q>=ue)return 0;if(ve>=Ge)return-1;if(q>=ue)return 1;if(q>>>=0,ue>>>=0,ve>>>=0,Ge>>>=0,this===B)return 0;for(var Je=Ge-ve,xe=ue-q,ke=Math.min(Je,xe),Pe=this.slice(ve,Ge),Be=B.slice(q,ue),Te=0;Te2147483647?q=2147483647:q<-2147483648&&(q=-2147483648),q=+q,be(q)&&(q=ve?0:ne.length-1),q<0&&(q=ne.length+q),q>=ne.length){if(ve)return-1;q=ne.length-1}else if(q<0)if(ve)q=0;else return-1;if(typeof B=="string"&&(B=p.from(B,ue)),p.isBuffer(B))return B.length===0?-1:C(ne,B,q,ue,ve);if(typeof B=="number")return B=B&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(ne,B,q):Uint8Array.prototype.lastIndexOf.call(ne,B,q):C(ne,[B],q,ue,ve);throw new TypeError("val must be string, number or Buffer")}function C(ne,B,q,ue,ve){var Ge=1,Je=ne.length,xe=B.length;if(ue!==void 0&&(ue=String(ue).toLowerCase(),ue==="ucs2"||ue==="ucs-2"||ue==="utf16le"||ue==="utf-16le")){if(ne.length<2||B.length<2)return-1;Ge=2,Je/=2,xe/=2,q/=2}function ke(Se,De){return Ge===1?Se[De]:Se.readUInt16BE(De*Ge)}var Pe;if(ve){var Be=-1;for(Pe=q;PeJe&&(q=Je-xe),Pe=q;Pe>=0;Pe--){for(var Te=!0,we=0;weve&&(ue=ve)):ue=ve;var Ge=B.length;ue>Ge/2&&(ue=Ge/2);for(var Je=0;Je>>0,isFinite(ue)?(ue=ue>>>0,ve===void 0&&(ve="utf8")):(ve=ue,ue=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Ge=this.length-q;if((ue===void 0||ue>Ge)&&(ue=Ge),B.length>0&&(ue<0||q<0)||q>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var Je=!1;;)switch(ve){case"hex":return x(this,B,q,ue);case"utf8":case"utf-8":return R(this,B,q,ue);case"ascii":return g(this,B,q,ue);case"latin1":case"binary":return S(this,B,q,ue);case"base64":return L(this,B,q,ue);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,B,q,ue);default:if(Je)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),Je=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Y(ne,B,q){return B===0&&q===ne.length?r.fromByteArray(ne):r.fromByteArray(ne.slice(B,q))}function T(ne,B,q){q=Math.min(ne.length,q);for(var ue=[],ve=B;ve239?4:Ge>223?3:Ge>191?2:1;if(ve+xe<=q){var ke,Pe,Be,Te;switch(xe){case 1:Ge<128&&(Je=Ge);break;case 2:ke=ne[ve+1],(ke&192)===128&&(Te=(Ge&31)<<6|ke&63,Te>127&&(Je=Te));break;case 3:ke=ne[ve+1],Pe=ne[ve+2],(ke&192)===128&&(Pe&192)===128&&(Te=(Ge&15)<<12|(ke&63)<<6|Pe&63,Te>2047&&(Te<55296||Te>57343)&&(Je=Te));break;case 4:ke=ne[ve+1],Pe=ne[ve+2],Be=ne[ve+3],(ke&192)===128&&(Pe&192)===128&&(Be&192)===128&&(Te=(Ge&15)<<18|(ke&63)<<12|(Pe&63)<<6|Be&63,Te>65535&&Te<1114112&&(Je=Te))}}Je===null?(Je=65533,xe=1):Je>65535&&(Je-=65536,ue.push(Je>>>10&1023|55296),Je=56320|Je&1023),ue.push(Je),ve+=xe}return U(ue)}var J=4096;function U(ne){var B=ne.length;if(B<=J)return String.fromCharCode.apply(String,ne);for(var q="",ue=0;ueue)&&(q=ue);for(var ve="",Ge=B;Geue&&(B=ue),q<0?(q+=ue,q<0&&(q=0)):q>ue&&(q=ue),qq)throw new RangeError("Trying to access beyond buffer length")}p.prototype.readUIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B+--q],Ge=1;q>0&&(Ge*=256);)ve+=this[B+--q]*Ge;return ve},p.prototype.readUInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]},p.prototype.readUInt16LE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]|this[B+1]<<8},p.prototype.readUInt16BE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]<<8|this[B+1]},p.prototype.readUInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),(this[B]|this[B+1]<<8|this[B+2]<<16)+this[B+3]*16777216},p.prototype.readUInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]*16777216+(this[B+1]<<16|this[B+2]<<8|this[B+3])},p.prototype.readIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je=Ge&&(ve-=Math.pow(2,8*q)),ve},p.prototype.readIntBE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=q,Ge=1,Je=this[B+--ve];ve>0&&(Ge*=256);)Je+=this[B+--ve]*Ge;return Ge*=128,Je>=Ge&&(Je-=Math.pow(2,8*q)),Je},p.prototype.readInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]&128?(255-this[B]+1)*-1:this[B]},p.prototype.readInt16LE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B]|this[B+1]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt16BE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B+1]|this[B]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]|this[B+1]<<8|this[B+2]<<16|this[B+3]<<24},p.prototype.readInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]<<24|this[B+1]<<16|this[B+2]<<8|this[B+3]},p.prototype.readFloatLE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!0,23,4)},p.prototype.readFloatBE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!1,23,4)},p.prototype.readDoubleLE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!0,52,8)},p.prototype.readDoubleBE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!1,52,8)};function Q(ne,B,q,ue,ve,Ge){if(!p.isBuffer(ne))throw new TypeError('"buffer" argument must be a Buffer instance');if(B>ve||Bne.length)throw new RangeError("Index out of range")}p.prototype.writeUIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=1,xe=0;for(this[q]=B&255;++xe>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=ue-1,xe=1;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)this[q+Je]=B/xe&255;return q+ue},p.prototype.writeUInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,255,0),this[q]=B&255,q+1},p.prototype.writeUInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeUInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeUInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q+3]=B>>>24,this[q+2]=B>>>16,this[q+1]=B>>>8,this[q]=B&255,q+4},p.prototype.writeUInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4},p.prototype.writeIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=0,xe=1,ke=0;for(this[q]=B&255;++Je>0)-ke&255;return q+ue},p.prototype.writeIntBE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=ue-1,xe=1,ke=0;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)B<0&&ke===0&&this[q+Je+1]!==0&&(ke=1),this[q+Je]=(B/xe>>0)-ke&255;return q+ue},p.prototype.writeInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,127,-128),B<0&&(B=255+B+1),this[q]=B&255,q+1},p.prototype.writeInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),this[q]=B&255,this[q+1]=B>>>8,this[q+2]=B>>>16,this[q+3]=B>>>24,q+4},p.prototype.writeInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),B<0&&(B=4294967295+B+1),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4};function oe(ne,B,q,ue,ve,Ge){if(q+ue>ne.length)throw new RangeError("Index out of range");if(q<0)throw new RangeError("Index out of range")}function se(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,4),f.write(ne,B,q,ue,23,4),q+4}p.prototype.writeFloatLE=function(B,q,ue){return se(this,B,q,!0,ue)},p.prototype.writeFloatBE=function(B,q,ue){return se(this,B,q,!1,ue)};function he(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,8),f.write(ne,B,q,ue,52,8),q+8}p.prototype.writeDoubleLE=function(B,q,ue){return he(this,B,q,!0,ue)},p.prototype.writeDoubleBE=function(B,q,ue){return he(this,B,q,!1,ue)},p.prototype.copy=function(B,q,ue,ve){if(!p.isBuffer(B))throw new TypeError("argument should be a Buffer");if(ue||(ue=0),!ve&&ve!==0&&(ve=this.length),q>=B.length&&(q=B.length),q||(q=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),B.length-q=0;--Je)B[Je+q]=this[Je+ue];else Uint8Array.prototype.set.call(B,this.subarray(ue,ve),q);return Ge},p.prototype.fill=function(B,q,ue,ve){if(typeof B=="string"){if(typeof q=="string"?(ve=q,q=0,ue=this.length):typeof ue=="string"&&(ve=ue,ue=this.length),ve!==void 0&&typeof ve!="string")throw new TypeError("encoding must be a string");if(typeof ve=="string"&&!p.isEncoding(ve))throw new TypeError("Unknown encoding: "+ve);if(B.length===1){var Ge=B.charCodeAt(0);(ve==="utf8"&&Ge<128||ve==="latin1")&&(B=Ge)}}else typeof B=="number"&&(B=B&255);if(q<0||this.length>>0,ue=ue===void 0?this.length:ue>>>0,B||(B=0);var Je;if(typeof B=="number")for(Je=q;Je55295&&q<57344){if(!ve){if(q>56319){(B-=3)>-1&&Ge.push(239,191,189);continue}else if(Je+1===ue){(B-=3)>-1&&Ge.push(239,191,189);continue}ve=q;continue}if(q<56320){(B-=3)>-1&&Ge.push(239,191,189),ve=q;continue}q=(ve-55296<<10|q-56320)+65536}else ve&&(B-=3)>-1&&Ge.push(239,191,189);if(ve=null,q<128){if((B-=1)<0)break;Ge.push(q)}else if(q<2048){if((B-=2)<0)break;Ge.push(q>>6|192,q&63|128)}else if(q<65536){if((B-=3)<0)break;Ge.push(q>>12|224,q>>6&63|128,q&63|128)}else if(q<1114112){if((B-=4)<0)break;Ge.push(q>>18|240,q>>12&63|128,q>>6&63|128,q&63|128)}else throw new Error("Invalid code point")}return Ge}function $(ne){for(var B=[],q=0;q>8,ve=q%256,Ge.push(ve),Ge.push(ue);return Ge}function le(ne){return r.toByteArray(re(ne))}function ee(ne,B,q,ue){for(var ve=0;ve=B.length||ve>=ne.length);++ve)B[ve+q]=ne[ve];return ve}function te(ne,B){return ne instanceof B||ne!=null&&ne.constructor!=null&&ne.constructor.name!=null&&ne.constructor.name===B.name}function be(ne){return ne!==ne}}).call(this,t("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(t,i,a){(function(l){i.exports=function(r,f){for(var v=Math.min(r.length,f.length),b=new l(v),Z=0;Zm;)if(N=y[m++],N!=N)return!0}else for(;X>m;m++)if((v||m in y)&&y[m]===Z)return v||m||0;return!v&&-1}};i.exports={includes:f(!0),indexOf:f(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(t,i,a){var l=t("../internals/function-bind-context"),o=t("../internals/indexed-object"),r=t("../internals/to-object"),f=t("../internals/to-length"),v=t("../internals/array-species-create"),b=[].push,Z=function(p){var y=p==1,X=p==2,m=p==3,N=p==4,G=p==6,d=p==5||G;return function(u,s,h,c){for(var W=r(u),M=o(W),I=l(s,h,3),w=f(M.length),C=0,x=c||v,R=y?x(u,w):X?x(u,0):void 0,g,S;w>C;C++)if((d||C in M)&&(g=M[C],S=I(g,C,W),p)){if(y)R[C]=S;else if(S)switch(p){case 3:return!0;case 5:return g;case 6:return C;case 2:b.call(R,g)}else if(N)return!1}return G?-1:m||N?N:R}};i.exports={forEach:Z(0),map:Z(1),filter:Z(2),some:Z(3),every:Z(4),find:Z(5),findIndex:Z(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/has"),f=Object.defineProperty,v={},b=function(Z){throw Z};i.exports=function(Z,p){if(r(v,Z))return v[Z];p||(p={});var y=[][Z],X=r(p,"ACCESSORS")?p.ACCESSORS:!1,m=r(p,0)?p[0]:b,N=r(p,1)?p[1]:void 0;return v[Z]=!!y&&!o(function(){if(X&&!l)return!0;var G={length:-1};X?f(G,1,{enumerable:!0,get:b}):G[1]=1,y.call(G,m,N)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(t,i,a){var l=t("../internals/is-object"),o=t("../internals/is-array"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z;return o(v)&&(Z=v.constructor,typeof Z=="function"&&(Z===Array||o(Z.prototype))?Z=void 0:l(Z)&&(Z=Z[f],Z===null&&(Z=void 0))),new(Z===void 0?Array:Z)(b===0?0:b)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(t,i,a){var l=t("../internals/an-object");i.exports=function(o,r,f,v){try{return v?r(l(f)[0],f[1]):r(f)}catch(Z){var b=o.return;throw b!==void 0&&l(b.call(o)),Z}}},{"../internals/an-object":223}],229:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=l("iterator"),r=!1;try{var f=0,v={next:function(){return{done:!!f++}},return:function(){r=!0}};v[o]=function(){return this},Array.from(v,function(){throw 2})}catch{}i.exports=function(b,Z){if(!Z&&!r)return!1;var p=!1;try{var y={};y[o]=function(){return{next:function(){return{done:p=!0}}}},b(y)}catch{}return p}},{"../internals/well-known-symbol":314}],230:[function(t,i,a){var l={}.toString;i.exports=function(o){return l.call(o).slice(8,-1)}},{}],231:[function(t,i,a){var l=t("../internals/to-string-tag-support"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("toStringTag"),v=o(function(){return arguments}())=="Arguments",b=function(Z,p){try{return Z[p]}catch{}};i.exports=l?o:function(Z){var p,y,X;return Z===void 0?"Undefined":Z===null?"Null":typeof(y=b(p=Object(Z),f))=="string"?y:v?o(p):(X=o(p))=="Object"&&typeof p.callee=="function"?"Arguments":X}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/own-keys"),r=t("../internals/object-get-own-property-descriptor"),f=t("../internals/object-define-property");i.exports=function(v,b){for(var Z=o(b),p=f.f,y=r.f,X=0;X=74)&&(b=o.match(/Chrome\/(\d+)/),b&&(Z=b[1]))),i.exports=Z&&+Z},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(t,i,a){i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/create-non-enumerable-property"),f=t("../internals/redefine"),v=t("../internals/set-global"),b=t("../internals/copy-constructor-properties"),Z=t("../internals/is-forced");i.exports=function(p,y){var X=p.target,m=p.global,N=p.stat,G,d,u,s,h,c;if(m?d=l:N?d=l[X]||v(X,{}):d=(l[X]||{}).prototype,d)for(u in y){if(h=y[u],p.noTargetGet?(c=o(d,u),s=c&&c.value):s=d[u],G=Z(m?u:X+(N?".":"#")+u,p.forced),!G&&s!==void 0){if(typeof h==typeof s)continue;b(h,s)}(p.sham||s&&s.sham)&&r(h,"sham",!0),f(d,u,h,p)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(t,i,a){i.exports=function(l){try{return!!l()}catch{return!0}}},{}],248:[function(t,i,a){var l=t("../internals/a-function");i.exports=function(o,r,f){if(l(o),r===void 0)return o;switch(f){case 0:return function(){return o.call(r)};case 1:return function(v){return o.call(r,v)};case 2:return function(v,b){return o.call(r,v,b)};case 3:return function(v,b,Z){return o.call(r,v,b,Z)}}return function(){return o.apply(r,arguments)}}},{"../internals/a-function":219}],249:[function(t,i,a){var l=t("../internals/path"),o=t("../internals/global"),r=function(f){return typeof f=="function"?f:void 0};i.exports=function(f,v){return arguments.length<2?r(l[f])||r(o[f]):l[f]&&l[f][v]||o[f]&&o[f][v]}},{"../internals/global":251,"../internals/path":290}],250:[function(t,i,a){var l=t("../internals/classof"),o=t("../internals/iterators"),r=t("../internals/well-known-symbol"),f=r("iterator");i.exports=function(v){if(v!=null)return v[f]||v["@@iterator"]||o[l(v)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(t,i,a){(function(l){var o=function(r){return r&&r.Math==Math&&r};i.exports=o(typeof globalThis=="object"&&globalThis)||o(typeof window=="object"&&window)||o(typeof self=="object"&&self)||o(typeof l=="object"&&l)||Function("return this")()}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(t,i,a){var l={}.hasOwnProperty;i.exports=function(o,r){return l.call(o,r)}},{}],253:[function(t,i,a){i.exports={}},{}],254:[function(t,i,a){var l=t("../internals/global");i.exports=function(o,r){var f=l.console;f&&f.error&&(arguments.length===1?f.error(o):f.error(o,r))}},{"../internals/global":251}],255:[function(t,i,a){var l=t("../internals/get-built-in");i.exports=l("document","documentElement")},{"../internals/get-built-in":249}],256:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/document-create-element");i.exports=!l&&!o(function(){return Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(t,i,a){var l=t("../internals/fails"),o=t("../internals/classof-raw"),r="".split;i.exports=l(function(){return!Object("z").propertyIsEnumerable(0)})?function(f){return o(f)=="String"?r.call(f,""):Object(f)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(t,i,a){var l=t("../internals/shared-store"),o=Function.toString;typeof l.inspectSource!="function"&&(l.inspectSource=function(r){return o.call(r)}),i.exports=l.inspectSource},{"../internals/shared-store":300}],259:[function(t,i,a){var l=t("../internals/native-weak-map"),o=t("../internals/global"),r=t("../internals/is-object"),f=t("../internals/create-non-enumerable-property"),v=t("../internals/has"),b=t("../internals/shared-key"),Z=t("../internals/hidden-keys"),p=o.WeakMap,y,X,m,N=function(W){return m(W)?X(W):y(W,{})},G=function(W){return function(M){var I;if(!r(M)||(I=X(M)).type!==W)throw TypeError("Incompatible receiver, "+W+" required");return I}};if(l){var d=new p,u=d.get,s=d.has,h=d.set;y=function(W,M){return h.call(d,W,M),M},X=function(W){return u.call(d,W)||{}},m=function(W){return s.call(d,W)}}else{var c=b("state");Z[c]=!0,y=function(W,M){return f(W,c,M),M},X=function(W){return v(W,c)?W[c]:{}},m=function(W){return v(W,c)}}i.exports={set:y,get:X,has:m,enforce:N,getterFor:G}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=t("../internals/iterators"),r=l("iterator"),f=Array.prototype;i.exports=function(v){return v!==void 0&&(o.Array===v||f[r]===v)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(t,i,a){var l=t("../internals/classof-raw");i.exports=Array.isArray||function(r){return l(r)=="Array"}},{"../internals/classof-raw":230}],262:[function(t,i,a){var l=t("../internals/fails"),o=/#|\.prototype\./,r=function(p,y){var X=v[f(p)];return X==Z?!0:X==b?!1:typeof y=="function"?l(y):!!y},f=r.normalize=function(p){return String(p).replace(o,".").toLowerCase()},v=r.data={},b=r.NATIVE="N",Z=r.POLYFILL="P";i.exports=r},{"../internals/fails":247}],263:[function(t,i,a){i.exports=function(l){return typeof l=="object"?l!==null:typeof l=="function"}},{}],264:[function(t,i,a){i.exports=!1},{}],265:[function(t,i,a){var l=t("../internals/is-object"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("match");i.exports=function(v){var b;return l(v)&&((b=v[f])!==void 0?!!b:o(v)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/is-array-iterator-method"),r=t("../internals/to-length"),f=t("../internals/function-bind-context"),v=t("../internals/get-iterator-method"),b=t("../internals/call-with-safe-iteration-closing"),Z=function(y,X){this.stopped=y,this.result=X},p=i.exports=function(y,X,m,N,G){var d=f(X,m,N?2:1),u,s,h,c,W,M,I;if(G)u=y;else{if(s=v(y),typeof s!="function")throw TypeError("Target is not iterable");if(o(s)){for(h=0,c=r(y.length);c>h;h++)if(W=N?d(l(I=y[h])[0],I[1]):d(y[h]),W&&W instanceof Z)return W;return new Z(!1)}u=s.call(y)}for(M=u.next;!(I=M.call(u)).done;)if(W=b(u,d,I.value,N),typeof W=="object"&&W&&W instanceof Z)return W;return new Z(!1)};p.stop=function(y){return new Z(!0,y)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(t,i,a){var l=t("../internals/object-get-prototype-of"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/well-known-symbol"),v=t("../internals/is-pure"),b=f("iterator"),Z=!1,p=function(){return this},y,X,m;[].keys&&(m=[].keys(),"next"in m?(X=l(l(m)),X!==Object.prototype&&(y=X)):Z=!0),y==null&&(y={}),!v&&!r(y,b)&&o(y,b,p),i.exports={IteratorPrototype:y,BUGGY_SAFARI_ITERATORS:Z}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(t,i,a){arguments[4][253][0].apply(a,arguments)},{dup:253}],269:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/classof-raw"),f=t("../internals/task").set,v=t("../internals/engine-is-ios"),b=l.MutationObserver||l.WebKitMutationObserver,Z=l.process,p=l.Promise,y=r(Z)=="process",X=o(l,"queueMicrotask"),m=X&&X.value,N,G,d,u,s,h,c,W;m||(N=function(){var M,I;for(y&&(M=Z.domain)&&M.exit();G;){I=G.fn,G=G.next;try{I()}catch(w){throw G?u():d=void 0,w}}d=void 0,M&&M.enter()},y?u=function(){Z.nextTick(N)}:b&&!v?(s=!0,h=document.createTextNode(""),new b(N).observe(h,{characterData:!0}),u=function(){h.data=s=!s}):p&&p.resolve?(c=p.resolve(void 0),W=c.then,u=function(){W.call(c,N)}):u=function(){f.call(l,N)}),i.exports=m||function(M){var I={fn:M,next:void 0};d&&(d.next=I),G||(G=I,u()),d=I}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(t,i,a){var l=t("../internals/global");i.exports=l.Promise},{"../internals/global":251}],271:[function(t,i,a){var l=t("../internals/fails");i.exports=!!Object.getOwnPropertySymbols&&!l(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/inspect-source"),r=l.WeakMap;i.exports=typeof r=="function"&&/native code/.test(o(r))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(t,i,a){var l=t("../internals/a-function"),o=function(r){var f,v;this.promise=new r(function(b,Z){if(f!==void 0||v!==void 0)throw TypeError("Bad Promise constructor");f=b,v=Z}),this.resolve=l(f),this.reject=l(v)};i.exports.f=function(r){return new o(r)}},{"../internals/a-function":219}],274:[function(t,i,a){var l=t("../internals/is-regexp");i.exports=function(o){if(l(o))throw TypeError("The method doesn't accept regular expressions");return o}},{"../internals/is-regexp":265}],275:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/object-keys"),f=t("../internals/object-get-own-property-symbols"),v=t("../internals/object-property-is-enumerable"),b=t("../internals/to-object"),Z=t("../internals/indexed-object"),p=Object.assign,y=Object.defineProperty;i.exports=!p||o(function(){if(l&&p({b:1},p(y({},"a",{enumerable:!0,get:function(){y(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var X={},m={},N=Symbol(),G="abcdefghijklmnopqrst";return X[N]=7,G.split("").forEach(function(d){m[d]=d}),p({},X)[N]!=7||r(p({},m)).join("")!=G})?function(m,N){for(var G=b(m),d=arguments.length,u=1,s=f.f,h=v.f;d>u;)for(var c=Z(arguments[u++]),W=s?r(c).concat(s(c)):r(c),M=W.length,I=0,w;M>I;)w=W[I++],(!l||h.call(c,w))&&(G[w]=c[w]);return G}:p},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/object-define-properties"),r=t("../internals/enum-bug-keys"),f=t("../internals/hidden-keys"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/shared-key"),p=">",y="<",X="prototype",m="script",N=Z("IE_PROTO"),G=function(){},d=function(W){return y+m+p+W+y+"/"+m+p},u=function(W){W.write(d("")),W.close();var M=W.parentWindow.Object;return W=null,M},s=function(){var W=b("iframe"),M="java"+m+":",I;return W.style.display="none",v.appendChild(W),W.src=String(M),I=W.contentWindow.document,I.open(),I.write(d("document.F=Object")),I.close(),I.F},h,c=function(){try{h=document.domain&&new ActiveXObject("htmlfile")}catch{}c=h?u(h):s();for(var W=r.length;W--;)delete c[X][r[W]];return c()};f[N]=!0,i.exports=Object.create||function(M,I){var w;return M!==null?(G[X]=l(M),w=new G,G[X]=null,w[N]=M):w=c(),I===void 0?w:o(w,I)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-define-property"),r=t("../internals/an-object"),f=t("../internals/object-keys");i.exports=l?Object.defineProperties:function(b,Z){r(b);for(var p=f(Z),y=p.length,X=0,m;y>X;)o.f(b,m=p[X++],Z[m]);return b}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/ie8-dom-define"),r=t("../internals/an-object"),f=t("../internals/to-primitive"),v=Object.defineProperty;a.f=l?v:function(Z,p,y){if(r(Z),p=f(p,!0),r(y),o)try{return v(Z,p,y)}catch{}if("get"in y||"set"in y)throw TypeError("Accessors not supported");return"value"in y&&(Z[p]=y.value),Z}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-property-is-enumerable"),r=t("../internals/create-property-descriptor"),f=t("../internals/to-indexed-object"),v=t("../internals/to-primitive"),b=t("../internals/has"),Z=t("../internals/ie8-dom-define"),p=Object.getOwnPropertyDescriptor;a.f=l?p:function(X,m){if(X=f(X),m=v(m,!0),Z)try{return p(X,m)}catch{}if(b(X,m))return r(!o.f.call(X,m),X[m])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(t,i,a){var l=t("../internals/to-indexed-object"),o=t("../internals/object-get-own-property-names").f,r={}.toString,f=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],v=function(b){try{return o(b)}catch{return f.slice()}};i.exports.f=function(Z){return f&&r.call(Z)=="[object Window]"?v(Z):o(l(Z))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(t,i,a){var l=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys"),r=o.concat("length","prototype");a.f=Object.getOwnPropertyNames||function(v){return l(v,r)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(t,i,a){a.f=Object.getOwnPropertySymbols},{}],283:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/to-object"),r=t("../internals/shared-key"),f=t("../internals/correct-prototype-getter"),v=r("IE_PROTO"),b=Object.prototype;i.exports=f?Object.getPrototypeOf:function(Z){return Z=o(Z),l(Z,v)?Z[v]:typeof Z.constructor=="function"&&Z instanceof Z.constructor?Z.constructor.prototype:Z instanceof Object?b:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/to-indexed-object"),r=t("../internals/array-includes").indexOf,f=t("../internals/hidden-keys");i.exports=function(v,b){var Z=o(v),p=0,y=[],X;for(X in Z)!l(f,X)&&l(Z,X)&&y.push(X);for(;b.length>p;)l(Z,X=b[p++])&&(~r(y,X)||y.push(X));return y}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(t,i,a){var l=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys");i.exports=Object.keys||function(f){return l(f,o)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(t,i,a){var l={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!l.call({1:2},1);a.f=r?function(v){var b=o(this,v);return!!b&&b.enumerable}:l},{}],287:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/a-possible-prototype");i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,f={},v;try{v=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,v.call(f,[]),r=f instanceof Array}catch{}return function(Z,p){return l(Z),o(p),r?v.call(Z,p):Z.__proto__=p,Z}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-keys"),r=t("../internals/to-indexed-object"),f=t("../internals/object-property-is-enumerable").f,v=function(b){return function(Z){for(var p=r(Z),y=o(p),X=y.length,m=0,N=[],G;X>m;)G=y[m++],(!l||f.call(p,G))&&N.push(b?[G,p[G]]:p[G]);return N}};i.exports={entries:v(!0),values:v(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(t,i,a){var l=t("../internals/get-built-in"),o=t("../internals/object-get-own-property-names"),r=t("../internals/object-get-own-property-symbols"),f=t("../internals/an-object");i.exports=l("Reflect","ownKeys")||function(b){var Z=o.f(f(b)),p=r.f;return p?Z.concat(p(b)):Z}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(t,i,a){var l=t("../internals/global");i.exports=l},{"../internals/global":251}],291:[function(t,i,a){i.exports=function(l){try{return{error:!1,value:l()}}catch(o){return{error:!0,value:o}}}},{}],292:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/is-object"),r=t("../internals/new-promise-capability");i.exports=function(f,v){if(l(f),o(v)&&v.constructor===f)return v;var b=r.f(f),Z=b.resolve;return Z(v),b.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(t,i,a){var l=t("../internals/redefine");i.exports=function(o,r,f){for(var v in r)l(o,v,r[v],f);return o}},{"../internals/redefine":294}],294:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/set-global"),v=t("../internals/inspect-source"),b=t("../internals/internal-state"),Z=b.get,p=b.enforce,y=String(String).split("String");(i.exports=function(X,m,N,G){var d=G?!!G.unsafe:!1,u=G?!!G.enumerable:!1,s=G?!!G.noTargetGet:!1;if(typeof N=="function"&&(typeof m=="string"&&!r(N,"name")&&o(N,"name",m),p(N).source=y.join(typeof m=="string"?m:"")),X===l){u?X[m]=N:f(m,N);return}else d?!s&&X[m]&&(u=!0):delete X[m];u?X[m]=N:o(X,m,N)})(Function.prototype,"toString",function(){return typeof this=="function"&&Z(this).source||v(this)})},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(t,i,a){i.exports=function(l){if(l==null)throw TypeError("Can't call method on "+l);return l}},{}],296:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/create-non-enumerable-property");i.exports=function(r,f){try{o(l,r,f)}catch{l[r]=f}return f}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(t,i,a){var l=t("../internals/get-built-in"),o=t("../internals/object-define-property"),r=t("../internals/well-known-symbol"),f=t("../internals/descriptors"),v=r("species");i.exports=function(b){var Z=l(b),p=o.f;f&&Z&&!Z[v]&&p(Z,v,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(t,i,a){var l=t("../internals/object-define-property").f,o=t("../internals/has"),r=t("../internals/well-known-symbol"),f=r("toStringTag");i.exports=function(v,b,Z){v&&!o(v=Z?v:v.prototype,f)&&l(v,f,{configurable:!0,value:b})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(t,i,a){var l=t("../internals/shared"),o=t("../internals/uid"),r=l("keys");i.exports=function(f){return r[f]||(r[f]=o(f))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/set-global"),r="__core-js_shared__",f=l[r]||o(r,{});i.exports=f},{"../internals/global":251,"../internals/set-global":296}],301:[function(t,i,a){var l=t("../internals/is-pure"),o=t("../internals/shared-store");(i.exports=function(r,f){return o[r]||(o[r]=f!==void 0?f:{})})("versions",[]).push({version:"3.6.5",mode:l?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/a-function"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z=l(v).constructor,p;return Z===void 0||(p=l(Z)[f])==null?b:o(p)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/fails"),r=t("../internals/classof-raw"),f=t("../internals/function-bind-context"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/engine-is-ios"),p=l.location,y=l.setImmediate,X=l.clearImmediate,m=l.process,N=l.MessageChannel,G=l.Dispatch,d=0,u={},s="onreadystatechange",h,c,W,M=function(x){if(u.hasOwnProperty(x)){var R=u[x];delete u[x],R()}},I=function(x){return function(){M(x)}},w=function(x){M(x.data)},C=function(x){l.postMessage(x+"",p.protocol+"//"+p.host)};(!y||!X)&&(y=function(R){for(var g=[],S=1;arguments.length>S;)g.push(arguments[S++]);return u[++d]=function(){(typeof R=="function"?R:Function(R)).apply(void 0,g)},h(d),d},X=function(R){delete u[R]},r(m)=="process"?h=function(x){m.nextTick(I(x))}:G&&G.now?h=function(x){G.now(I(x))}:N&&!Z?(c=new N,W=c.port2,c.port1.onmessage=w,h=f(W.postMessage,W,1)):l.addEventListener&&typeof postMessage=="function"&&!l.importScripts&&!o(C)&&p.protocol!=="file:"?(h=C,l.addEventListener("message",w,!1)):s in b("script")?h=function(x){v.appendChild(b("script"))[s]=function(){v.removeChild(this),M(x)}}:h=function(x){setTimeout(I(x),0)}),i.exports={set:y,clear:X}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(t,i,a){var l=t("../internals/to-integer"),o=Math.max,r=Math.min;i.exports=function(f,v){var b=l(f);return b<0?o(b+v,0):r(b,v)}},{"../internals/to-integer":306}],305:[function(t,i,a){var l=t("../internals/indexed-object"),o=t("../internals/require-object-coercible");i.exports=function(r){return l(o(r))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(t,i,a){var l=Math.ceil,o=Math.floor;i.exports=function(r){return isNaN(r=+r)?0:(r>0?o:l)(r)}},{}],307:[function(t,i,a){var l=t("../internals/to-integer"),o=Math.min;i.exports=function(r){return r>0?o(l(r),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(t,i,a){var l=t("../internals/require-object-coercible");i.exports=function(o){return Object(l(o))}},{"../internals/require-object-coercible":295}],309:[function(t,i,a){var l=t("../internals/is-object");i.exports=function(o,r){if(!l(o))return o;var f,v;if(r&&typeof(f=o.toString)=="function"&&!l(v=f.call(o))||typeof(f=o.valueOf)=="function"&&!l(v=f.call(o))||!r&&typeof(f=o.toString)=="function"&&!l(v=f.call(o)))return v;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=l("toStringTag"),r={};r[o]="z",i.exports=String(r)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(t,i,a){var l=0,o=Math.random();i.exports=function(r){return"Symbol("+String(r===void 0?"":r)+")_"+(++l+o).toString(36)}},{}],312:[function(t,i,a){var l=t("../internals/native-symbol");i.exports=l&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(t,i,a){var l=t("../internals/well-known-symbol");a.f=l},{"../internals/well-known-symbol":314}],314:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/shared"),r=t("../internals/has"),f=t("../internals/uid"),v=t("../internals/native-symbol"),b=t("../internals/use-symbol-as-uid"),Z=o("wks"),p=l.Symbol,y=b?p:p&&p.withoutSetter||f;i.exports=function(X){return r(Z,X)||(v&&r(p,X)?Z[X]=p[X]:Z[X]=y("Symbol."+X)),Z[X]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-iteration").findIndex,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="findIndex",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),l({target:"Array",proto:!0,forced:b||!Z},{findIndex:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-iteration").find,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="find",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),l({target:"Array",proto:!0,forced:b||!Z},{find:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-includes").includes,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v=f("indexOf",{ACCESSORS:!0,1:0});l({target:"Array",proto:!0,forced:!v},{includes:function(Z){return o(this,Z,arguments.length>1?arguments[1]:void 0)}}),r("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(t,i,a){var l=t("../internals/to-indexed-object"),o=t("../internals/add-to-unscopables"),r=t("../internals/iterators"),f=t("../internals/internal-state"),v=t("../internals/define-iterator"),b="Array Iterator",Z=f.set,p=f.getterFor(b);i.exports=v(Array,"Array",function(y,X){Z(this,{type:b,target:l(y),index:0,kind:X})},function(){var y=p(this),X=y.target,m=y.kind,N=y.index++;return!X||N>=X.length?(y.target=void 0,{value:void 0,done:!0}):m=="keys"?{value:N,done:!1}:m=="values"?{value:X[N],done:!1}:{value:[N,X[N]],done:!1}},"values"),r.Arguments=r.Array,o("keys"),o("values"),o("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(t,i,a){var l=t("../internals/export");l({target:"Number",stat:!0},{isNaN:function(r){return r!=r}})},{"../internals/export":246}],320:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/object-assign");l({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/to-object"),r=t("../internals/object-keys"),f=t("../internals/fails"),v=f(function(){r(1)});l({target:"Object",stat:!0,forced:v},{keys:function(Z){return r(o(Z))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/object-to-array").values;l({target:"Object",stat:!0},{values:function(f){return o(f)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/is-pure"),r=t("../internals/global"),f=t("../internals/get-built-in"),v=t("../internals/native-promise-constructor"),b=t("../internals/redefine"),Z=t("../internals/redefine-all"),p=t("../internals/set-to-string-tag"),y=t("../internals/set-species"),X=t("../internals/is-object"),m=t("../internals/a-function"),N=t("../internals/an-instance"),G=t("../internals/classof-raw"),d=t("../internals/inspect-source"),u=t("../internals/iterate"),s=t("../internals/check-correctness-of-iteration"),h=t("../internals/species-constructor"),c=t("../internals/task").set,W=t("../internals/microtask"),M=t("../internals/promise-resolve"),I=t("../internals/host-report-errors"),w=t("../internals/new-promise-capability"),C=t("../internals/perform"),x=t("../internals/internal-state"),R=t("../internals/is-forced"),g=t("../internals/well-known-symbol"),S=t("../internals/engine-v8-version"),L=g("species"),V="Promise",Y=x.get,T=x.set,J=x.getterFor(V),U=v,K=r.TypeError,H=r.document,k=r.process,F=f("fetch"),O=w.f,Q=O,oe=G(k)=="process",se=!!(H&&H.createEvent&&r.dispatchEvent),he="unhandledrejection",pe="rejectionhandled",re=0,_=1,E=2,$=1,ae=2,le,ee,te,be,ne=R(V,function(){var Te=d(U)!==String(U);if(!Te&&(S===66||!oe&&typeof PromiseRejectionEvent!="function")||o&&!U.prototype.finally)return!0;if(S>=51&&/native code/.test(U))return!1;var we=U.resolve(1),Se=function(me){me(function(){},function(){})},De=we.constructor={};return De[L]=Se,!(we.then(function(){})instanceof Se)}),B=ne||!s(function(Te){U.all(Te).catch(function(){})}),q=function(Te){var we;return X(Te)&&typeof(we=Te.then)=="function"?we:!1},ue=function(Te,we,Se){if(!we.notified){we.notified=!0;var De=we.reactions;W(function(){for(var me=we.value,Ve=we.state==_,Me=0;De.length>Me;){var Ie=De[Me++],Ze=Ve?Ie.ok:Ie.fail,Ce=Ie.resolve,ye=Ie.reject,Ue=Ie.domain,qe,ie,Oe;try{Ze?(Ve||(we.rejection===ae&&xe(Te,we),we.rejection=$),Ze===!0?qe=me:(Ue&&Ue.enter(),qe=Ze(me),Ue&&(Ue.exit(),Oe=!0)),qe===Ie.promise?ye(K("Promise-chain cycle")):(ie=q(qe))?ie.call(qe,Ce,ye):Ce(qe)):ye(me)}catch(Ke){Ue&&!Oe&&Ue.exit(),ye(Ke)}}we.reactions=[],we.notified=!1,Se&&!we.rejection&&Ge(Te,we)})}},ve=function(Te,we,Se){var De,me;se?(De=H.createEvent("Event"),De.promise=we,De.reason=Se,De.initEvent(Te,!1,!0),r.dispatchEvent(De)):De={promise:we,reason:Se},(me=r["on"+Te])?me(De):Te===he&&I("Unhandled promise rejection",Se)},Ge=function(Te,we){c.call(r,function(){var Se=we.value,De=Je(we),me;if(De&&(me=C(function(){oe?k.emit("unhandledRejection",Se,Te):ve(he,Te,Se)}),we.rejection=oe||Je(we)?ae:$,me.error))throw me.value})},Je=function(Te){return Te.rejection!==$&&!Te.parent},xe=function(Te,we){c.call(r,function(){oe?k.emit("rejectionHandled",Te):ve(pe,Te,we.value)})},ke=function(Te,we,Se,De){return function(me){Te(we,Se,me,De)}},Pe=function(Te,we,Se,De){we.done||(we.done=!0,De&&(we=De),we.value=Se,we.state=E,ue(Te,we,!0))},Be=function(Te,we,Se,De){if(!we.done){we.done=!0,De&&(we=De);try{if(Te===Se)throw K("Promise can't be resolved itself");var me=q(Se);me?W(function(){var Ve={done:!1};try{me.call(Se,ke(Be,Te,Ve,we),ke(Pe,Te,Ve,we))}catch(Me){Pe(Te,Ve,Me,we)}}):(we.value=Se,we.state=_,ue(Te,we,!1))}catch(Ve){Pe(Te,{done:!1},Ve,we)}}};ne&&(U=function(we){N(this,U,V),m(we),le.call(this);var Se=Y(this);try{we(ke(Be,this,Se),ke(Pe,this,Se))}catch(De){Pe(this,Se,De)}},le=function(we){T(this,{type:V,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:re,value:void 0})},le.prototype=Z(U.prototype,{then:function(we,Se){var De=J(this),me=O(h(this,U));return me.ok=typeof we=="function"?we:!0,me.fail=typeof Se=="function"&&Se,me.domain=oe?k.domain:void 0,De.parent=!0,De.reactions.push(me),De.state!=re&&ue(this,De,!1),me.promise},catch:function(Te){return this.then(void 0,Te)}}),ee=function(){var Te=new le,we=Y(Te);this.promise=Te,this.resolve=ke(Be,Te,we),this.reject=ke(Pe,Te,we)},w.f=O=function(Te){return Te===U||Te===te?new ee(Te):Q(Te)},!o&&typeof v=="function"&&(be=v.prototype.then,b(v.prototype,"then",function(we,Se){var De=this;return new U(function(me,Ve){be.call(De,me,Ve)}).then(we,Se)},{unsafe:!0}),typeof F=="function"&&l({global:!0,enumerable:!0,forced:!0},{fetch:function(we){return M(U,F.apply(r,arguments))}}))),l({global:!0,wrap:!0,forced:ne},{Promise:U}),p(U,V,!1,!0),y(V),te=f(V),l({target:V,stat:!0,forced:ne},{reject:function(we){var Se=O(this);return Se.reject.call(void 0,we),Se.promise}}),l({target:V,stat:!0,forced:o||ne},{resolve:function(we){return M(o&&this===te?U:this,we)}}),l({target:V,stat:!0,forced:B},{all:function(we){var Se=this,De=O(Se),me=De.resolve,Ve=De.reject,Me=C(function(){var Ie=m(Se.resolve),Ze=[],Ce=0,ye=1;u(we,function(Ue){var qe=Ce++,ie=!1;Ze.push(void 0),ye++,Ie.call(Se,Ue).then(function(Oe){ie||(ie=!0,Ze[qe]=Oe,--ye||me(Ze))},Ve)}),--ye||me(Ze)});return Me.error&&Ve(Me.value),De.promise},race:function(we){var Se=this,De=O(Se),me=De.reject,Ve=C(function(){var Me=m(Se.resolve);u(we,function(Ie){Me.call(Se,Ie).then(De.resolve,me)})});return Ve.error&&me(Ve.value),De.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/to-absolute-index"),r=String.fromCharCode,f=String.fromCodePoint,v=!!f&&f.length!=1;l({target:"String",stat:!0,forced:v},{fromCodePoint:function(Z){for(var p=[],y=arguments.length,X=0,m;y>X;){if(m=+arguments[X++],o(m,1114111)!==m)throw RangeError(m+" is not a valid code point");p.push(m<65536?r(m):r(((m-=65536)>>10)+55296,m%1024+56320))}return p.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/not-a-regexp"),r=t("../internals/require-object-coercible"),f=t("../internals/correct-is-regexp-logic");l({target:"String",proto:!0,forced:!f("includes")},{includes:function(b){return!!~String(r(this)).indexOf(o(b),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(t,i,a){var l=t("../internals/define-well-known-symbol");l("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/global"),r=t("../internals/get-built-in"),f=t("../internals/is-pure"),v=t("../internals/descriptors"),b=t("../internals/native-symbol"),Z=t("../internals/use-symbol-as-uid"),p=t("../internals/fails"),y=t("../internals/has"),X=t("../internals/is-array"),m=t("../internals/is-object"),N=t("../internals/an-object"),G=t("../internals/to-object"),d=t("../internals/to-indexed-object"),u=t("../internals/to-primitive"),s=t("../internals/create-property-descriptor"),h=t("../internals/object-create"),c=t("../internals/object-keys"),W=t("../internals/object-get-own-property-names"),M=t("../internals/object-get-own-property-names-external"),I=t("../internals/object-get-own-property-symbols"),w=t("../internals/object-get-own-property-descriptor"),C=t("../internals/object-define-property"),x=t("../internals/object-property-is-enumerable"),R=t("../internals/create-non-enumerable-property"),g=t("../internals/redefine"),S=t("../internals/shared"),L=t("../internals/shared-key"),V=t("../internals/hidden-keys"),Y=t("../internals/uid"),T=t("../internals/well-known-symbol"),J=t("../internals/well-known-symbol-wrapped"),U=t("../internals/define-well-known-symbol"),K=t("../internals/set-to-string-tag"),H=t("../internals/internal-state"),k=t("../internals/array-iteration").forEach,F=L("hidden"),O="Symbol",Q="prototype",oe=T("toPrimitive"),se=H.set,he=H.getterFor(O),pe=Object[Q],re=o.Symbol,_=r("JSON","stringify"),E=w.f,$=C.f,ae=M.f,le=x.f,ee=S("symbols"),te=S("op-symbols"),be=S("string-to-symbol-registry"),ne=S("symbol-to-string-registry"),B=S("wks"),q=o.QObject,ue=!q||!q[Q]||!q[Q].findChild,ve=v&&p(function(){return h($({},"a",{get:function(){return $(this,"a",{value:7}).a}})).a!=7})?function(me,Ve,Me){var Ie=E(pe,Ve);Ie&&delete pe[Ve],$(me,Ve,Me),Ie&&me!==pe&&$(pe,Ve,Ie)}:$,Ge=function(me,Ve){var Me=ee[me]=h(re[Q]);return se(Me,{type:O,tag:me,description:Ve}),v||(Me.description=Ve),Me},Je=Z?function(me){return typeof me=="symbol"}:function(me){return Object(me)instanceof re},xe=function(Ve,Me,Ie){Ve===pe&&xe(te,Me,Ie),N(Ve);var Ze=u(Me,!0);return N(Ie),y(ee,Ze)?(Ie.enumerable?(y(Ve,F)&&Ve[F][Ze]&&(Ve[F][Ze]=!1),Ie=h(Ie,{enumerable:s(0,!1)})):(y(Ve,F)||$(Ve,F,s(1,{})),Ve[F][Ze]=!0),ve(Ve,Ze,Ie)):$(Ve,Ze,Ie)},ke=function(Ve,Me){N(Ve);var Ie=d(Me),Ze=c(Ie).concat(Se(Ie));return k(Ze,function(Ce){(!v||Be.call(Ie,Ce))&&xe(Ve,Ce,Ie[Ce])}),Ve},Pe=function(Ve,Me){return Me===void 0?h(Ve):ke(h(Ve),Me)},Be=function(Ve){var Me=u(Ve,!0),Ie=le.call(this,Me);return this===pe&&y(ee,Me)&&!y(te,Me)?!1:Ie||!y(this,Me)||!y(ee,Me)||y(this,F)&&this[F][Me]?Ie:!0},Te=function(Ve,Me){var Ie=d(Ve),Ze=u(Me,!0);if(!(Ie===pe&&y(ee,Ze)&&!y(te,Ze))){var Ce=E(Ie,Ze);return Ce&&y(ee,Ze)&&!(y(Ie,F)&&Ie[F][Ze])&&(Ce.enumerable=!0),Ce}},we=function(Ve){var Me=ae(d(Ve)),Ie=[];return k(Me,function(Ze){!y(ee,Ze)&&!y(V,Ze)&&Ie.push(Ze)}),Ie},Se=function(Ve){var Me=Ve===pe,Ie=ae(Me?te:d(Ve)),Ze=[];return k(Ie,function(Ce){y(ee,Ce)&&(!Me||y(pe,Ce))&&Ze.push(ee[Ce])}),Ze};if(b||(re=function(){if(this instanceof re)throw TypeError("Symbol is not a constructor");var Ve=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Me=Y(Ve),Ie=function(Ze){this===pe&&Ie.call(te,Ze),y(this,F)&&y(this[F],Me)&&(this[F][Me]=!1),ve(this,Me,s(1,Ze))};return v&&ue&&ve(pe,Me,{configurable:!0,set:Ie}),Ge(Me,Ve)},g(re[Q],"toString",function(){return he(this).tag}),g(re,"withoutSetter",function(me){return Ge(Y(me),me)}),x.f=Be,C.f=xe,w.f=Te,W.f=M.f=we,I.f=Se,J.f=function(me){return Ge(T(me),me)},v&&($(re[Q],"description",{configurable:!0,get:function(){return he(this).description}}),f||g(pe,"propertyIsEnumerable",Be,{unsafe:!0}))),l({global:!0,wrap:!0,forced:!b,sham:!b},{Symbol:re}),k(c(B),function(me){U(me)}),l({target:O,stat:!0,forced:!b},{for:function(me){var Ve=String(me);if(y(be,Ve))return be[Ve];var Me=re(Ve);return be[Ve]=Me,ne[Me]=Ve,Me},keyFor:function(Ve){if(!Je(Ve))throw TypeError(Ve+" is not a symbol");if(y(ne,Ve))return ne[Ve]},useSetter:function(){ue=!0},useSimple:function(){ue=!1}}),l({target:"Object",stat:!0,forced:!b,sham:!v},{create:Pe,defineProperty:xe,defineProperties:ke,getOwnPropertyDescriptor:Te}),l({target:"Object",stat:!0,forced:!b},{getOwnPropertyNames:we,getOwnPropertySymbols:Se}),l({target:"Object",stat:!0,forced:p(function(){I.f(1)})},{getOwnPropertySymbols:function(Ve){return I.f(G(Ve))}}),_){var De=!b||p(function(){var me=re();return _([me])!="[null]"||_({a:me})!="{}"||_(Object(me))!="{}"});l({target:"JSON",stat:!0,forced:De},{stringify:function(Ve,Me,Ie){for(var Ze=[Ve],Ce=1,ye;arguments.length>Ce;)Ze.push(arguments[Ce++]);if(ye=Me,!(!m(Me)&&Ve===void 0||Je(Ve)))return X(Me)||(Me=function(Ue,qe){if(typeof ye=="function"&&(qe=ye.call(this,Ue,qe)),!Je(qe))return qe}),Ze[1]=Me,_.apply(null,Ze)}})}re[Q][oe]||R(re[Q],oe,re[Q].valueOf),K(re,O),V[F]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(t,i,a){(function(l){function o(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(M){return typeof M}:o=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},o(c)}function r(c){return Array.isArray?Array.isArray(c):h(c)==="[object Array]"}a.isArray=r;function f(c){return typeof c=="boolean"}a.isBoolean=f;function v(c){return c===null}a.isNull=v;function b(c){return c==null}a.isNullOrUndefined=b;function Z(c){return typeof c=="number"}a.isNumber=Z;function p(c){return typeof c=="string"}a.isString=p;function y(c){return o(c)==="symbol"}a.isSymbol=y;function X(c){return c===void 0}a.isUndefined=X;function m(c){return h(c)==="[object RegExp]"}a.isRegExp=m;function N(c){return o(c)==="object"&&c!==null}a.isObject=N;function G(c){return h(c)==="[object Date]"}a.isDate=G;function d(c){return h(c)==="[object Error]"||c instanceof Error}a.isError=d;function u(c){return typeof c=="function"}a.isFunction=u;function s(c){return c===null||typeof c=="boolean"||typeof c=="number"||typeof c=="string"||o(c)==="symbol"||typeof c>"u"}a.isPrimitive=s,a.isBuffer=l.isBuffer;function h(c){return Object.prototype.toString.call(c)}}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(t,i,a){(function(l){var o=t("elliptic"),r=t("bn.js");i.exports=function(p){return new v(p)};var f={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};f.p224=f.secp224r1,f.p256=f.secp256r1=f.prime256v1,f.p192=f.secp192r1=f.prime192v1,f.p384=f.secp384r1,f.p521=f.secp521r1;function v(Z){this.curveType=f[Z],this.curveType||(this.curveType={name:Z}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}v.prototype.generateKeys=function(Z,p){return this.keys=this.curve.genKeyPair(),this.getPublicKey(Z,p)},v.prototype.computeSecret=function(Z,p,y){p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p));var X=this.curve.keyFromPublic(Z).getPublic(),m=X.mul(this.keys.getPrivate()).getX();return b(m,y,this.curveType.byteLength)},v.prototype.getPublicKey=function(Z,p){var y=this.keys.getPublic(p==="compressed",!0);return p==="hybrid"&&(y[y.length-1]%2?y[0]=7:y[0]=6),b(y,Z)},v.prototype.getPrivateKey=function(Z){return b(this.keys.getPrivate(),Z)},v.prototype.setPublicKey=function(Z,p){return p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p)),this.keys._importPublic(Z),this},v.prototype.setPrivateKey=function(Z,p){p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p));var y=new r(Z);return y=y.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(y),this};function b(Z,p,y){Array.isArray(Z)||(Z=Z.toArray());var X=new l(Z);if(y&&X.lengthN){var G=X==="rmd160"?new b:Z(X);m=G.update(m).digest()}else m.lengthv?p=Z(p):p.length"u"?"undefined":l(a))=="object"&&typeof i<"u"?i.exports=r():o.dayjs=r()})(void 0,function(){var o="millisecond",r="second",f="minute",v="hour",b="day",Z="week",p="month",y="quarter",X="year",m="date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,G=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(g,S,L){var V=String(g);return!V||V.length>=S?g:""+Array(S+1-V.length).join(L)+g},u={s:d,z:function(g){var S=-g.utcOffset(),L=Math.abs(S),V=Math.floor(L/60),Y=L%60;return(S<=0?"+":"-")+d(V,2,"0")+":"+d(Y,2,"0")},m:function R(g,S){if(g.date()"u"?"undefined":l(a))=="object"&&typeof i<"u"?i.exports=r():o.dayjs_plugin_customParseFormat=r()})(void 0,function(){var o,r=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,f=/\d\d/,v=/\d\d?/,b=/\d*[^\s\d-:/()]+/,Z=function(G){return function(d){this[G]=+d}},p=[/[+-]\d\d:?\d\d/,function(N){var G,d;(this.zone||(this.zone={})).offset=(G=N.match(/([+-]|\d\d)/g),(d=60*G[1]+ +G[2])===0?0:G[0]==="+"?-d:d)}],y=function(G){var d=o[G];return d&&(d.indexOf?d:d.s.concat(d.f))},X={A:[/[AP]M/,function(N){this.afternoon=N==="PM"}],a:[/[ap]m/,function(N){this.afternoon=N==="pm"}],S:[/\d/,function(N){this.milliseconds=100*+N}],SS:[f,function(N){this.milliseconds=10*+N}],SSS:[/\d{3}/,function(N){this.milliseconds=+N}],s:[v,Z("seconds")],ss:[v,Z("seconds")],m:[v,Z("minutes")],mm:[v,Z("minutes")],H:[v,Z("hours")],h:[v,Z("hours")],HH:[v,Z("hours")],hh:[v,Z("hours")],D:[v,Z("day")],DD:[f,Z("day")],Do:[b,function(N){var G=o.ordinal,d=N.match(/\d+/);if(this.day=d[0],G)for(var u=1;u<=31;u+=1)G(u).replace(/\[|\]/g,"")===N&&(this.day=u)}],M:[v,Z("month")],MM:[f,Z("month")],MMM:[b,function(N){var G=y("months"),d=(y("monthsShort")||G.map(function(u){return u.substr(0,3)})).indexOf(N)+1;if(d<1)throw new Error;this.month=d%12||d}],MMMM:[b,function(N){var G=y("months").indexOf(N)+1;if(G<1)throw new Error;this.month=G%12||G}],Y:[/[+-]?\d+/,Z("year")],YY:[f,function(N){N=+N,this.year=N+(N>68?1900:2e3)}],YYYY:[/\d{4}/,Z("year")],Z:p,ZZ:p},m=function(G,d,u){try{var s=function(U){for(var K=U.match(r),H=K.length,k=0;k0?c-1:R.getMonth());var V=M||0,Y=I||0,T=w||0,J=C||0;return x?new Date(Date.UTC(S,L,g,V,Y,T,J+60*x.offset*1e3)):u?new Date(Date.UTC(S,L,g,V,Y,T,J)):new Date(S,L,g,V,Y,T,J)}catch{return new Date("")}};return function(N,G,d){var u=G.prototype,s=u.parse;u.parse=function(h){var c=h.date,W=h.utc,M=h.args;this.$u=W;var I=M[1];if(typeof I=="string"){var w=M[2]===!0,C=M[3]===!0,x=w||C,R=M[2];C&&(R=M[2]),w||(o=R?d.Ls[R]:this.$locale()),this.$d=m(c,I,W),this.init(),R&&R!==!0&&(this.$L=this.locale(R).$L),x&&c!==this.format(I)&&(this.$d=new Date(""))}else if(I instanceof Array)for(var g=I.length,S=1;S<=g;S+=1){M[1]=I[S-1];var L=d.apply(this,M);if(L.isValid()){this.$d=L.$d,this.$L=L.$L,this.init();break}S===g&&(this.$d=new Date(""))}else s.call(this,h)}}})},{}],338:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}(function(o,r){(typeof a>"u"?"undefined":l(a))=="object"&&typeof i<"u"?i.exports=r():o.dayjs_plugin_utc=r()})(void 0,function(){return function(o,r,f){var v=new Date().getTimezoneOffset(),b=r.prototype;f.utc=function(G){return new r({date:G,utc:!0,args:arguments})},b.utc=function(){return f(this.toDate(),{locale:this.$L,utc:!0})},b.local=function(){return f(this.toDate(),{locale:this.$L,utc:!1})};var Z=b.parse;b.parse=function(G){G.utc&&(this.$u=!0),this.$utils().u(G.$offset)||(this.$offset=G.$offset),Z.call(this,G)};var p=b.init;b.init=function(){if(this.$u){var G=this.$d;this.$y=G.getUTCFullYear(),this.$M=G.getUTCMonth(),this.$D=G.getUTCDate(),this.$W=G.getUTCDay(),this.$H=G.getUTCHours(),this.$m=G.getUTCMinutes(),this.$s=G.getUTCSeconds(),this.$ms=G.getUTCMilliseconds()}else p.call(this)};var y=b.utcOffset;b.utcOffset=function(G,d){var u=this.$utils().u;if(u(G))return this.$u?0:u(this.$offset)?y.call(this):this.$offset;var s=Math.abs(G)<=16?60*G:G,h=this;return d?(h.$offset=s,h.$u=G===0,h):(G!==0?(h=this.local().add(s+v,"minute")).$offset=s:h=this.utc(),h)};var X=b.format;b.format=function(G){var d=G||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return X.call(this,d)},b.valueOf=function(){var G=this.$utils().u(this.$offset)?0:this.$offset+v;return this.$d.valueOf()-6e4*G},b.isUTC=function(){return!!this.$u},b.toISOString=function(){return this.toDate().toISOString()},b.toString=function(){return this.toDate().toUTCString()};var m=b.toDate;b.toDate=function(G){return G==="s"&&this.$offset?f(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():m.call(this)};var N=b.diff;b.diff=function(G,d,u){var s=this.local(),h=f(G).local();return N.call(s,h,d,u)}}})},{}],339:[function(t,i,a){a.utils=t("./des/utils"),a.Cipher=t("./des/cipher"),a.DES=t("./des/des"),a.CBC=t("./des/cbc"),a.EDE=t("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(t,i,a){var l=t("minimalistic-assert"),o=t("inherits"),r={};function f(b){l.equal(b.length,8,"Invalid IV length"),this.iv=new Array(8);for(var Z=0;Z0;Z--)v+=this._buffer(f,v),b+=this._flushBuffer(p,b);return v+=this._buffer(f,v),p},o.prototype.final=function(f){var v;f&&(v=this.update(f));var b;return this.type==="encrypt"?b=this._finalEncrypt():b=this._finalDecrypt(),v?v.concat(b):b},o.prototype._pad=function(f,v){if(v===0)return!1;for(;v>>1];m=r.r28shl(m,d),N=r.r28shl(N,d),r.pc2(m,N,y.keys,G)}},b.prototype._update=function(y,X,m,N){var G=this._desState,d=r.readUInt32BE(y,X),u=r.readUInt32BE(y,X+4);r.ip(d,u,G.tmp,0),d=G.tmp[0],u=G.tmp[1],this.type==="encrypt"?this._encrypt(G,d,u,G.tmp,0):this._decrypt(G,d,u,G.tmp,0),d=G.tmp[0],u=G.tmp[1],r.writeUInt32BE(m,d,N),r.writeUInt32BE(m,u,N+4)},b.prototype._pad=function(y,X){for(var m=y.length-X,N=X;N>>0,d=I}r.rip(u,d,N,G)},b.prototype._decrypt=function(y,X,m,N,G){for(var d=m,u=X,s=y.keys.length-2;s>=0;s-=2){var h=y.keys[s],c=y.keys[s+1];r.expand(d,y.tmp,0),h^=y.tmp[0],c^=y.tmp[1];var W=r.substitute(h,c),M=r.permute(W),I=d;d=(u^M)>>>0,u=I}r.rip(d,u,N,G)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(t,i,a){var l=t("minimalistic-assert"),o=t("inherits"),r=t("./cipher"),f=t("./des");function v(Z,p){l.equal(p.length,24,"Invalid key length");var y=p.slice(0,8),X=p.slice(8,16),m=p.slice(16,24);Z==="encrypt"?this.ciphers=[f.create({type:"encrypt",key:y}),f.create({type:"decrypt",key:X}),f.create({type:"encrypt",key:m})]:this.ciphers=[f.create({type:"decrypt",key:m}),f.create({type:"encrypt",key:X}),f.create({type:"decrypt",key:y})]}function b(Z){r.call(this,Z);var p=new v(this.type,this.options.key);this._edeState=p}o(b,r),i.exports=b,b.create=function(p){return new b(p)},b.prototype._update=function(p,y,X,m){var N=this._edeState;N.ciphers[0]._update(p,y,X,m),N.ciphers[1]._update(X,m,X,m),N.ciphers[2]._update(X,m,X,m)},b.prototype._pad=f.prototype._pad,b.prototype._unpad=f.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(t,i,a){a.readUInt32BE=function(v,b){var Z=v[0+b]<<24|v[1+b]<<16|v[2+b]<<8|v[3+b];return Z>>>0},a.writeUInt32BE=function(v,b,Z){v[0+Z]=b>>>24,v[1+Z]=b>>>16&255,v[2+Z]=b>>>8&255,v[3+Z]=b&255},a.ip=function(v,b,Z,p){for(var y=0,X=0,m=6;m>=0;m-=2){for(var N=0;N<=24;N+=8)y<<=1,y|=b>>>N+m&1;for(var N=0;N<=24;N+=8)y<<=1,y|=v>>>N+m&1}for(var m=6;m>=0;m-=2){for(var N=1;N<=25;N+=8)X<<=1,X|=b>>>N+m&1;for(var N=1;N<=25;N+=8)X<<=1,X|=v>>>N+m&1}Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.rip=function(v,b,Z,p){for(var y=0,X=0,m=0;m<4;m++)for(var N=24;N>=0;N-=8)y<<=1,y|=b>>>N+m&1,y<<=1,y|=v>>>N+m&1;for(var m=4;m<8;m++)for(var N=24;N>=0;N-=8)X<<=1,X|=b>>>N+m&1,X<<=1,X|=v>>>N+m&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.pc1=function(v,b,Z,p){for(var y=0,X=0,m=7;m>=5;m--){for(var N=0;N<=24;N+=8)y<<=1,y|=b>>N+m&1;for(var N=0;N<=24;N+=8)y<<=1,y|=v>>N+m&1}for(var N=0;N<=24;N+=8)y<<=1,y|=b>>N+m&1;for(var m=1;m<=3;m++){for(var N=0;N<=24;N+=8)X<<=1,X|=b>>N+m&1;for(var N=0;N<=24;N+=8)X<<=1,X|=v>>N+m&1}for(var N=0;N<=24;N+=8)X<<=1,X|=v>>N+m&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.r28shl=function(v,b){return v<>>28-b};var l=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];a.pc2=function(v,b,Z,p){for(var y=0,X=0,m=l.length>>>1,N=0;N>>l[N]&1;for(var N=m;N>>l[N]&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.expand=function(v,b,Z){var p=0,y=0;p=(v&1)<<5|v>>>27;for(var X=23;X>=15;X-=4)p<<=6,p|=v>>>X&63;for(var X=11;X>=3;X-=4)y|=v>>>X&63,y<<=6;y|=(v&31)<<1|v>>>31,b[Z+0]=p>>>0,b[Z+1]=y>>>0};var o=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];a.substitute=function(v,b){for(var Z=0,p=0;p<4;p++){var y=v>>>18-p*6&63,X=o[p*64+y];Z<<=4,Z|=X}for(var p=0;p<4;p++){var y=b>>>18-p*6&63,X=o[4*64+p*64+y];Z<<=4,Z|=X}return Z>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];a.permute=function(v){for(var b=0,Z=0;Z>>r[Z]&1;return b>>>0},a.padSplit=function(v,b,Z){for(var p=v.toString(2);p.lengthc;)M.ishrn(1);if(M.isEven()&&M.iadd(b),M.testn(1)||M.iadd(Z),W.cmp(Z)){if(!W.cmp(p))for(;M.mod(y).cmp(X);)M.iadd(N)}else for(;M.mod(r).cmp(m);)M.iadd(N);if(I=M.shrn(1),u(I)&&u(M)&&s(I)&&s(M)&&v.test(I)&&v.test(M))return M}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(t,i,a){i.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],349:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],350:[function(t,i,a){var l=a;l.version=t("../package.json").version,l.utils=t("./elliptic/utils"),l.rand=t("brorand"),l.curve=t("./elliptic/curve"),l.curves=t("./elliptic/curves"),l.ec=t("./elliptic/ec"),l.eddsa=t("./elliptic/eddsa")},{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,brorand:184}],351:[function(t,i,a){var l=t("bn.js"),o=t("../utils"),r=o.getNAF,f=o.getJSF,v=o.assert;function b(p,y){this.type=p,this.p=new l(y.p,16),this.red=y.prime?l.red(y.prime):l.mont(this.p),this.zero=new l(0).toRed(this.red),this.one=new l(1).toRed(this.red),this.two=new l(2).toRed(this.red),this.n=y.n&&new l(y.n,16),this.g=y.g&&this.pointFromJSON(y.g,y.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var X=this.n&&this.p.div(this.n);!X||X.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}i.exports=b,b.prototype.point=function(){throw new Error("Not implemented")},b.prototype.validate=function(){throw new Error("Not implemented")},b.prototype._fixedNafMul=function(y,X){v(y.precomputed);var m=y._getDoubles(),N=r(X,1,this._bitLength),G=(1<=u;X--)s=(s<<1)+N[X];d.push(s)}for(var h=this.jpoint(null,null,null),c=this.jpoint(null,null,null),W=G;W>0;W--){for(var u=0;u=0;s--){for(var X=0;s>=0&&d[s]===0;s--)X++;if(s>=0&&X++,u=u.dblp(X),s<0)break;var h=d[s];v(h!==0),y.type==="affine"?h>0?u=u.mixedAdd(G[h-1>>1]):u=u.mixedAdd(G[-h-1>>1].neg()):h>0?u=u.add(G[h-1>>1]):u=u.add(G[-h-1>>1].neg())}return y.type==="affine"?u.toP():u},b.prototype._wnafMulAdd=function(y,X,m,N,G){for(var d=this._wnafT1,u=this._wnafT2,s=this._wnafT3,h=0,c=0;c=1;c-=2){var I=c-1,w=c;if(d[I]!==1||d[w]!==1){s[I]=r(m[I],d[I],this._bitLength),s[w]=r(m[w],d[w],this._bitLength),h=Math.max(s[I].length,h),h=Math.max(s[w].length,h);continue}var C=[X[I],null,null,X[w]];X[I].y.cmp(X[w].y)===0?(C[1]=X[I].add(X[w]),C[2]=X[I].toJ().mixedAdd(X[w].neg())):X[I].y.cmp(X[w].y.redNeg())===0?(C[1]=X[I].toJ().mixedAdd(X[w]),C[2]=X[I].add(X[w].neg())):(C[1]=X[I].toJ().mixedAdd(X[w]),C[2]=X[I].toJ().mixedAdd(X[w].neg()));var x=[-3,-1,-5,-7,0,7,5,1,3],R=f(m[I],m[w]);h=Math.max(R[0].length,h),s[I]=new Array(h),s[w]=new Array(h);for(var g=0;g=0;c--){for(var T=0;c>=0;){for(var J=!0,g=0;g=0&&T++,V=V.dblp(T),c<0)break;for(var g=0;g0?W=u[g][U-1>>1]:U<0&&(W=u[g][-U-1>>1].neg()),W.type==="affine"?V=V.mixedAdd(W):V=V.add(W))}}for(var c=0;c=Math.ceil((y.bitLength()+1)/X.step):!1},Z.prototype._getDoubles=function(y,X){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var m=[this],N=this,G=0;G":""},Z.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},Z.prototype._extDbl=function(){var y=this.x.redSqr(),X=this.y.redSqr(),m=this.z.redSqr();m=m.redIAdd(m);var N=this.curve._mulA(y),G=this.x.redAdd(this.y).redSqr().redISub(y).redISub(X),d=N.redAdd(X),u=d.redSub(m),s=N.redSub(X),h=G.redMul(u),c=d.redMul(s),W=G.redMul(s),M=u.redMul(d);return this.curve.point(h,c,M,W)},Z.prototype._projDbl=function(){var y=this.x.redAdd(this.y).redSqr(),X=this.x.redSqr(),m=this.y.redSqr(),N,G,d;if(this.curve.twisted){var u=this.curve._mulA(X),s=u.redAdd(m);if(this.zOne)N=y.redSub(X).redSub(m).redMul(s.redSub(this.curve.two)),G=s.redMul(u.redSub(m)),d=s.redSqr().redSub(s).redSub(s);else{var h=this.z.redSqr(),c=s.redSub(h).redISub(h);N=y.redSub(X).redISub(m).redMul(c),G=s.redMul(u.redSub(m)),d=s.redMul(c)}}else{var u=X.redAdd(m),h=this.curve._mulC(this.z).redSqr(),c=u.redSub(h).redSub(h);N=this.curve._mulC(y.redISub(u)).redMul(c),G=this.curve._mulC(u).redMul(X.redISub(m)),d=u.redMul(c)}return this.curve.point(N,G,d)},Z.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},Z.prototype._extAdd=function(y){var X=this.y.redSub(this.x).redMul(y.y.redSub(y.x)),m=this.y.redAdd(this.x).redMul(y.y.redAdd(y.x)),N=this.t.redMul(this.curve.dd).redMul(y.t),G=this.z.redMul(y.z.redAdd(y.z)),d=m.redSub(X),u=G.redSub(N),s=G.redAdd(N),h=m.redAdd(X),c=d.redMul(u),W=s.redMul(h),M=d.redMul(h),I=u.redMul(s);return this.curve.point(c,W,I,M)},Z.prototype._projAdd=function(y){var X=this.z.redMul(y.z),m=X.redSqr(),N=this.x.redMul(y.x),G=this.y.redMul(y.y),d=this.curve.d.redMul(N).redMul(G),u=m.redSub(d),s=m.redAdd(d),h=this.x.redAdd(this.y).redMul(y.x.redAdd(y.y)).redISub(N).redISub(G),c=X.redMul(u).redMul(h),W,M;return this.curve.twisted?(W=X.redMul(s).redMul(G.redSub(this.curve._mulA(N))),M=u.redMul(s)):(W=X.redMul(s).redMul(G.redSub(N)),M=this.curve._mulC(u).redMul(s)),this.curve.point(c,W,M)},Z.prototype.add=function(y){return this.isInfinity()?y:y.isInfinity()?this:this.curve.extended?this._extAdd(y):this._projAdd(y)},Z.prototype.mul=function(y){return this._hasDoubles(y)?this.curve._fixedNafMul(this,y):this.curve._wnafMul(this,y)},Z.prototype.mulAdd=function(y,X,m){return this.curve._wnafMulAdd(1,[this,X],[y,m],2,!1)},Z.prototype.jmulAdd=function(y,X,m){return this.curve._wnafMulAdd(1,[this,X],[y,m],2,!0)},Z.prototype.normalize=function(){if(this.zOne)return this;var y=this.z.redInvm();return this.x=this.x.redMul(y),this.y=this.y.redMul(y),this.t&&(this.t=this.t.redMul(y)),this.z=this.curve.one,this.zOne=!0,this},Z.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},Z.prototype.getX=function(){return this.normalize(),this.x.fromRed()},Z.prototype.getY=function(){return this.normalize(),this.y.fromRed()},Z.prototype.eq=function(y){return this===y||this.getX().cmp(y.getX())===0&&this.getY().cmp(y.getY())===0},Z.prototype.eqXToP=function(y){var X=y.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(X)===0)return!0;for(var m=y.clone(),N=this.curve.redN.redMul(this.z);;){if(m.iadd(this.curve.n),m.cmp(this.curve.p)>=0)return!1;if(X.redIAdd(N),this.x.cmp(X)===0)return!0}},Z.prototype.toP=Z.prototype.normalize,Z.prototype.mixedAdd=Z.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(t,i,a){var l=a;l.base=t("./base"),l.short=t("./short"),l.mont=t("./mont"),l.edwards=t("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(t,i,a){var l=t("bn.js"),o=t("inherits"),r=t("./base"),f=t("../utils");function v(Z){r.call(this,"mont",Z),this.a=new l(Z.a,16).toRed(this.red),this.b=new l(Z.b,16).toRed(this.red),this.i4=new l(4).toRed(this.red).redInvm(),this.two=new l(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}o(v,r),i.exports=v,v.prototype.validate=function(p){var y=p.normalize().x,X=y.redSqr(),m=X.redMul(y).redAdd(X.redMul(this.a)).redAdd(y),N=m.redSqrt();return N.redSqr().cmp(m)===0};function b(Z,p,y){r.BasePoint.call(this,Z,"projective"),p===null&&y===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new l(p,16),this.z=new l(y,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}o(b,r.BasePoint),v.prototype.decodePoint=function(p,y){return this.point(f.toArray(p,y),1)},v.prototype.point=function(p,y){return new b(this,p,y)},v.prototype.pointFromJSON=function(p){return b.fromJSON(this,p)},b.prototype.precompute=function(){},b.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},b.fromJSON=function(p,y){return new b(p,y[0],y[1]||p.one)},b.prototype.inspect=function(){return this.isInfinity()?"":""},b.prototype.isInfinity=function(){return this.z.cmpn(0)===0},b.prototype.dbl=function(){var p=this.x.redAdd(this.z),y=p.redSqr(),X=this.x.redSub(this.z),m=X.redSqr(),N=y.redSub(m),G=y.redMul(m),d=N.redMul(m.redAdd(this.curve.a24.redMul(N)));return this.curve.point(G,d)},b.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.diffAdd=function(p,y){var X=this.x.redAdd(this.z),m=this.x.redSub(this.z),N=p.x.redAdd(p.z),G=p.x.redSub(p.z),d=G.redMul(X),u=N.redMul(m),s=y.z.redMul(d.redAdd(u).redSqr()),h=y.x.redMul(d.redISub(u).redSqr());return this.curve.point(s,h)},b.prototype.mul=function(p){for(var y=p.clone(),X=this,m=this.curve.point(null,null),N=this,G=[];y.cmpn(0)!==0;y.iushrn(1))G.push(y.andln(1));for(var d=G.length-1;d>=0;d--)G[d]===0?(X=X.diffAdd(m,N),m=m.dbl()):(m=X.diffAdd(m,N),X=X.dbl());return m},b.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.eq=function(p){return this.getX().cmp(p.getX())===0},b.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},b.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(t,i,a){var l=t("../utils"),o=t("bn.js"),r=t("inherits"),f=t("./base"),v=l.assert;function b(y){f.call(this,"short",y),this.a=new o(y.a,16).toRed(this.red),this.b=new o(y.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(y),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}r(b,f),i.exports=b,b.prototype._getEndomorphism=function(X){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var m,N;if(X.beta)m=new o(X.beta,16).toRed(this.red);else{var G=this._getEndoRoots(this.p);m=G[0].cmp(G[1])<0?G[0]:G[1],m=m.toRed(this.red)}if(X.lambda)N=new o(X.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(m))===0?N=d[0]:(N=d[1],v(this.g.mul(N).x.cmp(this.g.x.redMul(m))===0))}var u;return X.basis?u=X.basis.map(function(s){return{a:new o(s.a,16),b:new o(s.b,16)}}):u=this._getEndoBasis(N),{beta:m,lambda:N,basis:u}}},b.prototype._getEndoRoots=function(X){var m=X===this.p?this.red:o.mont(X),N=new o(2).toRed(m).redInvm(),G=N.redNeg(),d=new o(3).toRed(m).redNeg().redSqrt().redMul(N),u=G.redAdd(d).fromRed(),s=G.redSub(d).fromRed();return[u,s]},b.prototype._getEndoBasis=function(X){for(var m=this.n.ushrn(Math.floor(this.n.bitLength()/2)),N=X,G=this.n.clone(),d=new o(1),u=new o(0),s=new o(0),h=new o(1),c,W,M,I,w,C,x,R=0,g,S;N.cmpn(0)!==0;){var L=G.div(N);g=G.sub(L.mul(N)),S=s.sub(L.mul(d));var V=h.sub(L.mul(u));if(!M&&g.cmp(m)<0)c=x.neg(),W=d,M=g.neg(),I=S;else if(M&&++R===2)break;x=g,G=N,N=g,s=d,d=S,h=u,u=V}w=g.neg(),C=S;var Y=M.sqr().add(I.sqr()),T=w.sqr().add(C.sqr());return T.cmp(Y)>=0&&(w=c,C=W),M.negative&&(M=M.neg(),I=I.neg()),w.negative&&(w=w.neg(),C=C.neg()),[{a:M,b:I},{a:w,b:C}]},b.prototype._endoSplit=function(X){var m=this.endo.basis,N=m[0],G=m[1],d=G.b.mul(X).divRound(this.n),u=N.b.neg().mul(X).divRound(this.n),s=d.mul(N.a),h=u.mul(G.a),c=d.mul(N.b),W=u.mul(G.b),M=X.sub(s).sub(h),I=c.add(W).neg();return{k1:M,k2:I}},b.prototype.pointFromX=function(X,m){X=new o(X,16),X.red||(X=X.toRed(this.red));var N=X.redSqr().redMul(X).redIAdd(X.redMul(this.a)).redIAdd(this.b),G=N.redSqrt();if(G.redSqr().redSub(N).cmp(this.zero)!==0)throw new Error("invalid point");var d=G.fromRed().isOdd();return(m&&!d||!m&&d)&&(G=G.redNeg()),this.point(X,G)},b.prototype.validate=function(X){if(X.inf)return!0;var m=X.x,N=X.y,G=this.a.redMul(m),d=m.redSqr().redMul(m).redIAdd(G).redIAdd(this.b);return N.redSqr().redISub(d).cmpn(0)===0},b.prototype._endoWnafMulAdd=function(X,m,N){for(var G=this._endoWnafT1,d=this._endoWnafT2,u=0;u":""},Z.prototype.isInfinity=function(){return this.inf},Z.prototype.add=function(X){if(this.inf)return X;if(X.inf)return this;if(this.eq(X))return this.dbl();if(this.neg().eq(X))return this.curve.point(null,null);if(this.x.cmp(X.x)===0)return this.curve.point(null,null);var m=this.y.redSub(X.y);m.cmpn(0)!==0&&(m=m.redMul(this.x.redSub(X.x).redInvm()));var N=m.redSqr().redISub(this.x).redISub(X.x),G=m.redMul(this.x.redSub(N)).redISub(this.y);return this.curve.point(N,G)},Z.prototype.dbl=function(){if(this.inf)return this;var X=this.y.redAdd(this.y);if(X.cmpn(0)===0)return this.curve.point(null,null);var m=this.curve.a,N=this.x.redSqr(),G=X.redInvm(),d=N.redAdd(N).redIAdd(N).redIAdd(m).redMul(G),u=d.redSqr().redISub(this.x.redAdd(this.x)),s=d.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,s)},Z.prototype.getX=function(){return this.x.fromRed()},Z.prototype.getY=function(){return this.y.fromRed()},Z.prototype.mul=function(X){return X=new o(X,16),this.isInfinity()?this:this._hasDoubles(X)?this.curve._fixedNafMul(this,X):this.curve.endo?this.curve._endoWnafMulAdd([this],[X]):this.curve._wnafMul(this,X)},Z.prototype.mulAdd=function(X,m,N){var G=[this,m],d=[X,N];return this.curve.endo?this.curve._endoWnafMulAdd(G,d):this.curve._wnafMulAdd(1,G,d,2)},Z.prototype.jmulAdd=function(X,m,N){var G=[this,m],d=[X,N];return this.curve.endo?this.curve._endoWnafMulAdd(G,d,!0):this.curve._wnafMulAdd(1,G,d,2,!0)},Z.prototype.eq=function(X){return this===X||this.inf===X.inf&&(this.inf||this.x.cmp(X.x)===0&&this.y.cmp(X.y)===0)},Z.prototype.neg=function(X){if(this.inf)return this;var m=this.curve.point(this.x,this.y.redNeg());if(X&&this.precomputed){var N=this.precomputed,G=function(u){return u.neg()};m.precomputed={naf:N.naf&&{wnd:N.naf.wnd,points:N.naf.points.map(G)},doubles:N.doubles&&{step:N.doubles.step,points:N.doubles.points.map(G)}}}return m},Z.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var X=this.curve.jpoint(this.x,this.y,this.curve.one);return X};function p(y,X,m,N){f.BasePoint.call(this,y,"jacobian"),X===null&&m===null&&N===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new o(0)):(this.x=new o(X,16),this.y=new o(m,16),this.z=new o(N,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}r(p,f.BasePoint),b.prototype.jpoint=function(X,m,N){return new p(this,X,m,N)},p.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var X=this.z.redInvm(),m=X.redSqr(),N=this.x.redMul(m),G=this.y.redMul(m).redMul(X);return this.curve.point(N,G)},p.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},p.prototype.add=function(X){if(this.isInfinity())return X;if(X.isInfinity())return this;var m=X.z.redSqr(),N=this.z.redSqr(),G=this.x.redMul(m),d=X.x.redMul(N),u=this.y.redMul(m.redMul(X.z)),s=X.y.redMul(N.redMul(this.z)),h=G.redSub(d),c=u.redSub(s);if(h.cmpn(0)===0)return c.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var W=h.redSqr(),M=W.redMul(h),I=G.redMul(W),w=c.redSqr().redIAdd(M).redISub(I).redISub(I),C=c.redMul(I.redISub(w)).redISub(u.redMul(M)),x=this.z.redMul(X.z).redMul(h);return this.curve.jpoint(w,C,x)},p.prototype.mixedAdd=function(X){if(this.isInfinity())return X.toJ();if(X.isInfinity())return this;var m=this.z.redSqr(),N=this.x,G=X.x.redMul(m),d=this.y,u=X.y.redMul(m).redMul(this.z),s=N.redSub(G),h=d.redSub(u);if(s.cmpn(0)===0)return h.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),W=c.redMul(s),M=N.redMul(c),I=h.redSqr().redIAdd(W).redISub(M).redISub(M),w=h.redMul(M.redISub(I)).redISub(d.redMul(W)),C=this.z.redMul(s);return this.curve.jpoint(I,w,C)},p.prototype.dblp=function(X){if(X===0)return this;if(this.isInfinity())return this;if(!X)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var m=this,N=0;N=0)return!1;if(N.redIAdd(d),this.x.cmp(N)===0)return!0}},p.prototype.inspect=function(){return this.isInfinity()?"":""},p.prototype.isInfinity=function(){return this.z.cmpn(0)===0}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(t,i,a){var l=a,o=t("hash.js"),r=t("./curve"),f=t("./utils"),v=f.assert;function b(y){y.type==="short"?this.curve=new r.short(y):y.type==="edwards"?this.curve=new r.edwards(y):this.curve=new r.mont(y),this.g=this.curve.g,this.n=this.curve.n,this.hash=y.hash,v(this.g.validate(),"Invalid curve"),v(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}l.PresetCurve=b;function Z(y,X){Object.defineProperty(l,y,{configurable:!0,enumerable:!0,get:function(){var N=new b(X);return Object.defineProperty(l,y,{configurable:!0,enumerable:!0,value:N}),N}})}Z("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),Z("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),Z("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),Z("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),Z("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),Z("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),Z("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var p;try{p=t("./precomputed/secp256k1")}catch{p=void 0}Z("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",p]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(t,i,a){function l(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(G){return typeof G}:l=function(G){return G&&typeof Symbol=="function"&&G.constructor===Symbol&&G!==Symbol.prototype?"symbol":typeof G},l(m)}var o=t("bn.js"),r=t("hmac-drbg"),f=t("../utils"),v=t("../curves"),b=t("brorand"),Z=f.assert,p=t("./key"),y=t("./signature");function X(m){if(!(this instanceof X))return new X(m);typeof m=="string"&&(Z(v.hasOwnProperty(m),"Unknown curve "+m),m=v[m]),m instanceof v.PresetCurve&&(m={curve:m}),this.curve=m.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=m.curve.g,this.g.precompute(m.curve.n.bitLength()+1),this.hash=m.hash||m.curve.hash}i.exports=X,X.prototype.keyPair=function(N){return new p(this,N)},X.prototype.keyFromPrivate=function(N,G){return p.fromPrivate(this,N,G)},X.prototype.keyFromPublic=function(N,G){return p.fromPublic(this,N,G)},X.prototype.genKeyPair=function(N){N||(N={});var G=new r({hash:this.hash,pers:N.pers,persEnc:N.persEnc||"utf8",entropy:N.entropy||b(this.hash.hmacStrength),entropyEnc:N.entropy&&N.entropyEnc||"utf8",nonce:this.n.toArray()}),d=this.n.byteLength(),u=this.n.sub(new o(2));do{var s=new o(G.generate(d));if(!(s.cmp(u)>0))return s.iaddn(1),this.keyFromPrivate(s)}while(!0)},X.prototype._truncateToN=function(N,G){var d=N.byteLength()*8-this.n.bitLength();return d>0&&(N=N.ushrn(d)),!G&&N.cmp(this.n)>=0?N.sub(this.n):N},X.prototype.sign=function(N,G,d,u){l(d)==="object"&&(u=d,d=null),u||(u={}),G=this.keyFromPrivate(G,d),N=this._truncateToN(new o(N,16));for(var s=this.n.byteLength(),h=G.getPrivate().toArray("be",s),c=N.toArray("be",s),W=new r({hash:this.hash,entropy:h,nonce:c,pers:u.pers,persEnc:u.persEnc||"utf8"}),M=this.n.sub(new o(1)),I=0;;I++){var w=u.k?u.k(I):new o(W.generate(this.n.byteLength()));if(w=this._truncateToN(w,!0),!(w.cmpn(1)<=0||w.cmp(M)>=0)){var C=this.g.mul(w);if(!C.isInfinity()){var x=C.getX(),R=x.umod(this.n);if(R.cmpn(0)!==0){var g=w.invm(this.n).mul(R.mul(G.getPrivate()).iadd(N));if(g=g.umod(this.n),g.cmpn(0)!==0){var S=(C.getY().isOdd()?1:0)|(x.cmp(R)!==0?2:0);return u.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),S^=1),new y({r:R,s:g,recoveryParam:S})}}}}}},X.prototype.verify=function(N,G,d,u){N=this._truncateToN(new o(N,16)),d=this.keyFromPublic(d,u),G=new y(G,"hex");var s=G.r,h=G.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var c=h.invm(this.n),W=c.mul(N).umod(this.n),M=c.mul(s).umod(this.n);if(!this.curve._maxwellTrick){var I=this.g.mulAdd(W,d.getPublic(),M);return I.isInfinity()?!1:I.getX().umod(this.n).cmp(s)===0}var I=this.g.jmulAdd(W,d.getPublic(),M);return I.isInfinity()?!1:I.eqXToP(s)},X.prototype.recoverPubKey=function(m,N,G,d){Z((3&G)===G,"The recovery param is more than two bits"),N=new y(N,d);var u=this.n,s=new o(m),h=N.r,c=N.s,W=G&1,M=G>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&M)throw new Error("Unable to find sencond key candinate");M?h=this.curve.pointFromX(h.add(this.curve.n),W):h=this.curve.pointFromX(h,W);var I=N.r.invm(u),w=u.sub(s).mul(I).umod(u),C=c.mul(I).umod(u);return this.g.mulAdd(w,h,C)},X.prototype.getKeyRecoveryParam=function(m,N,G,d){if(N=new y(N,d),N.recoveryParam!==null)return N.recoveryParam;for(var u=0;u<4;u++){var s;try{s=this.recoverPubKey(m,N,u)}catch{continue}if(s.eq(G))return u}throw new Error("Unable to find valid recovery factor")}},{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,brorand:184,"hmac-drbg":384}],358:[function(t,i,a){var l=t("bn.js"),o=t("../utils"),r=o.assert;function f(v,b){this.ec=v,this.priv=null,this.pub=null,b.priv&&this._importPrivate(b.priv,b.privEnc),b.pub&&this._importPublic(b.pub,b.pubEnc)}i.exports=f,f.fromPublic=function(b,Z,p){return Z instanceof f?Z:new f(b,{pub:Z,pubEnc:p})},f.fromPrivate=function(b,Z,p){return Z instanceof f?Z:new f(b,{priv:Z,privEnc:p})},f.prototype.validate=function(){var b=this.getPublic();return b.isInfinity()?{result:!1,reason:"Invalid public key"}:b.validate()?b.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},f.prototype.getPublic=function(b,Z){return typeof b=="string"&&(Z=b,b=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),Z?this.pub.encode(Z,b):this.pub},f.prototype.getPrivate=function(b){return b==="hex"?this.priv.toString(16,2):this.priv},f.prototype._importPrivate=function(b,Z){this.priv=new l(b,Z||16),this.priv=this.priv.umod(this.ec.curve.n)},f.prototype._importPublic=function(b,Z){if(b.x||b.y){this.ec.curve.type==="mont"?r(b.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&r(b.x&&b.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(b.x,b.y);return}this.pub=this.ec.curve.decodePoint(b,Z)},f.prototype.derive=function(b){return b.mul(this.priv).getX()},f.prototype.sign=function(b,Z,p){return this.ec.sign(b,this,Z,p)},f.prototype.verify=function(b,Z){return this.ec.verify(b,Z,this)},f.prototype.inspect=function(){return""}},{"../utils":364,"bn.js":365}],359:[function(t,i,a){var l=t("bn.js"),o=t("../utils"),r=o.assert;function f(y,X){if(y instanceof f)return y;this._importDER(y,X)||(r(y.r&&y.s,"Signature without r or s"),this.r=new l(y.r,16),this.s=new l(y.s,16),y.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=y.recoveryParam)}i.exports=f;function v(){this.place=0}function b(y,X){var m=y[X.place++];if(!(m&128))return m;var N=m&15;if(N===0||N>4)return!1;for(var G=0,d=0,u=X.place;d>>=0;return G<=127?!1:(X.place=u,G)}function Z(y){for(var X=0,m=y.length-1;!y[X]&&!(y[X+1]&128)&&X>>3);for(y.push(m|128);--m;)y.push(X>>>(m<<3)&255);y.push(X)}f.prototype.toDER=function(X){var m=this.r.toArray(),N=this.s.toArray();for(m[0]&128&&(m=[0].concat(m)),N[0]&128&&(N=[0].concat(N)),m=Z(m),N=Z(N);!N[0]&&!(N[1]&128);)N=N.slice(1);var G=[2];p(G,m.length),G=G.concat(m),G.push(2),p(G,N.length);var d=G.concat(N),u=[48];return p(u,d.length),u=u.concat(d),o.encode(u,X)}},{"../utils":364,"bn.js":365}],360:[function(t,i,a){var l=t("hash.js"),o=t("../curves"),r=t("../utils"),f=r.assert,v=r.parseBytes,b=t("./key"),Z=t("./signature");function p(X){if(f(X==="ed25519","only tested with ed25519 so far"),!(this instanceof p))return new p(X);var X=o[X].curve;this.curve=X,this.g=X.g,this.g.precompute(X.n.bitLength()+1),this.pointClass=X.point().constructor,this.encodingLength=Math.ceil(X.n.bitLength()/8),this.hash=l.sha512}i.exports=p,p.prototype.sign=function(X,m){X=v(X);var N=this.keyFromSecret(m),G=this.hashInt(N.messagePrefix(),X),d=this.g.mul(G),u=this.encodePoint(d),s=this.hashInt(u,N.pubBytes(),X).mul(N.priv()),h=G.add(s).umod(this.curve.n);return this.makeSignature({R:d,S:h,Rencoded:u})},p.prototype.verify=function(X,m,N){X=v(X),m=this.makeSignature(m);var G=this.keyFromPublic(N),d=this.hashInt(m.Rencoded(),G.pubBytes(),X),u=this.g.mul(m.S()),s=m.R().add(G.pub().mul(d));return s.eq(u)},p.prototype.hashInt=function(){for(var X=this.hash(),m=0;m(d>>1)-1?h=(d>>1)-c:h=c,u.isubn(h)):h=0,G[s]=h,u.iushrn(1)}return G}l.getNAF=v;function b(X,m){var N=[[],[]];X=X.clone(),m=m.clone();for(var G=0,d=0;X.cmpn(-G)>0||m.cmpn(-d)>0;){var u=X.andln(3)+G&3,s=m.andln(3)+d&3;u===3&&(u=-1),s===3&&(s=-1);var h;if(!(u&1))h=0;else{var c=X.andln(7)+G&7;(c===3||c===5)&&s===2?h=-u:h=u}N[0].push(h);var W;if(!(s&1))W=0;else{var c=m.andln(7)+d&7;(c===3||c===5)&&u===2?W=-s:W=s}N[1].push(W),2*G===h+1&&(G=1-G),2*d===W+1&&(d=1-d),X.iushrn(1),m.iushrn(1)}return N}l.getJSF=b;function Z(X,m,N){var G="_"+m;X.prototype[m]=function(){return this[G]!==void 0?this[G]:this[G]=N.call(this)}}l.cachedProperty=Z;function p(X){return typeof X=="string"?l.toArray(X,"hex"):X}l.parseBytes=p;function y(X){return new o(X,"hex","le")}l.intFromLE=y},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],366:[function(t,i,a){i.exports={_from:"elliptic@^6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"elliptic@^6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"^6.5.3",saveSpec:null,fetchSpec:"^6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_shasum:"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6",_spec:"elliptic@^6.5.3",_where:"/mnt/d/dev/git/exceljs/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},bundleDependencies:!1,dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},deprecated:!1,description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},{}],367:[function(t,i,a){function l(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(L){return typeof L}:l=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},l(g)}var o=Object.create||C,r=Object.keys||x,f=Function.prototype.bind||R;function v(){(!this._events||!Object.prototype.hasOwnProperty.call(this,"_events"))&&(this._events=o(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}i.exports=v,v.EventEmitter=v,v.prototype._events=void 0,v.prototype._maxListeners=void 0;var b=10,Z;try{var p={};Object.defineProperty&&Object.defineProperty(p,"x",{value:0}),Z=p.x===0}catch{Z=!1}Z?Object.defineProperty(v,"defaultMaxListeners",{enumerable:!0,get:function(){return b},set:function(S){if(typeof S!="number"||S<0||S!==S)throw new TypeError('"defaultMaxListeners" must be a positive number');b=S}}):v.defaultMaxListeners=b,v.prototype.setMaxListeners=function(S){if(typeof S!="number"||S<0||isNaN(S))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=S,this};function y(g){return g._maxListeners===void 0?v.defaultMaxListeners:g._maxListeners}v.prototype.getMaxListeners=function(){return y(this)};function X(g,S,L){if(S)g.call(L);else for(var V=g.length,Y=I(g,V),T=0;T1&&(L=arguments[1]),L instanceof Error)throw L;var H=new Error('Unhandled "error" event. ('+L+")");throw H.context=L,H}if(V=U[S],!V)return!1;var k=typeof V=="function";switch(Y=arguments.length,Y){case 1:X(V,k,this);break;case 2:m(V,k,this,arguments[1]);break;case 3:N(V,k,this,arguments[1],arguments[2]);break;case 4:G(V,k,this,arguments[1],arguments[2],arguments[3]);break;default:for(T=new Array(Y-1),J=1;J0&&J.length>Y)){J.warned=!0;var U=new Error("Possible EventEmitter memory leak detected. "+J.length+' "'+String(S)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');U.name="MaxListenersExceededWarning",U.emitter=g,U.type=S,U.count=J.length,(typeof console>"u"?"undefined":l(console))==="object"&&console.warn&&console.warn("%s: %s",U.name,U.message)}return g}v.prototype.addListener=function(S,L){return u(this,S,L,!1)},v.prototype.on=v.prototype.addListener,v.prototype.prependListener=function(S,L){return u(this,S,L,!0)};function s(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var g=new Array(arguments.length),S=0;S=0;J--)if(V[J]===L||V[J].listener===L){U=V[J].listener,T=J;break}if(T<0)return this;T===0?V.shift():M(V,T),V.length===1&&(Y[S]=V[0]),Y.removeListener&&this.emit("removeListener",S,U||L)}return this},v.prototype.removeAllListeners=function(S){var L,V,Y;if(V=this._events,!V)return this;if(!V.removeListener)return arguments.length===0?(this._events=o(null),this._eventsCount=0):V[S]&&(--this._eventsCount===0?this._events=o(null):delete V[S]),this;if(arguments.length===0){var T=r(V),J;for(Y=0;Y=0;Y--)this.removeListener(S,L[Y]);return this};function c(g,S,L){var V=g._events;if(!V)return[];var Y=V[S];return Y?typeof Y=="function"?L?[Y.listener||Y]:[Y]:L?w(Y):I(Y,Y.length):[]}v.prototype.listeners=function(S){return c(this,S,!0)},v.prototype.rawListeners=function(S){return c(this,S,!1)},v.listenerCount=function(g,S){return typeof g.listenerCount=="function"?g.listenerCount(S):W.call(g,S)},v.prototype.listenerCount=W;function W(g){var S=this._events;if(S){var L=S[g];if(typeof L=="function")return 1;if(L)return L.length}return 0}v.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function M(g,S){for(var L=S,V=L+1,Y=g.length;V0||Z>0;){var N=new o;N.update(m),N.update(f),v&&N.update(v),m=N.digest();var G=0;if(p>0){var d=y.length-p;G=Math.min(p,m.length),m.copy(y,d,0,G),p-=G}if(G0){var u=X.length-Z,s=Math.min(Z,m.length-G);m.copy(X,u,G,G+s),Z-=s}}return m.fill(0),{key:y,iv:X}}i.exports=r},{"md5.js":434,"safe-buffer":494}],369:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0});var l=t("@fast-csv/format");Object.defineProperty(a,"format",{enumerable:!0,get:function(){return l.format}}),Object.defineProperty(a,"write",{enumerable:!0,get:function(){return l.write}}),Object.defineProperty(a,"writeToStream",{enumerable:!0,get:function(){return l.writeToStream}}),Object.defineProperty(a,"writeToBuffer",{enumerable:!0,get:function(){return l.writeToBuffer}}),Object.defineProperty(a,"writeToString",{enumerable:!0,get:function(){return l.writeToString}}),Object.defineProperty(a,"writeToPath",{enumerable:!0,get:function(){return l.writeToPath}}),Object.defineProperty(a,"CsvFormatterStream",{enumerable:!0,get:function(){return l.CsvFormatterStream}}),Object.defineProperty(a,"FormatterOptions",{enumerable:!0,get:function(){return l.FormatterOptions}});var o=t("@fast-csv/parse");Object.defineProperty(a,"parse",{enumerable:!0,get:function(){return o.parse}}),Object.defineProperty(a,"parseString",{enumerable:!0,get:function(){return o.parseString}}),Object.defineProperty(a,"parseStream",{enumerable:!0,get:function(){return o.parseStream}}),Object.defineProperty(a,"parseFile",{enumerable:!0,get:function(){return o.parseFile}}),Object.defineProperty(a,"ParserOptions",{enumerable:!0,get:function(){return o.ParserOptions}}),Object.defineProperty(a,"CsvParserStream",{enumerable:!0,get:function(){return o.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("readable-stream").Transform,r=t("inherits");function f(b,Z){if(!l.isBuffer(b)&&typeof b!="string")throw new TypeError(Z+" must be a string or a buffer")}function v(b){o.call(this),this._block=l.allocUnsafe(b),this._blockSize=b,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(v,o),v.prototype._transform=function(b,Z,p){var y=null;try{this.update(b,Z)}catch(X){y=X}p(y)},v.prototype._flush=function(b){var Z=null;try{this.push(this.digest())}catch(p){Z=p}b(Z)},v.prototype.update=function(b,Z){if(f(b,"Data"),this._finalized)throw new Error("Digest already called");l.isBuffer(b)||(b=l.from(b,Z));for(var p=this._block,y=0;this._blockOffset+b.length-y>=this._blockSize;){for(var X=this._blockOffset;X0;++m)this._length[m]+=N,N=this._length[m]/4294967296|0,N>0&&(this._length[m]-=4294967296*N);return this},v.prototype._update=function(){throw new Error("_update is not implemented")},v.prototype.digest=function(b){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var Z=this._digest();b!==void 0&&(Z=Z.toString(b)),this._block.fill(0),this._blockOffset=0;for(var p=0;p<4;++p)this._length[p]=0;return Z},v.prototype._digest=function(){throw new Error("_digest is not implemented")},i.exports=v},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(t,i,a){arguments[4][214][0].apply(a,arguments)},{buffer:216,dup:214}],372:[function(t,i,a){var l=a;l.utils=t("./hash/utils"),l.common=t("./hash/common"),l.sha=t("./hash/sha"),l.ripemd=t("./hash/ripemd"),l.hmac=t("./hash/hmac"),l.sha1=l.sha.sha1,l.sha256=l.sha.sha256,l.sha224=l.sha.sha224,l.sha384=l.sha.sha384,l.sha512=l.sha.sha512,l.ripemd160=l.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(t,i,a){var l=t("./utils"),o=t("minimalistic-assert");function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}a.BlockHash=r,r.prototype.update=function(v,b){if(v=l.toArray(v,b),this.pending?this.pending=this.pending.concat(v):this.pending=v,this.pendingTotal+=v.length,this.pending.length>=this._delta8){v=this.pending;var Z=v.length%this._delta8;this.pending=v.slice(v.length-Z,v.length),this.pending.length===0&&(this.pending=null),v=l.join32(v,0,v.length-Z,this.endian);for(var p=0;p>>24&255,p[y++]=v>>>16&255,p[y++]=v>>>8&255,p[y++]=v&255}else for(p[y++]=v&255,p[y++]=v>>>8&255,p[y++]=v>>>16&255,p[y++]=v>>>24&255,p[y++]=0,p[y++]=0,p[y++]=0,p[y++]=0,X=8;Xthis.blockSize&&(v=new this.Hash().update(v).digest()),o(v.length<=this.blockSize);for(var b=v.length;b>>3}a.g0_256=y;function X(m){return o(m,17)^o(m,19)^m>>>10}a.g1_256=X},{"../utils":383}],383:[function(t,i,a){var l=t("minimalistic-assert"),o=t("inherits");a.inherits=o;function r(V,Y){return(V.charCodeAt(Y)&64512)!==55296||Y<0||Y+1>=V.length?!1:(V.charCodeAt(Y+1)&64512)===56320}function f(V,Y){if(Array.isArray(V))return V.slice();if(!V)return[];var T=[];if(typeof V=="string")if(Y){if(Y==="hex")for(V=V.replace(/[^a-z0-9]+/ig,""),V.length%2!==0&&(V="0"+V),U=0;U>6|192,T[J++]=K&63|128):r(V,U)?(K=65536+((K&1023)<<10)+(V.charCodeAt(++U)&1023),T[J++]=K>>18|240,T[J++]=K>>12&63|128,T[J++]=K>>6&63|128,T[J++]=K&63|128):(T[J++]=K>>12|224,T[J++]=K>>6&63|128,T[J++]=K&63|128)}else for(U=0;U>>24|V>>>8&65280|V<<8&16711680|(V&255)<<24;return Y>>>0}a.htonl=b;function Z(V,Y){for(var T="",J=0;J>>0}return K}a.join32=X;function m(V,Y){for(var T=new Array(V.length*4),J=0,U=0;J>>24,T[U+1]=K>>>16&255,T[U+2]=K>>>8&255,T[U+3]=K&255):(T[U+3]=K>>>24,T[U+2]=K>>>16&255,T[U+1]=K>>>8&255,T[U]=K&255)}return T}a.split32=m;function N(V,Y){return V>>>Y|V<<32-Y}a.rotr32=N;function G(V,Y){return V<>>32-Y}a.rotl32=G;function d(V,Y){return V+Y>>>0}a.sum32=d;function u(V,Y,T){return V+Y+T>>>0}a.sum32_3=u;function s(V,Y,T,J){return V+Y+T+J>>>0}a.sum32_4=s;function h(V,Y,T,J,U){return V+Y+T+J+U>>>0}a.sum32_5=h;function c(V,Y,T,J){var U=V[Y],K=V[Y+1],H=J+K>>>0,k=(H>>0,V[Y+1]=H}a.sum64=c;function W(V,Y,T,J){var U=Y+J>>>0,K=(U>>0}a.sum64_hi=W;function M(V,Y,T,J){var U=Y+J;return U>>>0}a.sum64_lo=M;function I(V,Y,T,J,U,K,H,k){var F=0,O=Y;O=O+J>>>0,F+=O>>0,F+=O>>0,F+=O>>0}a.sum64_4_hi=I;function w(V,Y,T,J,U,K,H,k){var F=Y+J+K+k;return F>>>0}a.sum64_4_lo=w;function C(V,Y,T,J,U,K,H,k,F,O){var Q=0,oe=Y;oe=oe+J>>>0,Q+=oe>>0,Q+=oe>>0,Q+=oe>>0,Q+=oe>>0}a.sum64_5_hi=C;function x(V,Y,T,J,U,K,H,k,F,O){var Q=Y+J+K+k+O;return Q>>>0}a.sum64_5_lo=x;function R(V,Y,T){var J=Y<<32-T|V>>>T;return J>>>0}a.rotr64_hi=R;function g(V,Y,T){var J=V<<32-T|Y>>>T;return J>>>0}a.rotr64_lo=g;function S(V,Y,T){return V>>>T}a.shr64_hi=S;function L(V,Y,T){var J=V<<32-T|Y>>>T;return J>>>0}a.shr64_lo=L},{inherits:387,"minimalistic-assert":437}],384:[function(t,i,a){var l=t("hash.js"),o=t("minimalistic-crypto-utils"),r=t("minimalistic-assert");function f(v){if(!(this instanceof f))return new f(v);this.hash=v.hash,this.predResist=!!v.predResist,this.outLen=this.hash.outSize,this.minEntropy=v.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var b=o.toArray(v.entropy,v.entropyEnc||"hex"),Z=o.toArray(v.nonce,v.nonceEnc||"hex"),p=o.toArray(v.pers,v.persEnc||"hex");r(b.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(b,Z,p)}i.exports=f,f.prototype._init=function(b,Z,p){var y=b.concat(Z).concat(p);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var X=0;X=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(b.concat(p||[])),this._reseed=1},f.prototype.generate=function(b,Z,p,y){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof Z!="string"&&(y=p,p=Z,Z=null),p&&(p=o.toArray(p,y||"hex"),this._update(p));for(var X=[];X.length>1,m=-7,N=r?v-1:0,G=r?-1:1,d=l[o+N];for(N+=G,b=d&(1<<-m)-1,d>>=-m,m+=p;m>0;b=b*256+l[o+N],N+=G,m-=8);for(Z=b&(1<<-m)-1,b>>=-m,m+=f;m>0;Z=Z*256+l[o+N],N+=G,m-=8);if(b===0)b=1-X;else{if(b===y)return Z?NaN:(d?-1:1)*(1/0);Z=Z+Math.pow(2,f),b=b-X}return(d?-1:1)*Z*Math.pow(2,b-f)},a.write=function(l,o,r,f,v,b){var Z,p,y,X=b*8-v-1,m=(1<>1,G=v===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=f?0:b-1,u=f?1:-1,s=o<0||o===0&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(p=isNaN(o)?1:0,Z=m):(Z=Math.floor(Math.log(o)/Math.LN2),o*(y=Math.pow(2,-Z))<1&&(Z--,y*=2),Z+N>=1?o+=G/y:o+=G*Math.pow(2,1-N),o*y>=2&&(Z++,y/=2),Z+N>=m?(p=0,Z=m):Z+N>=1?(p=(o*y-1)*Math.pow(2,v),Z=Z+N):(p=o*Math.pow(2,N-1)*Math.pow(2,v),Z=0));v>=8;l[r+d]=p&255,d+=u,p/=256,v-=8);for(Z=Z<0;l[r+d]=Z&255,d+=u,Z/=256,X-=8);l[r+d-u]|=s*128}},{}],386:[function(t,i,a){(function(l){var o=l.MutationObserver||l.WebKitMutationObserver,r;if(o){var f=0,v=new o(X),b=l.document.createTextNode("");v.observe(b,{characterData:!0}),r=function(){b.data=f=++f%2}}else if(!l.setImmediate&&typeof l.MessageChannel<"u"){var Z=new l.MessageChannel;Z.port1.onmessage=X,r=function(){Z.port2.postMessage(0)}}else"document"in l&&"onreadystatechange"in l.document.createElement("script")?r=function(){var G=l.document.createElement("script");G.onreadystatechange=function(){X(),G.onreadystatechange=null,G.parentNode.removeChild(G),G=null},l.document.documentElement.appendChild(G)}:r=function(){setTimeout(X,0)};var p,y=[];function X(){p=!0;for(var N,G,d=y.length;d;){for(G=y,y=[],N=-1;++N * @license MIT */i.exports=function(r){return r!=null&&(l(r)||o(r)||!!r._isBuffer)};function l(r){return!!r.constructor&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)}function o(r){return typeof r.readFloatLE=="function"&&typeof r.slice=="function"&&l(r.slice(0,0))}},{}],389:[function(t,i,a){var l={}.toString;i.exports=Array.isArray||function(o){return l.call(o)=="[object Array]"}},{}],390:[function(t,i,a){var l=t("./utils"),o=t("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.encode=function(f){for(var v=[],b,Z,p,y,X,m,N,G=0,d=f.length,u=d,s=l.getTypeOf(f)!=="string";G>2,X=(b&3)<<4|Z>>4,m=u>1?(Z&15)<<2|p>>6:64,N=u>2?p&63:64,v.push(r.charAt(y)+r.charAt(X)+r.charAt(m)+r.charAt(N));return v.join("")},a.decode=function(f){var v,b,Z,p,y,X,m,N=0,G=0,d="data:";if(f.substr(0,d.length)===d)throw new Error("Invalid base64 input, it looks like a data url.");f=f.replace(/[^A-Za-z0-9\+\/\=]/g,"");var u=f.length*3/4;if(f.charAt(f.length-1)===r.charAt(64)&&u--,f.charAt(f.length-2)===r.charAt(64)&&u--,u%1!==0)throw new Error("Invalid base64 input, bad content length.");var s;for(o.uint8array?s=new Uint8Array(u|0):s=new Array(u|0);N>4,b=(y&15)<<4|X>>2,Z=(X&3)<<6|m,s[G++]=v,X!==64&&(s[G++]=b),m!==64&&(s[G++]=Z);return s}},{"./support":419,"./utils":421}],391:[function(t,i,a){var l=t("./external"),o=t("./stream/DataWorker"),f=t("./stream/DataLengthProbe"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var Z=new o(l.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),p=this;return Z.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),Z},getCompressedWorker:function(){return new o(l.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(t,i,a){var l=t("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(r){return new l("STORE compression")},uncompressWorker:function(){return new l("STORE decompression")}},a.DEFLATE=t("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(t,i,a){var l=t("./utils");function o(){for(var b,Z=[],p=0;p<256;p++){b=p;for(var y=0;y<8;y++)b=b&1?3988292384^b>>>1:b>>>1;Z[p]=b}return Z}var r=o();function f(b,Z,p,y){var X=r,m=y+p;b=b^-1;for(var N=y;N>>8^X[(b^Z[N])&255];return b^-1}function v(b,Z,p,y){var X=r,m=y+p;b=b^-1;for(var N=y;N>>8^X[(b^Z.charCodeAt(N))&255];return b^-1}i.exports=function(Z,p){if(typeof Z>"u"||!Z.length)return 0;var y=l.getTypeOf(Z)!=="string";return y?f(p|0,Z,Z.length,0):v(p|0,Z,Z.length,0)}},{"./utils":421}],394:[function(t,i,a){a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],395:[function(t,i,a){var l=null;typeof Promise<"u"?l=Promise:l=t("lie"),i.exports={Promise:l}},{lie:425}],396:[function(t,i,a){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=l?"uint8array":"array";a.magic="\b\0";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},a.compressWorker=function(Z){return new b("Deflate",Z)},a.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(t,i,a){var l=t("../utils"),o=t("../stream/GenericWorker"),r=t("../utf8"),f=t("../crc32"),v=t("../signature"),b=function(d,u){var s="",h;for(h=0;h>>8;return s},Z=function(d,u){var s=d;return d||(s=u?16893:33204),(s&65535)<<16},p=function(d,u){return(d||0)&63},y=function(d,u,s,h,c,W){var M=d.file,I=d.compression,w=W!==r.utf8encode,C=l.transformTo("string",W(M.name)),x=l.transformTo("string",r.utf8encode(M.name)),R=M.comment,g=l.transformTo("string",W(R)),S=l.transformTo("string",r.utf8encode(R)),L=x.length!==M.name.length,V=S.length!==R.length,Y,T,J="",U="",K="",H=M.dir,k=M.date,F={crc32:0,compressedSize:0,uncompressedSize:0};(!u||s)&&(F.crc32=d.crc32,F.compressedSize=d.compressedSize,F.uncompressedSize=d.uncompressedSize);var O=0;u&&(O|=8),!w&&(L||V)&&(O|=2048);var Q=0,oe=0;H&&(Q|=16),c==="UNIX"?(oe=798,Q|=Z(M.unixPermissions,H)):(oe=20,Q|=p(M.dosPermissions)),Y=k.getUTCHours(),Y=Y<<6,Y=Y|k.getUTCMinutes(),Y=Y<<5,Y=Y|k.getUTCSeconds()/2,T=k.getUTCFullYear()-1980,T=T<<4,T=T|k.getUTCMonth()+1,T=T<<5,T=T|k.getUTCDate(),L&&(U=b(1,1)+b(f(C),4)+x,J+="up"+b(U.length,2)+U),V&&(K=b(1,1)+b(f(g),4)+S,J+="uc"+b(K.length,2)+K);var se="";se+=` -\0`,se+=b(O,2),se+=I.magic,se+=b(Y,2),se+=b(T,2),se+=b(F.crc32,4),se+=b(F.compressedSize,4),se+=b(F.uncompressedSize,4),se+=b(C.length,2),se+=b(J.length,2);var he=v.LOCAL_FILE_HEADER+se+C+J,pe=v.CENTRAL_FILE_HEADER+b(oe,2)+se+b(g.length,2)+"\0\0\0\0"+b(Q,4)+b(h,4)+C+J+g;return{fileRecord:he,dirRecord:pe}},X=function(d,u,s,h,c){var W="",M=l.transformTo("string",c(h));return W=v.CENTRAL_DIRECTORY_END+"\0\0\0\0"+b(d,2)+b(d,2)+b(u,4)+b(s,4)+b(M.length,2)+M,W},m=function(d){var u="";return u=v.DATA_DESCRIPTOR+b(d.crc32,4)+b(d.compressedSize,4)+b(d.uncompressedSize,4),u};function N(G,d,u,s){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=d,this.zipPlatform=u,this.encodeFileName=s,this.streamFiles=G,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}l.inherits(N,o),N.prototype.push=function(G){var d=G.meta.percent||0,u=this.entriesCount,s=this._sources.length;this.accumulate?this.contentBuffer.push(G):(this.bytesWritten+=G.data.length,o.prototype.push.call(this,{data:G.data,meta:{currentFile:this.currentFile,percent:u?(d+100*(u-s-1))/u:100}}))},N.prototype.openedSource=function(G){this.currentSourceOffset=this.bytesWritten,this.currentFile=G.file.name;var d=this.streamFiles&&!G.file.dir;if(d){var u=y(G,d,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:u.fileRecord,meta:{percent:0}})}else this.accumulate=!0},N.prototype.closedSource=function(G){this.accumulate=!1;var d=this.streamFiles&&!G.file.dir,u=y(G,d,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(u.dirRecord),d)this.push({data:m(G),meta:{percent:100}});else for(this.push({data:u.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},N.prototype.flush=function(){for(var G=this.bytesWritten,d=0;d"u")&&(C.binary=!x);var R=W instanceof b&&W.uncompressedSize===0;(R||C.dir||!W||W.length===0)&&(C.base64=!1,C.binary=!0,W="",C.compression="STORE",I="string");var g=null;W instanceof b||W instanceof r?g=W:y.isNode&&y.isStream(W)?g=new X(c,W):g=o.prepareContent(c,W,C.binary,C.optimizedBinaryString,C.base64);var S=new Z(c,g,C);this.files[c]=S},N=function(c){c.slice(-1)==="/"&&(c=c.substring(0,c.length-1));var W=c.lastIndexOf("/");return W>0?c.substring(0,W):""},G=function(c){return c.slice(-1)!=="/"&&(c+="/"),c},d=function(c,W){return W=typeof W<"u"?W:v.createFolders,c=G(c),this.files[c]||m.call(this,c,null,{dir:!0,createFolders:W}),this.files[c]};function u(h){return Object.prototype.toString.call(h)==="[object RegExp]"}var s={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(c){var W,M,I;for(W in this.files)this.files.hasOwnProperty(W)&&(I=this.files[W],M=W.slice(this.root.length,W.length),M&&W.slice(0,this.root.length)===this.root&&c(M,I))},filter:function(c){var W=[];return this.forEach(function(M,I){c(M,I)&&W.push(I)}),W},file:function(c,W,M){if(arguments.length===1)if(u(c)){var I=c;return this.filter(function(C,x){return!x.dir&&I.test(C)})}else{var w=this.files[this.root+c];return w&&!w.dir?w:null}else c=this.root+c,m.call(this,c,W,M);return this},folder:function(c){if(!c)return this;if(u(c))return this.filter(function(w,C){return C.dir&&c.test(w)});var W=this.root+c,M=d.call(this,W),I=this.clone();return I.root=M.name,I},remove:function(c){c=this.root+c;var W=this.files[c];if(W||(c.slice(-1)!=="/"&&(c+="/"),W=this.files[c]),W&&!W.dir)delete this.files[c];else for(var M=this.filter(function(w,C){return C.name.slice(0,c.length)===c}),I=0;I=0;--y)if(this.data[y]===v&&this.data[y+1]===b&&this.data[y+2]===Z&&this.data[y+3]===p)return y-this.zero;return-1},r.prototype.readAndCheckSignature=function(f){var v=f.charCodeAt(0),b=f.charCodeAt(1),Z=f.charCodeAt(2),p=f.charCodeAt(3),y=this.readData(4);return v===y[0]&&b===y[1]&&Z===y[2]&&p===y[3]},r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return[];var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],407:[function(t,i,a){var l=t("../utils");function o(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}o.prototype={checkOffset:function(f){this.checkIndex(this.index+f)},checkIndex:function(f){if(this.length=this.index;b--)v=(v<<8)+this.byteAt(b);return this.index+=f,v},readString:function(f){return l.transformTo("string",this.readData(f))},readData:function(f){},lastIndexOfSignature:function(f){},readAndCheckSignature:function(f){},readDate:function(){var f=this.readInt(4);return new Date(Date.UTC((f>>25&127)+1980,(f>>21&15)-1,f>>16&31,f>>11&31,f>>5&63,(f&31)<<1))}},i.exports=o},{"../utils":421}],408:[function(t,i,a){var l=t("./Uint8ArrayReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(t,i,a){var l=t("./DataReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.byteAt=function(f){return this.data.charCodeAt(this.zero+f)},r.prototype.lastIndexOfSignature=function(f){return this.data.lastIndexOf(f)-this.zero},r.prototype.readAndCheckSignature=function(f){var v=this.readData(4);return f===v},r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],410:[function(t,i,a){var l=t("./ArrayReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return new Uint8Array(0);var v=this.data.subarray(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./ArrayReader":406}],411:[function(t,i,a){var l=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=l.getTypeOf(Z);return l.checkSupport(p),p==="string"&&!o.uint8array?new f(Z):p==="nodebuffer"?new v(Z):o.uint8array?new b(l.transformTo("uint8array",Z)):new r(l.transformTo("array",Z))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(t,i,a){a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(t,i,a){var l=t("./GenericWorker"),o=t("../utils");function r(f){l.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,l),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":421,"./GenericWorker":417}],414:[function(t,i,a){var l=t("./GenericWorker"),o=t("../crc32"),r=t("../utils");function f(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}r.inherits(f,l),f.prototype.processChunk=function(v){this.streamInfo.crc32=o(v.data,this.streamInfo.crc32||0),this.push(v)},i.exports=f},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}l.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":421,"./GenericWorker":417}],416:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker"),r=16*1024;function f(v){o.call(this,"DataWorker");var b=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,v.then(function(Z){b.dataIsReady=!0,b.data=Z,b.max=Z&&Z.length||0,b.type=l.getTypeOf(Z),b.isPaused||b._tickAndRepeat()},function(Z){b.error(Z)})}l.inherits(f,o),f.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},f.prototype.resume=function(){return o.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0):!1},f.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},f.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var v=r,b=null,Z=Math.min(this.max,this.index+v);if(this.index>=this.max)return this.end();switch(this.type){case"string":b=this.data.substring(this.index,Z);break;case"uint8array":b=this.data.subarray(this.index,Z);break;case"array":case"nodebuffer":b=this.data.slice(this.index,Z);break}return this.index=Z,this.push({data:b,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=f},{"../utils":421,"./GenericWorker":417}],417:[function(t,i,a){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return this.isFinished?!1:(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,f){return this._listeners[r].push(f),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,f){if(this._listeners[r])for(var v=0;v "+r:r}},i.exports=l},{}],418:[function(t,i,a){(function(l){var o=t("../utils"),r=t("./ConvertWorker"),f=t("./GenericWorker"),v=t("../base64"),b=t("../support"),Z=t("../external"),p=null;if(b.nodestream)try{p=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function y(G,d,u){switch(G){case"blob":return o.newBlob(o.transformTo("arraybuffer",d),u);case"base64":return v.encode(d);default:return o.transformTo(G,d)}}function X(G,d){var u,s=0,h=null,c=0;for(u=0;u"u")a.blob=!1;else{var o=new ArrayBuffer(0);try{a.blob=new Blob([o],{type:"application/zip"}).size===0}catch{try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,f=new r;f.append(o),a.blob=f.getBlob("application/zip").size===0}catch{a.blob=!1}}}try{a.nodestream=!!t("readable-stream").Readable}catch{a.nodestream=!1}}).call(this,t("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(t,i,a){for(var l=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=b>=252?6:b>=248?5:b>=240?4:b>=224?3:b>=192?2:1;v[254]=v[254]=1;var Z=function(G){var d,u,s,h,c,W=G.length,M=0;for(h=0;h>>6,d[c++]=128|u&63):u<65536?(d[c++]=224|u>>>12,d[c++]=128|u>>>6&63,d[c++]=128|u&63):(d[c++]=240|u>>>18,d[c++]=128|u>>>12&63,d[c++]=128|u>>>6&63,d[c++]=128|u&63);return d},p=function(G,d){var u;for(d=d||G.length,d>G.length&&(d=G.length),u=d-1;u>=0&&(G[u]&192)===128;)u--;return u<0||u===0?d:u+v[G[u]]>d?u:d},y=function(G){var d,u,s,h,c=G.length,W=new Array(c*2);for(u=0,d=0;d4){W[u++]=65533,d+=h-1;continue}for(s&=h===2?31:h===3?15:7;h>1&&d1){W[u++]=65533;continue}s<65536?W[u++]=s:(s-=65536,W[u++]=55296|s>>10&1023,W[u++]=56320|s&1023)}return W.length!==u&&(W.subarray?W=W.subarray(0,u):W.length=u),l.applyFromCharCode(W)};a.utf8encode=function(G){return o.nodebuffer?r.newBufferFrom(G,"utf-8"):Z(G)},a.utf8decode=function(G){return o.nodebuffer?l.transformTo("nodebuffer",G).toString("utf-8"):(G=l.transformTo(o.uint8array?"uint8array":"array",G),y(G))};function X(){f.call(this,"utf-8 decode"),this.leftOver=null}l.inherits(X,f),X.prototype.processChunk=function(N){var G=l.transformTo(o.uint8array?"uint8array":"array",N.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var d=G;G=new Uint8Array(d.length+this.leftOver.length),G.set(this.leftOver,0),G.set(d,this.leftOver.length)}else G=this.leftOver.concat(G);this.leftOver=null}var u=p(G),s=G;u!==G.length&&(o.uint8array?(s=G.subarray(0,u),this.leftOver=G.subarray(u,G.length)):(s=G.slice(0,u),this.leftOver=G.slice(u,G.length))),this.push({data:a.utf8decode(s),meta:N.meta})},X.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=X;function m(){f.call(this,"utf-8 encode")}l.inherits(m,f),m.prototype.processChunk=function(N){this.push({data:a.utf8encode(N.data),meta:N.meta})},a.Utf8EncodeWorker=m},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(t,i,a){var l=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("set-immediate-shim"),v=t("./external");function b(G){var d=null;return l.uint8array?d=new Uint8Array(G.length):d=new Array(G.length),p(G,d)}a.newBlob=function(G,d){a.checkSupport("blob");try{return new Blob([G],{type:d})}catch{try{var u=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,s=new u;return s.append(G),s.getBlob(d)}catch{throw new Error("Bug : can't construct the Blob.")}}};function Z(G){return G}function p(G,d){for(var u=0;u1;)try{return y.stringifyByChunk(G,u,d)}catch{d=Math.floor(d/2)}return y.stringifyByChar(G)}a.applyFromCharCode=X;function m(G,d){for(var u=0;u"u"&&(G[u]=arguments[d][u]);return G},a.prepareContent=function(G,d,u,s,h){var c=v.Promise.resolve(d).then(function(W){var M=l.blob&&(W instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(W))!==-1);return M&&typeof FileReader<"u"?new v.Promise(function(I,w){var C=new FileReader;C.onload=function(x){I(x.target.result)},C.onerror=function(x){w(x.target.error)},C.readAsArrayBuffer(W)}):W});return c.then(function(W){var M=a.getTypeOf(W);return M?(M==="arraybuffer"?W=a.transformTo("uint8array",W):M==="string"&&(h?W=o.decode(W):u&&s!==!0&&(W=b(W))),W):v.Promise.reject(new Error("Can't read the data of '"+G+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(t,i,a){var l=t("./reader/readerFor"),o=t("./utils"),r=t("./signature"),f=t("./zipEntry");t("./utf8");var v=t("./support");function b(Z){this.files=[],this.loadOptions=Z}b.prototype={checkSignature:function(p){if(!this.reader.readAndCheckSignature(p)){this.reader.index-=4;var y=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+o.pretty(y)+", expected "+o.pretty(p)+")")}},isSignature:function(p,y){var X=this.reader.index;this.reader.setIndex(p);var m=this.reader.readString(4),N=m===y;return this.reader.setIndex(X),N},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var p=this.reader.readData(this.zipCommentLength),y=v.uint8array?"uint8array":"array",X=o.transformTo(y,p);this.zipComment=this.loadOptions.decodeFileName(X)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var p=this.zip64EndOfCentralSize-44,y=0,X,m,N;y1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var p,y;for(p=0;p0)this.isSignature(X,r.CENTRAL_FILE_HEADER)||(this.reader.zero=N);else if(N<0)throw new Error("Corrupted zip: missing "+Math.abs(N)+" bytes.")},prepareReader:function(p){this.reader=l(p)},load:function(p){this.prepareReader(p),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},i.exports=b},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(t,i,a){var l=t("./reader/readerFor"),o=t("./utils"),r=t("./compressedObject"),f=t("./crc32"),v=t("./utf8"),b=t("./compressions"),Z=t("./support"),p=0,y=3,X=function(G){for(var d in b)if(b.hasOwnProperty(d)&&b[d].magic===G)return b[d];return null};function m(N,G){this.options=N,this.loadOptions=G}m.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(G){var d,u;if(G.skip(22),this.fileNameLength=G.readInt(2),u=G.readInt(2),this.fileName=G.readData(this.fileNameLength),G.skip(u),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(d=X(this.compressionMethod),d===null)throw new Error("Corrupted zip : compression "+o.pretty(this.compressionMethod)+" unknown (inner file : "+o.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,d,G.readData(this.compressedSize))},readCentralPart:function(G){this.versionMadeBy=G.readInt(2),G.skip(2),this.bitFlag=G.readInt(2),this.compressionMethod=G.readString(2),this.date=G.readDate(),this.crc32=G.readInt(4),this.compressedSize=G.readInt(4),this.uncompressedSize=G.readInt(4);var d=G.readInt(2);if(this.extraFieldsLength=G.readInt(2),this.fileCommentLength=G.readInt(2),this.diskNumberStart=G.readInt(2),this.internalFileAttributes=G.readInt(2),this.externalFileAttributes=G.readInt(4),this.localHeaderOffset=G.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");G.skip(d),this.readExtraFields(G),this.parseZIP64ExtraField(G),this.fileComment=G.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var G=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),G===p&&(this.dosPermissions=this.externalFileAttributes&63),G===y&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(G){if(this.extraFields[1]){var d=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=d.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=d.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=d.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=d.readInt(4))}},readExtraFields:function(G){var d=G.index+this.extraFieldsLength,u,s,h;for(this.extraFields||(this.extraFields={});G.index+4"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,p=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,y=Z||p||Function("return this")(),X=Object.prototype,m=X.toString,N=y.Symbol,G=N?N.prototype:void 0,d=G?G.toString:void 0;function u(M){if(typeof M=="string")return M;if(h(M))return d?d.call(M):"";var I=M+"";return I=="0"&&1/M==-r?"-0":I}function s(M){return!!M&&o(M)=="object"}function h(M){return o(M)=="symbol"||s(M)&&m.call(M)==f}function c(M){return M==null?"":u(M)}function W(M){return M=c(M),M&&b.test(M)?M.replace(v,"\\$&"):M}i.exports=W}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(t,i,a){(function(l){function o(ge){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(st){return typeof st}:o=function(st){return st&&typeof Symbol=="function"&&st.constructor===Symbol&&st!==Symbol.prototype?"symbol":typeof st},o(ge)}var r=200,f="Expected a function",v="__lodash_hash_undefined__",b=1,Z=2,p=1/0,y=9007199254740991,X="[object Arguments]",m="[object Array]",N="[object Boolean]",G="[object Date]",d="[object Error]",u="[object Function]",s="[object GeneratorFunction]",h="[object Map]",c="[object Number]",W="[object Object]",M="[object Promise]",I="[object RegExp]",w="[object Set]",C="[object String]",x="[object Symbol]",R="[object WeakMap]",g="[object ArrayBuffer]",S="[object DataView]",L="[object Float32Array]",V="[object Float64Array]",Y="[object Int8Array]",T="[object Int16Array]",J="[object Int32Array]",U="[object Uint8Array]",K="[object Uint8ClampedArray]",H="[object Uint16Array]",k="[object Uint32Array]",F=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O=/^\w*$/,Q=/^\./,oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/[\\^$.*+?()[\]{}|]/g,he=/\\(\\)?/g,pe=/^\[object .+?Constructor\]$/,re=/^(?:0|[1-9]\d*)$/,_={};_[L]=_[V]=_[Y]=_[T]=_[J]=_[U]=_[K]=_[H]=_[k]=!0,_[X]=_[m]=_[g]=_[N]=_[S]=_[G]=_[d]=_[u]=_[h]=_[c]=_[W]=_[I]=_[w]=_[C]=_[R]=!1;var E=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,$=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,ae=E||$||Function("return this")(),le=(typeof a>"u"?"undefined":o(a))=="object"&&a&&!a.nodeType&&a,ee=le&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,te=ee&&ee.exports===le,be=te&&E.process,ne=function(){try{return be&&be.binding("util")}catch{}}(),B=ne&&ne.isTypedArray;function q(ge,Ee,st,It){for(var an=-1,Et=ge?ge.length:0;++an-1}function Gl(ge,Ee){var st=this.__data__,It=il(st,ge);return It<0?st.push([ge,Ee]):st[It][1]=Ee,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(ge){var Ee=-1,st=ge?ge.length:0;for(this.clear();++Eeli))return!1;var Ji=Et.get(ge);if(Ji&&Et.get(Ee))return Ji==Ee;var Qi=-1,Di=!0,Bi=an&b?new ht:void 0;for(Et.set(ge,Ee),Et.set(Ee,ge);++Qi-1&&ge%1==0&&ge-1&&ge%1==0&&ge<=y}function Qn(ge){var Ee=o(ge);return!!ge&&(Ee=="object"||Ee=="function")}function qn(ge){return!!ge&&o(ge)=="object"}function Ti(ge){return o(ge)=="symbol"||qn(ge)&&Ze.call(ge)==x}var yi=B?Je(B):Xl;function Hl(ge){return ge==null?"":Tl(ge)}function Zi(ge,Ee,st){var It=ge==null?void 0:_t(ge,Ee);return It===void 0?st:It}function io(ge,Ee){return ge!=null&&no(ge,Ee,zt)}function Pl(ge){return Dn(ge)?Ll(ge):ll(ge)}function al(ge){return ge}function Tr(ge){return Un(ge)?ve(et(ge)):dl(ge)}i.exports=Lt}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(t,i,a){function l(Z){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(y){return typeof y}:l=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},l(Z)}var o="[object Boolean]",r=Object.prototype,f=r.toString;function v(Z){return Z===!0||Z===!1||b(Z)&&f.call(Z)==o}function b(Z){return!!Z&&l(Z)=="object"}i.exports=v},{}],429:[function(t,i,a){(function(l){function o(je){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(mt){return typeof mt}:o=function(mt){return mt&&typeof Symbol=="function"&&mt.constructor===Symbol&&mt!==Symbol.prototype?"symbol":typeof mt},o(je)}var r=200,f="__lodash_hash_undefined__",v=1,b=2,Z=9007199254740991,p="[object Arguments]",y="[object Array]",X="[object AsyncFunction]",m="[object Boolean]",N="[object Date]",G="[object Error]",d="[object Function]",u="[object GeneratorFunction]",s="[object Map]",h="[object Number]",c="[object Null]",W="[object Object]",M="[object Promise]",I="[object Proxy]",w="[object RegExp]",C="[object Set]",x="[object String]",R="[object Symbol]",g="[object Undefined]",S="[object WeakMap]",L="[object ArrayBuffer]",V="[object DataView]",Y="[object Float32Array]",T="[object Float64Array]",J="[object Int8Array]",U="[object Int16Array]",K="[object Int32Array]",H="[object Uint8Array]",k="[object Uint8ClampedArray]",F="[object Uint16Array]",O="[object Uint32Array]",Q=/[\\^$.*+?()[\]{}|]/g,oe=/^\[object .+?Constructor\]$/,se=/^(?:0|[1-9]\d*)$/,he={};he[Y]=he[T]=he[J]=he[U]=he[K]=he[H]=he[k]=he[F]=he[O]=!0,he[p]=he[y]=he[L]=he[m]=he[V]=he[N]=he[G]=he[d]=he[s]=he[h]=he[W]=he[w]=he[C]=he[x]=he[S]=!1;var pe=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,re=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,_=pe||re||Function("return this")(),E=(typeof a>"u"?"undefined":o(a))=="object"&&a&&!a.nodeType&&a,$=E&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,ae=$&&$.exports===E,le=ae&&pe.process,ee=function(){try{return le&&le.binding&&le.binding("util")}catch{}}(),te=ee&&ee.isTypedArray;function be(je,et){for(var mt=-1,Lt=je==null?0:je.length,Jn=0,sn=[];++mt-1}function Gl(je,et){var mt=this.__data__,Lt=il(mt,je);return Lt<0?(++this.size,mt.push([je,et])):mt[Lt][1]=et,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(je){var et=-1,mt=je==null?0:je.length;for(this.clear();++et_n))return!1;var ni=sn.get(je);if(ni&&sn.get(et))return ni==et;var Fi=-1,fi=!0,Qn=mt&b?new ht:void 0;for(sn.set(je,et),sn.set(et,je);++Fi<_n;){var qn=je[Fi],Ti=et[Fi];if(Lt)var yi=ii?Lt(Ti,qn,Fi,et,je,sn):Lt(qn,Ti,Fi,je,et,sn);if(yi!==void 0){if(yi)continue;fi=!1;break}if(Qn){if(!B(et,function(Hl,Zi){if(!ve(Qn,Zi)&&(qn===Hl||Jn(qn,Hl,mt,Lt,sn)))return Qn.push(Zi)})){fi=!1;break}}else if(!(qn===Ti||Jn(qn,Ti,mt,Lt,sn))){fi=!1;break}}return sn.delete(je),sn.delete(et),fi}function si(je,et,mt,Lt,Jn,sn,ii){switch(mt){case V:if(je.byteLength!=et.byteLength||je.byteOffset!=et.byteOffset)return!1;je=je.buffer,et=et.buffer;case L:return!(je.byteLength!=et.byteLength||!sn(new Ce(je),new Ce(et)));case m:case N:case h:return xl(+je,+et);case G:return je.name==et.name&&je.message==et.message;case w:case x:return je==et+"";case s:var _n=Je;case C:var Dn=Lt&v;if(_n||(_n=ke),je.size!=et.size&&!Dn)return!1;var ni=ii.get(je);if(ni)return ni==et;Lt|=b,ii.set(je,et);var Fi=$t(_n(je),_n(et),Lt,Jn,sn,ii);return ii.delete(je),Fi;case R:if(Ct)return Ct.call(je)==Ct.call(et)}return!1}function Ul(je,et,mt,Lt,Jn,sn){var ii=mt&v,_n=Xl(je),Dn=_n.length,ni=Xl(et),Fi=ni.length;if(Dn!=Fi&&!ii)return!1;for(var fi=Dn;fi--;){var Qn=_n[fi];if(!(ii?Qn in et:De.call(et,Qn)))return!1}var qn=sn.get(je);if(qn&&sn.get(et))return qn==et;var Ti=!0;sn.set(je,et),sn.set(et,je);for(var yi=ii;++fi-1&&je%1==0&&je-1&&je%1==0&&je<=Z}function Un(je){var et=o(je);return je!=null&&(et=="object"||et=="function")}function sr(je){return je!=null&&o(je)=="object"}var Jo=te?ue(te):zt;function Do(je){return Ls(je)?Ll(je):Ht(je)}function Oo(){return[]}function ja(){return!1}i.exports=oa}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(t,i,a){(function(l){function o(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(x){return typeof x}:o=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},o(w)}var r="[object AsyncFunction]",f="[object Function]",v="[object GeneratorFunction]",b="[object Null]",Z="[object Proxy]",p="[object Undefined]",y=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,X=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,m=y||X||Function("return this")(),N=Object.prototype,G=N.hasOwnProperty,d=N.toString,u=m.Symbol,s=u?u.toStringTag:void 0;function h(w){return w==null?w===void 0?p:b:s&&s in Object(w)?c(w):W(w)}function c(w){var C=G.call(w,s),x=w[s];try{w[s]=void 0;var R=!0}catch{}var g=d.call(w);return R&&(C?w[s]=x:delete w[s]),g}function W(w){return d.call(w)}function M(w){if(!I(w))return!1;var C=h(w);return C==f||C==v||C==r||C==Z}function I(w){var C=o(w);return w!=null&&(C=="object"||C=="function")}i.exports=M}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(t,i,a){function l(o){return o==null}i.exports=l},{}],432:[function(t,i,a){function l(o){return o===void 0}i.exports=l},{}],433:[function(t,i,a){(function(l){function o(Me){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(Ze){return typeof Ze}:o=function(Ze){return Ze&&typeof Symbol=="function"&&Ze.constructor===Symbol&&Ze!==Symbol.prototype?"symbol":typeof Ze},o(Me)}var r=200,f="__lodash_hash_undefined__",v=1/0,b="[object Function]",Z="[object GeneratorFunction]",p=/[\\^$.*+?()[\]{}|]/g,y=/^\[object .+?Constructor\]$/,X=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,m=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,N=X||m||Function("return this")();function G(Me,Ie){var Ze=Me?Me.length:0;return!!Ze&&s(Me,Ie,0)>-1}function d(Me,Ie,Ze){for(var Ce=-1,ye=Me?Me.length:0;++Ce-1}function E(Me,Ie){var Ze=this.__data__,Ce=ue(Ze,Me);return Ce<0?Ze.push([Me,Ie]):Ze[Ce][1]=Ie,this}se.prototype.clear=he,se.prototype.delete=pe,se.prototype.get=re,se.prototype.has=_,se.prototype.set=E;function $(Me){var Ie=-1,Ze=Me?Me.length:0;for(this.clear();++Ie=r){var Ke=Ie?null:Je(Me);if(Ke)return I(Ke);qe=!1,ye=c,Oe=new ne}else Oe=Ie?[]:ie;e:for(;++Ce56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var m=r.allocUnsafe(16);return m.writeInt32LE(this._a,0),m.writeInt32LE(this._b,4),m.writeInt32LE(this._c,8),m.writeInt32LE(this._d,12),m};function b(m,N){return m<>>32-N}function Z(m,N,G,d,u,s,h){return b(m+(N&G|~N&d)+u+s|0,h)+N|0}function p(m,N,G,d,u,s,h){return b(m+(N&d|G&~d)+u+s|0,h)+N|0}function y(m,N,G,d,u,s,h){return b(m+(N^G^d)+u+s|0,h)+N|0}function X(m,N,G,d,u,s,h){return b(m+(G^(N|~d))+u+s|0,h)+N|0}i.exports=v},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(t,i,a){var l=t("bn.js"),o=t("brorand");function r(f){this.rand=f||new o.Rand}i.exports=r,r.create=function(v){return new r(v)},r.prototype._randbelow=function(v){var b=v.bitLength(),Z=Math.ceil(b/8);do var p=new l(this.rand.generate(Z));while(p.cmp(v)>=0);return p},r.prototype._randrange=function(v,b){var Z=b.sub(v);return v.add(this._randbelow(Z))},r.prototype.test=function(v,b,Z){var p=v.bitLength(),y=l.mont(v),X=new l(1).toRed(y);b||(b=Math.max(1,p/48|0));for(var m=v.subn(1),N=0;!m.testn(N);N++);for(var G=v.shrn(N),d=m.toRed(y),u=!0;b>0;b--){var s=this._randrange(new l(2),m);Z&&Z(s);var h=s.toRed(y).redPow(G);if(!(h.cmp(X)===0||h.cmp(d)===0)){for(var c=1;c0;b--){var d=this._randrange(new l(2),X),u=v.gcd(d);if(u.cmpn(1)!==0)return u;var s=d.toRed(p).redPow(N);if(!(s.cmp(y)===0||s.cmp(G)===0)){for(var h=1;h>8,m=y&255;X?Z.push(X,m):Z.push(m)}return Z}l.toArray=o;function r(v){return v.length===1?"0"+v:v}l.zero2=r;function f(v){for(var b="",Z=0;Z0?M.windowBits=-M.windowBits:M.gzip&&M.windowBits>0&&M.windowBits<16&&(M.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new v,this.strm.avail_out=0;var I=l.deflateInit2(this.strm,M.level,M.method,M.windowBits,M.memLevel,M.strategy);if(I!==y)throw new Error(f[I]);if(M.header&&l.deflateSetHeader(this.strm,M.header),M.dictionary){var w;if(typeof M.dictionary=="string"?w=r.string2buf(M.dictionary):b.call(M.dictionary)==="[object ArrayBuffer]"?w=new Uint8Array(M.dictionary):w=M.dictionary,I=l.deflateSetDictionary(this.strm,w),I!==y)throw new Error(f[I]);this._dict_set=!0}}u.prototype.push=function(W,M){var I=this.strm,w=this.options.chunkSize,C,x;if(this.ended)return!1;x=M===~~M?M:M===!0?p:Z,typeof W=="string"?I.input=r.string2buf(W):b.call(W)==="[object ArrayBuffer]"?I.input=new Uint8Array(W):I.input=W,I.next_in=0,I.avail_in=I.input.length;do{if(I.avail_out===0&&(I.output=new o.Buf8(w),I.next_out=0,I.avail_out=w),C=l.deflate(I,x),C!==X&&C!==y)return this.onEnd(C),this.ended=!0,!1;(I.avail_out===0||I.avail_in===0&&(x===p||x===m))&&(this.options.to==="string"?this.onData(r.buf2binstring(o.shrinkBuf(I.output,I.next_out))):this.onData(o.shrinkBuf(I.output,I.next_out)))}while((I.avail_in>0||I.avail_out===0)&&C!==X);return x===p?(C=l.deflateEnd(this.strm),this.onEnd(C),this.ended=!0,C===y):(x===m&&(this.onEnd(y),I.avail_out=0),!0)},u.prototype.onData=function(W){this.chunks.push(W)},u.prototype.onEnd=function(W){W===y&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=W,this.msg=this.strm.msg};function s(W,M){var I=new u(M);if(I.push(W,!0),I.err)throw I.msg||f[I.err];return I.result}function h(W,M){return M=M||{},M.raw=!0,s(W,M)}function c(W,M){return M=M||{},M.gzip=!0,s(W,M)}a.Deflate=u,a.deflate=s,a.deflateRaw=h,a.gzip=c},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(t,i,a){var l=t("./zlib/inflate"),o=t("./utils/common"),r=t("./utils/strings"),f=t("./zlib/constants"),v=t("./zlib/messages"),b=t("./zlib/zstream"),Z=t("./zlib/gzheader"),p=Object.prototype.toString;function y(N){if(!(this instanceof y))return new y(N);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},N||{});var G=this.options;G.raw&&G.windowBits>=0&&G.windowBits<16&&(G.windowBits=-G.windowBits,G.windowBits===0&&(G.windowBits=-15)),G.windowBits>=0&&G.windowBits<16&&!(N&&N.windowBits)&&(G.windowBits+=32),G.windowBits>15&&G.windowBits<48&&(G.windowBits&15||(G.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new b,this.strm.avail_out=0;var d=l.inflateInit2(this.strm,G.windowBits);if(d!==f.Z_OK)throw new Error(v[d]);if(this.header=new Z,l.inflateGetHeader(this.strm,this.header),G.dictionary&&(typeof G.dictionary=="string"?G.dictionary=r.string2buf(G.dictionary):p.call(G.dictionary)==="[object ArrayBuffer]"&&(G.dictionary=new Uint8Array(G.dictionary)),G.raw&&(d=l.inflateSetDictionary(this.strm,G.dictionary),d!==f.Z_OK)))throw new Error(v[d])}y.prototype.push=function(N,G){var d=this.strm,u=this.options.chunkSize,s=this.options.dictionary,h,c,W,M,I,w=!1;if(this.ended)return!1;c=G===~~G?G:G===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof N=="string"?d.input=r.binstring2buf(N):p.call(N)==="[object ArrayBuffer]"?d.input=new Uint8Array(N):d.input=N,d.next_in=0,d.avail_in=d.input.length;do{if(d.avail_out===0&&(d.output=new o.Buf8(u),d.next_out=0,d.avail_out=u),h=l.inflate(d,f.Z_NO_FLUSH),h===f.Z_NEED_DICT&&s&&(h=l.inflateSetDictionary(this.strm,s)),h===f.Z_BUF_ERROR&&w===!0&&(h=f.Z_OK,w=!1),h!==f.Z_STREAM_END&&h!==f.Z_OK)return this.onEnd(h),this.ended=!0,!1;d.next_out&&(d.avail_out===0||h===f.Z_STREAM_END||d.avail_in===0&&(c===f.Z_FINISH||c===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=r.utf8border(d.output,d.next_out),M=d.next_out-W,I=r.buf2string(d.output,W),d.next_out=M,d.avail_out=u-M,M&&o.arraySet(d.output,d.output,W,M,0),this.onData(I)):this.onData(o.shrinkBuf(d.output,d.next_out))),d.avail_in===0&&d.avail_out===0&&(w=!0)}while((d.avail_in>0||d.avail_out===0)&&h!==f.Z_STREAM_END);return h===f.Z_STREAM_END&&(c=f.Z_FINISH),c===f.Z_FINISH?(h=l.inflateEnd(this.strm),this.onEnd(h),this.ended=!0,h===f.Z_OK):(c===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),d.avail_out=0),!0)},y.prototype.onData=function(N){this.chunks.push(N)},y.prototype.onEnd=function(N){N===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=N,this.msg=this.strm.msg};function X(N,G){var d=new y(G);if(d.push(N,!0),d.err)throw d.msg||v[d.err];return d.result}function m(N,G){return G=G||{},G.raw=!0,X(N,G)}a.Inflate=y,a.inflate=X,a.inflateRaw=m,a.ungzip=X},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(t,i,a){function l(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(p){return typeof p}:l=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},l(b)}var o=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function r(b,Z){return Object.prototype.hasOwnProperty.call(b,Z)}a.assign=function(b){for(var Z=Array.prototype.slice.call(arguments,1);Z.length;){var p=Z.shift();if(p){if(l(p)!=="object")throw new TypeError(p+"must be non-object");for(var y in p)r(p,y)&&(b[y]=p[y])}}return b},a.shrinkBuf=function(b,Z){return b.length===Z?b:b.subarray?b.subarray(0,Z):(b.length=Z,b)};var f={arraySet:function(Z,p,y,X,m){if(p.subarray&&Z.subarray){Z.set(p.subarray(y,y+X),m);return}for(var N=0;N=252?6:v>=248?5:v>=240?4:v>=224?3:v>=192?2:1;f[254]=f[254]=1,a.string2buf=function(Z){var p,y,X,m,N,G=Z.length,d=0;for(m=0;m>>6,p[N++]=128|y&63):y<65536?(p[N++]=224|y>>>12,p[N++]=128|y>>>6&63,p[N++]=128|y&63):(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63,p[N++]=128|y>>>6&63,p[N++]=128|y&63);return p};function b(Z,p){if(p<65534&&(Z.subarray&&r||!Z.subarray&&o))return String.fromCharCode.apply(null,l.shrinkBuf(Z,p));for(var y="",X=0;X4){d[X++]=65533,y+=N-1;continue}for(m&=N===2?31:N===3?15:7;N>1&&y1){d[X++]=65533;continue}m<65536?d[X++]=m:(m-=65536,d[X++]=55296|m>>10&1023,d[X++]=56320|m&1023)}return b(d,X)},a.utf8border=function(Z,p){var y;for(p=p||Z.length,p>Z.length&&(p=Z.length),y=p-1;y>=0&&(Z[y]&192)===128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":442}],444:[function(t,i,a){function l(o,r,f,v){for(var b=o&65535|0,Z=o>>>16&65535|0,p=0;f!==0;){p=f>2e3?2e3:f,f-=p;do b=b+r[v++]|0,Z=Z+b|0;while(--p);b%=65521,Z%=65521}return b|Z<<16|0}i.exports=l},{}],445:[function(t,i,a){i.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(t,i,a){function l(){for(var f,v=[],b=0;b<256;b++){f=b;for(var Z=0;Z<8;Z++)f=f&1?3988292384^f>>>1:f>>>1;v[b]=f}return v}var o=l();function r(f,v,b,Z){var p=o,y=Z+b;f^=-1;for(var X=Z;X>>8^p[(f^v[X])&255];return f^-1}i.exports=r},{}],447:[function(t,i,a){var l=t("../utils/common"),o=t("./trees"),r=t("./adler32"),f=t("./crc32"),v=t("./messages"),b=0,Z=1,p=3,y=4,X=5,m=0,N=1,G=-2,d=-3,u=-5,s=-1,h=1,c=2,W=3,M=4,I=0,w=2,C=8,x=9,R=15,g=8,S=29,L=256,V=L+1+S,Y=30,T=19,J=2*V+1,U=15,K=3,H=258,k=H+K+1,F=32,O=42,Q=69,oe=73,se=91,he=103,pe=113,re=666,_=1,E=2,$=3,ae=4,le=3;function ee(ie,Oe){return ie.msg=v[Oe],Oe}function te(ie){return(ie<<1)-(ie>4?9:0)}function be(ie){for(var Oe=ie.length;--Oe>=0;)ie[Oe]=0}function ne(ie){var Oe=ie.state,Ke=Oe.pending;Ke>ie.avail_out&&(Ke=ie.avail_out),Ke!==0&&(l.arraySet(ie.output,Oe.pending_buf,Oe.pending_out,Ke,ie.next_out),ie.next_out+=Ke,Oe.pending_out+=Ke,ie.total_out+=Ke,ie.avail_out-=Ke,Oe.pending-=Ke,Oe.pending===0&&(Oe.pending_out=0))}function B(ie,Oe){o._tr_flush_block(ie,ie.block_start>=0?ie.block_start:-1,ie.strstart-ie.block_start,Oe),ie.block_start=ie.strstart,ne(ie.strm)}function q(ie,Oe){ie.pending_buf[ie.pending++]=Oe}function ue(ie,Oe){ie.pending_buf[ie.pending++]=Oe>>>8&255,ie.pending_buf[ie.pending++]=Oe&255}function ve(ie,Oe,Ke,Xe){var Re=ie.avail_in;return Re>Xe&&(Re=Xe),Re===0?0:(ie.avail_in-=Re,l.arraySet(Oe,ie.input,ie.next_in,Re,Ke),ie.state.wrap===1?ie.adler=r(ie.adler,Oe,Re,Ke):ie.state.wrap===2&&(ie.adler=f(ie.adler,Oe,Re,Ke)),ie.next_in+=Re,ie.total_in+=Re,Re)}function Ge(ie,Oe){var Ke=ie.max_chain_length,Xe=ie.strstart,Re,Ae,ct=ie.prev_length,lt=ie.nice_match,ot=ie.strstart>ie.w_size-k?ie.strstart-(ie.w_size-k):0,wt=ie.window,Mt=ie.w_mask,xt=ie.prev,Gt=ie.strstart+H,Zt=wt[Xe+ct-1],Tt=wt[Xe+ct];ie.prev_length>=ie.good_match&&(Ke>>=2),lt>ie.lookahead&&(lt=ie.lookahead);do if(Re=Oe,!(wt[Re+ct]!==Tt||wt[Re+ct-1]!==Zt||wt[Re]!==wt[Xe]||wt[++Re]!==wt[Xe+1])){Xe+=2,Re++;do;while(wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&Xect){if(ie.match_start=Oe,ct=Ae,Ae>=lt)break;Zt=wt[Xe+ct-1],Tt=wt[Xe+ct]}}while((Oe=xt[Oe&Mt])>ot&&--Ke!==0);return ct<=ie.lookahead?ct:ie.lookahead}function Je(ie){var Oe=ie.w_size,Ke,Xe,Re,Ae,ct;do{if(Ae=ie.window_size-ie.lookahead-ie.strstart,ie.strstart>=Oe+(Oe-k)){l.arraySet(ie.window,ie.window,Oe,Oe,0),ie.match_start-=Oe,ie.strstart-=Oe,ie.block_start-=Oe,Xe=ie.hash_size,Ke=Xe;do Re=ie.head[--Ke],ie.head[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Xe=Oe,Ke=Xe;do Re=ie.prev[--Ke],ie.prev[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Ae+=Oe}if(ie.strm.avail_in===0)break;if(Xe=ve(ie.strm,ie.window,ie.strstart+ie.lookahead,Ae),ie.lookahead+=Xe,ie.lookahead+ie.insert>=K)for(ct=ie.strstart-ie.insert,ie.ins_h=ie.window[ct],ie.ins_h=(ie.ins_h<ie.pending_buf_size-5&&(Ke=ie.pending_buf_size-5);;){if(ie.lookahead<=1){if(Je(ie),ie.lookahead===0&&Oe===b)return _;if(ie.lookahead===0)break}ie.strstart+=ie.lookahead,ie.lookahead=0;var Xe=ie.block_start+Ke;if((ie.strstart===0||ie.strstart>=Xe)&&(ie.lookahead=ie.strstart-Xe,ie.strstart=Xe,B(ie,!1),ie.strm.avail_out===0)||ie.strstart-ie.block_start>=ie.w_size-k&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):(ie.strstart>ie.block_start&&(B(ie,!1),ie.strm.avail_out===0),_)}function ke(ie,Oe){for(var Ke,Xe;;){if(ie.lookahead=K&&(ie.ins_h=(ie.ins_h<=K)if(Xe=o._tr_tally(ie,ie.strstart-ie.match_start,ie.match_length-K),ie.lookahead-=ie.match_length,ie.match_length<=ie.max_lazy_match&&ie.lookahead>=K){ie.match_length--;do ie.strstart++,ie.ins_h=(ie.ins_h<=K&&(ie.ins_h=(ie.ins_h<4096)&&(ie.match_length=K-1)),ie.prev_length>=K&&ie.match_length<=ie.prev_length){Re=ie.strstart+ie.lookahead-K,Xe=o._tr_tally(ie,ie.strstart-1-ie.prev_match,ie.prev_length-K),ie.lookahead-=ie.prev_length-1,ie.prev_length-=2;do++ie.strstart<=Re&&(ie.ins_h=(ie.ins_h<=K&&ie.strstart>0&&(Re=ie.strstart-1,Xe=ct[Re],Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re])){Ae=ie.strstart+H;do;while(Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Reie.lookahead&&(ie.match_length=ie.lookahead)}if(ie.match_length>=K?(Ke=o._tr_tally(ie,1,ie.match_length-K),ie.lookahead-=ie.match_length,ie.strstart+=ie.match_length,ie.match_length=0):(Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++),Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function Te(ie,Oe){for(var Ke;;){if(ie.lookahead===0&&(Je(ie),ie.lookahead===0)){if(Oe===b)return _;break}if(ie.match_length=0,Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++,Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function we(ie,Oe,Ke,Xe,Re){this.good_length=ie,this.max_lazy=Oe,this.nice_length=Ke,this.max_chain=Xe,this.func=Re}var Se;Se=[new we(0,0,0,0,xe),new we(4,4,8,4,ke),new we(4,5,16,8,ke),new we(4,6,32,32,ke),new we(4,4,16,16,Pe),new we(8,16,32,32,Pe),new we(8,16,128,128,Pe),new we(8,32,128,256,Pe),new we(32,128,258,1024,Pe),new we(32,258,258,4096,Pe)];function De(ie){ie.window_size=2*ie.w_size,be(ie.head),ie.max_lazy_match=Se[ie.level].max_lazy,ie.good_match=Se[ie.level].good_length,ie.nice_match=Se[ie.level].nice_length,ie.max_chain_length=Se[ie.level].max_chain,ie.strstart=0,ie.block_start=0,ie.lookahead=0,ie.insert=0,ie.match_length=ie.prev_length=K-1,ie.match_available=0,ie.ins_h=0}function me(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=C,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new l.Buf16(J*2),this.dyn_dtree=new l.Buf16((2*Y+1)*2),this.bl_tree=new l.Buf16((2*T+1)*2),be(this.dyn_ltree),be(this.dyn_dtree),be(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new l.Buf16(U+1),this.heap=new l.Buf16(2*V+1),be(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new l.Buf16(2*V+1),be(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ve(ie){var Oe;return!ie||!ie.state?ee(ie,G):(ie.total_in=ie.total_out=0,ie.data_type=w,Oe=ie.state,Oe.pending=0,Oe.pending_out=0,Oe.wrap<0&&(Oe.wrap=-Oe.wrap),Oe.status=Oe.wrap?O:pe,ie.adler=Oe.wrap===2?0:1,Oe.last_flush=b,o._tr_init(Oe),m)}function Me(ie){var Oe=Ve(ie);return Oe===m&&De(ie.state),Oe}function Ie(ie,Oe){return!ie||!ie.state||ie.state.wrap!==2?G:(ie.state.gzhead=Oe,m)}function Ze(ie,Oe,Ke,Xe,Re,Ae){if(!ie)return G;var ct=1;if(Oe===s&&(Oe=6),Xe<0?(ct=0,Xe=-Xe):Xe>15&&(ct=2,Xe-=16),Re<1||Re>x||Ke!==C||Xe<8||Xe>15||Oe<0||Oe>9||Ae<0||Ae>M)return ee(ie,G);Xe===8&&(Xe=9);var lt=new me;return ie.state=lt,lt.strm=ie,lt.wrap=ct,lt.gzhead=null,lt.w_bits=Xe,lt.w_size=1<X||Oe<0)return ie?ee(ie,G):G;if(Xe=ie.state,!ie.output||!ie.input&&ie.avail_in!==0||Xe.status===re&&Oe!==y)return ee(ie,ie.avail_out===0?u:G);if(Xe.strm=ie,Ke=Xe.last_flush,Xe.last_flush=Oe,Xe.status===O)if(Xe.wrap===2)ie.adler=0,q(Xe,31),q(Xe,139),q(Xe,8),Xe.gzhead?(q(Xe,(Xe.gzhead.text?1:0)+(Xe.gzhead.hcrc?2:0)+(Xe.gzhead.extra?4:0)+(Xe.gzhead.name?8:0)+(Xe.gzhead.comment?16:0)),q(Xe,Xe.gzhead.time&255),q(Xe,Xe.gzhead.time>>8&255),q(Xe,Xe.gzhead.time>>16&255),q(Xe,Xe.gzhead.time>>24&255),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,Xe.gzhead.os&255),Xe.gzhead.extra&&Xe.gzhead.extra.length&&(q(Xe,Xe.gzhead.extra.length&255),q(Xe,Xe.gzhead.extra.length>>8&255)),Xe.gzhead.hcrc&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending,0)),Xe.gzindex=0,Xe.status=Q):(q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,le),Xe.status=pe);else{var ct=C+(Xe.w_bits-8<<4)<<8,lt=-1;Xe.strategy>=c||Xe.level<2?lt=0:Xe.level<6?lt=1:Xe.level===6?lt=2:lt=3,ct|=lt<<6,Xe.strstart!==0&&(ct|=F),ct+=31-ct%31,Xe.status=pe,ue(Xe,ct),Xe.strstart!==0&&(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ie.adler=1}if(Xe.status===Q)if(Xe.gzhead.extra){for(Re=Xe.pending;Xe.gzindex<(Xe.gzhead.extra.length&65535)&&!(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size));)q(Xe,Xe.gzhead.extra[Xe.gzindex]&255),Xe.gzindex++;Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Xe.gzindex===Xe.gzhead.extra.length&&(Xe.gzindex=0,Xe.status=oe)}else Xe.status=oe;if(Xe.status===oe)if(Xe.gzhead.name){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.gzindex=0,Xe.status=se)}else Xe.status=se;if(Xe.status===se)if(Xe.gzhead.comment){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.status=he)}else Xe.status=he;if(Xe.status===he&&(Xe.gzhead.hcrc?(Xe.pending+2>Xe.pending_buf_size&&ne(ie),Xe.pending+2<=Xe.pending_buf_size&&(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),ie.adler=0,Xe.status=pe)):Xe.status=pe),Xe.pending!==0){if(ne(ie),ie.avail_out===0)return Xe.last_flush=-1,m}else if(ie.avail_in===0&&te(Oe)<=te(Ke)&&Oe!==y)return ee(ie,u);if(Xe.status===re&&ie.avail_in!==0)return ee(ie,u);if(ie.avail_in!==0||Xe.lookahead!==0||Oe!==b&&Xe.status!==re){var ot=Xe.strategy===c?Te(Xe,Oe):Xe.strategy===W?Be(Xe,Oe):Se[Xe.level].func(Xe,Oe);if((ot===$||ot===ae)&&(Xe.status=re),ot===_||ot===$)return ie.avail_out===0&&(Xe.last_flush=-1),m;if(ot===E&&(Oe===Z?o._tr_align(Xe):Oe!==X&&(o._tr_stored_block(Xe,0,0,!1),Oe===p&&(be(Xe.head),Xe.lookahead===0&&(Xe.strstart=0,Xe.block_start=0,Xe.insert=0))),ne(ie),ie.avail_out===0))return Xe.last_flush=-1,m}return Oe!==y?m:Xe.wrap<=0?N:(Xe.wrap===2?(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),q(Xe,ie.adler>>16&255),q(Xe,ie.adler>>24&255),q(Xe,ie.total_in&255),q(Xe,ie.total_in>>8&255),q(Xe,ie.total_in>>16&255),q(Xe,ie.total_in>>24&255)):(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ne(ie),Xe.wrap>0&&(Xe.wrap=-Xe.wrap),Xe.pending!==0?m:N)}function Ue(ie){var Oe;return!ie||!ie.state?G:(Oe=ie.state.status,Oe!==O&&Oe!==Q&&Oe!==oe&&Oe!==se&&Oe!==he&&Oe!==pe&&Oe!==re?ee(ie,G):(ie.state=null,Oe===pe?ee(ie,d):m))}function qe(ie,Oe){var Ke=Oe.length,Xe,Re,Ae,ct,lt,ot,wt,Mt;if(!ie||!ie.state||(Xe=ie.state,ct=Xe.wrap,ct===2||ct===1&&Xe.status!==O||Xe.lookahead))return G;for(ct===1&&(ie.adler=r(ie.adler,Oe,Ke,0)),Xe.wrap=0,Ke>=Xe.w_size&&(ct===0&&(be(Xe.head),Xe.strstart=0,Xe.block_start=0,Xe.insert=0),Mt=new l.Buf8(Xe.w_size),l.arraySet(Mt,Oe,Ke-Xe.w_size,Xe.w_size,0),Oe=Mt,Ke=Xe.w_size),lt=ie.avail_in,ot=ie.next_in,wt=ie.input,ie.avail_in=Ke,ie.next_in=0,ie.input=Oe,Je(Xe);Xe.lookahead>=K;){Re=Xe.strstart,Ae=Xe.lookahead-(K-1);do Xe.ins_h=(Xe.ins_h<>>24,h>>>=x,c-=x,x=C>>>16&255,x===0)Y[y++]=C&65535;else if(x&16){R=C&65535,x&=15,x&&(c>>=x,c-=x),c<15&&(h+=V[Z++]<>>24,h>>>=x,c-=x,x=C>>>16&255,x&16){if(g=C&65535,x&=15,cN){f.msg="invalid distance too far back",b.mode=l;break e}if(h>>>=x,c-=x,x=y-X,g>x){if(x=g-x,x>d&&b.sane){f.msg="invalid distance too far back",b.mode=l;break e}if(S=0,L=s,u===0){if(S+=G-x,x2;)Y[y++]=L[S++],Y[y++]=L[S++],Y[y++]=L[S++],R-=3;R&&(Y[y++]=L[S++],R>1&&(Y[y++]=L[S++]))}else{S=y-g;do Y[y++]=Y[S++],Y[y++]=Y[S++],Y[y++]=Y[S++],R-=3;while(R>2);R&&(Y[y++]=Y[S++],R>1&&(Y[y++]=Y[S++]))}}else if(x&64){f.msg="invalid distance code",b.mode=l;break e}else{C=M[(C&65535)+(h&(1<>3,Z-=R,c-=R<<3,h&=(1<>>24&255)+(Ze>>>8&65280)+((Ze&65280)<<8)+((Ze&255)<<24)}function ve(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ge(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ze.total_in=Ze.total_out=Ce.total=0,Ze.msg="",Ce.wrap&&(Ze.adler=Ce.wrap&1),Ce.mode=M,Ce.last=0,Ce.havedict=0,Ce.dmax=32768,Ce.head=null,Ce.hold=0,Ce.bits=0,Ce.lencode=Ce.lendyn=new l.Buf32(be),Ce.distcode=Ce.distdyn=new l.Buf32(ne),Ce.sane=1,Ce.back=-1,N)}function Je(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ce.wsize=0,Ce.whave=0,Ce.wnext=0,Ge(Ze))}function xe(Ze,Ce){var ye,Ue;return!Ze||!Ze.state||(Ue=Ze.state,Ce<0?(ye=0,Ce=-Ce):(ye=(Ce>>4)+1,Ce<48&&(Ce&=15)),Ce&&(Ce<8||Ce>15))?u:(Ue.window!==null&&Ue.wbits!==Ce&&(Ue.window=null),Ue.wrap=ye,Ue.wbits=Ce,Je(Ze))}function ke(Ze,Ce){var ye,Ue;return Ze?(Ue=new ve,Ze.state=Ue,Ue.window=null,ye=xe(Ze,Ce),ye!==N&&(Ze.state=null),ye):u}function Pe(Ze){return ke(Ze,q)}var Be=!0,Te,we;function Se(Ze){if(Be){var Ce;for(Te=new l.Buf32(512),we=new l.Buf32(32),Ce=0;Ce<144;)Ze.lens[Ce++]=8;for(;Ce<256;)Ze.lens[Ce++]=9;for(;Ce<280;)Ze.lens[Ce++]=7;for(;Ce<288;)Ze.lens[Ce++]=8;for(v(Z,Ze.lens,0,288,Te,0,Ze.work,{bits:9}),Ce=0;Ce<32;)Ze.lens[Ce++]=5;v(p,Ze.lens,0,32,we,0,Ze.work,{bits:5}),Be=!1}Ze.lencode=Te,Ze.lenbits=9,Ze.distcode=we,Ze.distbits=5}function De(Ze,Ce,ye,Ue){var qe,ie=Ze.state;return ie.window===null&&(ie.wsize=1<=ie.wsize?(l.arraySet(ie.window,Ce,ye-ie.wsize,ie.wsize,0),ie.wnext=0,ie.whave=ie.wsize):(qe=ie.wsize-ie.wnext,qe>Ue&&(qe=Ue),l.arraySet(ie.window,Ce,ye-Ue,qe,ie.wnext),Ue-=qe,Ue?(l.arraySet(ie.window,Ce,ye-Ue,Ue,0),ie.wnext=Ue,ie.whave=ie.wsize):(ie.wnext+=qe,ie.wnext===ie.wsize&&(ie.wnext=0),ie.whave>>8&255,ye.check=r(ye.check,en,2,0),Re=0,Ae=0,ye.mode=I;break}if(ye.flags=0,ye.head&&(ye.head.done=!1),!(ye.wrap&1)||(((Re&255)<<8)+(Re>>8))%31){Ze.msg="incorrect header check",ye.mode=le;break}if((Re&15)!==W){Ze.msg="unknown compression method",ye.mode=le;break}if(Re>>>=4,Ae-=4,Ut=(Re&15)+8,ye.wbits===0)ye.wbits=Ut;else if(Ut>ye.wbits){Ze.msg="invalid window size",ye.mode=le;break}ye.dmax=1<>8&1),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=w;case w:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,en[2]=Re>>>16&255,en[3]=Re>>>24&255,ye.check=r(ye.check,en,4,0)),Re=0,Ae=0,ye.mode=C;case C:for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>8),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=x;case x:if(ye.flags&1024){for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0}else ye.head&&(ye.head.extra=null);ye.mode=R;case R:if(ye.flags&1024&&(ot=ye.length,ot>Ke&&(ot=Ke),ot&&(ye.head&&(Ut=ye.head.extra_len-ye.length,ye.head.extra||(ye.head.extra=new Array(ye.head.extra_len)),l.arraySet(ye.head.extra,Ue,ie,ot,Ut)),ye.flags&512&&(ye.check=r(ye.check,Ue,ot,ie)),Ke-=ot,ie+=ot,ye.length-=ot),ye.length))break e;ye.length=0,ye.mode=g;case g:if(ye.flags&2048){if(Ke===0)break e;ot=0;do Ut=Ue[ie+ot++],ye.head&&Ut&&ye.length<65536&&(ye.head.name+=String.fromCharCode(Ut));while(Ut&&ot>9&1,ye.head.done=!0),Ze.adler=ye.check=0,ye.mode=T;break;case V:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ae&7,Ae-=Ae&7,ye.mode=E;break}for(;Ae<3;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=1,Ae-=1,Re&3){case 0:ye.mode=U;break;case 1:if(Se(ye),ye.mode=Q,Ce===m){Re>>>=2,Ae-=2;break e}break;case 2:ye.mode=k;break;case 3:Ze.msg="invalid block type",ye.mode=le}Re>>>=2,Ae-=2;break;case U:for(Re>>>=Ae&7,Ae-=Ae&7;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>16^65535)){Ze.msg="invalid stored block lengths",ye.mode=le;break}if(ye.length=Re&65535,Re=0,Ae=0,ye.mode=K,Ce===m)break e;case K:ye.mode=H;case H:if(ot=ye.length,ot){if(ot>Ke&&(ot=Ke),ot>Xe&&(ot=Xe),ot===0)break e;l.arraySet(qe,Ue,ie,ot,Oe),Ke-=ot,ie+=ot,Xe-=ot,Oe+=ot,ye.length-=ot;break}ye.mode=T;break;case k:for(;Ae<14;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=5,Ae-=5,ye.ndist=(Re&31)+1,Re>>>=5,Ae-=5,ye.ncode=(Re&15)+4,Re>>>=4,Ae-=4,ye.nlen>286||ye.ndist>30){Ze.msg="too many length or distance symbols",ye.mode=le;break}ye.have=0,ye.mode=F;case F:for(;ye.have>>=3,Ae-=3}for(;ye.have<19;)ye.lens[Ln[ye.have++]]=0;if(ye.lencode=ye.lendyn,ye.lenbits=7,nn={bits:ye.lenbits},kt=v(b,ye.lens,0,19,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid code lengths set",ye.mode=le;break}ye.have=0,ye.mode=O;case O:for(;ye.have>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Gt,Ae-=Gt,ye.lens[ye.have++]=Tt;else{if(Tt===16){for(Ft=Gt+2;Ae>>=Gt,Ae-=Gt,ye.have===0){Ze.msg="invalid bit length repeat",ye.mode=le;break}Ut=ye.lens[ye.have-1],ot=3+(Re&3),Re>>>=2,Ae-=2}else if(Tt===17){for(Ft=Gt+3;Ae>>=Gt,Ae-=Gt,Ut=0,ot=3+(Re&7),Re>>>=3,Ae-=3}else{for(Ft=Gt+7;Ae>>=Gt,Ae-=Gt,Ut=0,ot=11+(Re&127),Re>>>=7,Ae-=7}if(ye.have+ot>ye.nlen+ye.ndist){Ze.msg="invalid bit length repeat",ye.mode=le;break}for(;ot--;)ye.lens[ye.have++]=Ut}}if(ye.mode===le)break;if(ye.lens[256]===0){Ze.msg="invalid code -- missing end-of-block",ye.mode=le;break}if(ye.lenbits=9,nn={bits:ye.lenbits},kt=v(Z,ye.lens,0,ye.nlen,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid literal/lengths set",ye.mode=le;break}if(ye.distbits=6,ye.distcode=ye.distdyn,nn={bits:ye.distbits},kt=v(p,ye.lens,ye.nlen,ye.ndist,ye.distcode,0,ye.work,nn),ye.distbits=nn.bits,kt){Ze.msg="invalid distances set",ye.mode=le;break}if(ye.mode=Q,Ce===m)break e;case Q:ye.mode=oe;case oe:if(Ke>=6&&Xe>=258){Ze.next_out=Oe,Ze.avail_out=Xe,Ze.next_in=ie,Ze.avail_in=Ke,ye.hold=Re,ye.bits=Ae,f(Ze,lt),Oe=Ze.next_out,qe=Ze.output,Xe=Ze.avail_out,ie=Ze.next_in,Ue=Ze.input,Ke=Ze.avail_in,Re=ye.hold,Ae=ye.bits,ye.mode===T&&(ye.back=-1);break}for(ye.back=0;xt=ye.lencode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,ye.length=Tt,Zt===0){ye.mode=_;break}if(Zt&32){ye.back=-1,ye.mode=T;break}if(Zt&64){Ze.msg="invalid literal/length code",ye.mode=le;break}ye.extra=Zt&15,ye.mode=se;case se:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}ye.was=ye.length,ye.mode=he;case he:for(;xt=ye.distcode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,Zt&64){Ze.msg="invalid distance code",ye.mode=le;break}ye.offset=Tt,ye.extra=Zt&15,ye.mode=pe;case pe:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}if(ye.offset>ye.dmax){Ze.msg="invalid distance too far back",ye.mode=le;break}ye.mode=re;case re:if(Xe===0)break e;if(ot=lt-Xe,ye.offset>ot){if(ot=ye.offset-ot,ot>ye.whave&&ye.sane){Ze.msg="invalid distance too far back",ye.mode=le;break}ot>ye.wnext?(ot-=ye.wnext,wt=ye.wsize-ot):wt=ye.wnext-ot,ot>ye.length&&(ot=ye.length),Mt=ye.window}else Mt=qe,wt=Oe-ye.offset,ot=ye.length;ot>Xe&&(ot=Xe),Xe-=ot,ye.length-=ot;do qe[Oe++]=Mt[wt++];while(--ot);ye.length===0&&(ye.mode=oe);break;case _:if(Xe===0)break e;qe[Oe++]=ye.length,Xe--,ye.mode=oe;break;case E:if(ye.wrap){for(;Ae<32;){if(Ke===0)break e;Ke--,Re|=Ue[ie++]<=1&&oe[R]===0;R--);if(g>R&&(g=R),R===0)return h[c++]=1<<24|64<<16|0,h[c++]=1<<24|64<<16|0,M.bits=1,0;for(x=1;x0&&(G===v||R!==1))return-1;for(se[1]=0,w=1;wr||G===Z&&Y>f)return 1;for(;;){re=w-L,W[C]Q?(_=he[pe+W[C]],E=F[O+W[C]]):(_=32+64,E=0),J=1<>L)+U]=re<<24|_<<16|E|0;while(U!==0);for(J=1<>=1;if(J!==0?(T&=J-1,T+=J):T=0,C++,--oe[w]===0){if(w===R)break;w=d[u+W[C]]}if(w>g&&(T&H)!==K){for(L===0&&(L=g),k+=x,S=w-L,V=1<r||G===Z&&Y>f)return 1;K=T&H,h[K]=g<<24|S<<16|k-c|0}}return T!==0&&(h[k+T]=w-L<<24|64<<16|0),M.bits=g,0}},{"../utils/common":442}],452:[function(t,i,a){i.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(t,i,a){var l=t("../utils/common"),o=4,r=0,f=1,v=2;function b(me){for(var Ve=me.length;--Ve>=0;)me[Ve]=0}var Z=0,p=1,y=2,X=3,m=258,N=29,G=256,d=G+1+N,u=30,s=19,h=2*d+1,c=15,W=16,M=7,I=256,w=16,C=17,x=18,R=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],g=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],V=512,Y=new Array((d+2)*2);b(Y);var T=new Array(u*2);b(T);var J=new Array(V);b(J);var U=new Array(m-X+1);b(U);var K=new Array(N);b(K);var H=new Array(u);b(H);function k(me,Ve,Me,Ie,Ze){this.static_tree=me,this.extra_bits=Ve,this.extra_base=Me,this.elems=Ie,this.max_length=Ze,this.has_stree=me&&me.length}var F,O,Q;function oe(me,Ve){this.dyn_tree=me,this.max_code=0,this.stat_desc=Ve}function se(me){return me<256?J[me]:J[256+(me>>>7)]}function he(me,Ve){me.pending_buf[me.pending++]=Ve&255,me.pending_buf[me.pending++]=Ve>>>8&255}function pe(me,Ve,Me){me.bi_valid>W-Me?(me.bi_buf|=Ve<>W-me.bi_valid,me.bi_valid+=Me-W):(me.bi_buf|=Ve<>>=1,Me<<=1;while(--Ve>0);return Me>>>1}function E(me){me.bi_valid===16?(he(me,me.bi_buf),me.bi_buf=0,me.bi_valid=0):me.bi_valid>=8&&(me.pending_buf[me.pending++]=me.bi_buf&255,me.bi_buf>>=8,me.bi_valid-=8)}function $(me,Ve){var Me=Ve.dyn_tree,Ie=Ve.max_code,Ze=Ve.stat_desc.static_tree,Ce=Ve.stat_desc.has_stree,ye=Ve.stat_desc.extra_bits,Ue=Ve.stat_desc.extra_base,qe=Ve.stat_desc.max_length,ie,Oe,Ke,Xe,Re,Ae,ct=0;for(Xe=0;Xe<=c;Xe++)me.bl_count[Xe]=0;for(Me[me.heap[me.heap_max]*2+1]=0,ie=me.heap_max+1;ieqe&&(Xe=qe,ct++),Me[Oe*2+1]=Xe,!(Oe>Ie)&&(me.bl_count[Xe]++,Re=0,Oe>=Ue&&(Re=ye[Oe-Ue]),Ae=Me[Oe*2],me.opt_len+=Ae*(Xe+Re),Ce&&(me.static_len+=Ae*(Ze[Oe*2+1]+Re)));if(ct!==0){do{for(Xe=qe-1;me.bl_count[Xe]===0;)Xe--;me.bl_count[Xe]--,me.bl_count[Xe+1]+=2,me.bl_count[qe]--,ct-=2}while(ct>0);for(Xe=qe;Xe!==0;Xe--)for(Oe=me.bl_count[Xe];Oe!==0;)Ke=me.heap[--ie],!(Ke>Ie)&&(Me[Ke*2+1]!==Xe&&(me.opt_len+=(Xe-Me[Ke*2+1])*Me[Ke*2],Me[Ke*2+1]=Xe),Oe--)}}function ae(me,Ve,Me){var Ie=new Array(c+1),Ze=0,Ce,ye;for(Ce=1;Ce<=c;Ce++)Ie[Ce]=Ze=Ze+Me[Ce-1]<<1;for(ye=0;ye<=Ve;ye++){var Ue=me[ye*2+1];Ue!==0&&(me[ye*2]=_(Ie[Ue]++,Ue))}}function le(){var me,Ve,Me,Ie,Ze,Ce=new Array(c+1);for(Me=0,Ie=0;Ie>=7;Ie8?he(me,me.bi_buf):me.bi_valid>0&&(me.pending_buf[me.pending++]=me.bi_buf),me.bi_buf=0,me.bi_valid=0}function be(me,Ve,Me,Ie){te(me),Ie&&(he(me,Me),he(me,~Me)),l.arraySet(me.pending_buf,me.window,Ve,Me,me.pending),me.pending+=Me}function ne(me,Ve,Me,Ie){var Ze=Ve*2,Ce=Me*2;return me[Ze]>1;ye>=1;ye--)B(me,Me,ye);ie=Ce;do ye=me.heap[1],me.heap[1]=me.heap[me.heap_len--],B(me,Me,1),Ue=me.heap[1],me.heap[--me.heap_max]=ye,me.heap[--me.heap_max]=Ue,Me[ie*2]=Me[ye*2]+Me[Ue*2],me.depth[ie]=(me.depth[ye]>=me.depth[Ue]?me.depth[ye]:me.depth[Ue])+1,Me[ye*2+1]=Me[Ue*2+1]=ie,me.heap[1]=ie++,B(me,Me,1);while(me.heap_len>=2);me.heap[--me.heap_max]=me.heap[1],$(me,Ve),ae(Me,qe,me.bl_count)}function ve(me,Ve,Me){var Ie,Ze=-1,Ce,ye=Ve[0*2+1],Ue=0,qe=7,ie=4;for(ye===0&&(qe=138,ie=3),Ve[(Me+1)*2+1]=65535,Ie=0;Ie<=Me;Ie++)Ce=ye,ye=Ve[(Ie+1)*2+1],!(++Ue=3&&me.bl_tree[L[Ve]*2+1]===0;Ve--);return me.opt_len+=3*(Ve+1)+5+5+4,Ve}function xe(me,Ve,Me,Ie){var Ze;for(pe(me,Ve-257,5),pe(me,Me-1,5),pe(me,Ie-4,4),Ze=0;Ze>>=1)if(Ve&1&&me.dyn_ltree[Me*2]!==0)return r;if(me.dyn_ltree[9*2]!==0||me.dyn_ltree[10*2]!==0||me.dyn_ltree[13*2]!==0)return f;for(Me=32;Me0?(me.strm.data_type===v&&(me.strm.data_type=ke(me)),ue(me,me.l_desc),ue(me,me.d_desc),ye=Je(me),Ze=me.opt_len+3+7>>>3,Ce=me.static_len+3+7>>>3,Ce<=Ze&&(Ze=Ce)):Ze=Ce=Me+5,Me+4<=Ze&&Ve!==-1?Te(me,Ve,Me,Ie):me.strategy===o||Ce===Ze?(pe(me,(p<<1)+(Ie?1:0),3),q(me,Y,T)):(pe(me,(y<<1)+(Ie?1:0),3),xe(me,me.l_desc.max_code+1,me.d_desc.max_code+1,ye+1),q(me,me.dyn_ltree,me.dyn_dtree)),ee(me),Ie&&te(me)}function De(me,Ve,Me){return me.pending_buf[me.d_buf+me.last_lit*2]=Ve>>>8&255,me.pending_buf[me.d_buf+me.last_lit*2+1]=Ve&255,me.pending_buf[me.l_buf+me.last_lit]=Me&255,me.last_lit++,Ve===0?me.dyn_ltree[Me*2]++:(me.matches++,Ve--,me.dyn_ltree[(U[Me]+G+1)*2]++,me.dyn_dtree[se(Ve)*2]++),me.last_lit===me.lit_bufsize-1}a._tr_init=Be,a._tr_stored_block=Te,a._tr_flush_block=Se,a._tr_tally=De,a._tr_align=we},{"../utils/common":442}],454:[function(t,i,a){function l(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}i.exports=l},{}],455:[function(t,i,a){i.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(t,i,a){var l=t("asn1.js");a.certificate=t("./certificate");var o=l.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});a.RSAPrivateKey=o;var r=l.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});a.RSAPublicKey=r;var f=l.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(v),this.key("subjectPublicKey").bitstr())});a.PublicKey=f;var v=l.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),b=l.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(v),this.key("subjectPrivateKey").octstr())});a.PrivateKey=b;var Z=l.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});a.EncryptedPrivateKey=Z;var p=l.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});a.DSAPrivateKey=p,a.DSAparam=l.define("DSAparam",function(){this.int()});var y=l.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(X),this.key("publicKey").optional().explicit(1).bitstr())});a.ECPrivateKey=y;var X=l.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});a.signature=l.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(t,i,a){var l=t("asn1.js"),o=l.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),r=l.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),f=l.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),v=l.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())}),b=l.define("RelativeDistinguishedName",function(){this.setof(r)}),Z=l.define("RDNSequence",function(){this.seqof(b)}),p=l.define("Name",function(){this.choice({rdnSequence:this.use(Z)})}),y=l.define("Validity",function(){this.seq().obj(this.key("notBefore").use(o),this.key("notAfter").use(o))}),X=l.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),m=l.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(f),this.key("issuer").use(p),this.key("validity").use(y),this.key("subject").use(p),this.key("subjectPublicKeyInfo").use(v),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(X).optional())}),N=l.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(m),this.key("signatureAlgorithm").use(f),this.key("signatureValue").bitstr())});i.exports=N},{"asn1.js":167}],458:[function(t,i,a){var l=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,r=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,f=t("evp_bytestokey"),v=t("browserify-aes"),b=t("safe-buffer").Buffer;i.exports=function(Z,p){var y=Z.toString(),X=y.match(l),m;if(X){var G="aes"+X[1],d=b.from(X[2],"hex"),u=b.from(X[3].replace(/[\r\n]/g,""),"base64"),s=f(p,d.slice(0,8),parseInt(X[1],10)).key,h=[],c=v.createDecipheriv(G,s,d);h.push(c.update(u)),h.push(c.final()),m=b.concat(h)}else{var N=y.match(r);m=b.from(N[2].replace(/[\r\n]/g,""),"base64")}var W=y.match(o)[1];return{tag:W,data:m}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(t,i,a){function l(X){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(N){return typeof N}:l=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},l(X)}var o=t("./asn1"),r=t("./aesid.json"),f=t("./fixProc"),v=t("browserify-aes"),b=t("pbkdf2"),Z=t("safe-buffer").Buffer;i.exports=p;function p(X){var m;l(X)==="object"&&!Z.isBuffer(X)&&(m=X.passphrase,X=X.key),typeof X=="string"&&(X=Z.from(X));var N=f(X,m),G=N.tag,d=N.data,u,s;switch(G){case"CERTIFICATE":s=o.certificate.decode(d,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(s||(s=o.PublicKey.decode(d,"der")),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPublicKey.decode(s.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return s.subjectPrivateKey=s.subjectPublicKey,{type:"ec",data:s};case"1.2.840.10040.4.1":return s.algorithm.params.pub_key=o.DSAparam.decode(s.subjectPublicKey.data,"der"),{type:"dsa",data:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"ENCRYPTED PRIVATE KEY":d=o.EncryptedPrivateKey.decode(d,"der"),d=y(d,m);case"PRIVATE KEY":switch(s=o.PrivateKey.decode(d,"der"),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPrivateKey.decode(s.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:s.algorithm.curve,privateKey:o.ECPrivateKey.decode(s.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return s.algorithm.params.priv_key=o.DSAparam.decode(s.subjectPrivateKey,"der"),{type:"dsa",params:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"RSA PUBLIC KEY":return o.RSAPublicKey.decode(d,"der");case"RSA PRIVATE KEY":return o.RSAPrivateKey.decode(d,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:o.DSAPrivateKey.decode(d,"der")};case"EC PRIVATE KEY":return d=o.ECPrivateKey.decode(d,"der"),{curve:d.parameters.value,privateKey:d.privateKey};default:throw new Error("unknown key type "+G)}}p.signature=o.signature;function y(X,m){var N=X.algorithm.decrypt.kde.kdeparams.salt,G=parseInt(X.algorithm.decrypt.kde.kdeparams.iters.toString(),10),d=r[X.algorithm.decrypt.cipher.algo.join(".")],u=X.algorithm.decrypt.cipher.iv,s=X.subjectPrivateKey,h=parseInt(d.split("-")[1],10)/8,c=b.pbkdf2Sync(m,N,G,h,"sha1"),W=v.createDecipheriv(d,c,u),M=[];return M.push(W.update(s)),M.push(W.final()),Z.concat(M)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(t,i,a){a.pbkdf2=t("./lib/async"),a.pbkdf2Sync=t("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(t,i,a){(function(l,o){var r=t("safe-buffer").Buffer,f=t("./precondition"),v=t("./default-encoding"),b=t("./sync"),Z=t("./to-buffer"),p,y=o.crypto&&o.crypto.subtle,X={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},m=[];function N(u){if(o.process&&!o.process.browser||!y||!y.importKey||!y.deriveBits)return Promise.resolve(!1);if(m[u]!==void 0)return m[u];p=p||r.alloc(8);var s=G(p,p,10,128,u).then(function(){return!0}).catch(function(){return!1});return m[u]=s,s}function G(u,s,h,c,W){return y.importKey("raw",u,{name:"PBKDF2"},!1,["deriveBits"]).then(function(M){return y.deriveBits({name:"PBKDF2",salt:s,iterations:h,hash:{name:W}},M,c<<3)}).then(function(M){return r.from(M)})}function d(u,s){u.then(function(h){l.nextTick(function(){s(null,h)})},function(h){l.nextTick(function(){s(h)})})}i.exports=function(u,s,h,c,W,M){typeof W=="function"&&(M=W,W=void 0),W=W||"sha1";var I=X[W.toLowerCase()];if(!I||typeof o.Promise!="function")return l.nextTick(function(){var w;try{w=b(u,s,h,c,W)}catch(C){return M(C)}M(null,w)});if(f(h,c),u=Z(u,v,"Password"),s=Z(s,v,"Salt"),typeof M!="function")throw new Error("No callback provided to pbkdf2");d(N(I).then(function(w){return w?G(u,s,h,c,I):b(u,s,h,c,W)}),M)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(t,i,a){(function(l){var o;if(l.browser)o="utf-8";else if(l.version){var r=parseInt(l.version.split(".")[0].slice(1),10);o=r>=6?"utf-8":"binary"}else o="utf-8";i.exports=o}).call(this,t("_process"))},{_process:467}],463:[function(t,i,a){var l=Math.pow(2,30)-1;i.exports=function(o,r){if(typeof o!="number")throw new TypeError("Iterations not a number");if(o<0)throw new TypeError("Bad iterations");if(typeof r!="number")throw new TypeError("Key length not a number");if(r<0||r>l||r!==r)throw new TypeError("Bad key length")}},{}],464:[function(t,i,a){var l=t("create-hash/md5"),o=t("ripemd160"),r=t("sha.js"),f=t("safe-buffer").Buffer,v=t("./precondition"),b=t("./default-encoding"),Z=t("./to-buffer"),p=f.alloc(128),y={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function X(G,d,u){var s=m(G),h=G==="sha512"||G==="sha384"?128:64;d.length>h?d=s(d):d.length"u"||!l.version||l.version.indexOf("v0.")===0||l.version.indexOf("v1.")===0&&l.version.indexOf("v1.8.")!==0?i.exports={nextTick:o}:i.exports=l;function o(r,f,v,b){if(typeof r!="function")throw new TypeError('"callback" argument must be a function');var Z=arguments.length,p,y;switch(Z){case 0:case 1:return l.nextTick(r);case 2:return l.nextTick(function(){r.call(null,f)});case 3:return l.nextTick(function(){r.call(null,f,v)});case 4:return l.nextTick(function(){r.call(null,f,v,b)});default:for(p=new Array(Z-1),y=0;y1)for(var c=1;cc||new f(d).cmp(h.modulus)>=0)throw new Error("decryption error");var W;u?W=Z(new f(d),h):W=v(d,h);var M=p.alloc(c-W.length);if(W=p.concat([M,W],c),s===4)return y(h,W);if(s===1)return X(h,W,u);if(s===3)return W;throw new Error("unknown padding")};function y(N,G){var d=N.modulus.byteLength(),u=b("sha1").update(p.alloc(0)).digest(),s=u.length;if(G[0]!==0)throw new Error("decryption error");var h=G.slice(1,s+1),c=G.slice(s+1),W=r(h,o(c,s)),M=r(c,o(W,d-s-1));if(m(u,M.slice(0,s)))throw new Error("decryption error");for(var I=s;M[I]===0;)I++;if(M[I++]!==1)throw new Error("decryption error");return M.slice(I)}function X(N,G,d){for(var u=G.slice(0,2),s=2,h=0;G[s++]!==0;)if(s>=G.length){h++;break}var c=G.slice(2,s-1);if((u.toString("hex")!=="0002"&&!d||u.toString("hex")!=="0001"&&d)&&h++,c.length<8&&h++,h)throw new Error("decryption error");return G.slice(s)}function m(N,G){N=p.from(N),G=p.from(G);var d=0,u=N.length;N.length!==G.length&&(d++,u=Math.min(N.length,G.length));for(var s=-1;++s=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return s?p(W,c):Z(W,c)};function X(G,d){var u=G.modulus.byteLength(),s=d.length,h=r("sha1").update(y.alloc(0)).digest(),c=h.length,W=2*c;if(s>u-W-2)throw new Error("message too long");var M=y.alloc(u-s-W-2),I=u-c-1,w=o(c),C=v(y.concat([h,M,y.alloc(1,1),d],I),f(w,I)),x=v(w,f(C,c));return new b(y.concat([y.alloc(1),x,C],u))}function m(G,d,u){var s=d.length,h=G.modulus.byteLength();if(s>h-11)throw new Error("message too long");var c;return u?c=y.alloc(h-s-3,255):c=N(h-s-3),new b(y.concat([y.from([0,u?1:2]),c,y.alloc(1),d],h))}function N(G){for(var d=y.allocUnsafe(G),u=0,s=o(G*2),h=0,c;u"u")&&(C.binary=!x);var R=W instanceof b&&W.uncompressedSize===0;(R||C.dir||!W||W.length===0)&&(C.base64=!1,C.binary=!0,W="",C.compression="STORE",I="string");var g=null;W instanceof b||W instanceof r?g=W:y.isNode&&y.isStream(W)?g=new X(c,W):g=o.prepareContent(c,W,C.binary,C.optimizedBinaryString,C.base64);var S=new Z(c,g,C);this.files[c]=S},N=function(c){c.slice(-1)==="/"&&(c=c.substring(0,c.length-1));var W=c.lastIndexOf("/");return W>0?c.substring(0,W):""},G=function(c){return c.slice(-1)!=="/"&&(c+="/"),c},d=function(c,W){return W=typeof W<"u"?W:v.createFolders,c=G(c),this.files[c]||m.call(this,c,null,{dir:!0,createFolders:W}),this.files[c]};function u(h){return Object.prototype.toString.call(h)==="[object RegExp]"}var s={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(c){var W,M,I;for(W in this.files)this.files.hasOwnProperty(W)&&(I=this.files[W],M=W.slice(this.root.length,W.length),M&&W.slice(0,this.root.length)===this.root&&c(M,I))},filter:function(c){var W=[];return this.forEach(function(M,I){c(M,I)&&W.push(I)}),W},file:function(c,W,M){if(arguments.length===1)if(u(c)){var I=c;return this.filter(function(C,x){return!x.dir&&I.test(C)})}else{var w=this.files[this.root+c];return w&&!w.dir?w:null}else c=this.root+c,m.call(this,c,W,M);return this},folder:function(c){if(!c)return this;if(u(c))return this.filter(function(w,C){return C.dir&&c.test(w)});var W=this.root+c,M=d.call(this,W),I=this.clone();return I.root=M.name,I},remove:function(c){c=this.root+c;var W=this.files[c];if(W||(c.slice(-1)!=="/"&&(c+="/"),W=this.files[c]),W&&!W.dir)delete this.files[c];else for(var M=this.filter(function(w,C){return C.name.slice(0,c.length)===c}),I=0;I=0;--y)if(this.data[y]===v&&this.data[y+1]===b&&this.data[y+2]===Z&&this.data[y+3]===p)return y-this.zero;return-1},r.prototype.readAndCheckSignature=function(f){var v=f.charCodeAt(0),b=f.charCodeAt(1),Z=f.charCodeAt(2),p=f.charCodeAt(3),y=this.readData(4);return v===y[0]&&b===y[1]&&Z===y[2]&&p===y[3]},r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return[];var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],407:[function(t,i,a){var l=t("../utils");function o(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}o.prototype={checkOffset:function(f){this.checkIndex(this.index+f)},checkIndex:function(f){if(this.length=this.index;b--)v=(v<<8)+this.byteAt(b);return this.index+=f,v},readString:function(f){return l.transformTo("string",this.readData(f))},readData:function(f){},lastIndexOfSignature:function(f){},readAndCheckSignature:function(f){},readDate:function(){var f=this.readInt(4);return new Date(Date.UTC((f>>25&127)+1980,(f>>21&15)-1,f>>16&31,f>>11&31,f>>5&63,(f&31)<<1))}},i.exports=o},{"../utils":421}],408:[function(t,i,a){var l=t("./Uint8ArrayReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(t,i,a){var l=t("./DataReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.byteAt=function(f){return this.data.charCodeAt(this.zero+f)},r.prototype.lastIndexOfSignature=function(f){return this.data.lastIndexOf(f)-this.zero},r.prototype.readAndCheckSignature=function(f){var v=this.readData(4);return f===v},r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],410:[function(t,i,a){var l=t("./ArrayReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return new Uint8Array(0);var v=this.data.subarray(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./ArrayReader":406}],411:[function(t,i,a){var l=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=l.getTypeOf(Z);return l.checkSupport(p),p==="string"&&!o.uint8array?new f(Z):p==="nodebuffer"?new v(Z):o.uint8array?new b(l.transformTo("uint8array",Z)):new r(l.transformTo("array",Z))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(t,i,a){a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(t,i,a){var l=t("./GenericWorker"),o=t("../utils");function r(f){l.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,l),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":421,"./GenericWorker":417}],414:[function(t,i,a){var l=t("./GenericWorker"),o=t("../crc32"),r=t("../utils");function f(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}r.inherits(f,l),f.prototype.processChunk=function(v){this.streamInfo.crc32=o(v.data,this.streamInfo.crc32||0),this.push(v)},i.exports=f},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}l.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":421,"./GenericWorker":417}],416:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker"),r=16*1024;function f(v){o.call(this,"DataWorker");var b=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,v.then(function(Z){b.dataIsReady=!0,b.data=Z,b.max=Z&&Z.length||0,b.type=l.getTypeOf(Z),b.isPaused||b._tickAndRepeat()},function(Z){b.error(Z)})}l.inherits(f,o),f.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},f.prototype.resume=function(){return o.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0):!1},f.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},f.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var v=r,b=null,Z=Math.min(this.max,this.index+v);if(this.index>=this.max)return this.end();switch(this.type){case"string":b=this.data.substring(this.index,Z);break;case"uint8array":b=this.data.subarray(this.index,Z);break;case"array":case"nodebuffer":b=this.data.slice(this.index,Z);break}return this.index=Z,this.push({data:b,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=f},{"../utils":421,"./GenericWorker":417}],417:[function(t,i,a){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return this.isFinished?!1:(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,f){return this._listeners[r].push(f),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,f){if(this._listeners[r])for(var v=0;v "+r:r}},i.exports=l},{}],418:[function(t,i,a){(function(l){var o=t("../utils"),r=t("./ConvertWorker"),f=t("./GenericWorker"),v=t("../base64"),b=t("../support"),Z=t("../external"),p=null;if(b.nodestream)try{p=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function y(G,d,u){switch(G){case"blob":return o.newBlob(o.transformTo("arraybuffer",d),u);case"base64":return v.encode(d);default:return o.transformTo(G,d)}}function X(G,d){var u,s=0,h=null,c=0;for(u=0;u"u")a.blob=!1;else{var o=new ArrayBuffer(0);try{a.blob=new Blob([o],{type:"application/zip"}).size===0}catch{try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,f=new r;f.append(o),a.blob=f.getBlob("application/zip").size===0}catch{a.blob=!1}}}try{a.nodestream=!!t("readable-stream").Readable}catch{a.nodestream=!1}}).call(this,t("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(t,i,a){for(var l=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=b>=252?6:b>=248?5:b>=240?4:b>=224?3:b>=192?2:1;v[254]=v[254]=1;var Z=function(G){var d,u,s,h,c,W=G.length,M=0;for(h=0;h>>6,d[c++]=128|u&63):u<65536?(d[c++]=224|u>>>12,d[c++]=128|u>>>6&63,d[c++]=128|u&63):(d[c++]=240|u>>>18,d[c++]=128|u>>>12&63,d[c++]=128|u>>>6&63,d[c++]=128|u&63);return d},p=function(G,d){var u;for(d=d||G.length,d>G.length&&(d=G.length),u=d-1;u>=0&&(G[u]&192)===128;)u--;return u<0||u===0?d:u+v[G[u]]>d?u:d},y=function(G){var d,u,s,h,c=G.length,W=new Array(c*2);for(u=0,d=0;d4){W[u++]=65533,d+=h-1;continue}for(s&=h===2?31:h===3?15:7;h>1&&d1){W[u++]=65533;continue}s<65536?W[u++]=s:(s-=65536,W[u++]=55296|s>>10&1023,W[u++]=56320|s&1023)}return W.length!==u&&(W.subarray?W=W.subarray(0,u):W.length=u),l.applyFromCharCode(W)};a.utf8encode=function(G){return o.nodebuffer?r.newBufferFrom(G,"utf-8"):Z(G)},a.utf8decode=function(G){return o.nodebuffer?l.transformTo("nodebuffer",G).toString("utf-8"):(G=l.transformTo(o.uint8array?"uint8array":"array",G),y(G))};function X(){f.call(this,"utf-8 decode"),this.leftOver=null}l.inherits(X,f),X.prototype.processChunk=function(N){var G=l.transformTo(o.uint8array?"uint8array":"array",N.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var d=G;G=new Uint8Array(d.length+this.leftOver.length),G.set(this.leftOver,0),G.set(d,this.leftOver.length)}else G=this.leftOver.concat(G);this.leftOver=null}var u=p(G),s=G;u!==G.length&&(o.uint8array?(s=G.subarray(0,u),this.leftOver=G.subarray(u,G.length)):(s=G.slice(0,u),this.leftOver=G.slice(u,G.length))),this.push({data:a.utf8decode(s),meta:N.meta})},X.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=X;function m(){f.call(this,"utf-8 encode")}l.inherits(m,f),m.prototype.processChunk=function(N){this.push({data:a.utf8encode(N.data),meta:N.meta})},a.Utf8EncodeWorker=m},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(t,i,a){var l=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("set-immediate-shim"),v=t("./external");function b(G){var d=null;return l.uint8array?d=new Uint8Array(G.length):d=new Array(G.length),p(G,d)}a.newBlob=function(G,d){a.checkSupport("blob");try{return new Blob([G],{type:d})}catch{try{var u=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,s=new u;return s.append(G),s.getBlob(d)}catch{throw new Error("Bug : can't construct the Blob.")}}};function Z(G){return G}function p(G,d){for(var u=0;u1;)try{return y.stringifyByChunk(G,u,d)}catch{d=Math.floor(d/2)}return y.stringifyByChar(G)}a.applyFromCharCode=X;function m(G,d){for(var u=0;u"u"&&(G[u]=arguments[d][u]);return G},a.prepareContent=function(G,d,u,s,h){var c=v.Promise.resolve(d).then(function(W){var M=l.blob&&(W instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(W))!==-1);return M&&typeof FileReader<"u"?new v.Promise(function(I,w){var C=new FileReader;C.onload=function(x){I(x.target.result)},C.onerror=function(x){w(x.target.error)},C.readAsArrayBuffer(W)}):W});return c.then(function(W){var M=a.getTypeOf(W);return M?(M==="arraybuffer"?W=a.transformTo("uint8array",W):M==="string"&&(h?W=o.decode(W):u&&s!==!0&&(W=b(W))),W):v.Promise.reject(new Error("Can't read the data of '"+G+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(t,i,a){var l=t("./reader/readerFor"),o=t("./utils"),r=t("./signature"),f=t("./zipEntry");t("./utf8");var v=t("./support");function b(Z){this.files=[],this.loadOptions=Z}b.prototype={checkSignature:function(p){if(!this.reader.readAndCheckSignature(p)){this.reader.index-=4;var y=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+o.pretty(y)+", expected "+o.pretty(p)+")")}},isSignature:function(p,y){var X=this.reader.index;this.reader.setIndex(p);var m=this.reader.readString(4),N=m===y;return this.reader.setIndex(X),N},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var p=this.reader.readData(this.zipCommentLength),y=v.uint8array?"uint8array":"array",X=o.transformTo(y,p);this.zipComment=this.loadOptions.decodeFileName(X)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var p=this.zip64EndOfCentralSize-44,y=0,X,m,N;y1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var p,y;for(p=0;p0)this.isSignature(X,r.CENTRAL_FILE_HEADER)||(this.reader.zero=N);else if(N<0)throw new Error("Corrupted zip: missing "+Math.abs(N)+" bytes.")},prepareReader:function(p){this.reader=l(p)},load:function(p){this.prepareReader(p),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},i.exports=b},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(t,i,a){var l=t("./reader/readerFor"),o=t("./utils"),r=t("./compressedObject"),f=t("./crc32"),v=t("./utf8"),b=t("./compressions"),Z=t("./support"),p=0,y=3,X=function(G){for(var d in b)if(b.hasOwnProperty(d)&&b[d].magic===G)return b[d];return null};function m(N,G){this.options=N,this.loadOptions=G}m.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(G){var d,u;if(G.skip(22),this.fileNameLength=G.readInt(2),u=G.readInt(2),this.fileName=G.readData(this.fileNameLength),G.skip(u),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(d=X(this.compressionMethod),d===null)throw new Error("Corrupted zip : compression "+o.pretty(this.compressionMethod)+" unknown (inner file : "+o.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,d,G.readData(this.compressedSize))},readCentralPart:function(G){this.versionMadeBy=G.readInt(2),G.skip(2),this.bitFlag=G.readInt(2),this.compressionMethod=G.readString(2),this.date=G.readDate(),this.crc32=G.readInt(4),this.compressedSize=G.readInt(4),this.uncompressedSize=G.readInt(4);var d=G.readInt(2);if(this.extraFieldsLength=G.readInt(2),this.fileCommentLength=G.readInt(2),this.diskNumberStart=G.readInt(2),this.internalFileAttributes=G.readInt(2),this.externalFileAttributes=G.readInt(4),this.localHeaderOffset=G.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");G.skip(d),this.readExtraFields(G),this.parseZIP64ExtraField(G),this.fileComment=G.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var G=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),G===p&&(this.dosPermissions=this.externalFileAttributes&63),G===y&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(G){if(this.extraFields[1]){var d=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=d.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=d.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=d.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=d.readInt(4))}},readExtraFields:function(G){var d=G.index+this.extraFieldsLength,u,s,h;for(this.extraFields||(this.extraFields={});G.index+4"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,p=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,y=Z||p||Function("return this")(),X=Object.prototype,m=X.toString,N=y.Symbol,G=N?N.prototype:void 0,d=G?G.toString:void 0;function u(M){if(typeof M=="string")return M;if(h(M))return d?d.call(M):"";var I=M+"";return I=="0"&&1/M==-r?"-0":I}function s(M){return!!M&&o(M)=="object"}function h(M){return o(M)=="symbol"||s(M)&&m.call(M)==f}function c(M){return M==null?"":u(M)}function W(M){return M=c(M),M&&b.test(M)?M.replace(v,"\\$&"):M}i.exports=W}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(t,i,a){(function(l){function o(ge){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(st){return typeof st}:o=function(st){return st&&typeof Symbol=="function"&&st.constructor===Symbol&&st!==Symbol.prototype?"symbol":typeof st},o(ge)}var r=200,f="Expected a function",v="__lodash_hash_undefined__",b=1,Z=2,p=1/0,y=9007199254740991,X="[object Arguments]",m="[object Array]",N="[object Boolean]",G="[object Date]",d="[object Error]",u="[object Function]",s="[object GeneratorFunction]",h="[object Map]",c="[object Number]",W="[object Object]",M="[object Promise]",I="[object RegExp]",w="[object Set]",C="[object String]",x="[object Symbol]",R="[object WeakMap]",g="[object ArrayBuffer]",S="[object DataView]",L="[object Float32Array]",V="[object Float64Array]",Y="[object Int8Array]",T="[object Int16Array]",J="[object Int32Array]",U="[object Uint8Array]",K="[object Uint8ClampedArray]",H="[object Uint16Array]",k="[object Uint32Array]",F=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O=/^\w*$/,Q=/^\./,oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/[\\^$.*+?()[\]{}|]/g,he=/\\(\\)?/g,pe=/^\[object .+?Constructor\]$/,re=/^(?:0|[1-9]\d*)$/,_={};_[L]=_[V]=_[Y]=_[T]=_[J]=_[U]=_[K]=_[H]=_[k]=!0,_[X]=_[m]=_[g]=_[N]=_[S]=_[G]=_[d]=_[u]=_[h]=_[c]=_[W]=_[I]=_[w]=_[C]=_[R]=!1;var E=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,$=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,ae=E||$||Function("return this")(),le=(typeof a>"u"?"undefined":o(a))=="object"&&a&&!a.nodeType&&a,ee=le&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,te=ee&&ee.exports===le,be=te&&E.process,ne=function(){try{return be&&be.binding("util")}catch{}}(),B=ne&&ne.isTypedArray;function q(ge,Ee,st,It){for(var an=-1,Et=ge?ge.length:0;++an-1}function Gl(ge,Ee){var st=this.__data__,It=il(st,ge);return It<0?st.push([ge,Ee]):st[It][1]=Ee,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(ge){var Ee=-1,st=ge?ge.length:0;for(this.clear();++Eeli))return!1;var Ji=Et.get(ge);if(Ji&&Et.get(Ee))return Ji==Ee;var Qi=-1,Di=!0,Bi=an&b?new ht:void 0;for(Et.set(ge,Ee),Et.set(Ee,ge);++Qi-1&&ge%1==0&&ge-1&&ge%1==0&&ge<=y}function Qn(ge){var Ee=o(ge);return!!ge&&(Ee=="object"||Ee=="function")}function qn(ge){return!!ge&&o(ge)=="object"}function Ti(ge){return o(ge)=="symbol"||qn(ge)&&Ze.call(ge)==x}var yi=B?Je(B):Xl;function Hl(ge){return ge==null?"":Tl(ge)}function Zi(ge,Ee,st){var It=ge==null?void 0:_t(ge,Ee);return It===void 0?st:It}function io(ge,Ee){return ge!=null&&no(ge,Ee,zt)}function Pl(ge){return Dn(ge)?Ll(ge):ll(ge)}function al(ge){return ge}function Tr(ge){return Un(ge)?ve(et(ge)):hl(ge)}i.exports=Lt}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(t,i,a){function l(Z){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(y){return typeof y}:l=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},l(Z)}var o="[object Boolean]",r=Object.prototype,f=r.toString;function v(Z){return Z===!0||Z===!1||b(Z)&&f.call(Z)==o}function b(Z){return!!Z&&l(Z)=="object"}i.exports=v},{}],429:[function(t,i,a){(function(l){function o(je){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(mt){return typeof mt}:o=function(mt){return mt&&typeof Symbol=="function"&&mt.constructor===Symbol&&mt!==Symbol.prototype?"symbol":typeof mt},o(je)}var r=200,f="__lodash_hash_undefined__",v=1,b=2,Z=9007199254740991,p="[object Arguments]",y="[object Array]",X="[object AsyncFunction]",m="[object Boolean]",N="[object Date]",G="[object Error]",d="[object Function]",u="[object GeneratorFunction]",s="[object Map]",h="[object Number]",c="[object Null]",W="[object Object]",M="[object Promise]",I="[object Proxy]",w="[object RegExp]",C="[object Set]",x="[object String]",R="[object Symbol]",g="[object Undefined]",S="[object WeakMap]",L="[object ArrayBuffer]",V="[object DataView]",Y="[object Float32Array]",T="[object Float64Array]",J="[object Int8Array]",U="[object Int16Array]",K="[object Int32Array]",H="[object Uint8Array]",k="[object Uint8ClampedArray]",F="[object Uint16Array]",O="[object Uint32Array]",Q=/[\\^$.*+?()[\]{}|]/g,oe=/^\[object .+?Constructor\]$/,se=/^(?:0|[1-9]\d*)$/,he={};he[Y]=he[T]=he[J]=he[U]=he[K]=he[H]=he[k]=he[F]=he[O]=!0,he[p]=he[y]=he[L]=he[m]=he[V]=he[N]=he[G]=he[d]=he[s]=he[h]=he[W]=he[w]=he[C]=he[x]=he[S]=!1;var pe=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,re=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,_=pe||re||Function("return this")(),E=(typeof a>"u"?"undefined":o(a))=="object"&&a&&!a.nodeType&&a,$=E&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,ae=$&&$.exports===E,le=ae&&pe.process,ee=function(){try{return le&&le.binding&&le.binding("util")}catch{}}(),te=ee&&ee.isTypedArray;function be(je,et){for(var mt=-1,Lt=je==null?0:je.length,Jn=0,sn=[];++mt-1}function Gl(je,et){var mt=this.__data__,Lt=il(mt,je);return Lt<0?(++this.size,mt.push([je,et])):mt[Lt][1]=et,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(je){var et=-1,mt=je==null?0:je.length;for(this.clear();++et_n))return!1;var ni=sn.get(je);if(ni&&sn.get(et))return ni==et;var Fi=-1,fi=!0,Qn=mt&b?new ht:void 0;for(sn.set(je,et),sn.set(et,je);++Fi<_n;){var qn=je[Fi],Ti=et[Fi];if(Lt)var yi=ii?Lt(Ti,qn,Fi,et,je,sn):Lt(qn,Ti,Fi,je,et,sn);if(yi!==void 0){if(yi)continue;fi=!1;break}if(Qn){if(!B(et,function(Hl,Zi){if(!ve(Qn,Zi)&&(qn===Hl||Jn(qn,Hl,mt,Lt,sn)))return Qn.push(Zi)})){fi=!1;break}}else if(!(qn===Ti||Jn(qn,Ti,mt,Lt,sn))){fi=!1;break}}return sn.delete(je),sn.delete(et),fi}function si(je,et,mt,Lt,Jn,sn,ii){switch(mt){case V:if(je.byteLength!=et.byteLength||je.byteOffset!=et.byteOffset)return!1;je=je.buffer,et=et.buffer;case L:return!(je.byteLength!=et.byteLength||!sn(new Ce(je),new Ce(et)));case m:case N:case h:return xl(+je,+et);case G:return je.name==et.name&&je.message==et.message;case w:case x:return je==et+"";case s:var _n=Je;case C:var Dn=Lt&v;if(_n||(_n=ke),je.size!=et.size&&!Dn)return!1;var ni=ii.get(je);if(ni)return ni==et;Lt|=b,ii.set(je,et);var Fi=$t(_n(je),_n(et),Lt,Jn,sn,ii);return ii.delete(je),Fi;case R:if(Ct)return Ct.call(je)==Ct.call(et)}return!1}function Ul(je,et,mt,Lt,Jn,sn){var ii=mt&v,_n=Xl(je),Dn=_n.length,ni=Xl(et),Fi=ni.length;if(Dn!=Fi&&!ii)return!1;for(var fi=Dn;fi--;){var Qn=_n[fi];if(!(ii?Qn in et:De.call(et,Qn)))return!1}var qn=sn.get(je);if(qn&&sn.get(et))return qn==et;var Ti=!0;sn.set(je,et),sn.set(et,je);for(var yi=ii;++fi-1&&je%1==0&&je-1&&je%1==0&&je<=Z}function Un(je){var et=o(je);return je!=null&&(et=="object"||et=="function")}function sr(je){return je!=null&&o(je)=="object"}var Jo=te?ue(te):zt;function Do(je){return Ls(je)?Ll(je):Ht(je)}function Oo(){return[]}function ja(){return!1}i.exports=oa}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(t,i,a){(function(l){function o(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(x){return typeof x}:o=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},o(w)}var r="[object AsyncFunction]",f="[object Function]",v="[object GeneratorFunction]",b="[object Null]",Z="[object Proxy]",p="[object Undefined]",y=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,X=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,m=y||X||Function("return this")(),N=Object.prototype,G=N.hasOwnProperty,d=N.toString,u=m.Symbol,s=u?u.toStringTag:void 0;function h(w){return w==null?w===void 0?p:b:s&&s in Object(w)?c(w):W(w)}function c(w){var C=G.call(w,s),x=w[s];try{w[s]=void 0;var R=!0}catch{}var g=d.call(w);return R&&(C?w[s]=x:delete w[s]),g}function W(w){return d.call(w)}function M(w){if(!I(w))return!1;var C=h(w);return C==f||C==v||C==r||C==Z}function I(w){var C=o(w);return w!=null&&(C=="object"||C=="function")}i.exports=M}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(t,i,a){function l(o){return o==null}i.exports=l},{}],432:[function(t,i,a){function l(o){return o===void 0}i.exports=l},{}],433:[function(t,i,a){(function(l){function o(Me){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(Ze){return typeof Ze}:o=function(Ze){return Ze&&typeof Symbol=="function"&&Ze.constructor===Symbol&&Ze!==Symbol.prototype?"symbol":typeof Ze},o(Me)}var r=200,f="__lodash_hash_undefined__",v=1/0,b="[object Function]",Z="[object GeneratorFunction]",p=/[\\^$.*+?()[\]{}|]/g,y=/^\[object .+?Constructor\]$/,X=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,m=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,N=X||m||Function("return this")();function G(Me,Ie){var Ze=Me?Me.length:0;return!!Ze&&s(Me,Ie,0)>-1}function d(Me,Ie,Ze){for(var Ce=-1,ye=Me?Me.length:0;++Ce-1}function E(Me,Ie){var Ze=this.__data__,Ce=ue(Ze,Me);return Ce<0?Ze.push([Me,Ie]):Ze[Ce][1]=Ie,this}se.prototype.clear=he,se.prototype.delete=pe,se.prototype.get=re,se.prototype.has=_,se.prototype.set=E;function $(Me){var Ie=-1,Ze=Me?Me.length:0;for(this.clear();++Ie=r){var Ke=Ie?null:Je(Me);if(Ke)return I(Ke);qe=!1,ye=c,Oe=new ne}else Oe=Ie?[]:ie;e:for(;++Ce56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var m=r.allocUnsafe(16);return m.writeInt32LE(this._a,0),m.writeInt32LE(this._b,4),m.writeInt32LE(this._c,8),m.writeInt32LE(this._d,12),m};function b(m,N){return m<>>32-N}function Z(m,N,G,d,u,s,h){return b(m+(N&G|~N&d)+u+s|0,h)+N|0}function p(m,N,G,d,u,s,h){return b(m+(N&d|G&~d)+u+s|0,h)+N|0}function y(m,N,G,d,u,s,h){return b(m+(N^G^d)+u+s|0,h)+N|0}function X(m,N,G,d,u,s,h){return b(m+(G^(N|~d))+u+s|0,h)+N|0}i.exports=v},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(t,i,a){var l=t("bn.js"),o=t("brorand");function r(f){this.rand=f||new o.Rand}i.exports=r,r.create=function(v){return new r(v)},r.prototype._randbelow=function(v){var b=v.bitLength(),Z=Math.ceil(b/8);do var p=new l(this.rand.generate(Z));while(p.cmp(v)>=0);return p},r.prototype._randrange=function(v,b){var Z=b.sub(v);return v.add(this._randbelow(Z))},r.prototype.test=function(v,b,Z){var p=v.bitLength(),y=l.mont(v),X=new l(1).toRed(y);b||(b=Math.max(1,p/48|0));for(var m=v.subn(1),N=0;!m.testn(N);N++);for(var G=v.shrn(N),d=m.toRed(y),u=!0;b>0;b--){var s=this._randrange(new l(2),m);Z&&Z(s);var h=s.toRed(y).redPow(G);if(!(h.cmp(X)===0||h.cmp(d)===0)){for(var c=1;c0;b--){var d=this._randrange(new l(2),X),u=v.gcd(d);if(u.cmpn(1)!==0)return u;var s=d.toRed(p).redPow(N);if(!(s.cmp(y)===0||s.cmp(G)===0)){for(var h=1;h>8,m=y&255;X?Z.push(X,m):Z.push(m)}return Z}l.toArray=o;function r(v){return v.length===1?"0"+v:v}l.zero2=r;function f(v){for(var b="",Z=0;Z0?M.windowBits=-M.windowBits:M.gzip&&M.windowBits>0&&M.windowBits<16&&(M.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new v,this.strm.avail_out=0;var I=l.deflateInit2(this.strm,M.level,M.method,M.windowBits,M.memLevel,M.strategy);if(I!==y)throw new Error(f[I]);if(M.header&&l.deflateSetHeader(this.strm,M.header),M.dictionary){var w;if(typeof M.dictionary=="string"?w=r.string2buf(M.dictionary):b.call(M.dictionary)==="[object ArrayBuffer]"?w=new Uint8Array(M.dictionary):w=M.dictionary,I=l.deflateSetDictionary(this.strm,w),I!==y)throw new Error(f[I]);this._dict_set=!0}}u.prototype.push=function(W,M){var I=this.strm,w=this.options.chunkSize,C,x;if(this.ended)return!1;x=M===~~M?M:M===!0?p:Z,typeof W=="string"?I.input=r.string2buf(W):b.call(W)==="[object ArrayBuffer]"?I.input=new Uint8Array(W):I.input=W,I.next_in=0,I.avail_in=I.input.length;do{if(I.avail_out===0&&(I.output=new o.Buf8(w),I.next_out=0,I.avail_out=w),C=l.deflate(I,x),C!==X&&C!==y)return this.onEnd(C),this.ended=!0,!1;(I.avail_out===0||I.avail_in===0&&(x===p||x===m))&&(this.options.to==="string"?this.onData(r.buf2binstring(o.shrinkBuf(I.output,I.next_out))):this.onData(o.shrinkBuf(I.output,I.next_out)))}while((I.avail_in>0||I.avail_out===0)&&C!==X);return x===p?(C=l.deflateEnd(this.strm),this.onEnd(C),this.ended=!0,C===y):(x===m&&(this.onEnd(y),I.avail_out=0),!0)},u.prototype.onData=function(W){this.chunks.push(W)},u.prototype.onEnd=function(W){W===y&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=W,this.msg=this.strm.msg};function s(W,M){var I=new u(M);if(I.push(W,!0),I.err)throw I.msg||f[I.err];return I.result}function h(W,M){return M=M||{},M.raw=!0,s(W,M)}function c(W,M){return M=M||{},M.gzip=!0,s(W,M)}a.Deflate=u,a.deflate=s,a.deflateRaw=h,a.gzip=c},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(t,i,a){var l=t("./zlib/inflate"),o=t("./utils/common"),r=t("./utils/strings"),f=t("./zlib/constants"),v=t("./zlib/messages"),b=t("./zlib/zstream"),Z=t("./zlib/gzheader"),p=Object.prototype.toString;function y(N){if(!(this instanceof y))return new y(N);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},N||{});var G=this.options;G.raw&&G.windowBits>=0&&G.windowBits<16&&(G.windowBits=-G.windowBits,G.windowBits===0&&(G.windowBits=-15)),G.windowBits>=0&&G.windowBits<16&&!(N&&N.windowBits)&&(G.windowBits+=32),G.windowBits>15&&G.windowBits<48&&(G.windowBits&15||(G.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new b,this.strm.avail_out=0;var d=l.inflateInit2(this.strm,G.windowBits);if(d!==f.Z_OK)throw new Error(v[d]);if(this.header=new Z,l.inflateGetHeader(this.strm,this.header),G.dictionary&&(typeof G.dictionary=="string"?G.dictionary=r.string2buf(G.dictionary):p.call(G.dictionary)==="[object ArrayBuffer]"&&(G.dictionary=new Uint8Array(G.dictionary)),G.raw&&(d=l.inflateSetDictionary(this.strm,G.dictionary),d!==f.Z_OK)))throw new Error(v[d])}y.prototype.push=function(N,G){var d=this.strm,u=this.options.chunkSize,s=this.options.dictionary,h,c,W,M,I,w=!1;if(this.ended)return!1;c=G===~~G?G:G===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof N=="string"?d.input=r.binstring2buf(N):p.call(N)==="[object ArrayBuffer]"?d.input=new Uint8Array(N):d.input=N,d.next_in=0,d.avail_in=d.input.length;do{if(d.avail_out===0&&(d.output=new o.Buf8(u),d.next_out=0,d.avail_out=u),h=l.inflate(d,f.Z_NO_FLUSH),h===f.Z_NEED_DICT&&s&&(h=l.inflateSetDictionary(this.strm,s)),h===f.Z_BUF_ERROR&&w===!0&&(h=f.Z_OK,w=!1),h!==f.Z_STREAM_END&&h!==f.Z_OK)return this.onEnd(h),this.ended=!0,!1;d.next_out&&(d.avail_out===0||h===f.Z_STREAM_END||d.avail_in===0&&(c===f.Z_FINISH||c===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=r.utf8border(d.output,d.next_out),M=d.next_out-W,I=r.buf2string(d.output,W),d.next_out=M,d.avail_out=u-M,M&&o.arraySet(d.output,d.output,W,M,0),this.onData(I)):this.onData(o.shrinkBuf(d.output,d.next_out))),d.avail_in===0&&d.avail_out===0&&(w=!0)}while((d.avail_in>0||d.avail_out===0)&&h!==f.Z_STREAM_END);return h===f.Z_STREAM_END&&(c=f.Z_FINISH),c===f.Z_FINISH?(h=l.inflateEnd(this.strm),this.onEnd(h),this.ended=!0,h===f.Z_OK):(c===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),d.avail_out=0),!0)},y.prototype.onData=function(N){this.chunks.push(N)},y.prototype.onEnd=function(N){N===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=N,this.msg=this.strm.msg};function X(N,G){var d=new y(G);if(d.push(N,!0),d.err)throw d.msg||v[d.err];return d.result}function m(N,G){return G=G||{},G.raw=!0,X(N,G)}a.Inflate=y,a.inflate=X,a.inflateRaw=m,a.ungzip=X},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(t,i,a){function l(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(p){return typeof p}:l=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},l(b)}var o=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function r(b,Z){return Object.prototype.hasOwnProperty.call(b,Z)}a.assign=function(b){for(var Z=Array.prototype.slice.call(arguments,1);Z.length;){var p=Z.shift();if(p){if(l(p)!=="object")throw new TypeError(p+"must be non-object");for(var y in p)r(p,y)&&(b[y]=p[y])}}return b},a.shrinkBuf=function(b,Z){return b.length===Z?b:b.subarray?b.subarray(0,Z):(b.length=Z,b)};var f={arraySet:function(Z,p,y,X,m){if(p.subarray&&Z.subarray){Z.set(p.subarray(y,y+X),m);return}for(var N=0;N=252?6:v>=248?5:v>=240?4:v>=224?3:v>=192?2:1;f[254]=f[254]=1,a.string2buf=function(Z){var p,y,X,m,N,G=Z.length,d=0;for(m=0;m>>6,p[N++]=128|y&63):y<65536?(p[N++]=224|y>>>12,p[N++]=128|y>>>6&63,p[N++]=128|y&63):(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63,p[N++]=128|y>>>6&63,p[N++]=128|y&63);return p};function b(Z,p){if(p<65534&&(Z.subarray&&r||!Z.subarray&&o))return String.fromCharCode.apply(null,l.shrinkBuf(Z,p));for(var y="",X=0;X4){d[X++]=65533,y+=N-1;continue}for(m&=N===2?31:N===3?15:7;N>1&&y1){d[X++]=65533;continue}m<65536?d[X++]=m:(m-=65536,d[X++]=55296|m>>10&1023,d[X++]=56320|m&1023)}return b(d,X)},a.utf8border=function(Z,p){var y;for(p=p||Z.length,p>Z.length&&(p=Z.length),y=p-1;y>=0&&(Z[y]&192)===128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":442}],444:[function(t,i,a){function l(o,r,f,v){for(var b=o&65535|0,Z=o>>>16&65535|0,p=0;f!==0;){p=f>2e3?2e3:f,f-=p;do b=b+r[v++]|0,Z=Z+b|0;while(--p);b%=65521,Z%=65521}return b|Z<<16|0}i.exports=l},{}],445:[function(t,i,a){i.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(t,i,a){function l(){for(var f,v=[],b=0;b<256;b++){f=b;for(var Z=0;Z<8;Z++)f=f&1?3988292384^f>>>1:f>>>1;v[b]=f}return v}var o=l();function r(f,v,b,Z){var p=o,y=Z+b;f^=-1;for(var X=Z;X>>8^p[(f^v[X])&255];return f^-1}i.exports=r},{}],447:[function(t,i,a){var l=t("../utils/common"),o=t("./trees"),r=t("./adler32"),f=t("./crc32"),v=t("./messages"),b=0,Z=1,p=3,y=4,X=5,m=0,N=1,G=-2,d=-3,u=-5,s=-1,h=1,c=2,W=3,M=4,I=0,w=2,C=8,x=9,R=15,g=8,S=29,L=256,V=L+1+S,Y=30,T=19,J=2*V+1,U=15,K=3,H=258,k=H+K+1,F=32,O=42,Q=69,oe=73,se=91,he=103,pe=113,re=666,_=1,E=2,$=3,ae=4,le=3;function ee(ie,Oe){return ie.msg=v[Oe],Oe}function te(ie){return(ie<<1)-(ie>4?9:0)}function be(ie){for(var Oe=ie.length;--Oe>=0;)ie[Oe]=0}function ne(ie){var Oe=ie.state,Ke=Oe.pending;Ke>ie.avail_out&&(Ke=ie.avail_out),Ke!==0&&(l.arraySet(ie.output,Oe.pending_buf,Oe.pending_out,Ke,ie.next_out),ie.next_out+=Ke,Oe.pending_out+=Ke,ie.total_out+=Ke,ie.avail_out-=Ke,Oe.pending-=Ke,Oe.pending===0&&(Oe.pending_out=0))}function B(ie,Oe){o._tr_flush_block(ie,ie.block_start>=0?ie.block_start:-1,ie.strstart-ie.block_start,Oe),ie.block_start=ie.strstart,ne(ie.strm)}function q(ie,Oe){ie.pending_buf[ie.pending++]=Oe}function ue(ie,Oe){ie.pending_buf[ie.pending++]=Oe>>>8&255,ie.pending_buf[ie.pending++]=Oe&255}function ve(ie,Oe,Ke,Xe){var Re=ie.avail_in;return Re>Xe&&(Re=Xe),Re===0?0:(ie.avail_in-=Re,l.arraySet(Oe,ie.input,ie.next_in,Re,Ke),ie.state.wrap===1?ie.adler=r(ie.adler,Oe,Re,Ke):ie.state.wrap===2&&(ie.adler=f(ie.adler,Oe,Re,Ke)),ie.next_in+=Re,ie.total_in+=Re,Re)}function Ge(ie,Oe){var Ke=ie.max_chain_length,Xe=ie.strstart,Re,Ae,ct=ie.prev_length,lt=ie.nice_match,ot=ie.strstart>ie.w_size-k?ie.strstart-(ie.w_size-k):0,wt=ie.window,Mt=ie.w_mask,xt=ie.prev,Gt=ie.strstart+H,Zt=wt[Xe+ct-1],Tt=wt[Xe+ct];ie.prev_length>=ie.good_match&&(Ke>>=2),lt>ie.lookahead&&(lt=ie.lookahead);do if(Re=Oe,!(wt[Re+ct]!==Tt||wt[Re+ct-1]!==Zt||wt[Re]!==wt[Xe]||wt[++Re]!==wt[Xe+1])){Xe+=2,Re++;do;while(wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&Xect){if(ie.match_start=Oe,ct=Ae,Ae>=lt)break;Zt=wt[Xe+ct-1],Tt=wt[Xe+ct]}}while((Oe=xt[Oe&Mt])>ot&&--Ke!==0);return ct<=ie.lookahead?ct:ie.lookahead}function Je(ie){var Oe=ie.w_size,Ke,Xe,Re,Ae,ct;do{if(Ae=ie.window_size-ie.lookahead-ie.strstart,ie.strstart>=Oe+(Oe-k)){l.arraySet(ie.window,ie.window,Oe,Oe,0),ie.match_start-=Oe,ie.strstart-=Oe,ie.block_start-=Oe,Xe=ie.hash_size,Ke=Xe;do Re=ie.head[--Ke],ie.head[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Xe=Oe,Ke=Xe;do Re=ie.prev[--Ke],ie.prev[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Ae+=Oe}if(ie.strm.avail_in===0)break;if(Xe=ve(ie.strm,ie.window,ie.strstart+ie.lookahead,Ae),ie.lookahead+=Xe,ie.lookahead+ie.insert>=K)for(ct=ie.strstart-ie.insert,ie.ins_h=ie.window[ct],ie.ins_h=(ie.ins_h<ie.pending_buf_size-5&&(Ke=ie.pending_buf_size-5);;){if(ie.lookahead<=1){if(Je(ie),ie.lookahead===0&&Oe===b)return _;if(ie.lookahead===0)break}ie.strstart+=ie.lookahead,ie.lookahead=0;var Xe=ie.block_start+Ke;if((ie.strstart===0||ie.strstart>=Xe)&&(ie.lookahead=ie.strstart-Xe,ie.strstart=Xe,B(ie,!1),ie.strm.avail_out===0)||ie.strstart-ie.block_start>=ie.w_size-k&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):(ie.strstart>ie.block_start&&(B(ie,!1),ie.strm.avail_out===0),_)}function ke(ie,Oe){for(var Ke,Xe;;){if(ie.lookahead=K&&(ie.ins_h=(ie.ins_h<=K)if(Xe=o._tr_tally(ie,ie.strstart-ie.match_start,ie.match_length-K),ie.lookahead-=ie.match_length,ie.match_length<=ie.max_lazy_match&&ie.lookahead>=K){ie.match_length--;do ie.strstart++,ie.ins_h=(ie.ins_h<=K&&(ie.ins_h=(ie.ins_h<4096)&&(ie.match_length=K-1)),ie.prev_length>=K&&ie.match_length<=ie.prev_length){Re=ie.strstart+ie.lookahead-K,Xe=o._tr_tally(ie,ie.strstart-1-ie.prev_match,ie.prev_length-K),ie.lookahead-=ie.prev_length-1,ie.prev_length-=2;do++ie.strstart<=Re&&(ie.ins_h=(ie.ins_h<=K&&ie.strstart>0&&(Re=ie.strstart-1,Xe=ct[Re],Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re])){Ae=ie.strstart+H;do;while(Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Reie.lookahead&&(ie.match_length=ie.lookahead)}if(ie.match_length>=K?(Ke=o._tr_tally(ie,1,ie.match_length-K),ie.lookahead-=ie.match_length,ie.strstart+=ie.match_length,ie.match_length=0):(Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++),Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function Te(ie,Oe){for(var Ke;;){if(ie.lookahead===0&&(Je(ie),ie.lookahead===0)){if(Oe===b)return _;break}if(ie.match_length=0,Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++,Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function we(ie,Oe,Ke,Xe,Re){this.good_length=ie,this.max_lazy=Oe,this.nice_length=Ke,this.max_chain=Xe,this.func=Re}var Se;Se=[new we(0,0,0,0,xe),new we(4,4,8,4,ke),new we(4,5,16,8,ke),new we(4,6,32,32,ke),new we(4,4,16,16,Pe),new we(8,16,32,32,Pe),new we(8,16,128,128,Pe),new we(8,32,128,256,Pe),new we(32,128,258,1024,Pe),new we(32,258,258,4096,Pe)];function De(ie){ie.window_size=2*ie.w_size,be(ie.head),ie.max_lazy_match=Se[ie.level].max_lazy,ie.good_match=Se[ie.level].good_length,ie.nice_match=Se[ie.level].nice_length,ie.max_chain_length=Se[ie.level].max_chain,ie.strstart=0,ie.block_start=0,ie.lookahead=0,ie.insert=0,ie.match_length=ie.prev_length=K-1,ie.match_available=0,ie.ins_h=0}function me(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=C,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new l.Buf16(J*2),this.dyn_dtree=new l.Buf16((2*Y+1)*2),this.bl_tree=new l.Buf16((2*T+1)*2),be(this.dyn_ltree),be(this.dyn_dtree),be(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new l.Buf16(U+1),this.heap=new l.Buf16(2*V+1),be(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new l.Buf16(2*V+1),be(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ve(ie){var Oe;return!ie||!ie.state?ee(ie,G):(ie.total_in=ie.total_out=0,ie.data_type=w,Oe=ie.state,Oe.pending=0,Oe.pending_out=0,Oe.wrap<0&&(Oe.wrap=-Oe.wrap),Oe.status=Oe.wrap?O:pe,ie.adler=Oe.wrap===2?0:1,Oe.last_flush=b,o._tr_init(Oe),m)}function Me(ie){var Oe=Ve(ie);return Oe===m&&De(ie.state),Oe}function Ie(ie,Oe){return!ie||!ie.state||ie.state.wrap!==2?G:(ie.state.gzhead=Oe,m)}function Ze(ie,Oe,Ke,Xe,Re,Ae){if(!ie)return G;var ct=1;if(Oe===s&&(Oe=6),Xe<0?(ct=0,Xe=-Xe):Xe>15&&(ct=2,Xe-=16),Re<1||Re>x||Ke!==C||Xe<8||Xe>15||Oe<0||Oe>9||Ae<0||Ae>M)return ee(ie,G);Xe===8&&(Xe=9);var lt=new me;return ie.state=lt,lt.strm=ie,lt.wrap=ct,lt.gzhead=null,lt.w_bits=Xe,lt.w_size=1<X||Oe<0)return ie?ee(ie,G):G;if(Xe=ie.state,!ie.output||!ie.input&&ie.avail_in!==0||Xe.status===re&&Oe!==y)return ee(ie,ie.avail_out===0?u:G);if(Xe.strm=ie,Ke=Xe.last_flush,Xe.last_flush=Oe,Xe.status===O)if(Xe.wrap===2)ie.adler=0,q(Xe,31),q(Xe,139),q(Xe,8),Xe.gzhead?(q(Xe,(Xe.gzhead.text?1:0)+(Xe.gzhead.hcrc?2:0)+(Xe.gzhead.extra?4:0)+(Xe.gzhead.name?8:0)+(Xe.gzhead.comment?16:0)),q(Xe,Xe.gzhead.time&255),q(Xe,Xe.gzhead.time>>8&255),q(Xe,Xe.gzhead.time>>16&255),q(Xe,Xe.gzhead.time>>24&255),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,Xe.gzhead.os&255),Xe.gzhead.extra&&Xe.gzhead.extra.length&&(q(Xe,Xe.gzhead.extra.length&255),q(Xe,Xe.gzhead.extra.length>>8&255)),Xe.gzhead.hcrc&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending,0)),Xe.gzindex=0,Xe.status=Q):(q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,le),Xe.status=pe);else{var ct=C+(Xe.w_bits-8<<4)<<8,lt=-1;Xe.strategy>=c||Xe.level<2?lt=0:Xe.level<6?lt=1:Xe.level===6?lt=2:lt=3,ct|=lt<<6,Xe.strstart!==0&&(ct|=F),ct+=31-ct%31,Xe.status=pe,ue(Xe,ct),Xe.strstart!==0&&(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ie.adler=1}if(Xe.status===Q)if(Xe.gzhead.extra){for(Re=Xe.pending;Xe.gzindex<(Xe.gzhead.extra.length&65535)&&!(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size));)q(Xe,Xe.gzhead.extra[Xe.gzindex]&255),Xe.gzindex++;Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Xe.gzindex===Xe.gzhead.extra.length&&(Xe.gzindex=0,Xe.status=oe)}else Xe.status=oe;if(Xe.status===oe)if(Xe.gzhead.name){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.gzindex=0,Xe.status=se)}else Xe.status=se;if(Xe.status===se)if(Xe.gzhead.comment){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.status=he)}else Xe.status=he;if(Xe.status===he&&(Xe.gzhead.hcrc?(Xe.pending+2>Xe.pending_buf_size&&ne(ie),Xe.pending+2<=Xe.pending_buf_size&&(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),ie.adler=0,Xe.status=pe)):Xe.status=pe),Xe.pending!==0){if(ne(ie),ie.avail_out===0)return Xe.last_flush=-1,m}else if(ie.avail_in===0&&te(Oe)<=te(Ke)&&Oe!==y)return ee(ie,u);if(Xe.status===re&&ie.avail_in!==0)return ee(ie,u);if(ie.avail_in!==0||Xe.lookahead!==0||Oe!==b&&Xe.status!==re){var ot=Xe.strategy===c?Te(Xe,Oe):Xe.strategy===W?Be(Xe,Oe):Se[Xe.level].func(Xe,Oe);if((ot===$||ot===ae)&&(Xe.status=re),ot===_||ot===$)return ie.avail_out===0&&(Xe.last_flush=-1),m;if(ot===E&&(Oe===Z?o._tr_align(Xe):Oe!==X&&(o._tr_stored_block(Xe,0,0,!1),Oe===p&&(be(Xe.head),Xe.lookahead===0&&(Xe.strstart=0,Xe.block_start=0,Xe.insert=0))),ne(ie),ie.avail_out===0))return Xe.last_flush=-1,m}return Oe!==y?m:Xe.wrap<=0?N:(Xe.wrap===2?(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),q(Xe,ie.adler>>16&255),q(Xe,ie.adler>>24&255),q(Xe,ie.total_in&255),q(Xe,ie.total_in>>8&255),q(Xe,ie.total_in>>16&255),q(Xe,ie.total_in>>24&255)):(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ne(ie),Xe.wrap>0&&(Xe.wrap=-Xe.wrap),Xe.pending!==0?m:N)}function Ue(ie){var Oe;return!ie||!ie.state?G:(Oe=ie.state.status,Oe!==O&&Oe!==Q&&Oe!==oe&&Oe!==se&&Oe!==he&&Oe!==pe&&Oe!==re?ee(ie,G):(ie.state=null,Oe===pe?ee(ie,d):m))}function qe(ie,Oe){var Ke=Oe.length,Xe,Re,Ae,ct,lt,ot,wt,Mt;if(!ie||!ie.state||(Xe=ie.state,ct=Xe.wrap,ct===2||ct===1&&Xe.status!==O||Xe.lookahead))return G;for(ct===1&&(ie.adler=r(ie.adler,Oe,Ke,0)),Xe.wrap=0,Ke>=Xe.w_size&&(ct===0&&(be(Xe.head),Xe.strstart=0,Xe.block_start=0,Xe.insert=0),Mt=new l.Buf8(Xe.w_size),l.arraySet(Mt,Oe,Ke-Xe.w_size,Xe.w_size,0),Oe=Mt,Ke=Xe.w_size),lt=ie.avail_in,ot=ie.next_in,wt=ie.input,ie.avail_in=Ke,ie.next_in=0,ie.input=Oe,Je(Xe);Xe.lookahead>=K;){Re=Xe.strstart,Ae=Xe.lookahead-(K-1);do Xe.ins_h=(Xe.ins_h<>>24,h>>>=x,c-=x,x=C>>>16&255,x===0)Y[y++]=C&65535;else if(x&16){R=C&65535,x&=15,x&&(c>>=x,c-=x),c<15&&(h+=V[Z++]<>>24,h>>>=x,c-=x,x=C>>>16&255,x&16){if(g=C&65535,x&=15,cN){f.msg="invalid distance too far back",b.mode=l;break e}if(h>>>=x,c-=x,x=y-X,g>x){if(x=g-x,x>d&&b.sane){f.msg="invalid distance too far back",b.mode=l;break e}if(S=0,L=s,u===0){if(S+=G-x,x2;)Y[y++]=L[S++],Y[y++]=L[S++],Y[y++]=L[S++],R-=3;R&&(Y[y++]=L[S++],R>1&&(Y[y++]=L[S++]))}else{S=y-g;do Y[y++]=Y[S++],Y[y++]=Y[S++],Y[y++]=Y[S++],R-=3;while(R>2);R&&(Y[y++]=Y[S++],R>1&&(Y[y++]=Y[S++]))}}else if(x&64){f.msg="invalid distance code",b.mode=l;break e}else{C=M[(C&65535)+(h&(1<>3,Z-=R,c-=R<<3,h&=(1<>>24&255)+(Ze>>>8&65280)+((Ze&65280)<<8)+((Ze&255)<<24)}function ve(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ge(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ze.total_in=Ze.total_out=Ce.total=0,Ze.msg="",Ce.wrap&&(Ze.adler=Ce.wrap&1),Ce.mode=M,Ce.last=0,Ce.havedict=0,Ce.dmax=32768,Ce.head=null,Ce.hold=0,Ce.bits=0,Ce.lencode=Ce.lendyn=new l.Buf32(be),Ce.distcode=Ce.distdyn=new l.Buf32(ne),Ce.sane=1,Ce.back=-1,N)}function Je(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ce.wsize=0,Ce.whave=0,Ce.wnext=0,Ge(Ze))}function xe(Ze,Ce){var ye,Ue;return!Ze||!Ze.state||(Ue=Ze.state,Ce<0?(ye=0,Ce=-Ce):(ye=(Ce>>4)+1,Ce<48&&(Ce&=15)),Ce&&(Ce<8||Ce>15))?u:(Ue.window!==null&&Ue.wbits!==Ce&&(Ue.window=null),Ue.wrap=ye,Ue.wbits=Ce,Je(Ze))}function ke(Ze,Ce){var ye,Ue;return Ze?(Ue=new ve,Ze.state=Ue,Ue.window=null,ye=xe(Ze,Ce),ye!==N&&(Ze.state=null),ye):u}function Pe(Ze){return ke(Ze,q)}var Be=!0,Te,we;function Se(Ze){if(Be){var Ce;for(Te=new l.Buf32(512),we=new l.Buf32(32),Ce=0;Ce<144;)Ze.lens[Ce++]=8;for(;Ce<256;)Ze.lens[Ce++]=9;for(;Ce<280;)Ze.lens[Ce++]=7;for(;Ce<288;)Ze.lens[Ce++]=8;for(v(Z,Ze.lens,0,288,Te,0,Ze.work,{bits:9}),Ce=0;Ce<32;)Ze.lens[Ce++]=5;v(p,Ze.lens,0,32,we,0,Ze.work,{bits:5}),Be=!1}Ze.lencode=Te,Ze.lenbits=9,Ze.distcode=we,Ze.distbits=5}function De(Ze,Ce,ye,Ue){var qe,ie=Ze.state;return ie.window===null&&(ie.wsize=1<=ie.wsize?(l.arraySet(ie.window,Ce,ye-ie.wsize,ie.wsize,0),ie.wnext=0,ie.whave=ie.wsize):(qe=ie.wsize-ie.wnext,qe>Ue&&(qe=Ue),l.arraySet(ie.window,Ce,ye-Ue,qe,ie.wnext),Ue-=qe,Ue?(l.arraySet(ie.window,Ce,ye-Ue,Ue,0),ie.wnext=Ue,ie.whave=ie.wsize):(ie.wnext+=qe,ie.wnext===ie.wsize&&(ie.wnext=0),ie.whave>>8&255,ye.check=r(ye.check,en,2,0),Re=0,Ae=0,ye.mode=I;break}if(ye.flags=0,ye.head&&(ye.head.done=!1),!(ye.wrap&1)||(((Re&255)<<8)+(Re>>8))%31){Ze.msg="incorrect header check",ye.mode=le;break}if((Re&15)!==W){Ze.msg="unknown compression method",ye.mode=le;break}if(Re>>>=4,Ae-=4,Ut=(Re&15)+8,ye.wbits===0)ye.wbits=Ut;else if(Ut>ye.wbits){Ze.msg="invalid window size",ye.mode=le;break}ye.dmax=1<>8&1),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=w;case w:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,en[2]=Re>>>16&255,en[3]=Re>>>24&255,ye.check=r(ye.check,en,4,0)),Re=0,Ae=0,ye.mode=C;case C:for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>8),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=x;case x:if(ye.flags&1024){for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0}else ye.head&&(ye.head.extra=null);ye.mode=R;case R:if(ye.flags&1024&&(ot=ye.length,ot>Ke&&(ot=Ke),ot&&(ye.head&&(Ut=ye.head.extra_len-ye.length,ye.head.extra||(ye.head.extra=new Array(ye.head.extra_len)),l.arraySet(ye.head.extra,Ue,ie,ot,Ut)),ye.flags&512&&(ye.check=r(ye.check,Ue,ot,ie)),Ke-=ot,ie+=ot,ye.length-=ot),ye.length))break e;ye.length=0,ye.mode=g;case g:if(ye.flags&2048){if(Ke===0)break e;ot=0;do Ut=Ue[ie+ot++],ye.head&&Ut&&ye.length<65536&&(ye.head.name+=String.fromCharCode(Ut));while(Ut&&ot>9&1,ye.head.done=!0),Ze.adler=ye.check=0,ye.mode=T;break;case V:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ae&7,Ae-=Ae&7,ye.mode=E;break}for(;Ae<3;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=1,Ae-=1,Re&3){case 0:ye.mode=U;break;case 1:if(Se(ye),ye.mode=Q,Ce===m){Re>>>=2,Ae-=2;break e}break;case 2:ye.mode=k;break;case 3:Ze.msg="invalid block type",ye.mode=le}Re>>>=2,Ae-=2;break;case U:for(Re>>>=Ae&7,Ae-=Ae&7;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>16^65535)){Ze.msg="invalid stored block lengths",ye.mode=le;break}if(ye.length=Re&65535,Re=0,Ae=0,ye.mode=K,Ce===m)break e;case K:ye.mode=H;case H:if(ot=ye.length,ot){if(ot>Ke&&(ot=Ke),ot>Xe&&(ot=Xe),ot===0)break e;l.arraySet(qe,Ue,ie,ot,Oe),Ke-=ot,ie+=ot,Xe-=ot,Oe+=ot,ye.length-=ot;break}ye.mode=T;break;case k:for(;Ae<14;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=5,Ae-=5,ye.ndist=(Re&31)+1,Re>>>=5,Ae-=5,ye.ncode=(Re&15)+4,Re>>>=4,Ae-=4,ye.nlen>286||ye.ndist>30){Ze.msg="too many length or distance symbols",ye.mode=le;break}ye.have=0,ye.mode=F;case F:for(;ye.have>>=3,Ae-=3}for(;ye.have<19;)ye.lens[Ln[ye.have++]]=0;if(ye.lencode=ye.lendyn,ye.lenbits=7,nn={bits:ye.lenbits},kt=v(b,ye.lens,0,19,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid code lengths set",ye.mode=le;break}ye.have=0,ye.mode=O;case O:for(;ye.have>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Gt,Ae-=Gt,ye.lens[ye.have++]=Tt;else{if(Tt===16){for(Ft=Gt+2;Ae>>=Gt,Ae-=Gt,ye.have===0){Ze.msg="invalid bit length repeat",ye.mode=le;break}Ut=ye.lens[ye.have-1],ot=3+(Re&3),Re>>>=2,Ae-=2}else if(Tt===17){for(Ft=Gt+3;Ae>>=Gt,Ae-=Gt,Ut=0,ot=3+(Re&7),Re>>>=3,Ae-=3}else{for(Ft=Gt+7;Ae>>=Gt,Ae-=Gt,Ut=0,ot=11+(Re&127),Re>>>=7,Ae-=7}if(ye.have+ot>ye.nlen+ye.ndist){Ze.msg="invalid bit length repeat",ye.mode=le;break}for(;ot--;)ye.lens[ye.have++]=Ut}}if(ye.mode===le)break;if(ye.lens[256]===0){Ze.msg="invalid code -- missing end-of-block",ye.mode=le;break}if(ye.lenbits=9,nn={bits:ye.lenbits},kt=v(Z,ye.lens,0,ye.nlen,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid literal/lengths set",ye.mode=le;break}if(ye.distbits=6,ye.distcode=ye.distdyn,nn={bits:ye.distbits},kt=v(p,ye.lens,ye.nlen,ye.ndist,ye.distcode,0,ye.work,nn),ye.distbits=nn.bits,kt){Ze.msg="invalid distances set",ye.mode=le;break}if(ye.mode=Q,Ce===m)break e;case Q:ye.mode=oe;case oe:if(Ke>=6&&Xe>=258){Ze.next_out=Oe,Ze.avail_out=Xe,Ze.next_in=ie,Ze.avail_in=Ke,ye.hold=Re,ye.bits=Ae,f(Ze,lt),Oe=Ze.next_out,qe=Ze.output,Xe=Ze.avail_out,ie=Ze.next_in,Ue=Ze.input,Ke=Ze.avail_in,Re=ye.hold,Ae=ye.bits,ye.mode===T&&(ye.back=-1);break}for(ye.back=0;xt=ye.lencode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,ye.length=Tt,Zt===0){ye.mode=_;break}if(Zt&32){ye.back=-1,ye.mode=T;break}if(Zt&64){Ze.msg="invalid literal/length code",ye.mode=le;break}ye.extra=Zt&15,ye.mode=se;case se:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}ye.was=ye.length,ye.mode=he;case he:for(;xt=ye.distcode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,Zt&64){Ze.msg="invalid distance code",ye.mode=le;break}ye.offset=Tt,ye.extra=Zt&15,ye.mode=pe;case pe:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}if(ye.offset>ye.dmax){Ze.msg="invalid distance too far back",ye.mode=le;break}ye.mode=re;case re:if(Xe===0)break e;if(ot=lt-Xe,ye.offset>ot){if(ot=ye.offset-ot,ot>ye.whave&&ye.sane){Ze.msg="invalid distance too far back",ye.mode=le;break}ot>ye.wnext?(ot-=ye.wnext,wt=ye.wsize-ot):wt=ye.wnext-ot,ot>ye.length&&(ot=ye.length),Mt=ye.window}else Mt=qe,wt=Oe-ye.offset,ot=ye.length;ot>Xe&&(ot=Xe),Xe-=ot,ye.length-=ot;do qe[Oe++]=Mt[wt++];while(--ot);ye.length===0&&(ye.mode=oe);break;case _:if(Xe===0)break e;qe[Oe++]=ye.length,Xe--,ye.mode=oe;break;case E:if(ye.wrap){for(;Ae<32;){if(Ke===0)break e;Ke--,Re|=Ue[ie++]<=1&&oe[R]===0;R--);if(g>R&&(g=R),R===0)return h[c++]=1<<24|64<<16|0,h[c++]=1<<24|64<<16|0,M.bits=1,0;for(x=1;x0&&(G===v||R!==1))return-1;for(se[1]=0,w=1;wr||G===Z&&Y>f)return 1;for(;;){re=w-L,W[C]Q?(_=he[pe+W[C]],E=F[O+W[C]]):(_=32+64,E=0),J=1<>L)+U]=re<<24|_<<16|E|0;while(U!==0);for(J=1<>=1;if(J!==0?(T&=J-1,T+=J):T=0,C++,--oe[w]===0){if(w===R)break;w=d[u+W[C]]}if(w>g&&(T&H)!==K){for(L===0&&(L=g),k+=x,S=w-L,V=1<r||G===Z&&Y>f)return 1;K=T&H,h[K]=g<<24|S<<16|k-c|0}}return T!==0&&(h[k+T]=w-L<<24|64<<16|0),M.bits=g,0}},{"../utils/common":442}],452:[function(t,i,a){i.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(t,i,a){var l=t("../utils/common"),o=4,r=0,f=1,v=2;function b(me){for(var Ve=me.length;--Ve>=0;)me[Ve]=0}var Z=0,p=1,y=2,X=3,m=258,N=29,G=256,d=G+1+N,u=30,s=19,h=2*d+1,c=15,W=16,M=7,I=256,w=16,C=17,x=18,R=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],g=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],V=512,Y=new Array((d+2)*2);b(Y);var T=new Array(u*2);b(T);var J=new Array(V);b(J);var U=new Array(m-X+1);b(U);var K=new Array(N);b(K);var H=new Array(u);b(H);function k(me,Ve,Me,Ie,Ze){this.static_tree=me,this.extra_bits=Ve,this.extra_base=Me,this.elems=Ie,this.max_length=Ze,this.has_stree=me&&me.length}var F,O,Q;function oe(me,Ve){this.dyn_tree=me,this.max_code=0,this.stat_desc=Ve}function se(me){return me<256?J[me]:J[256+(me>>>7)]}function he(me,Ve){me.pending_buf[me.pending++]=Ve&255,me.pending_buf[me.pending++]=Ve>>>8&255}function pe(me,Ve,Me){me.bi_valid>W-Me?(me.bi_buf|=Ve<>W-me.bi_valid,me.bi_valid+=Me-W):(me.bi_buf|=Ve<>>=1,Me<<=1;while(--Ve>0);return Me>>>1}function E(me){me.bi_valid===16?(he(me,me.bi_buf),me.bi_buf=0,me.bi_valid=0):me.bi_valid>=8&&(me.pending_buf[me.pending++]=me.bi_buf&255,me.bi_buf>>=8,me.bi_valid-=8)}function $(me,Ve){var Me=Ve.dyn_tree,Ie=Ve.max_code,Ze=Ve.stat_desc.static_tree,Ce=Ve.stat_desc.has_stree,ye=Ve.stat_desc.extra_bits,Ue=Ve.stat_desc.extra_base,qe=Ve.stat_desc.max_length,ie,Oe,Ke,Xe,Re,Ae,ct=0;for(Xe=0;Xe<=c;Xe++)me.bl_count[Xe]=0;for(Me[me.heap[me.heap_max]*2+1]=0,ie=me.heap_max+1;ieqe&&(Xe=qe,ct++),Me[Oe*2+1]=Xe,!(Oe>Ie)&&(me.bl_count[Xe]++,Re=0,Oe>=Ue&&(Re=ye[Oe-Ue]),Ae=Me[Oe*2],me.opt_len+=Ae*(Xe+Re),Ce&&(me.static_len+=Ae*(Ze[Oe*2+1]+Re)));if(ct!==0){do{for(Xe=qe-1;me.bl_count[Xe]===0;)Xe--;me.bl_count[Xe]--,me.bl_count[Xe+1]+=2,me.bl_count[qe]--,ct-=2}while(ct>0);for(Xe=qe;Xe!==0;Xe--)for(Oe=me.bl_count[Xe];Oe!==0;)Ke=me.heap[--ie],!(Ke>Ie)&&(Me[Ke*2+1]!==Xe&&(me.opt_len+=(Xe-Me[Ke*2+1])*Me[Ke*2],Me[Ke*2+1]=Xe),Oe--)}}function ae(me,Ve,Me){var Ie=new Array(c+1),Ze=0,Ce,ye;for(Ce=1;Ce<=c;Ce++)Ie[Ce]=Ze=Ze+Me[Ce-1]<<1;for(ye=0;ye<=Ve;ye++){var Ue=me[ye*2+1];Ue!==0&&(me[ye*2]=_(Ie[Ue]++,Ue))}}function le(){var me,Ve,Me,Ie,Ze,Ce=new Array(c+1);for(Me=0,Ie=0;Ie>=7;Ie8?he(me,me.bi_buf):me.bi_valid>0&&(me.pending_buf[me.pending++]=me.bi_buf),me.bi_buf=0,me.bi_valid=0}function be(me,Ve,Me,Ie){te(me),Ie&&(he(me,Me),he(me,~Me)),l.arraySet(me.pending_buf,me.window,Ve,Me,me.pending),me.pending+=Me}function ne(me,Ve,Me,Ie){var Ze=Ve*2,Ce=Me*2;return me[Ze]>1;ye>=1;ye--)B(me,Me,ye);ie=Ce;do ye=me.heap[1],me.heap[1]=me.heap[me.heap_len--],B(me,Me,1),Ue=me.heap[1],me.heap[--me.heap_max]=ye,me.heap[--me.heap_max]=Ue,Me[ie*2]=Me[ye*2]+Me[Ue*2],me.depth[ie]=(me.depth[ye]>=me.depth[Ue]?me.depth[ye]:me.depth[Ue])+1,Me[ye*2+1]=Me[Ue*2+1]=ie,me.heap[1]=ie++,B(me,Me,1);while(me.heap_len>=2);me.heap[--me.heap_max]=me.heap[1],$(me,Ve),ae(Me,qe,me.bl_count)}function ve(me,Ve,Me){var Ie,Ze=-1,Ce,ye=Ve[0*2+1],Ue=0,qe=7,ie=4;for(ye===0&&(qe=138,ie=3),Ve[(Me+1)*2+1]=65535,Ie=0;Ie<=Me;Ie++)Ce=ye,ye=Ve[(Ie+1)*2+1],!(++Ue=3&&me.bl_tree[L[Ve]*2+1]===0;Ve--);return me.opt_len+=3*(Ve+1)+5+5+4,Ve}function xe(me,Ve,Me,Ie){var Ze;for(pe(me,Ve-257,5),pe(me,Me-1,5),pe(me,Ie-4,4),Ze=0;Ze>>=1)if(Ve&1&&me.dyn_ltree[Me*2]!==0)return r;if(me.dyn_ltree[9*2]!==0||me.dyn_ltree[10*2]!==0||me.dyn_ltree[13*2]!==0)return f;for(Me=32;Me0?(me.strm.data_type===v&&(me.strm.data_type=ke(me)),ue(me,me.l_desc),ue(me,me.d_desc),ye=Je(me),Ze=me.opt_len+3+7>>>3,Ce=me.static_len+3+7>>>3,Ce<=Ze&&(Ze=Ce)):Ze=Ce=Me+5,Me+4<=Ze&&Ve!==-1?Te(me,Ve,Me,Ie):me.strategy===o||Ce===Ze?(pe(me,(p<<1)+(Ie?1:0),3),q(me,Y,T)):(pe(me,(y<<1)+(Ie?1:0),3),xe(me,me.l_desc.max_code+1,me.d_desc.max_code+1,ye+1),q(me,me.dyn_ltree,me.dyn_dtree)),ee(me),Ie&&te(me)}function De(me,Ve,Me){return me.pending_buf[me.d_buf+me.last_lit*2]=Ve>>>8&255,me.pending_buf[me.d_buf+me.last_lit*2+1]=Ve&255,me.pending_buf[me.l_buf+me.last_lit]=Me&255,me.last_lit++,Ve===0?me.dyn_ltree[Me*2]++:(me.matches++,Ve--,me.dyn_ltree[(U[Me]+G+1)*2]++,me.dyn_dtree[se(Ve)*2]++),me.last_lit===me.lit_bufsize-1}a._tr_init=Be,a._tr_stored_block=Te,a._tr_flush_block=Se,a._tr_tally=De,a._tr_align=we},{"../utils/common":442}],454:[function(t,i,a){function l(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}i.exports=l},{}],455:[function(t,i,a){i.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(t,i,a){var l=t("asn1.js");a.certificate=t("./certificate");var o=l.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});a.RSAPrivateKey=o;var r=l.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});a.RSAPublicKey=r;var f=l.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(v),this.key("subjectPublicKey").bitstr())});a.PublicKey=f;var v=l.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),b=l.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(v),this.key("subjectPrivateKey").octstr())});a.PrivateKey=b;var Z=l.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});a.EncryptedPrivateKey=Z;var p=l.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});a.DSAPrivateKey=p,a.DSAparam=l.define("DSAparam",function(){this.int()});var y=l.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(X),this.key("publicKey").optional().explicit(1).bitstr())});a.ECPrivateKey=y;var X=l.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});a.signature=l.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(t,i,a){var l=t("asn1.js"),o=l.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),r=l.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),f=l.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),v=l.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())}),b=l.define("RelativeDistinguishedName",function(){this.setof(r)}),Z=l.define("RDNSequence",function(){this.seqof(b)}),p=l.define("Name",function(){this.choice({rdnSequence:this.use(Z)})}),y=l.define("Validity",function(){this.seq().obj(this.key("notBefore").use(o),this.key("notAfter").use(o))}),X=l.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),m=l.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(f),this.key("issuer").use(p),this.key("validity").use(y),this.key("subject").use(p),this.key("subjectPublicKeyInfo").use(v),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(X).optional())}),N=l.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(m),this.key("signatureAlgorithm").use(f),this.key("signatureValue").bitstr())});i.exports=N},{"asn1.js":167}],458:[function(t,i,a){var l=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,r=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,f=t("evp_bytestokey"),v=t("browserify-aes"),b=t("safe-buffer").Buffer;i.exports=function(Z,p){var y=Z.toString(),X=y.match(l),m;if(X){var G="aes"+X[1],d=b.from(X[2],"hex"),u=b.from(X[3].replace(/[\r\n]/g,""),"base64"),s=f(p,d.slice(0,8),parseInt(X[1],10)).key,h=[],c=v.createDecipheriv(G,s,d);h.push(c.update(u)),h.push(c.final()),m=b.concat(h)}else{var N=y.match(r);m=b.from(N[2].replace(/[\r\n]/g,""),"base64")}var W=y.match(o)[1];return{tag:W,data:m}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(t,i,a){function l(X){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(N){return typeof N}:l=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},l(X)}var o=t("./asn1"),r=t("./aesid.json"),f=t("./fixProc"),v=t("browserify-aes"),b=t("pbkdf2"),Z=t("safe-buffer").Buffer;i.exports=p;function p(X){var m;l(X)==="object"&&!Z.isBuffer(X)&&(m=X.passphrase,X=X.key),typeof X=="string"&&(X=Z.from(X));var N=f(X,m),G=N.tag,d=N.data,u,s;switch(G){case"CERTIFICATE":s=o.certificate.decode(d,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(s||(s=o.PublicKey.decode(d,"der")),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPublicKey.decode(s.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return s.subjectPrivateKey=s.subjectPublicKey,{type:"ec",data:s};case"1.2.840.10040.4.1":return s.algorithm.params.pub_key=o.DSAparam.decode(s.subjectPublicKey.data,"der"),{type:"dsa",data:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"ENCRYPTED PRIVATE KEY":d=o.EncryptedPrivateKey.decode(d,"der"),d=y(d,m);case"PRIVATE KEY":switch(s=o.PrivateKey.decode(d,"der"),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPrivateKey.decode(s.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:s.algorithm.curve,privateKey:o.ECPrivateKey.decode(s.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return s.algorithm.params.priv_key=o.DSAparam.decode(s.subjectPrivateKey,"der"),{type:"dsa",params:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"RSA PUBLIC KEY":return o.RSAPublicKey.decode(d,"der");case"RSA PRIVATE KEY":return o.RSAPrivateKey.decode(d,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:o.DSAPrivateKey.decode(d,"der")};case"EC PRIVATE KEY":return d=o.ECPrivateKey.decode(d,"der"),{curve:d.parameters.value,privateKey:d.privateKey};default:throw new Error("unknown key type "+G)}}p.signature=o.signature;function y(X,m){var N=X.algorithm.decrypt.kde.kdeparams.salt,G=parseInt(X.algorithm.decrypt.kde.kdeparams.iters.toString(),10),d=r[X.algorithm.decrypt.cipher.algo.join(".")],u=X.algorithm.decrypt.cipher.iv,s=X.subjectPrivateKey,h=parseInt(d.split("-")[1],10)/8,c=b.pbkdf2Sync(m,N,G,h,"sha1"),W=v.createDecipheriv(d,c,u),M=[];return M.push(W.update(s)),M.push(W.final()),Z.concat(M)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(t,i,a){a.pbkdf2=t("./lib/async"),a.pbkdf2Sync=t("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(t,i,a){(function(l,o){var r=t("safe-buffer").Buffer,f=t("./precondition"),v=t("./default-encoding"),b=t("./sync"),Z=t("./to-buffer"),p,y=o.crypto&&o.crypto.subtle,X={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},m=[];function N(u){if(o.process&&!o.process.browser||!y||!y.importKey||!y.deriveBits)return Promise.resolve(!1);if(m[u]!==void 0)return m[u];p=p||r.alloc(8);var s=G(p,p,10,128,u).then(function(){return!0}).catch(function(){return!1});return m[u]=s,s}function G(u,s,h,c,W){return y.importKey("raw",u,{name:"PBKDF2"},!1,["deriveBits"]).then(function(M){return y.deriveBits({name:"PBKDF2",salt:s,iterations:h,hash:{name:W}},M,c<<3)}).then(function(M){return r.from(M)})}function d(u,s){u.then(function(h){l.nextTick(function(){s(null,h)})},function(h){l.nextTick(function(){s(h)})})}i.exports=function(u,s,h,c,W,M){typeof W=="function"&&(M=W,W=void 0),W=W||"sha1";var I=X[W.toLowerCase()];if(!I||typeof o.Promise!="function")return l.nextTick(function(){var w;try{w=b(u,s,h,c,W)}catch(C){return M(C)}M(null,w)});if(f(h,c),u=Z(u,v,"Password"),s=Z(s,v,"Salt"),typeof M!="function")throw new Error("No callback provided to pbkdf2");d(N(I).then(function(w){return w?G(u,s,h,c,I):b(u,s,h,c,W)}),M)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(t,i,a){(function(l){var o;if(l.browser)o="utf-8";else if(l.version){var r=parseInt(l.version.split(".")[0].slice(1),10);o=r>=6?"utf-8":"binary"}else o="utf-8";i.exports=o}).call(this,t("_process"))},{_process:467}],463:[function(t,i,a){var l=Math.pow(2,30)-1;i.exports=function(o,r){if(typeof o!="number")throw new TypeError("Iterations not a number");if(o<0)throw new TypeError("Bad iterations");if(typeof r!="number")throw new TypeError("Key length not a number");if(r<0||r>l||r!==r)throw new TypeError("Bad key length")}},{}],464:[function(t,i,a){var l=t("create-hash/md5"),o=t("ripemd160"),r=t("sha.js"),f=t("safe-buffer").Buffer,v=t("./precondition"),b=t("./default-encoding"),Z=t("./to-buffer"),p=f.alloc(128),y={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function X(G,d,u){var s=m(G),h=G==="sha512"||G==="sha384"?128:64;d.length>h?d=s(d):d.length"u"||!l.version||l.version.indexOf("v0.")===0||l.version.indexOf("v1.")===0&&l.version.indexOf("v1.8.")!==0?i.exports={nextTick:o}:i.exports=l;function o(r,f,v,b){if(typeof r!="function")throw new TypeError('"callback" argument must be a function');var Z=arguments.length,p,y;switch(Z){case 0:case 1:return l.nextTick(r);case 2:return l.nextTick(function(){r.call(null,f)});case 3:return l.nextTick(function(){r.call(null,f,v)});case 4:return l.nextTick(function(){r.call(null,f,v,b)});default:for(p=new Array(Z-1),y=0;y1)for(var c=1;cc||new f(d).cmp(h.modulus)>=0)throw new Error("decryption error");var W;u?W=Z(new f(d),h):W=v(d,h);var M=p.alloc(c-W.length);if(W=p.concat([M,W],c),s===4)return y(h,W);if(s===1)return X(h,W,u);if(s===3)return W;throw new Error("unknown padding")};function y(N,G){var d=N.modulus.byteLength(),u=b("sha1").update(p.alloc(0)).digest(),s=u.length;if(G[0]!==0)throw new Error("decryption error");var h=G.slice(1,s+1),c=G.slice(s+1),W=r(h,o(c,s)),M=r(c,o(W,d-s-1));if(m(u,M.slice(0,s)))throw new Error("decryption error");for(var I=s;M[I]===0;)I++;if(M[I++]!==1)throw new Error("decryption error");return M.slice(I)}function X(N,G,d){for(var u=G.slice(0,2),s=2,h=0;G[s++]!==0;)if(s>=G.length){h++;break}var c=G.slice(2,s-1);if((u.toString("hex")!=="0002"&&!d||u.toString("hex")!=="0001"&&d)&&h++,c.length<8&&h++,h)throw new Error("decryption error");return G.slice(s)}function m(N,G){N=p.from(N),G=p.from(G);var d=0,u=N.length;N.length!==G.length&&(d++,u=Math.min(N.length,G.length));for(var s=-1;++s=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return s?p(W,c):Z(W,c)};function X(G,d){var u=G.modulus.byteLength(),s=d.length,h=r("sha1").update(y.alloc(0)).digest(),c=h.length,W=2*c;if(s>u-W-2)throw new Error("message too long");var M=y.alloc(u-s-W-2),I=u-c-1,w=o(c),C=v(y.concat([h,M,y.alloc(1,1),d],I),f(w,I)),x=v(w,f(C,c));return new b(y.concat([y.alloc(1),x,C],u))}function m(G,d,u){var s=d.length,h=G.modulus.byteLength();if(s>h-11)throw new Error("message too long");var c;return u?c=y.alloc(h-s-3,255):c=N(h-s-3),new b(y.concat([y.from([0,u?1:2]),c,y.alloc(1),d],h))}function N(G){for(var d=y.allocUnsafe(G),u=0,s=o(G*2),h=0,c;uf)throw new RangeError("requested too many random bytes");var m=b.allocUnsafe(y);if(y>0)if(y>r)for(var N=0;Ny||u<0)throw new TypeError("offset must be a uint32");if(u>Z||u>s)throw new RangeError("offset out of range")}function m(u,s,h){if(typeof u!="number"||u!==u)throw new TypeError("size must be a number");if(u>y||u<0)throw new TypeError("size must be a uint32");if(u+s>h||u>Z)throw new RangeError("buffer too small")}p&&p.getRandomValues||!l.browser?(a.randomFill=N,a.randomFillSync=d):(a.randomFill=r,a.randomFillSync=r);function N(u,s,h,c){if(!b.isBuffer(u)&&!(u instanceof o.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof s=="function")c=s,s=0,h=u.length;else if(typeof h=="function")c=h,h=u.length-s;else if(typeof c!="function")throw new TypeError('"cb" argument must be a function');return X(s,u.length),m(h,s,u.length),G(u,s,h,c)}function G(u,s,h,c){if(l.browser){var W=u.buffer,M=new Uint8Array(W,s,h);if(p.getRandomValues(M),c){l.nextTick(function(){c(null,u)});return}return u}if(c){v(h,function(w,C){if(w)return c(w);C.copy(u,s),c(null,u)});return}var I=v(h);return I.copy(u,s),u}function d(u,s,h){if(typeof s>"u"&&(s=0),!b.isBuffer(u)&&!(u instanceof o.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return X(s,u.length),h===void 0&&(h=u.length-s),m(h,s,u.length),G(u,s,h)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(t,i,a){function l(y){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(m){return typeof m}:l=function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},l(y)}function o(y,X){y.prototype=Object.create(X.prototype),y.prototype.constructor=y,y.__proto__=X}var r={};function f(y,X,m){m||(m=Error);function N(d,u,s){return typeof X=="string"?X:X(d,u,s)}var G=function(d){o(u,d);function u(s,h,c){return d.call(this,N(s,h,c))||this}return u}(m);G.prototype.name=m.name,G.prototype.code=y,r[y]=G}function v(y,X){if(Array.isArray(y)){var m=y.length;return y=y.map(function(N){return String(N)}),m>2?"one of ".concat(X," ").concat(y.slice(0,m-1).join(", "),", or ")+y[m-1]:m===2?"one of ".concat(X," ").concat(y[0]," or ").concat(y[1]):"of ".concat(X," ").concat(y[0])}else return"of ".concat(X," ").concat(String(y))}function b(y,X,m){return y.substr(!m||m<0?0:+m,X.length)===X}function Z(y,X,m){return(m===void 0||m>y.length)&&(m=y.length),y.substring(m-X.length,m)===X}function p(y,X,m){return typeof m!="number"&&(m=0),m+X.length>y.length?!1:y.indexOf(X,m)!==-1}f("ERR_INVALID_OPT_VALUE",function(y,X){return'The value "'+X+'" is invalid for option "'+y+'"'},TypeError),f("ERR_INVALID_ARG_TYPE",function(y,X,m){var N;typeof X=="string"&&b(X,"not ")?(N="must not be",X=X.replace(/^not /,"")):N="must be";var G;if(Z(y," argument"))G="The ".concat(y," ").concat(N," ").concat(v(X,"type"));else{var d=p(y,".")?"property":"argument";G='The "'.concat(y,'" ').concat(d," ").concat(N," ").concat(v(X,"type"))}return G+=". Received type ".concat(l(m)),G},TypeError),f("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),f("ERR_METHOD_NOT_IMPLEMENTED",function(y){return"The "+y+" method is not implemented"}),f("ERR_STREAM_PREMATURE_CLOSE","Premature close"),f("ERR_STREAM_DESTROYED",function(y){return"Cannot call "+y+" after a stream was destroyed"}),f("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),f("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),f("ERR_STREAM_WRITE_AFTER_END","write after end"),f("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),f("ERR_UNKNOWN_ENCODING",function(y){return"Unknown encoding: "+y},TypeError),f("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),i.exports.codes=r},{}],478:[function(t,i,a){(function(l){var o=Object.keys||function(m){var N=[];for(var G in m)N.push(G);return N};i.exports=p;var r=t("./_stream_readable"),f=t("./_stream_writable");t("inherits")(p,r);for(var v=o(f.prototype),b=0;b0)if(typeof te!="string"&&!q.objectMode&&Object.getPrototypeOf(te)!==b.prototype&&(te=p(te)),ne)q.endEmitted?x(ee,new M):Y(ee,q,te,!0);else if(q.ended)x(ee,new c);else{if(q.destroyed)return!1;q.reading=!1,q.decoder&&!be?(te=q.decoder.write(te),q.objectMode||te.length!==0?Y(ee,q,te,!1):O(ee,q)):Y(ee,q,te,!1)}else ne||(q.reading=!1,O(ee,q))}return!q.ended&&(q.length=J?ee=J:(ee--,ee|=ee>>>1,ee|=ee>>>2,ee|=ee>>>4,ee|=ee>>>8,ee|=ee>>>16,ee++),ee}function K(ee,te){return ee<=0||te.length===0&&te.ended?0:te.objectMode?1:ee!==ee?te.flowing&&te.length?te.buffer.head.data.length:te.length:(ee>te.highWaterMark&&(te.highWaterMark=U(ee)),ee<=te.length?ee:te.ended?te.length:(te.needReadable=!0,0))}L.prototype.read=function(ee){m("read",ee),ee=parseInt(ee,10);var te=this._readableState,be=ee;if(ee!==0&&(te.emittedReadable=!1),ee===0&&te.needReadable&&((te.highWaterMark!==0?te.length>=te.highWaterMark:te.length>0)||te.ended))return m("read: emitReadable",te.length,te.ended),te.length===0&&te.ended?$(this):k(this),null;if(ee=K(ee,te),ee===0&&te.ended)return te.length===0&&$(this),null;var ne=te.needReadable;m("need readable",ne),(te.length===0||te.length-ee0?B=E(ee,te):B=null,B===null?(te.needReadable=te.length<=te.highWaterMark,ee=0):(te.length-=ee,te.awaitDrain=0),te.length===0&&(te.ended||(te.needReadable=!0),be!==ee&&te.ended&&$(this)),B!==null&&this.emit("data",B),B};function H(ee,te){if(m("onEofChunk"),!te.ended){if(te.decoder){var be=te.decoder.end();be&&be.length&&(te.buffer.push(be),te.length+=te.objectMode?1:be.length)}te.ended=!0,te.sync?k(ee):(te.needReadable=!1,te.emittedReadable||(te.emittedReadable=!0,F(ee)))}}function k(ee){var te=ee._readableState;m("emitReadable",te.needReadable,te.emittedReadable),te.needReadable=!1,te.emittedReadable||(m("emitReadable",te.flowing),te.emittedReadable=!0,l.nextTick(F,ee))}function F(ee){var te=ee._readableState;m("emitReadable_",te.destroyed,te.length,te.ended),!te.destroyed&&(te.length||te.ended)&&(ee.emit("readable"),te.emittedReadable=!1),te.needReadable=!te.flowing&&!te.ended&&te.length<=te.highWaterMark,_(ee)}function O(ee,te){te.readingMore||(te.readingMore=!0,l.nextTick(Q,ee,te))}function Q(ee,te){for(;!te.reading&&!te.ended&&(te.length1&&le(ne.pipes,ee)!==-1)&&!Je&&(m("false write response, pause",ne.awaitDrain),ne.awaitDrain++),be.pause())}function Pe(Se){m("onerror",Se),we(),ee.removeListener("error",Pe),f(ee,"error")===0&&x(ee,Se)}g(ee,"error",Pe);function Be(){ee.removeListener("finish",Te),we()}ee.once("close",Be);function Te(){m("onfinish"),ee.removeListener("close",Be),we()}ee.once("finish",Te);function we(){m("unpipe"),be.unpipe(ee)}return ee.emit("pipe",be),ne.flowing||(m("pipe resume"),be.resume()),ee};function oe(ee){return function(){var be=ee._readableState;m("pipeOnDrain",be.awaitDrain),be.awaitDrain&&be.awaitDrain--,be.awaitDrain===0&&f(ee,"data")&&(be.flowing=!0,_(ee))}}L.prototype.unpipe=function(ee){var te=this._readableState,be={hasUnpiped:!1};if(te.pipesCount===0)return this;if(te.pipesCount===1)return ee&&ee!==te.pipes?this:(ee||(ee=te.pipes),te.pipes=null,te.pipesCount=0,te.flowing=!1,ee&&ee.emit("unpipe",this,be),this);if(!ee){var ne=te.pipes,B=te.pipesCount;te.pipes=null,te.pipesCount=0,te.flowing=!1;for(var q=0;q0,ne.flowing!==!1&&this.resume()):ee==="readable"&&!ne.endEmitted&&!ne.readableListening&&(ne.readableListening=ne.needReadable=!0,ne.flowing=!1,ne.emittedReadable=!1,m("on readable",ne.length,ne.reading),ne.length?k(this):ne.reading||l.nextTick(he,this)),be},L.prototype.addListener=L.prototype.on,L.prototype.removeListener=function(ee,te){var be=v.prototype.removeListener.call(this,ee,te);return ee==="readable"&&l.nextTick(se,this),be},L.prototype.removeAllListeners=function(ee){var te=v.prototype.removeAllListeners.apply(this,arguments);return(ee==="readable"||ee===void 0)&&l.nextTick(se,this),te};function se(ee){var te=ee._readableState;te.readableListening=ee.listenerCount("readable")>0,te.resumeScheduled&&!te.paused?te.flowing=!0:ee.listenerCount("data")>0&&ee.resume()}function he(ee){m("readable nexttick read 0"),ee.read(0)}L.prototype.resume=function(){var ee=this._readableState;return ee.flowing||(m("resume"),ee.flowing=!ee.readableListening,pe(this,ee)),ee.paused=!1,this};function pe(ee,te){te.resumeScheduled||(te.resumeScheduled=!0,l.nextTick(re,ee,te))}function re(ee,te){m("resume",te.reading),te.reading||ee.read(0),te.resumeScheduled=!1,ee.emit("resume"),_(ee),te.flowing&&!te.reading&&ee.read(0)}L.prototype.pause=function(){return m("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(m("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function _(ee){var te=ee._readableState;for(m("flow",te.flowing);te.flowing&&ee.read()!==null;);}L.prototype.wrap=function(ee){var te=this,be=this._readableState,ne=!1;ee.on("end",function(){if(m("wrapped end"),be.decoder&&!be.ended){var ue=be.decoder.end();ue&&ue.length&&te.push(ue)}te.push(null)}),ee.on("data",function(ue){if(m("wrapped data"),be.decoder&&(ue=be.decoder.write(ue)),!(be.objectMode&&ue==null)&&!(!be.objectMode&&(!ue||!ue.length))){var ve=te.push(ue);ve||(ne=!0,ee.pause())}});for(var B in ee)this[B]===void 0&&typeof ee[B]=="function"&&(this[B]=function(ve){return function(){return ee[ve].apply(ee,arguments)}}(B));for(var q=0;q=te.length?(te.decoder?be=te.buffer.join(""):te.buffer.length===1?be=te.buffer.first():be=te.buffer.concat(te.length),te.buffer.clear()):be=te.buffer.consume(ee,te.decoder),be}function $(ee){var te=ee._readableState;m("endReadable",te.endEmitted),te.endEmitted||(te.ended=!0,l.nextTick(ae,te,ee))}function ae(ee,te){if(m("endReadableNT",ee.endEmitted,ee.length),!ee.endEmitted&&ee.length===0&&(ee.endEmitted=!0,te.readable=!1,te.emit("end"),ee.autoDestroy)){var be=te._writableState;(!be||be.autoDestroy&&be.finished)&&te.destroy()}}typeof Symbol=="function"&&(L.from=function(ee,te){return C===void 0&&(C=t("./internal/streams/from")),C(L,ee,te)});function le(ee,te){for(var be=0,ne=ee.length;be-1))throw new w(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Y(_,E,$){return!_.objectMode&&_.decodeStrings!==!1&&typeof E=="string"&&(E=Z.from(E,$)),E}Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function T(_,E,$,ae,le,ee){if(!$){var te=Y(E,ae,le);ae!==te&&($=!0,le="buffer",ae=te)}var be=E.objectMode?1:ae.length;E.length+=be;var ne=E.length0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(u){var s={data:u,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var u=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,u}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(u){if(this.length===0)return"";for(var s=this.head,h=""+s.data;s=s.next;)h+=u+s.data;return h}},{key:"concat",value:function(u){if(this.length===0)return p.alloc(0);for(var s=p.allocUnsafe(u>>>0),h=this.head,c=0;h;)N(h.data,s,c),c+=h.data.length,h=h.next;return s}},{key:"consume",value:function(u,s){var h;return uW.length?W.length:u;if(M===W.length?c+=W:c+=W.slice(0,u),u-=M,u===0){M===W.length?(++h,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=W.slice(M));break}++h}return this.length-=h,c}},{key:"_getBuffer",value:function(u){var s=p.allocUnsafe(u),h=this.head,c=1;for(h.data.copy(s),u-=h.data.length;h=h.next;){var W=h.data,M=u>W.length?W.length:u;if(W.copy(s,s.length-u,0,M),u-=M,u===0){M===W.length?(++c,h.next?this.head=h.next:this.head=this.tail=null):(this.head=h,h.data=W.slice(M));break}++c}return this.length-=c,s}},{key:m,value:function(u,s){return X(this,o({},s,{depth:0,customInspect:!1}))}}]),G}()},{buffer:216,util:185}],485:[function(t,i,a){(function(l){function o(p,y){var X=this,m=this._readableState&&this._readableState.destroyed,N=this._writableState&&this._writableState.destroyed;return m||N?(y?y(p):p&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,l.nextTick(b,this,p)):l.nextTick(b,this,p)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(p||null,function(G){!y&&G?X._writableState?X._writableState.errorEmitted?l.nextTick(f,X):(X._writableState.errorEmitted=!0,l.nextTick(r,X,G)):l.nextTick(r,X,G):y?(l.nextTick(f,X),y(G)):l.nextTick(f,X)}),this)}function r(p,y){b(p,y),f(p)}function f(p){p._writableState&&!p._writableState.emitClose||p._readableState&&!p._readableState.emitClose||p.emit("close")}function v(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function b(p,y){p.emit("error",y)}function Z(p,y){var X=p._readableState,m=p._writableState;X&&X.autoDestroy||m&&m.autoDestroy?p.destroy(y):p.emit("error",y)}i.exports={destroy:o,undestroy:v,errorOrDestroy:Z}}).call(this,t("_process"))},{_process:467}],486:[function(t,i,a){var l=t("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function o(b){var Z=!1;return function(){if(!Z){Z=!0;for(var p=arguments.length,y=new Array(p),X=0;X0;return p(W,I,w,function(C){h||(h=C),C&&c.forEach(y),!I&&(c.forEach(y),s(h))})});return d.reduce(X)}i.exports=N},{"../../../errors":477,"./end-of-stream":486}],489:[function(t,i,a){var l=t("../../../errors").codes.ERR_INVALID_OPT_VALUE;function o(f,v,b){return f.highWaterMark!=null?f.highWaterMark:v?f[b]:null}function r(f,v,b,Z){var p=o(v,Z,b);if(p!=null){if(!(isFinite(p)&&Math.floor(p)===p)||p<0){var y=Z?b:"highWaterMark";throw new l(y,p)}return Math.floor(p)}return f.objectMode?16:16*1024}i.exports={getHighWaterMark:r}},{"../../../errors":477}],490:[function(t,i,a){i.exports=t("events").EventEmitter},{events:367}],491:[function(t,i,a){a=i.exports=t("./lib/_stream_readable.js"),a.Stream=a,a.Readable=a,a.Writable=t("./lib/_stream_writable.js"),a.Duplex=t("./lib/_stream_duplex.js"),a.Transform=t("./lib/_stream_transform.js"),a.PassThrough=t("./lib/_stream_passthrough.js"),a.finished=t("./lib/internal/streams/end-of-stream.js"),a.pipeline=t("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":478,"./lib/_stream_passthrough.js":479,"./lib/_stream_readable.js":480,"./lib/_stream_transform.js":481,"./lib/_stream_writable.js":482,"./lib/internal/streams/end-of-stream.js":486,"./lib/internal/streams/pipeline.js":488}],492:[function(t,i,a){function l(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(v){return typeof v}:l=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},l(r)}var o=function(r){var f=Object.prototype,v=f.hasOwnProperty,b,Z=typeof Symbol=="function"?Symbol:{},p=Z.iterator||"@@iterator",y=Z.asyncIterator||"@@asyncIterator",X=Z.toStringTag||"@@toStringTag";function m(H,k,F){return Object.defineProperty(H,k,{value:F,enumerable:!0,configurable:!0,writable:!0}),H[k]}try{m({},"")}catch{m=function(F,O,Q){return F[O]=Q}}function N(H,k,F,O){var Q=k&&k.prototype instanceof W?k:W,oe=Object.create(Q.prototype),se=new J(O||[]);return oe._invoke=L(H,F,se),oe}r.wrap=N;function G(H,k,F){try{return{type:"normal",arg:H.call(k,F)}}catch(O){return{type:"throw",arg:O}}}var d="suspendedStart",u="suspendedYield",s="executing",h="completed",c={};function W(){}function M(){}function I(){}var w={};w[p]=function(){return this};var C=Object.getPrototypeOf,x=C&&C(C(U([])));x&&x!==f&&v.call(x,p)&&(w=x);var R=I.prototype=W.prototype=Object.create(w);M.prototype=R.constructor=I,I.constructor=M,M.displayName=m(I,X,"GeneratorFunction");function g(H){["next","throw","return"].forEach(function(k){m(H,k,function(F){return this._invoke(k,F)})})}r.isGeneratorFunction=function(H){var k=typeof H=="function"&&H.constructor;return k?k===M||(k.displayName||k.name)==="GeneratorFunction":!1},r.mark=function(H){return Object.setPrototypeOf?Object.setPrototypeOf(H,I):(H.__proto__=I,m(H,X,"GeneratorFunction")),H.prototype=Object.create(R),H},r.awrap=function(H){return{__await:H}};function S(H,k){function F(oe,se,he,pe){var re=G(H[oe],H,se);if(re.type==="throw")pe(re.arg);else{var _=re.arg,E=_.value;return E&&l(E)==="object"&&v.call(E,"__await")?k.resolve(E.__await).then(function($){F("next",$,he,pe)},function($){F("throw",$,he,pe)}):k.resolve(E).then(function($){_.value=$,he(_)},function($){return F("throw",$,he,pe)})}}var O;function Q(oe,se){function he(){return new k(function(pe,re){F(oe,se,pe,re)})}return O=O?O.then(he,he):he()}this._invoke=Q}g(S.prototype),S.prototype[y]=function(){return this},r.AsyncIterator=S,r.async=function(H,k,F,O,Q){Q===void 0&&(Q=Promise);var oe=new S(N(H,k,F,O),Q);return r.isGeneratorFunction(k)?oe:oe.next().then(function(se){return se.done?se.value:oe.next()})};function L(H,k,F){var O=d;return function(oe,se){if(O===s)throw new Error("Generator is already running");if(O===h){if(oe==="throw")throw se;return K()}for(F.method=oe,F.arg=se;;){var he=F.delegate;if(he){var pe=V(he,F);if(pe){if(pe===c)continue;return pe}}if(F.method==="next")F.sent=F._sent=F.arg;else if(F.method==="throw"){if(O===d)throw O=h,F.arg;F.dispatchException(F.arg)}else F.method==="return"&&F.abrupt("return",F.arg);O=s;var re=G(H,k,F);if(re.type==="normal"){if(O=F.done?h:u,re.arg===c)continue;return{value:re.arg,done:F.done}}else re.type==="throw"&&(O=h,F.method="throw",F.arg=re.arg)}}}function V(H,k){var F=H.iterator[k.method];if(F===b){if(k.delegate=null,k.method==="throw"){if(H.iterator.return&&(k.method="return",k.arg=b,V(H,k),k.method==="throw"))return c;k.method="throw",k.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var O=G(F,H.iterator,k.arg);if(O.type==="throw")return k.method="throw",k.arg=O.arg,k.delegate=null,c;var Q=O.arg;if(!Q)return k.method="throw",k.arg=new TypeError("iterator result is not an object"),k.delegate=null,c;if(Q.done)k[H.resultName]=Q.value,k.next=H.nextLoc,k.method!=="return"&&(k.method="next",k.arg=b);else return Q;return k.delegate=null,c}g(R),m(R,X,"Generator"),R[p]=function(){return this},R.toString=function(){return"[object Generator]"};function Y(H){var k={tryLoc:H[0]};1 in H&&(k.catchLoc=H[1]),2 in H&&(k.finallyLoc=H[2],k.afterLoc=H[3]),this.tryEntries.push(k)}function T(H){var k=H.completion||{};k.type="normal",delete k.arg,H.completion=k}function J(H){this.tryEntries=[{tryLoc:"root"}],H.forEach(Y,this),this.reset(!0)}r.keys=function(H){var k=[];for(var F in H)k.push(F);return k.reverse(),function O(){for(;k.length;){var Q=k.pop();if(Q in H)return O.value=Q,O.done=!1,O}return O.done=!0,O}};function U(H){if(H){var k=H[p];if(k)return k.call(H);if(typeof H.next=="function")return H;if(!isNaN(H.length)){var F=-1,O=function Q(){for(;++F=0;--Q){var oe=this.tryEntries[Q],se=oe.completion;if(oe.tryLoc==="root")return O("end");if(oe.tryLoc<=this.prev){var he=v.call(oe,"catchLoc"),pe=v.call(oe,"finallyLoc");if(he&&pe){if(this.prev=0;--O){var Q=this.tryEntries[O];if(Q.tryLoc<=this.prev&&v.call(Q,"finallyLoc")&&this.prev=0;--F){var O=this.tryEntries[F];if(O.finallyLoc===k)return this.complete(O.completion,O.afterLoc),T(O),c}},catch:function(k){for(var F=this.tryEntries.length-1;F>=0;--F){var O=this.tryEntries[F];if(O.tryLoc===k){var Q=O.completion;if(Q.type==="throw"){var oe=Q.arg;T(O)}return oe}}throw new Error("illegal catch attempt")},delegateYield:function(k,F,O){return this.delegate={iterator:U(k),resultName:F,nextLoc:O},this.method==="next"&&(this.arg=b),c}},r}((typeof i>"u"?"undefined":l(i))==="object"?i.exports:{});try{regeneratorRuntime=o}catch{Function("r","regeneratorRuntime = r")(o)}},{}],493:[function(t,i,a){var l=t("buffer").Buffer,o=t("inherits"),r=t("hash-base"),f=new Array(16),v=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],b=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],Z=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],y=[0,1518500249,1859775393,2400959708,2840853838],X=[1352829926,1548603684,1836072691,2053994217,0];function m(){r.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}o(m,r),m.prototype._update=function(){for(var c=f,W=0;W<16;++W)c[W]=this._block.readInt32LE(W*4);for(var M=this._a|0,I=this._b|0,w=this._c|0,C=this._d|0,x=this._e|0,R=this._a|0,g=this._b|0,S=this._c|0,L=this._d|0,V=this._e|0,Y=0;Y<80;Y+=1){var T,J;Y<16?(T=G(M,I,w,C,x,c[v[Y]],y[0],Z[Y]),J=h(R,g,S,L,V,c[b[Y]],X[0],p[Y])):Y<32?(T=d(M,I,w,C,x,c[v[Y]],y[1],Z[Y]),J=s(R,g,S,L,V,c[b[Y]],X[1],p[Y])):Y<48?(T=u(M,I,w,C,x,c[v[Y]],y[2],Z[Y]),J=u(R,g,S,L,V,c[b[Y]],X[2],p[Y])):Y<64?(T=s(M,I,w,C,x,c[v[Y]],y[3],Z[Y]),J=d(R,g,S,L,V,c[b[Y]],X[3],p[Y])):(T=h(M,I,w,C,x,c[v[Y]],y[4],Z[Y]),J=G(R,g,S,L,V,c[b[Y]],X[4],p[Y])),M=x,x=C,C=N(w,10),w=I,I=T,R=V,V=L,L=N(S,10),S=g,g=J}var U=this._b+w+L|0;this._b=this._c+C+V|0,this._c=this._d+x+R|0,this._d=this._e+M+g|0,this._e=this._a+I+S|0,this._a=U},m.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var c=l.alloc?l.alloc(20):new l(20);return c.writeInt32LE(this._a,0),c.writeInt32LE(this._b,4),c.writeInt32LE(this._c,8),c.writeInt32LE(this._d,12),c.writeInt32LE(this._e,16),c};function N(c,W){return c<>>32-W}function G(c,W,M,I,w,C,x,R){return N(c+(W^M^I)+C+x|0,R)+w|0}function d(c,W,M,I,w,C,x,R){return N(c+(W&M|~W&I)+C+x|0,R)+w|0}function u(c,W,M,I,w,C,x,R){return N(c+((W|~M)^I)+C+x|0,R)+w|0}function s(c,W,M,I,w,C,x,R){return N(c+(W&I|M&~I)+C+x|0,R)+w|0}function h(c,W,M,I,w,C,x,R){return N(c+(W^(M|~I))+C+x|0,R)+w|0}i.exports=m},{buffer:216,"hash-base":370,inherits:387}],494:[function(t,i,a){var l=t("buffer"),o=l.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=l:(r(l,a),a.Buffer=f);function f(v,b,Z){return o(v,b,Z)}r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return l.SlowBuffer(v)}},{buffer:216}],495:[function(t,i,a){(function(l){function o(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(X){return typeof X}:o=function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},o(p)}var r=t("buffer"),f=r.Buffer,v={},b;for(b in r)r.hasOwnProperty(b)&&(b==="SlowBuffer"||b==="Buffer"||(v[b]=r[b]));var Z=v.Buffer={};for(b in f)f.hasOwnProperty(b)&&(b==="allocUnsafe"||b==="allocUnsafeSlow"||(Z[b]=f[b]));if(v.Buffer.prototype=f.prototype,(!Z.from||Z.from===Uint8Array.from)&&(Z.from=function(p,y,X){if(typeof p=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+o(p));if(p&&typeof p.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(p));return f(p,y,X)}),Z.alloc||(Z.alloc=function(p,y,X){if(typeof p!="number")throw new TypeError('The "size" argument must be of type number. Received type '+o(p));if(p<0||p>=2*(1<<30))throw new RangeError('The value "'+p+'" is invalid for option "size"');var m=f(p);return!y||y.length===0?m.fill(0):typeof X=="string"?m.fill(y,X):m.fill(y),m}),!v.kStringMaxLength)try{v.kStringMaxLength=l.binding("buffer").kStringMaxLength}catch{}v.constants||(v.constants={MAX_LENGTH:v.kMaxLength},v.kStringMaxLength&&(v.constants.MAX_STRING_LENGTH=v.kStringMaxLength)),i.exports=v}).call(this,t("_process"))},{_process:467,buffer:216}],496:[function(t,i,a){function l(Dt,ht){var Fe;if(typeof Symbol>"u"||Dt[Symbol.iterator]==null){if(Array.isArray(Dt)||(Fe=p(Dt))||ht&&Dt&&typeof Dt.length=="number"){Fe&&(Dt=Fe);var tt=0,nt=function(){};return{s:nt,n:function(){return tt>=Dt.length?{done:!0}:{done:!1,value:Dt[tt++]}},e:function(gi){throw gi},f:nt}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Vt=!0,Bt=!1,Nn;return{s:function(){Fe=Dt[Symbol.iterator]()},n:function(){var gi=Fe.next();return Vt=gi.done,gi},e:function(gi){Bt=!0,Nn=gi},f:function(){try{!Vt&&Fe.return!=null&&Fe.return()}finally{if(Bt)throw Nn}}}}function o(Dt){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(Fe){return typeof Fe}:o=function(Fe){return Fe&&typeof Symbol=="function"&&Fe.constructor===Symbol&&Fe!==Symbol.prototype?"symbol":typeof Fe},o(Dt)}function r(Dt,ht){if(!(Dt instanceof ht))throw new TypeError("Cannot call a class as a function")}function f(Dt,ht){for(var Fe=0;FeDt.length)&&(ht=Dt.length);for(var Fe=0,tt=new Array(ht);Fe",lt:"<",quot:'"',apos:"'"},V=-1,Y=-2,T=0,J=1,U=2,K=3,H=4,k=5,F=6,O=7,Q=8,oe=9,se=10,he=11,pe=12,re=13,_=14,E=15,$=16,ae=17,le=18,ee=19,te=20,be=21,ne=22,B=23,q=24,ue=25,ve=26,Ge=27,Je=28,xe=29,ke=30,Pe=31,Be=32,Te=33,we=34,Se=35,De=36,me=37,Ve=38,Me=39,Ie=40,Ze=41,Ce=42,ye=43,Ue=44,qe=9,ie=10,Oe=13,Ke=32,Xe=33,Re=34,Ae=38,ct=39,lt=45,ot=47,wt=59,Mt=60,xt=61,Gt=62,Zt=63,Tt=91,Ct=93,St=133,Pt=8232,Ut=function(ht){return ht===Re||ht===ct},kt=[Re,ct],en=[].concat(kt,[Tt,Gt]),nn=[].concat(kt,[Mt,Ct]),Ft=[xt,Zt].concat(b(W)),Ln=[].concat(b(W),[Gt,Ae,Mt]);function An(Dt,ht,Fe){switch(ht){case"xml":Fe!==R&&Dt.fail("xml prefix must be bound to ".concat(R,"."));break;case"xmlns":Fe!==g&&Dt.fail("xmlns prefix must be bound to ".concat(g,"."));break}switch(Fe){case g:Dt.fail(ht===""?"the default namespace may not be set to ".concat(Fe,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(g,"."));break;case R:switch(ht){case"xml":break;case"":Dt.fail("the default namespace may not be set to ".concat(Fe,"."));break;default:Dt.fail("may not assign the xml namespace to another prefix.")}break}}function Gi(Dt,ht){for(var Fe=0,tt=Object.keys(ht);Fe0&&(nt+=":"),nt+="".concat(this.line,":").concat(this.column)),nt.length>0&&(nt+=": "),new Error(nt+Fe)}},{key:"fail",value:function(Fe){var tt=this.makeError(Fe),nt=this.errorHandler;if(nt===void 0)throw tt;return nt(tt),this}},{key:"write",value:function(Fe){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var tt=!1;Fe===null?(tt=!0,Fe=""):o(Fe)==="object"&&(Fe=Fe.toString()),this.carriedFromPrevious!==void 0&&(Fe="".concat(this.carriedFromPrevious).concat(Fe),this.carriedFromPrevious=void 0);var nt=Fe.length,Vt=Fe.charCodeAt(nt-1);!tt&&(Vt===Oe||Vt>=55296&&Vt<=56319)&&(this.carriedFromPrevious=Fe[nt-1],nt--,Fe=Fe.slice(0,nt));var Bt=this.stateTable;for(this.chunk=Fe,this.i=0;this.i=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>=Ke||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:return Fe.charCodeAt(tt+1)===ie&&(this.i=tt+2),this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Vt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Vt>1114111&&this.fail("disallowed character."),Vt}},{key:"getCode11",value:function(){var Fe=this.chunk,tt=this.i;if(this.prevI=tt,this.i=tt+1,tt>=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>31&&nt<127||nt>159&&nt!==Pt||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:{var Vt=Fe.charCodeAt(tt+1);(Vt===ie||Vt===St)&&(this.i=tt+2)}case St:case Pt:return this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Bt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Bt>1114111&&this.fail("disallowed character."),Bt}},{key:"getCodeNorm",value:function(){var Fe=this.getCode();return Fe===Y?ie:Fe}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(Fe){for(var tt=this.i,nt=this.chunk;;){var Vt=this.getCode(),Bt=Vt===Y,Nn=Bt?ie:Vt;if(Nn===V||Fe.includes(Nn))return this.text+=nt.slice(tt,this.prevI),Nn;Bt&&(this.text+="".concat(nt.slice(tt,this.prevI),` +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function p(Dt,ht){if(Dt){if(typeof Dt=="string")return m(Dt,ht);var Fe=Object.prototype.toString.call(Dt).slice(8,-1);if(Fe==="Object"&&Dt.constructor&&(Fe=Dt.constructor.name),Fe==="Map"||Fe==="Set")return Array.from(Dt);if(Fe==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Fe))return m(Dt,ht)}}function y(Dt){if(typeof Symbol<"u"&&Symbol.iterator in Object(Dt))return Array.from(Dt)}function X(Dt){if(Array.isArray(Dt))return m(Dt)}function m(Dt,ht){(ht==null||ht>Dt.length)&&(ht=Dt.length);for(var Fe=0,tt=new Array(ht);Fe",lt:"<",quot:'"',apos:"'"},V=-1,Y=-2,T=0,J=1,U=2,K=3,H=4,k=5,F=6,O=7,Q=8,oe=9,se=10,he=11,pe=12,re=13,_=14,E=15,$=16,ae=17,le=18,ee=19,te=20,be=21,ne=22,B=23,q=24,ue=25,ve=26,Ge=27,Je=28,xe=29,ke=30,Pe=31,Be=32,Te=33,we=34,Se=35,De=36,me=37,Ve=38,Me=39,Ie=40,Ze=41,Ce=42,ye=43,Ue=44,qe=9,ie=10,Oe=13,Ke=32,Xe=33,Re=34,Ae=38,ct=39,lt=45,ot=47,wt=59,Mt=60,xt=61,Gt=62,Zt=63,Tt=91,Ct=93,St=133,Pt=8232,Ut=function(ht){return ht===Re||ht===ct},kt=[Re,ct],en=[].concat(kt,[Tt,Gt]),nn=[].concat(kt,[Mt,Ct]),Ft=[xt,Zt].concat(b(W)),Ln=[].concat(b(W),[Gt,Ae,Mt]);function An(Dt,ht,Fe){switch(ht){case"xml":Fe!==R&&Dt.fail("xml prefix must be bound to ".concat(R,"."));break;case"xmlns":Fe!==g&&Dt.fail("xmlns prefix must be bound to ".concat(g,"."));break}switch(Fe){case g:Dt.fail(ht===""?"the default namespace may not be set to ".concat(Fe,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(g,"."));break;case R:switch(ht){case"xml":break;case"":Dt.fail("the default namespace may not be set to ".concat(Fe,"."));break;default:Dt.fail("may not assign the xml namespace to another prefix.")}break}}function Gi(Dt,ht){for(var Fe=0,tt=Object.keys(ht);Fe0&&(nt+=":"),nt+="".concat(this.line,":").concat(this.column)),nt.length>0&&(nt+=": "),new Error(nt+Fe)}},{key:"fail",value:function(Fe){var tt=this.makeError(Fe),nt=this.errorHandler;if(nt===void 0)throw tt;return nt(tt),this}},{key:"write",value:function(Fe){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var tt=!1;Fe===null?(tt=!0,Fe=""):o(Fe)==="object"&&(Fe=Fe.toString()),this.carriedFromPrevious!==void 0&&(Fe="".concat(this.carriedFromPrevious).concat(Fe),this.carriedFromPrevious=void 0);var nt=Fe.length,Vt=Fe.charCodeAt(nt-1);!tt&&(Vt===Oe||Vt>=55296&&Vt<=56319)&&(this.carriedFromPrevious=Fe[nt-1],nt--,Fe=Fe.slice(0,nt));var Bt=this.stateTable;for(this.chunk=Fe,this.i=0;this.i=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>=Ke||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:return Fe.charCodeAt(tt+1)===ie&&(this.i=tt+2),this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Vt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Vt>1114111&&this.fail("disallowed character."),Vt}},{key:"getCode11",value:function(){var Fe=this.chunk,tt=this.i;if(this.prevI=tt,this.i=tt+1,tt>=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>31&&nt<127||nt>159&&nt!==Pt||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:{var Vt=Fe.charCodeAt(tt+1);(Vt===ie||Vt===St)&&(this.i=tt+2)}case St:case Pt:return this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Bt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Bt>1114111&&this.fail("disallowed character."),Bt}},{key:"getCodeNorm",value:function(){var Fe=this.getCode();return Fe===Y?ie:Fe}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(Fe){for(var tt=this.i,nt=this.chunk;;){var Vt=this.getCode(),Bt=Vt===Y,Nn=Bt?ie:Vt;if(Nn===V||Fe.includes(Nn))return this.text+=nt.slice(tt,this.prevI),Nn;Bt&&(this.text+="".concat(nt.slice(tt,this.prevI),` `),tt=this.i)}}},{key:"captureToChar",value:function(Fe){for(var tt=this.i,nt=this.chunk;;){var Vt=this.getCode();switch(Vt){case Y:this.text+="".concat(nt.slice(tt,this.prevI),` `),tt=this.i,Vt=ie;break;case V:return this.text+=nt.slice(tt),!1}if(Vt===Fe)return this.text+=nt.slice(tt,this.prevI),!0}}},{key:"captureNameChars",value:function(){for(var Fe=this.chunk,tt=this.i;;){var nt=this.getCode();if(nt===V)return this.name+=Fe.slice(tt),V;if(!c(nt))return this.name+=Fe.slice(tt,this.prevI),nt===Y?ie:nt}}},{key:"skipSpaces",value:function(){for(;;){var Fe=this.getCodeNorm();if(Fe===V||!u(Fe))return Fe}}},{key:"setXMLVersion",value:function(Fe){this.currentXMLVersion=Fe,Fe==="1.0"?(this.isChar=s,this.getCode=this.getCode10):(this.isChar=I,this.getCode=this.getCode11)}},{key:"sBegin",value:function(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=J}},{key:"sBeginWhitespace",value:function(){var Fe=this.i,tt=this.skipSpaces();switch(this.prevI!==Fe&&(this.xmlDeclPossible=!1),tt){case Mt:if(this.state=E,this.text.length!==0)throw new Error("no-empty text at start");break;case V:break;default:this.unget(),this.state=re,this.xmlDeclPossible=!1}}},{key:"sDoctype",value:function(){var Fe,tt=this.captureTo(en);switch(tt){case Gt:{(Fe=this.doctypeHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text="",this.state=re,this.doctype=!0;break}case V:break;default:this.text+=String.fromCodePoint(tt),tt===Tt?this.state=H:Ut(tt)&&(this.state=K,this.q=tt)}}},{key:"sDoctypeQuote",value:function(){var Fe=this.q;this.captureToChar(Fe)&&(this.text+=String.fromCodePoint(Fe),this.q=null,this.state=U)}},{key:"sDTD",value:function(){var Fe=this.captureTo(nn);Fe!==V&&(this.text+=String.fromCodePoint(Fe),Fe===Ct?this.state=U:Fe===Mt?this.state=F:Ut(Fe)&&(this.state=k,this.q=Fe))}},{key:"sDTDQuoted",value:function(){var Fe=this.q;this.captureToChar(Fe)&&(this.text+=String.fromCodePoint(Fe),this.state=H,this.q=null)}},{key:"sDTDOpenWaka",value:function(){var Fe=this.getCodeNorm();switch(this.text+=String.fromCodePoint(Fe),Fe){case Xe:this.state=O,this.openWakaBang="";break;case Zt:this.state=he;break;default:this.state=H}}},{key:"sDTDOpenWakaBang",value:function(){var Fe=String.fromCodePoint(this.getCodeNorm()),tt=this.openWakaBang+=Fe;this.text+=Fe,tt!=="-"&&(this.state=tt==="--"?Q:H,this.openWakaBang="")}},{key:"sDTDComment",value:function(){this.captureToChar(lt)&&(this.text+="-",this.state=oe)}},{key:"sDTDCommentEnding",value:function(){var Fe=this.getCodeNorm();this.text+=String.fromCodePoint(Fe),this.state=Fe===lt?se:Q}},{key:"sDTDCommentEnded",value:function(){var Fe=this.getCodeNorm();this.text+=String.fromCodePoint(Fe),Fe===Gt?this.state=H:(this.fail("malformed comment."),this.state=Q)}},{key:"sDTDPI",value:function(){this.captureToChar(Zt)&&(this.text+="?",this.state=pe)}},{key:"sDTDPIEnding",value:function(){var Fe=this.getCodeNorm();this.text+=String.fromCodePoint(Fe),Fe===Gt&&(this.state=H)}},{key:"sText",value:function(){this.tags.length!==0?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:"sEntity",value:function(){var Fe=this.i,tt=this.chunk;e:for(;;)switch(this.getCode()){case Y:this.entity+="".concat(tt.slice(Fe,this.prevI),` -`),Fe=this.i;break;case wt:{var nt=this.entityReturnState,Vt=this.entity+tt.slice(Fe,this.prevI);this.state=nt;var Bt=void 0;Vt===""?(this.fail("empty entity name."),Bt="&;"):(Bt=this.parseEntity(Vt),this.entity=""),(nt!==re||this.textHandler!==void 0)&&(this.text+=Bt);break e}case V:this.entity+=tt.slice(Fe);break e}}},{key:"sOpenWaka",value:function(){var Fe=this.getCode();if(h(Fe))this.state=we,this.unget(),this.xmlDeclPossible=!1;else switch(Fe){case ot:this.state=ye,this.xmlDeclPossible=!1;break;case Xe:this.state=$,this.openWakaBang="",this.xmlDeclPossible=!1;break;case Zt:this.state=B;break;default:this.fail("disallowed character in tag name"),this.state=re,this.xmlDeclPossible=!1}}},{key:"sOpenWakaBang",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=te,this.openWakaBang="";break;case"--":this.state=ae,this.openWakaBang="";break;case"DOCTYPE":this.state=U,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}},{key:"sComment",value:function(){this.captureToChar(lt)&&(this.state=le)}},{key:"sCommentEnding",value:function(){var Fe,tt=this.getCodeNorm();tt===lt?(this.state=ee,(Fe=this.commentHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(tt)),this.state=ae)}},{key:"sCommentEnded",value:function(){var Fe=this.getCodeNorm();Fe!==Gt?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(Fe)),this.state=ae):this.state=re}},{key:"sCData",value:function(){this.captureToChar(Ct)&&(this.state=be)}},{key:"sCDataEnding",value:function(){var Fe=this.getCodeNorm();Fe===Ct?this.state=ne:(this.text+="]".concat(String.fromCodePoint(Fe)),this.state=te)}},{key:"sCDataEnding2",value:function(){var Fe,tt=this.getCodeNorm();switch(tt){case Gt:{(Fe=this.cdataHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text="",this.state=re;break}case Ct:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(tt)),this.state=te}}},{key:"sPIFirstChar",value:function(){var Fe=this.getCodeNorm();this.nameStartCheck(Fe)?(this.piTarget+=String.fromCodePoint(Fe),this.state=q):Fe===Zt||u(Fe)?(this.fail("processing instruction without a target."),this.state=Fe===Zt?ve:ue):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Fe),this.state=q)}},{key:"sPIRest",value:function(){for(var Fe=this.chunk,tt=this.i;;){var nt=this.getCodeNorm();if(nt===V){this.piTarget+=Fe.slice(tt);return}if(!this.nameCheck(nt)){this.piTarget+=Fe.slice(tt,this.prevI);var Vt=nt===Zt;Vt||u(nt)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=Vt?Te:Ge):this.state=Vt?ve:ue:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(nt));break}}}},{key:"sPIBody",value:function(){if(this.text.length===0){var Fe=this.getCodeNorm();Fe===Zt?this.state=ve:u(Fe)||(this.text=String.fromCodePoint(Fe))}else this.captureToChar(Zt)&&(this.state=ve)}},{key:"sPIEnding",value:function(){var Fe,tt=this.getCodeNorm();if(tt===Gt){var nt=this.piTarget;nt.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(Fe=this.piHandler)===null||Fe===void 0||Fe.call(this,{target:nt,body:this.text}),this.piTarget=this.text="",this.state=re}else tt===Zt?this.text+="?":(this.text+="?".concat(String.fromCodePoint(tt)),this.state=ue);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var Fe=this.skipSpaces();if(Fe===Zt){this.state=Te;return}Fe!==V&&(this.state=Je,this.name=String.fromCodePoint(Fe))}},{key:"sXMLDeclName",value:function(){var Fe=this.captureTo(Ft);if(Fe===Zt){this.state=Te,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(u(Fe)||Fe===xt){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail("expected the name ".concat(this.xmlDeclExpects[0],"."));break;default:this.fail("expected one of ".concat(this.xmlDeclExpects.join(", ")))}this.state=Fe===xt?ke:xe}}},{key:"sXMLDeclEq",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te,this.fail("XML declaration is incomplete.");return}u(Fe)||(Fe!==xt&&this.fail("value required."),this.state=ke)}},{key:"sXMLDeclValueStart",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te,this.fail("XML declaration is incomplete.");return}u(Fe)||(Ut(Fe)?this.q=Fe:(this.fail("value must be quoted."),this.q=Ke),this.state=Pe)}},{key:"sXMLDeclValue",value:function(){var Fe=this.captureTo([this.q,Zt]);if(Fe===Zt){this.state=Te,this.text="",this.fail("XML declaration is incomplete.");return}if(Fe!==V){var tt=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];var nt=tt;this.xmlDecl.version=nt,/^1\.[0-9]+$/.test(nt)?this.opt.forceXMLVersion||this.setXMLVersion(nt):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(tt)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=tt;break;case"standalone":tt!=="yes"&&tt!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=tt;break}this.name="",this.state=Be}}},{key:"sXMLDeclSeparator",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te;return}u(Fe)||(this.fail("whitespace required."),this.unget()),this.state=Ge}},{key:"sXMLDeclEnding",value:function(){var Fe,tt=this.getCodeNorm();tt===Gt?(this.piTarget!=="xml"?this.fail("processing instructions are not allowed before root."):this.name!=="version"&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),(Fe=this.xmldeclHandler)===null||Fe===void 0||Fe.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=re):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var Fe,tt=this.captureNameChars();if(tt!==V){var nt=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=nt.ns=Object.create(null)),(Fe=this.openTagStartHandler)===null||Fe===void 0||Fe.call(this,nt),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),tt){case Gt:this.openTag();break;case ot:this.state=Se;break;default:u(tt)||this.fail("disallowed character in tag name."),this.state=De}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===Gt?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=De)}},{key:"sAttrib",value:function(){var Fe=this.skipSpaces();Fe!==V&&(h(Fe)?(this.unget(),this.state=me):Fe===Gt?this.openTag():Fe===ot?this.state=Se:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var Fe=this.captureNameChars();Fe===xt?this.state=Me:u(Fe)?this.state=Ve:Fe===Gt?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):Fe!==V&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var Fe=this.skipSpaces();switch(Fe){case V:return;case xt:this.state=Me;break;default:this.fail("attribute without value."),this.text="",this.name="",Fe===Gt?this.openTag():h(Fe)?(this.unget(),this.state=me):(this.fail("disallowed character in attribute name."),this.state=De)}}},{key:"sAttribValue",value:function(){var Fe=this.getCodeNorm();Ut(Fe)?(this.q=Fe,this.state=Ie):u(Fe)||(this.fail("unquoted attribute value."),this.state=Ce,this.unget())}},{key:"sAttribValueQuoted",value:function(){for(var Fe=this.q,tt=this.chunk,nt=this.i;;)switch(this.getCode()){case Fe:this.pushAttrib(this.name,this.text+tt.slice(nt,this.prevI)),this.name=this.text="",this.q=null,this.state=Ze;return;case Ae:this.text+=tt.slice(nt,this.prevI),this.state=_,this.entityReturnState=Ie;return;case ie:case Y:case qe:this.text+="".concat(tt.slice(nt,this.prevI)," "),nt=this.i;break;case Mt:this.text+=tt.slice(nt,this.prevI),this.fail("disallowed character.");return;case V:this.text+=tt.slice(nt);return}}},{key:"sAttribValueClosed",value:function(){var Fe=this.getCodeNorm();u(Fe)?this.state=De:Fe===Gt?this.openTag():Fe===ot?this.state=Se:h(Fe)?(this.fail("no whitespace between attributes."),this.unget(),this.state=me):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var Fe=this.captureTo(Ln);switch(Fe){case Ae:this.state=_,this.entityReturnState=Ce;break;case Mt:this.fail("disallowed character.");break;case V:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",Fe===Gt?this.openTag():this.state=De}}},{key:"sCloseTag",value:function(){var Fe=this.captureNameChars();Fe===Gt?this.closeTag():u(Fe)?this.state=Ue:Fe!==V&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case Gt:this.closeTag();break;case V:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var Fe=this.i,tt=this.forbiddenState,nt=this.chunk,Vt=this.textHandler;e:for(;;)switch(this.getCode()){case Mt:{if(this.state=E,Vt!==void 0){var Bt=this.text,Nn=nt.slice(Fe,this.prevI);Bt.length!==0?(Vt(Bt+Nn),this.text=""):Nn.length!==0&&Vt(Nn)}tt=Fn;break e}case Ae:this.state=_,this.entityReturnState=re,Vt!==void 0&&(this.text+=nt.slice(Fe,this.prevI)),tt=Fn;break e;case Ct:switch(tt){case Fn:tt=cl;break;case cl:tt=ki;break;case ki:break;default:throw new Error("impossible state")}break;case Gt:tt===ki&&this.fail('the string "]]>" is disallowed in char data.'),tt=Fn;break;case Y:Vt!==void 0&&(this.text+="".concat(nt.slice(Fe,this.prevI),` +`),Fe=this.i;break;case wt:{var nt=this.entityReturnState,Vt=this.entity+tt.slice(Fe,this.prevI);this.state=nt;var Bt=void 0;Vt===""?(this.fail("empty entity name."),Bt="&;"):(Bt=this.parseEntity(Vt),this.entity=""),(nt!==re||this.textHandler!==void 0)&&(this.text+=Bt);break e}case V:this.entity+=tt.slice(Fe);break e}}},{key:"sOpenWaka",value:function(){var Fe=this.getCode();if(h(Fe))this.state=we,this.unget(),this.xmlDeclPossible=!1;else switch(Fe){case ot:this.state=ye,this.xmlDeclPossible=!1;break;case Xe:this.state=$,this.openWakaBang="",this.xmlDeclPossible=!1;break;case Zt:this.state=B;break;default:this.fail("disallowed character in tag name"),this.state=re,this.xmlDeclPossible=!1}}},{key:"sOpenWakaBang",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=te,this.openWakaBang="";break;case"--":this.state=ae,this.openWakaBang="";break;case"DOCTYPE":this.state=U,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}},{key:"sComment",value:function(){this.captureToChar(lt)&&(this.state=le)}},{key:"sCommentEnding",value:function(){var Fe,tt=this.getCodeNorm();tt===lt?(this.state=ee,(Fe=this.commentHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(tt)),this.state=ae)}},{key:"sCommentEnded",value:function(){var Fe=this.getCodeNorm();Fe!==Gt?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(Fe)),this.state=ae):this.state=re}},{key:"sCData",value:function(){this.captureToChar(Ct)&&(this.state=be)}},{key:"sCDataEnding",value:function(){var Fe=this.getCodeNorm();Fe===Ct?this.state=ne:(this.text+="]".concat(String.fromCodePoint(Fe)),this.state=te)}},{key:"sCDataEnding2",value:function(){var Fe,tt=this.getCodeNorm();switch(tt){case Gt:{(Fe=this.cdataHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text="",this.state=re;break}case Ct:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(tt)),this.state=te}}},{key:"sPIFirstChar",value:function(){var Fe=this.getCodeNorm();this.nameStartCheck(Fe)?(this.piTarget+=String.fromCodePoint(Fe),this.state=q):Fe===Zt||u(Fe)?(this.fail("processing instruction without a target."),this.state=Fe===Zt?ve:ue):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Fe),this.state=q)}},{key:"sPIRest",value:function(){for(var Fe=this.chunk,tt=this.i;;){var nt=this.getCodeNorm();if(nt===V){this.piTarget+=Fe.slice(tt);return}if(!this.nameCheck(nt)){this.piTarget+=Fe.slice(tt,this.prevI);var Vt=nt===Zt;Vt||u(nt)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=Vt?Te:Ge):this.state=Vt?ve:ue:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(nt));break}}}},{key:"sPIBody",value:function(){if(this.text.length===0){var Fe=this.getCodeNorm();Fe===Zt?this.state=ve:u(Fe)||(this.text=String.fromCodePoint(Fe))}else this.captureToChar(Zt)&&(this.state=ve)}},{key:"sPIEnding",value:function(){var Fe,tt=this.getCodeNorm();if(tt===Gt){var nt=this.piTarget;nt.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(Fe=this.piHandler)===null||Fe===void 0||Fe.call(this,{target:nt,body:this.text}),this.piTarget=this.text="",this.state=re}else tt===Zt?this.text+="?":(this.text+="?".concat(String.fromCodePoint(tt)),this.state=ue);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var Fe=this.skipSpaces();if(Fe===Zt){this.state=Te;return}Fe!==V&&(this.state=Je,this.name=String.fromCodePoint(Fe))}},{key:"sXMLDeclName",value:function(){var Fe=this.captureTo(Ft);if(Fe===Zt){this.state=Te,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(u(Fe)||Fe===xt){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail("expected the name ".concat(this.xmlDeclExpects[0],"."));break;default:this.fail("expected one of ".concat(this.xmlDeclExpects.join(", ")))}this.state=Fe===xt?ke:xe}}},{key:"sXMLDeclEq",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te,this.fail("XML declaration is incomplete.");return}u(Fe)||(Fe!==xt&&this.fail("value required."),this.state=ke)}},{key:"sXMLDeclValueStart",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te,this.fail("XML declaration is incomplete.");return}u(Fe)||(Ut(Fe)?this.q=Fe:(this.fail("value must be quoted."),this.q=Ke),this.state=Pe)}},{key:"sXMLDeclValue",value:function(){var Fe=this.captureTo([this.q,Zt]);if(Fe===Zt){this.state=Te,this.text="",this.fail("XML declaration is incomplete.");return}if(Fe!==V){var tt=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];var nt=tt;this.xmlDecl.version=nt,/^1\.[0-9]+$/.test(nt)?this.opt.forceXMLVersion||this.setXMLVersion(nt):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(tt)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=tt;break;case"standalone":tt!=="yes"&&tt!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=tt;break}this.name="",this.state=Be}}},{key:"sXMLDeclSeparator",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te;return}u(Fe)||(this.fail("whitespace required."),this.unget()),this.state=Ge}},{key:"sXMLDeclEnding",value:function(){var Fe,tt=this.getCodeNorm();tt===Gt?(this.piTarget!=="xml"?this.fail("processing instructions are not allowed before root."):this.name!=="version"&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),(Fe=this.xmldeclHandler)===null||Fe===void 0||Fe.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=re):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var Fe,tt=this.captureNameChars();if(tt!==V){var nt=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=nt.ns=Object.create(null)),(Fe=this.openTagStartHandler)===null||Fe===void 0||Fe.call(this,nt),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),tt){case Gt:this.openTag();break;case ot:this.state=Se;break;default:u(tt)||this.fail("disallowed character in tag name."),this.state=De}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===Gt?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=De)}},{key:"sAttrib",value:function(){var Fe=this.skipSpaces();Fe!==V&&(h(Fe)?(this.unget(),this.state=me):Fe===Gt?this.openTag():Fe===ot?this.state=Se:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var Fe=this.captureNameChars();Fe===xt?this.state=Me:u(Fe)?this.state=Ve:Fe===Gt?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):Fe!==V&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var Fe=this.skipSpaces();switch(Fe){case V:return;case xt:this.state=Me;break;default:this.fail("attribute without value."),this.text="",this.name="",Fe===Gt?this.openTag():h(Fe)?(this.unget(),this.state=me):(this.fail("disallowed character in attribute name."),this.state=De)}}},{key:"sAttribValue",value:function(){var Fe=this.getCodeNorm();Ut(Fe)?(this.q=Fe,this.state=Ie):u(Fe)||(this.fail("unquoted attribute value."),this.state=Ce,this.unget())}},{key:"sAttribValueQuoted",value:function(){for(var Fe=this.q,tt=this.chunk,nt=this.i;;)switch(this.getCode()){case Fe:this.pushAttrib(this.name,this.text+tt.slice(nt,this.prevI)),this.name=this.text="",this.q=null,this.state=Ze;return;case Ae:this.text+=tt.slice(nt,this.prevI),this.state=_,this.entityReturnState=Ie;return;case ie:case Y:case qe:this.text+="".concat(tt.slice(nt,this.prevI)," "),nt=this.i;break;case Mt:this.text+=tt.slice(nt,this.prevI),this.fail("disallowed character.");return;case V:this.text+=tt.slice(nt);return}}},{key:"sAttribValueClosed",value:function(){var Fe=this.getCodeNorm();u(Fe)?this.state=De:Fe===Gt?this.openTag():Fe===ot?this.state=Se:h(Fe)?(this.fail("no whitespace between attributes."),this.unget(),this.state=me):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var Fe=this.captureTo(Ln);switch(Fe){case Ae:this.state=_,this.entityReturnState=Ce;break;case Mt:this.fail("disallowed character.");break;case V:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",Fe===Gt?this.openTag():this.state=De}}},{key:"sCloseTag",value:function(){var Fe=this.captureNameChars();Fe===Gt?this.closeTag():u(Fe)?this.state=Ue:Fe!==V&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case Gt:this.closeTag();break;case V:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var Fe=this.i,tt=this.forbiddenState,nt=this.chunk,Vt=this.textHandler;e:for(;;)switch(this.getCode()){case Mt:{if(this.state=E,Vt!==void 0){var Bt=this.text,Nn=nt.slice(Fe,this.prevI);Bt.length!==0?(Vt(Bt+Nn),this.text=""):Nn.length!==0&&Vt(Nn)}tt=Fn;break e}case Ae:this.state=_,this.entityReturnState=re,Vt!==void 0&&(this.text+=nt.slice(Fe,this.prevI)),tt=Fn;break e;case Ct:switch(tt){case Fn:tt=ul;break;case ul:tt=ki;break;case ki:break;default:throw new Error("impossible state")}break;case Gt:tt===ki&&this.fail('the string "]]>" is disallowed in char data.'),tt=Fn;break;case Y:Vt!==void 0&&(this.text+="".concat(nt.slice(Fe,this.prevI),` `)),Fe=this.i,tt=Fn;break;case V:Vt!==void 0&&(this.text+=nt.slice(Fe));break e;default:tt=Fn}this.forbiddenState=tt}},{key:"handleTextOutsideRoot",value:function(){var Fe=this.i,tt=this.chunk,nt=this.textHandler,Vt=!1;e:for(;;){var Bt=this.getCode();switch(Bt){case Mt:{if(this.state=E,nt!==void 0){var Nn=this.text,oi=tt.slice(Fe,this.prevI);Nn.length!==0?(nt(Nn+oi),this.text=""):oi.length!==0&&nt(oi)}break e}case Ae:this.state=_,this.entityReturnState=re,nt!==void 0&&(this.text+=tt.slice(Fe,this.prevI)),Vt=!0;break e;case Y:nt!==void 0&&(this.text+="".concat(tt.slice(Fe,this.prevI),` -`)),Fe=this.i;break;case V:nt!==void 0&&(this.text+=tt.slice(Fe));break e;default:u(Bt)||(Vt=!0)}}Vt&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}},{key:"pushAttribNS",value:function(Fe,tt){var nt,Vt=this.qname(Fe),Bt=Vt.prefix,Nn=Vt.local,oi={name:Fe,prefix:Bt,local:Nn,value:tt};if(this.attribList.push(oi),(nt=this.attributeHandler)===null||nt===void 0||nt.call(this,oi),Bt==="xmlns"){var gi=tt.trim();this.currentXMLVersion==="1.0"&&gi===""&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[Nn]=gi,An(this,Nn,gi)}else if(Fe==="xmlns"){var Ll=tt.trim();this.topNS[""]=Ll,An(this,"",Ll)}}},{key:"pushAttribPlain",value:function(Fe,tt){var nt,Vt={name:Fe,value:tt};this.attribList.push(Vt),(nt=this.attributeHandler)===null||nt===void 0||nt.call(this,Vt)}},{key:"end",value:function(){var Fe,tt;this.sawRoot||this.fail("document must contain a root element.");for(var nt=this.tags;nt.length>0;){var Vt=nt.pop();this.fail("unclosed tag: ".concat(Vt.name))}this.state!==T&&this.state!==re&&this.fail("unexpected end.");var Bt=this.text;return Bt.length!==0&&((Fe=this.textHandler)===null||Fe===void 0||Fe.call(this,Bt),this.text=""),this._closed=!0,(tt=this.endHandler)===null||tt===void 0||tt.call(this),this._init(),this}},{key:"resolve",value:function(Fe){var tt,nt,Vt=this.topNS[Fe];if(Vt!==void 0)return Vt;for(var Bt=this.tags,Nn=Bt.length-1;Nn>=0;Nn--)if(Vt=Bt[Nn].ns[Fe],Vt!==void 0)return Vt;return Vt=this.ns[Fe],Vt!==void 0?Vt:(nt=(tt=this.opt).resolvePrefix)===null||nt===void 0?void 0:nt.call(tt,Fe)}},{key:"qname",value:function(Fe){var tt=Fe.indexOf(":");if(tt===-1)return{prefix:"",local:Fe};var nt=Fe.slice(tt+1),Vt=Fe.slice(0,tt);return(Vt===""||nt===""||nt.includes(":"))&&this.fail("malformed name: ".concat(Fe,".")),{prefix:Vt,local:nt}}},{key:"processAttribsNS",value:function(){var Fe,tt=this.attribList,nt=this.tag;{var Vt=this.qname(nt.name),Bt=Vt.prefix,Nn=Vt.local;nt.prefix=Bt,nt.local=Nn;var oi=nt.uri=(Fe=this.resolve(Bt))!==null&&Fe!==void 0?Fe:"";Bt!==""&&(Bt==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),oi===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(Bt),".")),nt.uri=Bt))}if(tt.length!==0){var gi=nt.attributes,Ll=new Set,il=l(tt),Lr;try{for(il.s();!(Lr=il.n()).done;){var ul=Lr.value,Ol=ul.name,jl=ul.prefix,_t=ul.local,Rt=void 0,zt=void 0;jl===""?(Rt=Ol==="xmlns"?g:"",zt=Ol):(Rt=this.resolve(jl),Rt===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(jl),".")),Rt=jl),zt="{".concat(Rt,"}").concat(_t)),Ll.has(zt)&&this.fail("duplicate attribute: ".concat(zt,".")),Ll.add(zt),ul.uri=Rt,gi[Ol]=ul}}catch(Ht){il.e(Ht)}finally{il.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var Fe=this.attribList,tt=this.tag.attributes,nt=l(Fe),Vt;try{for(nt.s();!(Vt=nt.n()).done;){var Bt=Vt.value,Nn=Bt.name,oi=Bt.value;tt[Nn]!==void 0&&this.fail("duplicate attribute: ".concat(Nn,".")),tt[Nn]=oi}}catch(gi){nt.e(gi)}finally{nt.f()}this.attribList=[]}},{key:"openTag",value:function(){var Fe;this.processAttribs();var tt=this.tags,nt=this.tag;nt.isSelfClosing=!1,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,nt),tt.push(nt),this.state=re,this.name=""}},{key:"openSelfClosingTag",value:function(){var Fe,tt,nt;this.processAttribs();var Vt=this.tags,Bt=this.tag;Bt.isSelfClosing=!0,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,Bt),(tt=this.closeTagHandler)===null||tt===void 0||tt.call(this,Bt);var Nn=this.tag=(nt=Vt[Vt.length-1])!==null&&nt!==void 0?nt:null;Nn===null&&(this.closedRoot=!0),this.state=re,this.name=""}},{key:"closeTag",value:function(){var Fe=this.tags,tt=this.name;if(this.state=re,this.name="",tt===""){this.fail("weird empty close tag."),this.text+="";return}for(var nt=this.closeTagHandler,Vt=Fe.length;Vt-- >0;){var Bt=this.tag=Fe.pop();if(this.topNS=Bt.ns,nt==null||nt(Bt),Bt.name===tt)break;this.fail("unexpected close tag.")}Vt===0?this.closedRoot=!0:Vt<0&&(this.fail("unmatched closing tag: ".concat(tt,".")),this.text+=""))}},{key:"parseEntity",value:function(Fe){if(Fe[0]!=="#"){var tt=this.ENTITIES[Fe];return tt!==void 0?tt:(this.fail(this.isName(Fe)?"undefined entity.":"disallowed character in entity name."),"&".concat(Fe,";"))}var nt=NaN;return Fe[1]==="x"&&/^#x[0-9a-f]+$/i.test(Fe)?nt=parseInt(Fe.slice(2),16):/^#[0-9]+$/.test(Fe)&&(nt=parseInt(Fe.slice(1),10)),this.isChar(nt)?String.fromCodePoint(nt):(this.fail("malformed character entity."),"&".concat(Fe,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),Dt}();a.SaxesParser=nl},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(t,i,a){(function(l){i.exports=typeof l=="function"?l:function(){var r=[].slice.apply(arguments);r.splice(1,0,0),setTimeout.apply(null,r)}}).call(this,t("timers").setImmediate)},{timers:521}],498:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(r,f){this._block=l.alloc(r),this._finalSize=f,this._blockSize=r,this._len=0}o.prototype.update=function(r,f){typeof r=="string"&&(f=f||"utf8",r=l.from(r,f));for(var v=this._block,b=this._blockSize,Z=r.length,p=this._len,y=0;y=this._finalSize&&(this._update(this._block),this._block.fill(0));var v=this._len*8;if(v<=4294967295)this._block.writeUInt32BE(v,this._blockSize-4);else{var b=(v&4294967295)>>>0,Z=(v-b)/4294967296;this._block.writeUInt32BE(Z,this._blockSize-8),this._block.writeUInt32BE(b,this._blockSize-4)}this._update(this._block);var p=this._hash();return r?p.toString(r):p},o.prototype._update=function(){throw new Error("_update must be implemented by subclass")},i.exports=o},{"safe-buffer":494}],499:[function(t,i,a){var l=i.exports=function(r){r=r.toLowerCase();var f=l[r];if(!f)throw new Error(r+" is not supported (we accept pull requests)");return new f};l.sha=t("./sha"),l.sha1=t("./sha1"),l.sha224=t("./sha224"),l.sha256=t("./sha256"),l.sha384=t("./sha384"),l.sha512=t("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(X){return X<<5|X>>>27}function p(X){return X<<30|X>>>2}function y(X,m,N,G){return X===0?m&N|~m&G:X===2?m&N|m&G|N&G:m^N^G}b.prototype._update=function(X){for(var m=this._w,N=this._a|0,G=this._b|0,d=this._c|0,u=this._d|0,s=this._e|0,h=0;h<16;++h)m[h]=X.readInt32BE(h*4);for(;h<80;++h)m[h]=m[h-3]^m[h-8]^m[h-14]^m[h-16];for(var c=0;c<80;++c){var W=~~(c/20),M=Z(N)+y(W,G,d,u)+s+m[c]+f[W]|0;s=u,u=d,d=p(G),G=N,N=M}this._a=N+this._a|0,this._b=G+this._b|0,this._c=d+this._c|0,this._d=u+this._d|0,this._e=s+this._e|0},b.prototype._hash=function(){var X=r.allocUnsafe(20);return X.writeInt32BE(this._a|0,0),X.writeInt32BE(this._b|0,4),X.writeInt32BE(this._c|0,8),X.writeInt32BE(this._d|0,12),X.writeInt32BE(this._e|0,16),X},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(m){return m<<1|m>>>31}function p(m){return m<<5|m>>>27}function y(m){return m<<30|m>>>2}function X(m,N,G,d){return m===0?N&G|~N&d:m===2?N&G|N&d|G&d:N^G^d}b.prototype._update=function(m){for(var N=this._w,G=this._a|0,d=this._b|0,u=this._c|0,s=this._d|0,h=this._e|0,c=0;c<16;++c)N[c]=m.readInt32BE(c*4);for(;c<80;++c)N[c]=Z(N[c-3]^N[c-8]^N[c-14]^N[c-16]);for(var W=0;W<80;++W){var M=~~(W/20),I=p(G)+X(M,d,u,s)+h+N[W]+f[M]|0;h=s,s=u,u=y(d),d=G,G=I}this._a=G+this._a|0,this._b=d+this._b|0,this._c=u+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},b.prototype._hash=function(){var m=r.allocUnsafe(20);return m.writeInt32BE(this._a|0,0),m.writeInt32BE(this._b|0,4),m.writeInt32BE(this._c|0,8),m.writeInt32BE(this._d|0,12),m.writeInt32BE(this._e|0,16),m},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(t,i,a){var l=t("inherits"),o=t("./sha256"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(64);function b(){this.init(),this._w=v,r.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(28);return Z.writeInt32BE(this._a,0),Z.writeInt32BE(this._b,4),Z.writeInt32BE(this._c,8),Z.writeInt32BE(this._d,12),Z.writeInt32BE(this._e,16),Z.writeInt32BE(this._f,20),Z.writeInt32BE(this._g,24),Z},i.exports=b},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],v=new Array(64);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function Z(G,d,u){return u^G&(d^u)}function p(G,d,u){return G&d|u&(G|d)}function y(G){return(G>>>2|G<<30)^(G>>>13|G<<19)^(G>>>22|G<<10)}function X(G){return(G>>>6|G<<26)^(G>>>11|G<<21)^(G>>>25|G<<7)}function m(G){return(G>>>7|G<<25)^(G>>>18|G<<14)^G>>>3}function N(G){return(G>>>17|G<<15)^(G>>>19|G<<13)^G>>>10}b.prototype._update=function(G){for(var d=this._w,u=this._a|0,s=this._b|0,h=this._c|0,c=this._d|0,W=this._e|0,M=this._f|0,I=this._g|0,w=this._h|0,C=0;C<16;++C)d[C]=G.readInt32BE(C*4);for(;C<64;++C)d[C]=N(d[C-2])+d[C-7]+m(d[C-15])+d[C-16]|0;for(var x=0;x<64;++x){var R=w+X(W)+Z(W,M,I)+f[x]+d[x]|0,g=y(u)+p(u,s,h)|0;w=I,I=M,M=W,W=c+R|0,c=h,h=s,s=u,u=R+g|0}this._a=u+this._a|0,this._b=s+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=W+this._e|0,this._f=M+this._f|0,this._g=I+this._g|0,this._h=w+this._h|0},b.prototype._hash=function(){var G=r.allocUnsafe(32);return G.writeInt32BE(this._a,0),G.writeInt32BE(this._b,4),G.writeInt32BE(this._c,8),G.writeInt32BE(this._d,12),G.writeInt32BE(this._e,16),G.writeInt32BE(this._f,20),G.writeInt32BE(this._g,24),G.writeInt32BE(this._h,28),G},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(t,i,a){var l=t("inherits"),o=t("./sha512"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(160);function b(){this.init(),this._w=v,r.call(this,128,112)}l(b,o),b.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(48);function p(y,X,m){Z.writeInt32BE(y,m),Z.writeInt32BE(X,m+4)}return p(this._ah,this._al,0),p(this._bh,this._bl,8),p(this._ch,this._cl,16),p(this._dh,this._dl,24),p(this._eh,this._el,32),p(this._fh,this._fl,40),Z},i.exports=b},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);function b(){this.init(),this._w=v,o.call(this,128,112)}l(b,o),b.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Z(s,h,c){return c^s&(h^c)}function p(s,h,c){return s&h|c&(s|h)}function y(s,h){return(s>>>28|h<<4)^(h>>>2|s<<30)^(h>>>7|s<<25)}function X(s,h){return(s>>>14|h<<18)^(s>>>18|h<<14)^(h>>>9|s<<23)}function m(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^s>>>7}function N(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^(s>>>7|h<<25)}function G(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^s>>>6}function d(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^(s>>>6|h<<26)}function u(s,h){return s>>>0>>0?1:0}b.prototype._update=function(s){for(var h=this._w,c=this._ah|0,W=this._bh|0,M=this._ch|0,I=this._dh|0,w=this._eh|0,C=this._fh|0,x=this._gh|0,R=this._hh|0,g=this._al|0,S=this._bl|0,L=this._cl|0,V=this._dl|0,Y=this._el|0,T=this._fl|0,J=this._gl|0,U=this._hl|0,K=0;K<32;K+=2)h[K]=s.readInt32BE(K*4),h[K+1]=s.readInt32BE(K*4+4);for(;K<160;K+=2){var H=h[K-30],k=h[K-15*2+1],F=m(H,k),O=N(k,H);H=h[K-2*2],k=h[K-2*2+1];var Q=G(H,k),oe=d(k,H),se=h[K-7*2],he=h[K-7*2+1],pe=h[K-16*2],re=h[K-16*2+1],_=O+he|0,E=F+se+u(_,O)|0;_=_+oe|0,E=E+Q+u(_,oe)|0,_=_+re|0,E=E+pe+u(_,re)|0,h[K]=E,h[K+1]=_}for(var $=0;$<160;$+=2){E=h[$],_=h[$+1];var ae=p(c,W,M),le=p(g,S,L),ee=y(c,g),te=y(g,c),be=X(w,Y),ne=X(Y,w),B=f[$],q=f[$+1],ue=Z(w,C,x),ve=Z(Y,T,J),Ge=U+ne|0,Je=R+be+u(Ge,U)|0;Ge=Ge+ve|0,Je=Je+ue+u(Ge,ve)|0,Ge=Ge+q|0,Je=Je+B+u(Ge,q)|0,Ge=Ge+_|0,Je=Je+E+u(Ge,_)|0;var xe=te+le|0,ke=ee+ae+u(xe,te)|0;R=x,U=J,x=C,J=T,C=w,T=Y,Y=V+Ge|0,w=I+Je+u(Y,V)|0,I=M,V=L,M=W,L=S,W=c,S=g,g=Ge+xe|0,c=Je+ke+u(g,Ge)|0}this._al=this._al+g|0,this._bl=this._bl+S|0,this._cl=this._cl+L|0,this._dl=this._dl+V|0,this._el=this._el+Y|0,this._fl=this._fl+T|0,this._gl=this._gl+J|0,this._hl=this._hl+U|0,this._ah=this._ah+c+u(this._al,g)|0,this._bh=this._bh+W+u(this._bl,S)|0,this._ch=this._ch+M+u(this._cl,L)|0,this._dh=this._dh+I+u(this._dl,V)|0,this._eh=this._eh+w+u(this._el,Y)|0,this._fh=this._fh+C+u(this._fl,T)|0,this._gh=this._gh+x+u(this._gl,J)|0,this._hh=this._hh+R+u(this._hl,U)|0},b.prototype._hash=function(){var s=r.allocUnsafe(64);function h(c,W,M){s.writeInt32BE(c,M),s.writeInt32BE(W,M+4)}return h(this._ah,this._al,0),h(this._bh,this._bl,8),h(this._ch,this._cl,16),h(this._dh,this._dl,24),h(this._eh,this._el,32),h(this._fh,this._fl,40),h(this._gh,this._gl,48),h(this._hh,this._hl,56),s},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(t,i,a){i.exports=r;var l=t("events").EventEmitter,o=t("inherits");o(r,l),r.Readable=t("readable-stream/readable.js"),r.Writable=t("readable-stream/writable.js"),r.Duplex=t("readable-stream/duplex.js"),r.Transform=t("readable-stream/transform.js"),r.PassThrough=t("readable-stream/passthrough.js"),r.Stream=r;function r(){l.call(this)}r.prototype.pipe=function(f,v){var b=this;function Z(d){f.writable&&f.write(d)===!1&&b.pause&&b.pause()}b.on("data",Z);function p(){b.readable&&b.resume&&b.resume()}f.on("drain",p),!f._isStdio&&(!v||v.end!==!1)&&(b.on("end",X),b.on("close",m));var y=!1;function X(){y||(y=!0,f.end())}function m(){y||(y=!0,typeof f.destroy=="function"&&f.destroy())}function N(d){if(G(),l.listenerCount(this,"error")===0)throw d}b.on("error",N),f.on("error",N);function G(){b.removeListener("data",Z),f.removeListener("drain",p),b.removeListener("end",X),b.removeListener("close",m),b.removeListener("error",N),f.removeListener("error",N),b.removeListener("end",G),b.removeListener("close",G),f.removeListener("close",G)}return b.on("end",G),b.on("close",G),f.on("close",G),f.emit("pipe",b),f}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(t,i,a){i.exports=t("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(t,i,a){var l=t("process-nextick-args"),o=Object.keys||function(N){var G=[];for(var d in N)G.push(d);return G};i.exports=y;var r=Object.create(t("core-util-is"));r.inherits=t("inherits");var f=t("./_stream_readable"),v=t("./_stream_writable");r.inherits(y,f);for(var b=o(v.prototype),Z=0;Z0?(typeof $!="string"&&!te.objectMode&&Object.getPrototypeOf($)!==p.prototype&&($=X($)),le?te.endEmitted?E.emit("error",new Error("stream.unshift() after end event")):C(E,te,$,!0):te.ended?E.emit("error",new Error("stream.push() after EOF")):(te.reading=!1,te.decoder&&!ae?($=te.decoder.write($),te.objectMode||$.length!==0?C(E,te,$,!1):J(E,te)):C(E,te,$,!1))):le||(te.reading=!1)}return R(te)}function C(E,$,ae,le){$.flowing&&$.length===0&&!$.sync?(E.emit("data",ae),E.read(0)):($.length+=$.objectMode?1:ae.length,le?$.buffer.unshift(ae):$.buffer.push(ae),$.needReadable&&Y(E)),J(E,$)}function x(E,$){var ae;return!m($)&&typeof $!="string"&&$!==void 0&&!E.objectMode&&(ae=new TypeError("Invalid non-string/buffer chunk")),ae}function R(E){return!E.ended&&(E.needReadable||E.length=g?E=g:(E--,E|=E>>>1,E|=E>>>2,E|=E>>>4,E|=E>>>8,E|=E>>>16,E++),E}function L(E,$){return E<=0||$.length===0&&$.ended?0:$.objectMode?1:E!==E?$.flowing&&$.length?$.buffer.head.data.length:$.length:(E>$.highWaterMark&&($.highWaterMark=S(E)),E<=$.length?E:$.ended?$.length:($.needReadable=!0,0))}I.prototype.read=function(E){d("read",E),E=parseInt(E,10);var $=this._readableState,ae=E;if(E!==0&&($.emittedReadable=!1),E===0&&$.needReadable&&($.length>=$.highWaterMark||$.ended))return d("read: emitReadable",$.length,$.ended),$.length===0&&$.ended?pe(this):Y(this),null;if(E=L(E,$),E===0&&$.ended)return $.length===0&&pe(this),null;var le=$.needReadable;d("need readable",le),($.length===0||$.length-E<$.highWaterMark)&&(le=!0,d("length less than watermark",le)),$.ended||$.reading?(le=!1,d("reading or ended",le)):le&&(d("do read"),$.reading=!0,$.sync=!0,$.length===0&&($.needReadable=!0),this._read($.highWaterMark),$.sync=!1,$.reading||(E=L(ae,$)));var ee;return E>0?ee=Q(E,$):ee=null,ee===null?($.needReadable=!0,E=0):$.length-=E,$.length===0&&($.ended||($.needReadable=!0),ae!==E&&$.ended&&pe(this)),ee!==null&&this.emit("data",ee),ee};function V(E,$){if(!$.ended){if($.decoder){var ae=$.decoder.end();ae&&ae.length&&($.buffer.push(ae),$.length+=$.objectMode?1:ae.length)}$.ended=!0,Y(E)}}function Y(E){var $=E._readableState;$.needReadable=!1,$.emittedReadable||(d("emitReadable",$.flowing),$.emittedReadable=!0,$.sync?r.nextTick(T,E):T(E))}function T(E){d("emit readable"),E.emit("readable"),O(E)}function J(E,$){$.readingMore||($.readingMore=!0,r.nextTick(U,E,$))}function U(E,$){for(var ae=$.length;!$.reading&&!$.flowing&&!$.ended&&$.length<$.highWaterMark&&(d("maybeReadMore read 0"),E.read(0),ae!==$.length);)ae=$.length;$.readingMore=!1}I.prototype._read=function(E){this.emit("error",new Error("_read() is not implemented"))},I.prototype.pipe=function(E,$){var ae=this,le=this._readableState;switch(le.pipesCount){case 0:le.pipes=E;break;case 1:le.pipes=[le.pipes,E];break;default:le.pipes.push(E);break}le.pipesCount+=1,d("pipe count=%d opts=%j",le.pipesCount,$);var ee=(!$||$.end!==!1)&&E!==l.stdout&&E!==l.stderr,te=ee?ne:Pe;le.endEmitted?r.nextTick(te):ae.once("end",te),E.on("unpipe",be);function be(Be,Te){d("onunpipe"),Be===ae&&Te&&Te.hasUnpiped===!1&&(Te.hasUnpiped=!0,ue())}function ne(){d("onend"),E.end()}var B=K(ae);E.on("drain",B);var q=!1;function ue(){d("cleanup"),E.removeListener("close",xe),E.removeListener("finish",ke),E.removeListener("drain",B),E.removeListener("error",Je),E.removeListener("unpipe",be),ae.removeListener("end",ne),ae.removeListener("end",Pe),ae.removeListener("data",Ge),q=!0,le.awaitDrain&&(!E._writableState||E._writableState.needDrain)&&B()}var ve=!1;ae.on("data",Ge);function Ge(Be){d("ondata"),ve=!1;var Te=E.write(Be);Te===!1&&!ve&&((le.pipesCount===1&&le.pipes===E||le.pipesCount>1&&_(le.pipes,E)!==-1)&&!q&&(d("false write response, pause",ae._readableState.awaitDrain),ae._readableState.awaitDrain++,ve=!0),ae.pause())}function Je(Be){d("onerror",Be),Pe(),E.removeListener("error",Je),b(E,"error")===0&&E.emit("error",Be)}W(E,"error",Je);function xe(){E.removeListener("finish",ke),Pe()}E.once("close",xe);function ke(){d("onfinish"),E.removeListener("close",xe),Pe()}E.once("finish",ke);function Pe(){d("unpipe"),ae.unpipe(E)}return E.emit("pipe",ae),le.flowing||(d("pipe resume"),ae.resume()),E};function K(E){return function(){var $=E._readableState;d("pipeOnDrain",$.awaitDrain),$.awaitDrain&&$.awaitDrain--,$.awaitDrain===0&&b(E,"data")&&($.flowing=!0,O(E))}}I.prototype.unpipe=function(E){var $=this._readableState,ae={hasUnpiped:!1};if($.pipesCount===0)return this;if($.pipesCount===1)return E&&E!==$.pipes?this:(E||(E=$.pipes),$.pipes=null,$.pipesCount=0,$.flowing=!1,E&&E.emit("unpipe",this,ae),this);if(!E){var le=$.pipes,ee=$.pipesCount;$.pipes=null,$.pipesCount=0,$.flowing=!1;for(var te=0;te=$.length?($.decoder?ae=$.buffer.join(""):$.buffer.length===1?ae=$.buffer.head.data:ae=$.buffer.concat($.length),$.buffer.clear()):ae=oe(E,$.buffer,$.decoder),ae}function oe(E,$,ae){var le;return E<$.head.data.length?(le=$.head.data.slice(0,E),$.head.data=$.head.data.slice(E)):E===$.head.data.length?le=$.shift():le=ae?se(E,$):he(E,$),le}function se(E,$){var ae=$.head,le=1,ee=ae.data;for(E-=ee.length;ae=ae.next;){var te=ae.data,be=E>te.length?te.length:E;if(be===te.length?ee+=te:ee+=te.slice(0,E),E-=be,E===0){be===te.length?(++le,ae.next?$.head=ae.next:$.head=$.tail=null):($.head=ae,ae.data=te.slice(be));break}++le}return $.length-=le,ee}function he(E,$){var ae=p.allocUnsafe(E),le=$.head,ee=1;for(le.data.copy(ae),E-=le.data.length;le=le.next;){var te=le.data,be=E>te.length?te.length:E;if(te.copy(ae,ae.length-E,0,be),E-=be,E===0){be===te.length?(++ee,le.next?$.head=le.next:$.head=$.tail=null):($.head=le,le.data=te.slice(be));break}++ee}return $.length-=ee,ae}function pe(E){var $=E._readableState;if($.length>0)throw new Error('"endReadable()" called on non-empty stream');$.endEmitted||($.ended=!0,r.nextTick(re,$,E))}function re(E,$){!E.endEmitted&&E.length===0&&(E.endEmitted=!0,$.readable=!1,$.emit("end"))}function _(E,$){for(var ae=0,le=E.length;ae-1?r:f.nextTick,Z;W.WritableState=h;var p=Object.create(t("core-util-is"));p.inherits=t("inherits");var y={deprecate:t("util-deprecate")},X=t("./internal/streams/stream"),m=t("safe-buffer").Buffer,N=o.Uint8Array||function(){};function G(F){return m.from(F)}function d(F){return m.isBuffer(F)||F instanceof N}var u=t("./internal/streams/destroy");p.inherits(W,X);function s(){}function h(F,O){Z=Z||t("./_stream_duplex"),F=F||{};var Q=O instanceof Z;this.objectMode=!!F.objectMode,Q&&(this.objectMode=this.objectMode||!!F.writableObjectMode);var oe=F.highWaterMark,se=F.writableHighWaterMark,he=this.objectMode?16:16*1024;oe||oe===0?this.highWaterMark=oe:Q&&(se||se===0)?this.highWaterMark=se:this.highWaterMark=he,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var pe=F.decodeStrings===!1;this.decodeStrings=!pe,this.defaultEncoding=F.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(re){S(O,re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new v(this)}h.prototype.getBuffer=function(){for(var O=this.bufferedRequest,Q=[];O;)Q.push(O),O=O.next;return Q},function(){try{Object.defineProperty(h.prototype,"buffer",{get:y.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var c;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(W,Symbol.hasInstance,{value:function(O){return c.call(this,O)?!0:this!==W?!1:O&&O._writableState instanceof h}})):c=function(O){return O instanceof this};function W(F){if(Z=Z||t("./_stream_duplex"),!c.call(W,this)&&!(this instanceof Z))return new W(F);this._writableState=new h(F,this),this.writable=!0,F&&(typeof F.write=="function"&&(this._write=F.write),typeof F.writev=="function"&&(this._writev=F.writev),typeof F.destroy=="function"&&(this._destroy=F.destroy),typeof F.final=="function"&&(this._final=F.final)),X.call(this)}W.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function M(F,O){var Q=new Error("write after end");F.emit("error",Q),f.nextTick(O,Q)}function I(F,O,Q,oe){var se=!0,he=!1;return Q===null?he=new TypeError("May not write null values to stream"):typeof Q!="string"&&Q!==void 0&&!O.objectMode&&(he=new TypeError("Invalid non-string/buffer chunk")),he&&(F.emit("error",he),f.nextTick(oe,he),se=!1),se}W.prototype.write=function(F,O,Q){var oe=this._writableState,se=!1,he=!oe.objectMode&&d(F);return he&&!m.isBuffer(F)&&(F=G(F)),typeof O=="function"&&(Q=O,O=null),he?O="buffer":O||(O=oe.defaultEncoding),typeof Q!="function"&&(Q=s),oe.ended?M(this,Q):(he||I(this,oe,F,Q))&&(oe.pendingcb++,se=C(this,oe,he,F,O,Q)),se},W.prototype.cork=function(){var F=this._writableState;F.corked++},W.prototype.uncork=function(){var F=this._writableState;F.corked&&(F.corked--,!F.writing&&!F.corked&&!F.finished&&!F.bufferProcessing&&F.bufferedRequest&&Y(this,F))},W.prototype.setDefaultEncoding=function(O){if(typeof O=="string"&&(O=O.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((O+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+O);return this._writableState.defaultEncoding=O,this};function w(F,O,Q){return!F.objectMode&&F.decodeStrings!==!1&&typeof O=="string"&&(O=m.from(O,Q)),O}Object.defineProperty(W.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function C(F,O,Q,oe,se,he){if(!Q){var pe=w(O,oe,se);oe!==pe&&(Q=!0,se="buffer",oe=pe)}var re=O.objectMode?1:oe.length;O.length+=re;var _=O.length0?this.tail.next=p:this.head=p,this.tail=p,++this.length},v.prototype.unshift=function(Z){var p={data:Z,next:this.head};this.length===0&&(this.tail=p),this.head=p,++this.length},v.prototype.shift=function(){if(this.length!==0){var Z=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,Z}},v.prototype.clear=function(){this.head=this.tail=null,this.length=0},v.prototype.join=function(Z){if(this.length===0)return"";for(var p=this.head,y=""+p.data;p=p.next;)y+=Z+p.data;return y},v.prototype.concat=function(Z){if(this.length===0)return o.alloc(0);if(this.length===1)return this.head.data;for(var p=o.allocUnsafe(Z>>>0),y=this.head,X=0;y;)f(y.data,p,X),X+=y.data.length,y=y.next;return p},v}(),r&&r.inspect&&r.inspect.custom&&(i.exports.prototype[r.inspect.custom]=function(){var v=r.inspect({length:this.length});return this.constructor.name+" "+v})},{"safe-buffer":494,util:185}],514:[function(t,i,a){var l=t("process-nextick-args");function o(v,b){var Z=this,p=this._readableState&&this._readableState.destroyed,y=this._writableState&&this._writableState.destroyed;return p||y?(b?b(v):v&&(!this._writableState||!this._writableState.errorEmitted)&&l.nextTick(f,this,v),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(v||null,function(X){!b&&X?(l.nextTick(f,Z,X),Z._writableState&&(Z._writableState.errorEmitted=!0)):b&&b(X)}),this)}function r(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function f(v,b){v.emit("error",b)}i.exports={destroy:o,undestroy:r}},{"process-nextick-args":466}],515:[function(t,i,a){arguments[4][490][0].apply(a,arguments)},{dup:490,events:367}],516:[function(t,i,a){i.exports=t("./readable").PassThrough},{"./readable":517}],517:[function(t,i,a){a=i.exports=t("./lib/_stream_readable.js"),a.Stream=a,a.Readable=a,a.Writable=t("./lib/_stream_writable.js"),a.Duplex=t("./lib/_stream_duplex.js"),a.Transform=t("./lib/_stream_transform.js"),a.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(t,i,a){i.exports=t("./readable").Transform},{"./readable":517}],519:[function(t,i,a){i.exports=t("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(t,i,a){var l=t("safe-buffer").Buffer,o=l.isEncoding||function(c){switch(c=""+c,c&&c.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(c){if(!c)return"utf8";for(var W;;)switch(c){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return c;default:if(W)return;c=(""+c).toLowerCase(),W=!0}}function f(c){var W=r(c);if(typeof W!="string"&&(l.isEncoding===o||!o(c)))throw new Error("Unknown encoding: "+c);return W||c}a.StringDecoder=v;function v(c){this.encoding=f(c);var W;switch(this.encoding){case"utf16le":this.text=N,this.end=G,W=4;break;case"utf8":this.fillLast=y,W=4;break;case"base64":this.text=d,this.end=u,W=3;break;default:this.write=s,this.end=h;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=l.allocUnsafe(W)}v.prototype.write=function(c){if(c.length===0)return"";var W,M;if(this.lastNeed){if(W=this.fillLast(c),W===void 0)return"";M=this.lastNeed,this.lastNeed=0}else M=0;return M>5===6?2:c>>4===14?3:c>>3===30?4:c>>6===2?-1:-2}function Z(c,W,M){var I=W.length-1;if(I=0?(w>0&&(c.lastNeed=w-1),w):--I=0?(w>0&&(c.lastNeed=w-2),w):--I=0?(w>0&&(w===2?w=0:c.lastNeed=w-3),w):0))}function p(c,W,M){if((W[0]&192)!==128)return c.lastNeed=0,"�";if(c.lastNeed>1&&W.length>1){if((W[1]&192)!==128)return c.lastNeed=1,"�";if(c.lastNeed>2&&W.length>2&&(W[2]&192)!==128)return c.lastNeed=2,"�"}}function y(c){var W=this.lastTotal-this.lastNeed,M=p(this,c);if(M!==void 0)return M;if(this.lastNeed<=c.length)return c.copy(this.lastChar,W,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);c.copy(this.lastChar,W,0,c.length),this.lastNeed-=c.length}function X(c,W){var M=Z(this,c,W);if(!this.lastNeed)return c.toString("utf8",W);this.lastTotal=M;var I=c.length-(M-this.lastNeed);return c.copy(this.lastChar,0,I),c.toString("utf8",W,I)}function m(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+"�":W}function N(c,W){if((c.length-W)%2===0){var M=c.toString("utf16le",W);if(M){var I=M.charCodeAt(M.length-1);if(I>=55296&&I<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1],M.slice(0,-1)}return M}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=c[c.length-1],c.toString("utf16le",W,c.length-1)}function G(c){var W=c&&c.length?this.write(c):"";if(this.lastNeed){var M=this.lastTotal-this.lastNeed;return W+this.lastChar.toString("utf16le",0,M)}return W}function d(c,W){var M=(c.length-W)%3;return M===0?c.toString("base64",W):(this.lastNeed=3-M,this.lastTotal=3,M===1?this.lastChar[0]=c[c.length-1]:(this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1]),c.toString("base64",W,c.length-M))}function u(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+this.lastChar.toString("base64",0,3-this.lastNeed):W}function s(c){return c.toString(this.encoding)}function h(c){return c&&c.length?this.write(c):""}},{"safe-buffer":494}],521:[function(t,i,a){(function(l,o){var r=t("process/browser.js").nextTick,f=Function.prototype.apply,v=Array.prototype.slice,b={},Z=0;a.setTimeout=function(){return new p(f.call(setTimeout,window,arguments),clearTimeout)},a.setInterval=function(){return new p(f.call(setInterval,window,arguments),clearInterval)},a.clearTimeout=a.clearInterval=function(y){y.close()};function p(y,X){this._id=y,this._clearFn=X}p.prototype.unref=p.prototype.ref=function(){},p.prototype.close=function(){this._clearFn.call(window,this._id)},a.enroll=function(y,X){clearTimeout(y._idleTimeoutId),y._idleTimeout=X},a.unenroll=function(y){clearTimeout(y._idleTimeoutId),y._idleTimeout=-1},a._unrefActive=a.active=function(y){clearTimeout(y._idleTimeoutId);var X=y._idleTimeout;X>=0&&(y._idleTimeoutId=setTimeout(function(){y._onTimeout&&y._onTimeout()},X))},a.setImmediate=typeof l=="function"?l:function(y){var X=Z++,m=arguments.length<2?!1:v.call(arguments,1);return b[X]=!0,r(function(){b[X]&&(m?y.apply(null,m):y.call(null),a.clearImmediate(X))}),X},a.clearImmediate=typeof o=="function"?o:function(y){delete b[y]}}).call(this,t("timers").setImmediate,t("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(t,i,a){(function(l){i.exports=o;function o(f,v){if(r("noDeprecation"))return f;var b=!1;function Z(){if(!b){if(r("throwDeprecation"))throw new Error(v);r("traceDeprecation")?console.trace(v):console.warn(v),b=!0}return f.apply(this,arguments)}return Z}function r(f){try{if(!l.localStorage)return!1}catch{return!1}var v=l.localStorage[f];return v==null?!1:String(v).toLowerCase()==="true"}}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(t,i,a){typeof Object.create=="function"?i.exports=function(o,r){o.super_=r,o.prototype=Object.create(r.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}})}:i.exports=function(o,r){o.super_=r;var f=function(){};f.prototype=r.prototype,o.prototype=new f,o.prototype.constructor=o}},{}],524:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}i.exports=function(r){return r&&l(r)==="object"&&typeof r.copy=="function"&&typeof r.fill=="function"&&typeof r.readUInt8=="function"}},{}],525:[function(t,i,a){(function(l,o){function r(k){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?r=function(O){return typeof O}:r=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},r(k)}var f=/%[sdj%]/g;a.format=function(k){if(!w(k)){for(var F=[],O=0;O=oe)return pe;switch(pe){case"%s":return String(Q[O++]);case"%d":return Number(Q[O++]);case"%j":try{return JSON.stringify(Q[O++])}catch{return"[Circular]"}default:return pe}}),he=Q[O];O=3&&(O.depth=arguments[2]),arguments.length>=4&&(O.colors=arguments[3]),c(F)?O.showHidden=F:F&&a._extend(O,F),x(O.showHidden)&&(O.showHidden=!1),x(O.depth)&&(O.depth=2),x(O.colors)&&(O.colors=!1),x(O.customInspect)&&(O.customInspect=!0),O.colors&&(O.stylize=p),m(O,k,O.depth)}a.inspect=Z,Z.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Z.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function p(k,F){var O=Z.styles[F];return O?"\x1B["+Z.colors[O][0]+"m"+k+"\x1B["+Z.colors[O][1]+"m":k}function y(k,F){return k}function X(k){var F={};return k.forEach(function(O,Q){F[O]=!0}),F}function m(k,F,O){if(k.customInspect&&F&&V(F.inspect)&&F.inspect!==a.inspect&&!(F.constructor&&F.constructor.prototype===F)){var Q=F.inspect(O,k);return w(Q)||(Q=m(k,Q,O)),Q}var oe=N(k,F);if(oe)return oe;var se=Object.keys(F),he=X(se);if(k.showHidden&&(se=Object.getOwnPropertyNames(F)),L(F)&&(se.indexOf("message")>=0||se.indexOf("description")>=0))return G(F);if(se.length===0){if(V(F)){var pe=F.name?": "+F.name:"";return k.stylize("[Function"+pe+"]","special")}if(R(F))return k.stylize(RegExp.prototype.toString.call(F),"regexp");if(S(F))return k.stylize(Date.prototype.toString.call(F),"date");if(L(F))return G(F)}var re="",_=!1,E=["{","}"];if(h(F)&&(_=!0,E=["[","]"]),V(F)){var $=F.name?": "+F.name:"";re=" [Function"+$+"]"}if(R(F)&&(re=" "+RegExp.prototype.toString.call(F)),S(F)&&(re=" "+Date.prototype.toUTCString.call(F)),L(F)&&(re=" "+G(F)),se.length===0&&(!_||F.length==0))return E[0]+re+E[1];if(O<0)return R(F)?k.stylize(RegExp.prototype.toString.call(F),"regexp"):k.stylize("[Object]","special");k.seen.push(F);var ae;return _?ae=d(k,F,O,he,se):ae=se.map(function(le){return u(k,F,O,he,le,_)}),k.seen.pop(),s(ae,re,E)}function N(k,F){if(x(F))return k.stylize("undefined","undefined");if(w(F)){var O="'"+JSON.stringify(F).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return k.stylize(O,"string")}if(I(F))return k.stylize(""+F,"number");if(c(F))return k.stylize(""+F,"boolean");if(W(F))return k.stylize("null","null")}function G(k){return"["+Error.prototype.toString.call(k)+"]"}function d(k,F,O,Q,oe){for(var se=[],he=0,pe=F.length;he0;){var Vt=nt.pop();this.fail("unclosed tag: ".concat(Vt.name))}this.state!==T&&this.state!==re&&this.fail("unexpected end.");var Bt=this.text;return Bt.length!==0&&((Fe=this.textHandler)===null||Fe===void 0||Fe.call(this,Bt),this.text=""),this._closed=!0,(tt=this.endHandler)===null||tt===void 0||tt.call(this),this._init(),this}},{key:"resolve",value:function(Fe){var tt,nt,Vt=this.topNS[Fe];if(Vt!==void 0)return Vt;for(var Bt=this.tags,Nn=Bt.length-1;Nn>=0;Nn--)if(Vt=Bt[Nn].ns[Fe],Vt!==void 0)return Vt;return Vt=this.ns[Fe],Vt!==void 0?Vt:(nt=(tt=this.opt).resolvePrefix)===null||nt===void 0?void 0:nt.call(tt,Fe)}},{key:"qname",value:function(Fe){var tt=Fe.indexOf(":");if(tt===-1)return{prefix:"",local:Fe};var nt=Fe.slice(tt+1),Vt=Fe.slice(0,tt);return(Vt===""||nt===""||nt.includes(":"))&&this.fail("malformed name: ".concat(Fe,".")),{prefix:Vt,local:nt}}},{key:"processAttribsNS",value:function(){var Fe,tt=this.attribList,nt=this.tag;{var Vt=this.qname(nt.name),Bt=Vt.prefix,Nn=Vt.local;nt.prefix=Bt,nt.local=Nn;var oi=nt.uri=(Fe=this.resolve(Bt))!==null&&Fe!==void 0?Fe:"";Bt!==""&&(Bt==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),oi===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(Bt),".")),nt.uri=Bt))}if(tt.length!==0){var gi=nt.attributes,Ll=new Set,il=l(tt),Lr;try{for(il.s();!(Lr=il.n()).done;){var dl=Lr.value,Ol=dl.name,jl=dl.prefix,_t=dl.local,Rt=void 0,zt=void 0;jl===""?(Rt=Ol==="xmlns"?g:"",zt=Ol):(Rt=this.resolve(jl),Rt===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(jl),".")),Rt=jl),zt="{".concat(Rt,"}").concat(_t)),Ll.has(zt)&&this.fail("duplicate attribute: ".concat(zt,".")),Ll.add(zt),dl.uri=Rt,gi[Ol]=dl}}catch(Ht){il.e(Ht)}finally{il.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var Fe=this.attribList,tt=this.tag.attributes,nt=l(Fe),Vt;try{for(nt.s();!(Vt=nt.n()).done;){var Bt=Vt.value,Nn=Bt.name,oi=Bt.value;tt[Nn]!==void 0&&this.fail("duplicate attribute: ".concat(Nn,".")),tt[Nn]=oi}}catch(gi){nt.e(gi)}finally{nt.f()}this.attribList=[]}},{key:"openTag",value:function(){var Fe;this.processAttribs();var tt=this.tags,nt=this.tag;nt.isSelfClosing=!1,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,nt),tt.push(nt),this.state=re,this.name=""}},{key:"openSelfClosingTag",value:function(){var Fe,tt,nt;this.processAttribs();var Vt=this.tags,Bt=this.tag;Bt.isSelfClosing=!0,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,Bt),(tt=this.closeTagHandler)===null||tt===void 0||tt.call(this,Bt);var Nn=this.tag=(nt=Vt[Vt.length-1])!==null&&nt!==void 0?nt:null;Nn===null&&(this.closedRoot=!0),this.state=re,this.name=""}},{key:"closeTag",value:function(){var Fe=this.tags,tt=this.name;if(this.state=re,this.name="",tt===""){this.fail("weird empty close tag."),this.text+="";return}for(var nt=this.closeTagHandler,Vt=Fe.length;Vt-- >0;){var Bt=this.tag=Fe.pop();if(this.topNS=Bt.ns,nt==null||nt(Bt),Bt.name===tt)break;this.fail("unexpected close tag.")}Vt===0?this.closedRoot=!0:Vt<0&&(this.fail("unmatched closing tag: ".concat(tt,".")),this.text+=""))}},{key:"parseEntity",value:function(Fe){if(Fe[0]!=="#"){var tt=this.ENTITIES[Fe];return tt!==void 0?tt:(this.fail(this.isName(Fe)?"undefined entity.":"disallowed character in entity name."),"&".concat(Fe,";"))}var nt=NaN;return Fe[1]==="x"&&/^#x[0-9a-f]+$/i.test(Fe)?nt=parseInt(Fe.slice(2),16):/^#[0-9]+$/.test(Fe)&&(nt=parseInt(Fe.slice(1),10)),this.isChar(nt)?String.fromCodePoint(nt):(this.fail("malformed character entity."),"&".concat(Fe,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),Dt}();a.SaxesParser=nl},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(t,i,a){(function(l){i.exports=typeof l=="function"?l:function(){var r=[].slice.apply(arguments);r.splice(1,0,0),setTimeout.apply(null,r)}}).call(this,t("timers").setImmediate)},{timers:521}],498:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(r,f){this._block=l.alloc(r),this._finalSize=f,this._blockSize=r,this._len=0}o.prototype.update=function(r,f){typeof r=="string"&&(f=f||"utf8",r=l.from(r,f));for(var v=this._block,b=this._blockSize,Z=r.length,p=this._len,y=0;y=this._finalSize&&(this._update(this._block),this._block.fill(0));var v=this._len*8;if(v<=4294967295)this._block.writeUInt32BE(v,this._blockSize-4);else{var b=(v&4294967295)>>>0,Z=(v-b)/4294967296;this._block.writeUInt32BE(Z,this._blockSize-8),this._block.writeUInt32BE(b,this._blockSize-4)}this._update(this._block);var p=this._hash();return r?p.toString(r):p},o.prototype._update=function(){throw new Error("_update must be implemented by subclass")},i.exports=o},{"safe-buffer":494}],499:[function(t,i,a){var l=i.exports=function(r){r=r.toLowerCase();var f=l[r];if(!f)throw new Error(r+" is not supported (we accept pull requests)");return new f};l.sha=t("./sha"),l.sha1=t("./sha1"),l.sha224=t("./sha224"),l.sha256=t("./sha256"),l.sha384=t("./sha384"),l.sha512=t("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(X){return X<<5|X>>>27}function p(X){return X<<30|X>>>2}function y(X,m,N,G){return X===0?m&N|~m&G:X===2?m&N|m&G|N&G:m^N^G}b.prototype._update=function(X){for(var m=this._w,N=this._a|0,G=this._b|0,d=this._c|0,u=this._d|0,s=this._e|0,h=0;h<16;++h)m[h]=X.readInt32BE(h*4);for(;h<80;++h)m[h]=m[h-3]^m[h-8]^m[h-14]^m[h-16];for(var c=0;c<80;++c){var W=~~(c/20),M=Z(N)+y(W,G,d,u)+s+m[c]+f[W]|0;s=u,u=d,d=p(G),G=N,N=M}this._a=N+this._a|0,this._b=G+this._b|0,this._c=d+this._c|0,this._d=u+this._d|0,this._e=s+this._e|0},b.prototype._hash=function(){var X=r.allocUnsafe(20);return X.writeInt32BE(this._a|0,0),X.writeInt32BE(this._b|0,4),X.writeInt32BE(this._c|0,8),X.writeInt32BE(this._d|0,12),X.writeInt32BE(this._e|0,16),X},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(m){return m<<1|m>>>31}function p(m){return m<<5|m>>>27}function y(m){return m<<30|m>>>2}function X(m,N,G,d){return m===0?N&G|~N&d:m===2?N&G|N&d|G&d:N^G^d}b.prototype._update=function(m){for(var N=this._w,G=this._a|0,d=this._b|0,u=this._c|0,s=this._d|0,h=this._e|0,c=0;c<16;++c)N[c]=m.readInt32BE(c*4);for(;c<80;++c)N[c]=Z(N[c-3]^N[c-8]^N[c-14]^N[c-16]);for(var W=0;W<80;++W){var M=~~(W/20),I=p(G)+X(M,d,u,s)+h+N[W]+f[M]|0;h=s,s=u,u=y(d),d=G,G=I}this._a=G+this._a|0,this._b=d+this._b|0,this._c=u+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},b.prototype._hash=function(){var m=r.allocUnsafe(20);return m.writeInt32BE(this._a|0,0),m.writeInt32BE(this._b|0,4),m.writeInt32BE(this._c|0,8),m.writeInt32BE(this._d|0,12),m.writeInt32BE(this._e|0,16),m},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(t,i,a){var l=t("inherits"),o=t("./sha256"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(64);function b(){this.init(),this._w=v,r.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(28);return Z.writeInt32BE(this._a,0),Z.writeInt32BE(this._b,4),Z.writeInt32BE(this._c,8),Z.writeInt32BE(this._d,12),Z.writeInt32BE(this._e,16),Z.writeInt32BE(this._f,20),Z.writeInt32BE(this._g,24),Z},i.exports=b},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],v=new Array(64);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function Z(G,d,u){return u^G&(d^u)}function p(G,d,u){return G&d|u&(G|d)}function y(G){return(G>>>2|G<<30)^(G>>>13|G<<19)^(G>>>22|G<<10)}function X(G){return(G>>>6|G<<26)^(G>>>11|G<<21)^(G>>>25|G<<7)}function m(G){return(G>>>7|G<<25)^(G>>>18|G<<14)^G>>>3}function N(G){return(G>>>17|G<<15)^(G>>>19|G<<13)^G>>>10}b.prototype._update=function(G){for(var d=this._w,u=this._a|0,s=this._b|0,h=this._c|0,c=this._d|0,W=this._e|0,M=this._f|0,I=this._g|0,w=this._h|0,C=0;C<16;++C)d[C]=G.readInt32BE(C*4);for(;C<64;++C)d[C]=N(d[C-2])+d[C-7]+m(d[C-15])+d[C-16]|0;for(var x=0;x<64;++x){var R=w+X(W)+Z(W,M,I)+f[x]+d[x]|0,g=y(u)+p(u,s,h)|0;w=I,I=M,M=W,W=c+R|0,c=h,h=s,s=u,u=R+g|0}this._a=u+this._a|0,this._b=s+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=W+this._e|0,this._f=M+this._f|0,this._g=I+this._g|0,this._h=w+this._h|0},b.prototype._hash=function(){var G=r.allocUnsafe(32);return G.writeInt32BE(this._a,0),G.writeInt32BE(this._b,4),G.writeInt32BE(this._c,8),G.writeInt32BE(this._d,12),G.writeInt32BE(this._e,16),G.writeInt32BE(this._f,20),G.writeInt32BE(this._g,24),G.writeInt32BE(this._h,28),G},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(t,i,a){var l=t("inherits"),o=t("./sha512"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(160);function b(){this.init(),this._w=v,r.call(this,128,112)}l(b,o),b.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(48);function p(y,X,m){Z.writeInt32BE(y,m),Z.writeInt32BE(X,m+4)}return p(this._ah,this._al,0),p(this._bh,this._bl,8),p(this._ch,this._cl,16),p(this._dh,this._dl,24),p(this._eh,this._el,32),p(this._fh,this._fl,40),Z},i.exports=b},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);function b(){this.init(),this._w=v,o.call(this,128,112)}l(b,o),b.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Z(s,h,c){return c^s&(h^c)}function p(s,h,c){return s&h|c&(s|h)}function y(s,h){return(s>>>28|h<<4)^(h>>>2|s<<30)^(h>>>7|s<<25)}function X(s,h){return(s>>>14|h<<18)^(s>>>18|h<<14)^(h>>>9|s<<23)}function m(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^s>>>7}function N(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^(s>>>7|h<<25)}function G(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^s>>>6}function d(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^(s>>>6|h<<26)}function u(s,h){return s>>>0>>0?1:0}b.prototype._update=function(s){for(var h=this._w,c=this._ah|0,W=this._bh|0,M=this._ch|0,I=this._dh|0,w=this._eh|0,C=this._fh|0,x=this._gh|0,R=this._hh|0,g=this._al|0,S=this._bl|0,L=this._cl|0,V=this._dl|0,Y=this._el|0,T=this._fl|0,J=this._gl|0,U=this._hl|0,K=0;K<32;K+=2)h[K]=s.readInt32BE(K*4),h[K+1]=s.readInt32BE(K*4+4);for(;K<160;K+=2){var H=h[K-30],k=h[K-15*2+1],F=m(H,k),O=N(k,H);H=h[K-2*2],k=h[K-2*2+1];var Q=G(H,k),oe=d(k,H),se=h[K-7*2],he=h[K-7*2+1],pe=h[K-16*2],re=h[K-16*2+1],_=O+he|0,E=F+se+u(_,O)|0;_=_+oe|0,E=E+Q+u(_,oe)|0,_=_+re|0,E=E+pe+u(_,re)|0,h[K]=E,h[K+1]=_}for(var $=0;$<160;$+=2){E=h[$],_=h[$+1];var ae=p(c,W,M),le=p(g,S,L),ee=y(c,g),te=y(g,c),be=X(w,Y),ne=X(Y,w),B=f[$],q=f[$+1],ue=Z(w,C,x),ve=Z(Y,T,J),Ge=U+ne|0,Je=R+be+u(Ge,U)|0;Ge=Ge+ve|0,Je=Je+ue+u(Ge,ve)|0,Ge=Ge+q|0,Je=Je+B+u(Ge,q)|0,Ge=Ge+_|0,Je=Je+E+u(Ge,_)|0;var xe=te+le|0,ke=ee+ae+u(xe,te)|0;R=x,U=J,x=C,J=T,C=w,T=Y,Y=V+Ge|0,w=I+Je+u(Y,V)|0,I=M,V=L,M=W,L=S,W=c,S=g,g=Ge+xe|0,c=Je+ke+u(g,Ge)|0}this._al=this._al+g|0,this._bl=this._bl+S|0,this._cl=this._cl+L|0,this._dl=this._dl+V|0,this._el=this._el+Y|0,this._fl=this._fl+T|0,this._gl=this._gl+J|0,this._hl=this._hl+U|0,this._ah=this._ah+c+u(this._al,g)|0,this._bh=this._bh+W+u(this._bl,S)|0,this._ch=this._ch+M+u(this._cl,L)|0,this._dh=this._dh+I+u(this._dl,V)|0,this._eh=this._eh+w+u(this._el,Y)|0,this._fh=this._fh+C+u(this._fl,T)|0,this._gh=this._gh+x+u(this._gl,J)|0,this._hh=this._hh+R+u(this._hl,U)|0},b.prototype._hash=function(){var s=r.allocUnsafe(64);function h(c,W,M){s.writeInt32BE(c,M),s.writeInt32BE(W,M+4)}return h(this._ah,this._al,0),h(this._bh,this._bl,8),h(this._ch,this._cl,16),h(this._dh,this._dl,24),h(this._eh,this._el,32),h(this._fh,this._fl,40),h(this._gh,this._gl,48),h(this._hh,this._hl,56),s},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(t,i,a){i.exports=r;var l=t("events").EventEmitter,o=t("inherits");o(r,l),r.Readable=t("readable-stream/readable.js"),r.Writable=t("readable-stream/writable.js"),r.Duplex=t("readable-stream/duplex.js"),r.Transform=t("readable-stream/transform.js"),r.PassThrough=t("readable-stream/passthrough.js"),r.Stream=r;function r(){l.call(this)}r.prototype.pipe=function(f,v){var b=this;function Z(d){f.writable&&f.write(d)===!1&&b.pause&&b.pause()}b.on("data",Z);function p(){b.readable&&b.resume&&b.resume()}f.on("drain",p),!f._isStdio&&(!v||v.end!==!1)&&(b.on("end",X),b.on("close",m));var y=!1;function X(){y||(y=!0,f.end())}function m(){y||(y=!0,typeof f.destroy=="function"&&f.destroy())}function N(d){if(G(),l.listenerCount(this,"error")===0)throw d}b.on("error",N),f.on("error",N);function G(){b.removeListener("data",Z),f.removeListener("drain",p),b.removeListener("end",X),b.removeListener("close",m),b.removeListener("error",N),f.removeListener("error",N),b.removeListener("end",G),b.removeListener("close",G),f.removeListener("close",G)}return b.on("end",G),b.on("close",G),f.on("close",G),f.emit("pipe",b),f}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(t,i,a){i.exports=t("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(t,i,a){var l=t("process-nextick-args"),o=Object.keys||function(N){var G=[];for(var d in N)G.push(d);return G};i.exports=y;var r=Object.create(t("core-util-is"));r.inherits=t("inherits");var f=t("./_stream_readable"),v=t("./_stream_writable");r.inherits(y,f);for(var b=o(v.prototype),Z=0;Z0?(typeof $!="string"&&!te.objectMode&&Object.getPrototypeOf($)!==p.prototype&&($=X($)),le?te.endEmitted?E.emit("error",new Error("stream.unshift() after end event")):C(E,te,$,!0):te.ended?E.emit("error",new Error("stream.push() after EOF")):(te.reading=!1,te.decoder&&!ae?($=te.decoder.write($),te.objectMode||$.length!==0?C(E,te,$,!1):J(E,te)):C(E,te,$,!1))):le||(te.reading=!1)}return R(te)}function C(E,$,ae,le){$.flowing&&$.length===0&&!$.sync?(E.emit("data",ae),E.read(0)):($.length+=$.objectMode?1:ae.length,le?$.buffer.unshift(ae):$.buffer.push(ae),$.needReadable&&Y(E)),J(E,$)}function x(E,$){var ae;return!m($)&&typeof $!="string"&&$!==void 0&&!E.objectMode&&(ae=new TypeError("Invalid non-string/buffer chunk")),ae}function R(E){return!E.ended&&(E.needReadable||E.length=g?E=g:(E--,E|=E>>>1,E|=E>>>2,E|=E>>>4,E|=E>>>8,E|=E>>>16,E++),E}function L(E,$){return E<=0||$.length===0&&$.ended?0:$.objectMode?1:E!==E?$.flowing&&$.length?$.buffer.head.data.length:$.length:(E>$.highWaterMark&&($.highWaterMark=S(E)),E<=$.length?E:$.ended?$.length:($.needReadable=!0,0))}I.prototype.read=function(E){d("read",E),E=parseInt(E,10);var $=this._readableState,ae=E;if(E!==0&&($.emittedReadable=!1),E===0&&$.needReadable&&($.length>=$.highWaterMark||$.ended))return d("read: emitReadable",$.length,$.ended),$.length===0&&$.ended?pe(this):Y(this),null;if(E=L(E,$),E===0&&$.ended)return $.length===0&&pe(this),null;var le=$.needReadable;d("need readable",le),($.length===0||$.length-E<$.highWaterMark)&&(le=!0,d("length less than watermark",le)),$.ended||$.reading?(le=!1,d("reading or ended",le)):le&&(d("do read"),$.reading=!0,$.sync=!0,$.length===0&&($.needReadable=!0),this._read($.highWaterMark),$.sync=!1,$.reading||(E=L(ae,$)));var ee;return E>0?ee=Q(E,$):ee=null,ee===null?($.needReadable=!0,E=0):$.length-=E,$.length===0&&($.ended||($.needReadable=!0),ae!==E&&$.ended&&pe(this)),ee!==null&&this.emit("data",ee),ee};function V(E,$){if(!$.ended){if($.decoder){var ae=$.decoder.end();ae&&ae.length&&($.buffer.push(ae),$.length+=$.objectMode?1:ae.length)}$.ended=!0,Y(E)}}function Y(E){var $=E._readableState;$.needReadable=!1,$.emittedReadable||(d("emitReadable",$.flowing),$.emittedReadable=!0,$.sync?r.nextTick(T,E):T(E))}function T(E){d("emit readable"),E.emit("readable"),O(E)}function J(E,$){$.readingMore||($.readingMore=!0,r.nextTick(U,E,$))}function U(E,$){for(var ae=$.length;!$.reading&&!$.flowing&&!$.ended&&$.length<$.highWaterMark&&(d("maybeReadMore read 0"),E.read(0),ae!==$.length);)ae=$.length;$.readingMore=!1}I.prototype._read=function(E){this.emit("error",new Error("_read() is not implemented"))},I.prototype.pipe=function(E,$){var ae=this,le=this._readableState;switch(le.pipesCount){case 0:le.pipes=E;break;case 1:le.pipes=[le.pipes,E];break;default:le.pipes.push(E);break}le.pipesCount+=1,d("pipe count=%d opts=%j",le.pipesCount,$);var ee=(!$||$.end!==!1)&&E!==l.stdout&&E!==l.stderr,te=ee?ne:Pe;le.endEmitted?r.nextTick(te):ae.once("end",te),E.on("unpipe",be);function be(Be,Te){d("onunpipe"),Be===ae&&Te&&Te.hasUnpiped===!1&&(Te.hasUnpiped=!0,ue())}function ne(){d("onend"),E.end()}var B=K(ae);E.on("drain",B);var q=!1;function ue(){d("cleanup"),E.removeListener("close",xe),E.removeListener("finish",ke),E.removeListener("drain",B),E.removeListener("error",Je),E.removeListener("unpipe",be),ae.removeListener("end",ne),ae.removeListener("end",Pe),ae.removeListener("data",Ge),q=!0,le.awaitDrain&&(!E._writableState||E._writableState.needDrain)&&B()}var ve=!1;ae.on("data",Ge);function Ge(Be){d("ondata"),ve=!1;var Te=E.write(Be);Te===!1&&!ve&&((le.pipesCount===1&&le.pipes===E||le.pipesCount>1&&_(le.pipes,E)!==-1)&&!q&&(d("false write response, pause",ae._readableState.awaitDrain),ae._readableState.awaitDrain++,ve=!0),ae.pause())}function Je(Be){d("onerror",Be),Pe(),E.removeListener("error",Je),b(E,"error")===0&&E.emit("error",Be)}W(E,"error",Je);function xe(){E.removeListener("finish",ke),Pe()}E.once("close",xe);function ke(){d("onfinish"),E.removeListener("close",xe),Pe()}E.once("finish",ke);function Pe(){d("unpipe"),ae.unpipe(E)}return E.emit("pipe",ae),le.flowing||(d("pipe resume"),ae.resume()),E};function K(E){return function(){var $=E._readableState;d("pipeOnDrain",$.awaitDrain),$.awaitDrain&&$.awaitDrain--,$.awaitDrain===0&&b(E,"data")&&($.flowing=!0,O(E))}}I.prototype.unpipe=function(E){var $=this._readableState,ae={hasUnpiped:!1};if($.pipesCount===0)return this;if($.pipesCount===1)return E&&E!==$.pipes?this:(E||(E=$.pipes),$.pipes=null,$.pipesCount=0,$.flowing=!1,E&&E.emit("unpipe",this,ae),this);if(!E){var le=$.pipes,ee=$.pipesCount;$.pipes=null,$.pipesCount=0,$.flowing=!1;for(var te=0;te=$.length?($.decoder?ae=$.buffer.join(""):$.buffer.length===1?ae=$.buffer.head.data:ae=$.buffer.concat($.length),$.buffer.clear()):ae=oe(E,$.buffer,$.decoder),ae}function oe(E,$,ae){var le;return E<$.head.data.length?(le=$.head.data.slice(0,E),$.head.data=$.head.data.slice(E)):E===$.head.data.length?le=$.shift():le=ae?se(E,$):he(E,$),le}function se(E,$){var ae=$.head,le=1,ee=ae.data;for(E-=ee.length;ae=ae.next;){var te=ae.data,be=E>te.length?te.length:E;if(be===te.length?ee+=te:ee+=te.slice(0,E),E-=be,E===0){be===te.length?(++le,ae.next?$.head=ae.next:$.head=$.tail=null):($.head=ae,ae.data=te.slice(be));break}++le}return $.length-=le,ee}function he(E,$){var ae=p.allocUnsafe(E),le=$.head,ee=1;for(le.data.copy(ae),E-=le.data.length;le=le.next;){var te=le.data,be=E>te.length?te.length:E;if(te.copy(ae,ae.length-E,0,be),E-=be,E===0){be===te.length?(++ee,le.next?$.head=le.next:$.head=$.tail=null):($.head=le,le.data=te.slice(be));break}++ee}return $.length-=ee,ae}function pe(E){var $=E._readableState;if($.length>0)throw new Error('"endReadable()" called on non-empty stream');$.endEmitted||($.ended=!0,r.nextTick(re,$,E))}function re(E,$){!E.endEmitted&&E.length===0&&(E.endEmitted=!0,$.readable=!1,$.emit("end"))}function _(E,$){for(var ae=0,le=E.length;ae-1?r:f.nextTick,Z;W.WritableState=h;var p=Object.create(t("core-util-is"));p.inherits=t("inherits");var y={deprecate:t("util-deprecate")},X=t("./internal/streams/stream"),m=t("safe-buffer").Buffer,N=o.Uint8Array||function(){};function G(F){return m.from(F)}function d(F){return m.isBuffer(F)||F instanceof N}var u=t("./internal/streams/destroy");p.inherits(W,X);function s(){}function h(F,O){Z=Z||t("./_stream_duplex"),F=F||{};var Q=O instanceof Z;this.objectMode=!!F.objectMode,Q&&(this.objectMode=this.objectMode||!!F.writableObjectMode);var oe=F.highWaterMark,se=F.writableHighWaterMark,he=this.objectMode?16:16*1024;oe||oe===0?this.highWaterMark=oe:Q&&(se||se===0)?this.highWaterMark=se:this.highWaterMark=he,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var pe=F.decodeStrings===!1;this.decodeStrings=!pe,this.defaultEncoding=F.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(re){S(O,re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new v(this)}h.prototype.getBuffer=function(){for(var O=this.bufferedRequest,Q=[];O;)Q.push(O),O=O.next;return Q},function(){try{Object.defineProperty(h.prototype,"buffer",{get:y.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var c;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(W,Symbol.hasInstance,{value:function(O){return c.call(this,O)?!0:this!==W?!1:O&&O._writableState instanceof h}})):c=function(O){return O instanceof this};function W(F){if(Z=Z||t("./_stream_duplex"),!c.call(W,this)&&!(this instanceof Z))return new W(F);this._writableState=new h(F,this),this.writable=!0,F&&(typeof F.write=="function"&&(this._write=F.write),typeof F.writev=="function"&&(this._writev=F.writev),typeof F.destroy=="function"&&(this._destroy=F.destroy),typeof F.final=="function"&&(this._final=F.final)),X.call(this)}W.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function M(F,O){var Q=new Error("write after end");F.emit("error",Q),f.nextTick(O,Q)}function I(F,O,Q,oe){var se=!0,he=!1;return Q===null?he=new TypeError("May not write null values to stream"):typeof Q!="string"&&Q!==void 0&&!O.objectMode&&(he=new TypeError("Invalid non-string/buffer chunk")),he&&(F.emit("error",he),f.nextTick(oe,he),se=!1),se}W.prototype.write=function(F,O,Q){var oe=this._writableState,se=!1,he=!oe.objectMode&&d(F);return he&&!m.isBuffer(F)&&(F=G(F)),typeof O=="function"&&(Q=O,O=null),he?O="buffer":O||(O=oe.defaultEncoding),typeof Q!="function"&&(Q=s),oe.ended?M(this,Q):(he||I(this,oe,F,Q))&&(oe.pendingcb++,se=C(this,oe,he,F,O,Q)),se},W.prototype.cork=function(){var F=this._writableState;F.corked++},W.prototype.uncork=function(){var F=this._writableState;F.corked&&(F.corked--,!F.writing&&!F.corked&&!F.finished&&!F.bufferProcessing&&F.bufferedRequest&&Y(this,F))},W.prototype.setDefaultEncoding=function(O){if(typeof O=="string"&&(O=O.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((O+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+O);return this._writableState.defaultEncoding=O,this};function w(F,O,Q){return!F.objectMode&&F.decodeStrings!==!1&&typeof O=="string"&&(O=m.from(O,Q)),O}Object.defineProperty(W.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function C(F,O,Q,oe,se,he){if(!Q){var pe=w(O,oe,se);oe!==pe&&(Q=!0,se="buffer",oe=pe)}var re=O.objectMode?1:oe.length;O.length+=re;var _=O.length0?this.tail.next=p:this.head=p,this.tail=p,++this.length},v.prototype.unshift=function(Z){var p={data:Z,next:this.head};this.length===0&&(this.tail=p),this.head=p,++this.length},v.prototype.shift=function(){if(this.length!==0){var Z=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,Z}},v.prototype.clear=function(){this.head=this.tail=null,this.length=0},v.prototype.join=function(Z){if(this.length===0)return"";for(var p=this.head,y=""+p.data;p=p.next;)y+=Z+p.data;return y},v.prototype.concat=function(Z){if(this.length===0)return o.alloc(0);if(this.length===1)return this.head.data;for(var p=o.allocUnsafe(Z>>>0),y=this.head,X=0;y;)f(y.data,p,X),X+=y.data.length,y=y.next;return p},v}(),r&&r.inspect&&r.inspect.custom&&(i.exports.prototype[r.inspect.custom]=function(){var v=r.inspect({length:this.length});return this.constructor.name+" "+v})},{"safe-buffer":494,util:185}],514:[function(t,i,a){var l=t("process-nextick-args");function o(v,b){var Z=this,p=this._readableState&&this._readableState.destroyed,y=this._writableState&&this._writableState.destroyed;return p||y?(b?b(v):v&&(!this._writableState||!this._writableState.errorEmitted)&&l.nextTick(f,this,v),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(v||null,function(X){!b&&X?(l.nextTick(f,Z,X),Z._writableState&&(Z._writableState.errorEmitted=!0)):b&&b(X)}),this)}function r(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function f(v,b){v.emit("error",b)}i.exports={destroy:o,undestroy:r}},{"process-nextick-args":466}],515:[function(t,i,a){arguments[4][490][0].apply(a,arguments)},{dup:490,events:367}],516:[function(t,i,a){i.exports=t("./readable").PassThrough},{"./readable":517}],517:[function(t,i,a){a=i.exports=t("./lib/_stream_readable.js"),a.Stream=a,a.Readable=a,a.Writable=t("./lib/_stream_writable.js"),a.Duplex=t("./lib/_stream_duplex.js"),a.Transform=t("./lib/_stream_transform.js"),a.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(t,i,a){i.exports=t("./readable").Transform},{"./readable":517}],519:[function(t,i,a){i.exports=t("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(t,i,a){var l=t("safe-buffer").Buffer,o=l.isEncoding||function(c){switch(c=""+c,c&&c.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(c){if(!c)return"utf8";for(var W;;)switch(c){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return c;default:if(W)return;c=(""+c).toLowerCase(),W=!0}}function f(c){var W=r(c);if(typeof W!="string"&&(l.isEncoding===o||!o(c)))throw new Error("Unknown encoding: "+c);return W||c}a.StringDecoder=v;function v(c){this.encoding=f(c);var W;switch(this.encoding){case"utf16le":this.text=N,this.end=G,W=4;break;case"utf8":this.fillLast=y,W=4;break;case"base64":this.text=d,this.end=u,W=3;break;default:this.write=s,this.end=h;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=l.allocUnsafe(W)}v.prototype.write=function(c){if(c.length===0)return"";var W,M;if(this.lastNeed){if(W=this.fillLast(c),W===void 0)return"";M=this.lastNeed,this.lastNeed=0}else M=0;return M>5===6?2:c>>4===14?3:c>>3===30?4:c>>6===2?-1:-2}function Z(c,W,M){var I=W.length-1;if(I=0?(w>0&&(c.lastNeed=w-1),w):--I=0?(w>0&&(c.lastNeed=w-2),w):--I=0?(w>0&&(w===2?w=0:c.lastNeed=w-3),w):0))}function p(c,W,M){if((W[0]&192)!==128)return c.lastNeed=0,"�";if(c.lastNeed>1&&W.length>1){if((W[1]&192)!==128)return c.lastNeed=1,"�";if(c.lastNeed>2&&W.length>2&&(W[2]&192)!==128)return c.lastNeed=2,"�"}}function y(c){var W=this.lastTotal-this.lastNeed,M=p(this,c);if(M!==void 0)return M;if(this.lastNeed<=c.length)return c.copy(this.lastChar,W,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);c.copy(this.lastChar,W,0,c.length),this.lastNeed-=c.length}function X(c,W){var M=Z(this,c,W);if(!this.lastNeed)return c.toString("utf8",W);this.lastTotal=M;var I=c.length-(M-this.lastNeed);return c.copy(this.lastChar,0,I),c.toString("utf8",W,I)}function m(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+"�":W}function N(c,W){if((c.length-W)%2===0){var M=c.toString("utf16le",W);if(M){var I=M.charCodeAt(M.length-1);if(I>=55296&&I<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1],M.slice(0,-1)}return M}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=c[c.length-1],c.toString("utf16le",W,c.length-1)}function G(c){var W=c&&c.length?this.write(c):"";if(this.lastNeed){var M=this.lastTotal-this.lastNeed;return W+this.lastChar.toString("utf16le",0,M)}return W}function d(c,W){var M=(c.length-W)%3;return M===0?c.toString("base64",W):(this.lastNeed=3-M,this.lastTotal=3,M===1?this.lastChar[0]=c[c.length-1]:(this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1]),c.toString("base64",W,c.length-M))}function u(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+this.lastChar.toString("base64",0,3-this.lastNeed):W}function s(c){return c.toString(this.encoding)}function h(c){return c&&c.length?this.write(c):""}},{"safe-buffer":494}],521:[function(t,i,a){(function(l,o){var r=t("process/browser.js").nextTick,f=Function.prototype.apply,v=Array.prototype.slice,b={},Z=0;a.setTimeout=function(){return new p(f.call(setTimeout,window,arguments),clearTimeout)},a.setInterval=function(){return new p(f.call(setInterval,window,arguments),clearInterval)},a.clearTimeout=a.clearInterval=function(y){y.close()};function p(y,X){this._id=y,this._clearFn=X}p.prototype.unref=p.prototype.ref=function(){},p.prototype.close=function(){this._clearFn.call(window,this._id)},a.enroll=function(y,X){clearTimeout(y._idleTimeoutId),y._idleTimeout=X},a.unenroll=function(y){clearTimeout(y._idleTimeoutId),y._idleTimeout=-1},a._unrefActive=a.active=function(y){clearTimeout(y._idleTimeoutId);var X=y._idleTimeout;X>=0&&(y._idleTimeoutId=setTimeout(function(){y._onTimeout&&y._onTimeout()},X))},a.setImmediate=typeof l=="function"?l:function(y){var X=Z++,m=arguments.length<2?!1:v.call(arguments,1);return b[X]=!0,r(function(){b[X]&&(m?y.apply(null,m):y.call(null),a.clearImmediate(X))}),X},a.clearImmediate=typeof o=="function"?o:function(y){delete b[y]}}).call(this,t("timers").setImmediate,t("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(t,i,a){(function(l){i.exports=o;function o(f,v){if(r("noDeprecation"))return f;var b=!1;function Z(){if(!b){if(r("throwDeprecation"))throw new Error(v);r("traceDeprecation")?console.trace(v):console.warn(v),b=!0}return f.apply(this,arguments)}return Z}function r(f){try{if(!l.localStorage)return!1}catch{return!1}var v=l.localStorage[f];return v==null?!1:String(v).toLowerCase()==="true"}}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(t,i,a){typeof Object.create=="function"?i.exports=function(o,r){o.super_=r,o.prototype=Object.create(r.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}})}:i.exports=function(o,r){o.super_=r;var f=function(){};f.prototype=r.prototype,o.prototype=new f,o.prototype.constructor=o}},{}],524:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}i.exports=function(r){return r&&l(r)==="object"&&typeof r.copy=="function"&&typeof r.fill=="function"&&typeof r.readUInt8=="function"}},{}],525:[function(t,i,a){(function(l,o){function r(k){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?r=function(O){return typeof O}:r=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},r(k)}var f=/%[sdj%]/g;a.format=function(k){if(!w(k)){for(var F=[],O=0;O=oe)return pe;switch(pe){case"%s":return String(Q[O++]);case"%d":return Number(Q[O++]);case"%j":try{return JSON.stringify(Q[O++])}catch{return"[Circular]"}default:return pe}}),he=Q[O];O=3&&(O.depth=arguments[2]),arguments.length>=4&&(O.colors=arguments[3]),c(F)?O.showHidden=F:F&&a._extend(O,F),x(O.showHidden)&&(O.showHidden=!1),x(O.depth)&&(O.depth=2),x(O.colors)&&(O.colors=!1),x(O.customInspect)&&(O.customInspect=!0),O.colors&&(O.stylize=p),m(O,k,O.depth)}a.inspect=Z,Z.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Z.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function p(k,F){var O=Z.styles[F];return O?"\x1B["+Z.colors[O][0]+"m"+k+"\x1B["+Z.colors[O][1]+"m":k}function y(k,F){return k}function X(k){var F={};return k.forEach(function(O,Q){F[O]=!0}),F}function m(k,F,O){if(k.customInspect&&F&&V(F.inspect)&&F.inspect!==a.inspect&&!(F.constructor&&F.constructor.prototype===F)){var Q=F.inspect(O,k);return w(Q)||(Q=m(k,Q,O)),Q}var oe=N(k,F);if(oe)return oe;var se=Object.keys(F),he=X(se);if(k.showHidden&&(se=Object.getOwnPropertyNames(F)),L(F)&&(se.indexOf("message")>=0||se.indexOf("description")>=0))return G(F);if(se.length===0){if(V(F)){var pe=F.name?": "+F.name:"";return k.stylize("[Function"+pe+"]","special")}if(R(F))return k.stylize(RegExp.prototype.toString.call(F),"regexp");if(S(F))return k.stylize(Date.prototype.toString.call(F),"date");if(L(F))return G(F)}var re="",_=!1,E=["{","}"];if(h(F)&&(_=!0,E=["[","]"]),V(F)){var $=F.name?": "+F.name:"";re=" [Function"+$+"]"}if(R(F)&&(re=" "+RegExp.prototype.toString.call(F)),S(F)&&(re=" "+Date.prototype.toUTCString.call(F)),L(F)&&(re=" "+G(F)),se.length===0&&(!_||F.length==0))return E[0]+re+E[1];if(O<0)return R(F)?k.stylize(RegExp.prototype.toString.call(F),"regexp"):k.stylize("[Object]","special");k.seen.push(F);var ae;return _?ae=d(k,F,O,he,se):ae=se.map(function(le){return u(k,F,O,he,le,_)}),k.seen.pop(),s(ae,re,E)}function N(k,F){if(x(F))return k.stylize("undefined","undefined");if(w(F)){var O="'"+JSON.stringify(F).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return k.stylize(O,"string")}if(I(F))return k.stylize(""+F,"number");if(c(F))return k.stylize(""+F,"boolean");if(W(F))return k.stylize("null","null")}function G(k){return"["+Error.prototype.toString.call(k)+"]"}function d(k,F,O,Q,oe){for(var se=[],he=0,pe=F.length;he-1&&(se?pe=pe.split(` `).map(function(_){return" "+_}).join(` `).substr(2):pe=` @@ -281,17 +281,17 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * @author Louis-Dominique Dubeau * @license MIT * @copyright Louis-Dominique Dubeau - */Object.defineProperty(a,"__esModule",{value:!0}),a.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",a.NC_NAME_CHAR="-"+a.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",a.NC_NAME_START_CHAR_RE=new RegExp("^["+a.NC_NAME_START_CHAR+"]$","u"),a.NC_NAME_CHAR_RE=new RegExp("^["+a.NC_NAME_CHAR+"]$","u"),a.NC_NAME_RE=new RegExp("^["+a.NC_NAME_START_CHAR+"]["+a.NC_NAME_CHAR+"]*$","u");function l(r){return r>=65&&r<=90||r===95||r>=97&&r<=122||r>=192&&r<=214||r>=216&&r<=246||r>=248&&r<=767||r>=880&&r<=893||r>=895&&r<=8191||r>=8204&&r<=8205||r>=8304&&r<=8591||r>=11264&&r<=12271||r>=12289&&r<=55295||r>=63744&&r<=64975||r>=65008&&r<=65533||r>=65536&&r<=983039}a.isNCNameStartChar=l;function o(r){return l(r)||r===45||r===46||r>=48&&r<=57||r===183||r>=768&&r<=879||r>=8255&&r<=8256}a.isNCNameChar=o},{}]},{},[15])(15)})})(i2e);function oz(n){return typeof n=="string"?n:n instanceof Blob?URL.createObjectURL(n):n instanceof ArrayBuffer?URL.createObjectURL(new Blob([n])):n instanceof Response?URL.createObjectURL(n.blob()):n}function l2e(n){return new Promise((e,t)=>{let i=document.createElement("script");i.src=n,i.onload=function(){e()},i.onerror=function(){t()},document.body.append(i)})}function W0(n){return W0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},W0(n)}var a2e=/^\s+/,r2e=/\s+$/;function rn(n,e){if(n=n||"",e=e||{},n instanceof rn)return n;if(!(this instanceof rn))return new rn(n,e);var t=o2e(n);this._originalInput=n,this._r=t.r,this._g=t.g,this._b=t.b,this._a=t.a,this._roundA=Math.round(100*this._a)/100,this._format=e.format||t.format,this._gradientType=e.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=t.ok}rn.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},getLuminance:function(){var e=this.toRgb(),t,i,a,l,o,r;return t=e.r/255,i=e.g/255,a=e.b/255,t<=.03928?l=t/12.92:l=Math.pow((t+.055)/1.055,2.4),i<=.03928?o=i/12.92:o=Math.pow((i+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),.2126*l+.7152*o+.0722*r},setAlpha:function(e){return this._a=sz(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=ML(this._r,this._g,this._b);return{h:e.h*360,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=ML(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.v*100);return this._a==1?"hsv("+t+", "+i+"%, "+a+"%)":"hsva("+t+", "+i+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var e=NL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=NL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.l*100);return this._a==1?"hsl("+t+", "+i+"%, "+a+"%)":"hsla("+t+", "+i+"%, "+a+"%, "+this._roundA+")"},toHex:function(e){return IL(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return d2e(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Ii(this._r,255)*100)+"%",g:Math.round(Ii(this._g,255)*100)+"%",b:Math.round(Ii(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%)":"rgba("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:N2e[IL(this._r,this._g,this._b,!0)]||!1},toFilter:function(e){var t="#"+YL(this._r,this._g,this._b,this._a),i=t,a=this._gradientType?"GradientType = 1, ":"";if(e){var l=rn(e);i="#"+YL(l._r,l._g,l._b,l._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+t+",endColorstr="+i+")"},toString:function(e){var t=!!e;e=e||this._format;var i=!1,a=this._a<1&&this._a>=0,l=!t&&a&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return l?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return rn(this.toString())},_applyModification:function(e,t){var i=e.apply(null,[this].concat([].slice.call(t)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(m2e,arguments)},brighten:function(){return this._applyModification(p2e,arguments)},darken:function(){return this._applyModification(y2e,arguments)},desaturate:function(){return this._applyModification(h2e,arguments)},saturate:function(){return this._applyModification(f2e,arguments)},greyscale:function(){return this._applyModification(b2e,arguments)},spin:function(){return this._applyModification(Z2e,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(G2e,arguments)},complement:function(){return this._applyCombination(v2e,arguments)},monochromatic:function(){return this._applyCombination(X2e,arguments)},splitcomplement:function(){return this._applyCombination(W2e,arguments)},triad:function(){return this._applyCombination(wL,[3])},tetrad:function(){return this._applyCombination(wL,[4])}};rn.fromRatio=function(n,e){if(W0(n)=="object"){var t={};for(var i in n)n.hasOwnProperty(i)&&(i==="a"?t[i]=n[i]:t[i]=Dd(n[i]));n=t}return rn(n,e)};function o2e(n){var e={r:0,g:0,b:0},t=1,i=null,a=null,l=null,o=!1,r=!1;return typeof n=="string"&&(n=w2e(n)),W0(n)=="object"&&(Zo(n.r)&&Zo(n.g)&&Zo(n.b)?(e=s2e(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):Zo(n.h)&&Zo(n.s)&&Zo(n.v)?(i=Dd(n.s),a=Dd(n.v),e=u2e(n.h,i,a),o=!0,r="hsv"):Zo(n.h)&&Zo(n.s)&&Zo(n.l)&&(i=Dd(n.s),l=Dd(n.l),e=c2e(n.h,i,l),o=!0,r="hsl"),n.hasOwnProperty("a")&&(t=n.a)),t=sz(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function s2e(n,e,t){return{r:Ii(n,255)*255,g:Ii(e,255)*255,b:Ii(t,255)*255}}function NL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l,o,r=(i+a)/2;if(i==a)l=o=0;else{var f=i-a;switch(o=r>.5?f/(2-i-a):f/(i+a),i){case n:l=(e-t)/f+(e1&&(Z-=1),Z<1/6?v+(b-v)*6*Z:Z<1/2?b:Z<2/3?v+(b-v)*(2/3-Z)*6:v}if(e===0)i=a=l=t;else{var r=t<.5?t*(1+e):t+e-t*e,f=2*t-r;i=o(f,r,n+1/3),a=o(f,r,n),l=o(f,r,n-1/3)}return{r:i*255,g:a*255,b:l*255}}function ML(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l,o,r=i,f=i-a;if(o=i===0?0:f/i,i==a)l=0;else{switch(i){case n:l=(e-t)/f+(e>1)+720)%360;--e;)i.h=(i.h+a)%360,l.push(rn(i));return l}function X2e(n,e){e=e||6;for(var t=rn(n).toHsv(),i=t.h,a=t.s,l=t.v,o=[],r=1/e;e--;)o.push(rn({h:i,s:a,v:l})),l=(l+r)%1;return o}rn.mix=function(n,e,t){t=t===0?0:t||50;var i=rn(n).toRgb(),a=rn(e).toRgb(),l=t/100,o={r:(a.r-i.r)*l+i.r,g:(a.g-i.g)*l+i.g,b:(a.b-i.b)*l+i.b,a:(a.a-i.a)*l+i.a};return rn(o)};rn.readability=function(n,e){var t=rn(n),i=rn(e);return(Math.max(t.getLuminance(),i.getLuminance())+.05)/(Math.min(t.getLuminance(),i.getLuminance())+.05)};rn.isReadable=function(n,e,t){var i=rn.readability(n,e),a,l;switch(l=!1,a=g2e(t),a.level+a.size){case"AAsmall":case"AAAlarge":l=i>=4.5;break;case"AAlarge":l=i>=3;break;case"AAAsmall":l=i>=7;break}return l};rn.mostReadable=function(n,e,t){var i=null,a=0,l,o,r,f;t=t||{},o=t.includeFallbackColors,r=t.level,f=t.size;for(var v=0;va&&(a=l,i=rn(e[v]));return rn.isReadable(n,i,{level:r,size:f})||!o?i:(t.includeFallbackColors=!1,rn.mostReadable(n,["#fff","#000"],t))};var bW=rn.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},N2e=rn.hexNames=M2e(bW);function M2e(n){var e={};for(var t in n)n.hasOwnProperty(t)&&(e[n[t]]=t);return e}function sz(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Ii(n,e){I2e(n)&&(n="100%");var t=Y2e(n);return n=Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(n*e,10)/100),Math.abs(n-e)<1e-6?1:n%e/parseFloat(e)}function zp(n){return Math.min(1,Math.max(0,n))}function Ca(n){return parseInt(n,16)}function I2e(n){return typeof n=="string"&&n.indexOf(".")!=-1&&parseFloat(n)===1}function Y2e(n){return typeof n=="string"&&n.indexOf("%")!=-1}function Wr(n){return n.length==1?"0"+n:""+n}function Dd(n){return n<=1&&(n=n*100+"%"),n}function cz(n){return Math.round(parseFloat(n)*255).toString(16)}function gL(n){return Ca(n)/255}var pr=function(){var n="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+n+")",i="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",a="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Zo(n){return!!pr.CSS_UNIT.exec(n)}function w2e(n){n=n.replace(a2e,"").replace(r2e,"").toLowerCase();var e=!1;if(bW[n])n=bW[n],e=!0;else if(n=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=pr.rgb.exec(n))?{r:t[1],g:t[2],b:t[3]}:(t=pr.rgba.exec(n))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=pr.hsl.exec(n))?{h:t[1],s:t[2],l:t[3]}:(t=pr.hsla.exec(n))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=pr.hsv.exec(n))?{h:t[1],s:t[2],v:t[3]}:(t=pr.hsva.exec(n))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=pr.hex8.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),a:gL(t[4]),format:e?"name":"hex8"}:(t=pr.hex6.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),format:e?"name":"hex"}:(t=pr.hex4.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),a:gL(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=pr.hex3.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function g2e(n){var e,t;return n=n||{level:"AA",size:"small"},e=(n.level||"AA").toUpperCase(),t=(n.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}var Rh={},V2e={get exports(){return Rh},set exports(n){Rh=n}};/** + */Object.defineProperty(a,"__esModule",{value:!0}),a.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",a.NC_NAME_CHAR="-"+a.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",a.NC_NAME_START_CHAR_RE=new RegExp("^["+a.NC_NAME_START_CHAR+"]$","u"),a.NC_NAME_CHAR_RE=new RegExp("^["+a.NC_NAME_CHAR+"]$","u"),a.NC_NAME_RE=new RegExp("^["+a.NC_NAME_START_CHAR+"]["+a.NC_NAME_CHAR+"]*$","u");function l(r){return r>=65&&r<=90||r===95||r>=97&&r<=122||r>=192&&r<=214||r>=216&&r<=246||r>=248&&r<=767||r>=880&&r<=893||r>=895&&r<=8191||r>=8204&&r<=8205||r>=8304&&r<=8591||r>=11264&&r<=12271||r>=12289&&r<=55295||r>=63744&&r<=64975||r>=65008&&r<=65533||r>=65536&&r<=983039}a.isNCNameStartChar=l;function o(r){return l(r)||r===45||r===46||r>=48&&r<=57||r===183||r>=768&&r<=879||r>=8255&&r<=8256}a.isNCNameChar=o},{}]},{},[15])(15)})})(s2e);function dz(n){return typeof n=="string"?n:n instanceof Blob?URL.createObjectURL(n):n instanceof ArrayBuffer?URL.createObjectURL(new Blob([n])):n instanceof Response?URL.createObjectURL(n.blob()):n}function c2e(n){return new Promise((e,t)=>{let i=document.createElement("script");i.src=n,i.onload=function(){e()},i.onerror=function(){t()},document.body.append(i)})}function X0(n){return X0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},X0(n)}var u2e=/^\s+/,d2e=/\s+$/;function rn(n,e){if(n=n||"",e=e||{},n instanceof rn)return n;if(!(this instanceof rn))return new rn(n,e);var t=h2e(n);this._originalInput=n,this._r=t.r,this._g=t.g,this._b=t.b,this._a=t.a,this._roundA=Math.round(100*this._a)/100,this._format=e.format||t.format,this._gradientType=e.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=t.ok}rn.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},getLuminance:function(){var e=this.toRgb(),t,i,a,l,o,r;return t=e.r/255,i=e.g/255,a=e.b/255,t<=.03928?l=t/12.92:l=Math.pow((t+.055)/1.055,2.4),i<=.03928?o=i/12.92:o=Math.pow((i+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),.2126*l+.7152*o+.0722*r},setAlpha:function(e){return this._a=hz(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=YL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=YL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.v*100);return this._a==1?"hsv("+t+", "+i+"%, "+a+"%)":"hsva("+t+", "+i+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var e=IL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=IL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.l*100);return this._a==1?"hsl("+t+", "+i+"%, "+a+"%)":"hsla("+t+", "+i+"%, "+a+"%, "+this._roundA+")"},toHex:function(e){return wL(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return p2e(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Ii(this._r,255)*100)+"%",g:Math.round(Ii(this._g,255)*100)+"%",b:Math.round(Ii(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%)":"rgba("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:g2e[wL(this._r,this._g,this._b,!0)]||!1},toFilter:function(e){var t="#"+gL(this._r,this._g,this._b,this._a),i=t,a=this._gradientType?"GradientType = 1, ":"";if(e){var l=rn(e);i="#"+gL(l._r,l._g,l._b,l._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+t+",endColorstr="+i+")"},toString:function(e){var t=!!e;e=e||this._format;var i=!1,a=this._a<1&&this._a>=0,l=!t&&a&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return l?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return rn(this.toString())},_applyModification:function(e,t){var i=e.apply(null,[this].concat([].slice.call(t)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(W2e,arguments)},brighten:function(){return this._applyModification(G2e,arguments)},darken:function(){return this._applyModification(X2e,arguments)},desaturate:function(){return this._applyModification(y2e,arguments)},saturate:function(){return this._applyModification(Z2e,arguments)},greyscale:function(){return this._applyModification(v2e,arguments)},spin:function(){return this._applyModification(N2e,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(Y2e,arguments)},complement:function(){return this._applyCombination(M2e,arguments)},monochromatic:function(){return this._applyCombination(w2e,arguments)},splitcomplement:function(){return this._applyCombination(I2e,arguments)},triad:function(){return this._applyCombination(VL,[3])},tetrad:function(){return this._applyCombination(VL,[4])}};rn.fromRatio=function(n,e){if(X0(n)=="object"){var t={};for(var i in n)n.hasOwnProperty(i)&&(i==="a"?t[i]=n[i]:t[i]=Od(n[i]));n=t}return rn(n,e)};function h2e(n){var e={r:0,g:0,b:0},t=1,i=null,a=null,l=null,o=!1,r=!1;return typeof n=="string"&&(n=T2e(n)),X0(n)=="object"&&(Zo(n.r)&&Zo(n.g)&&Zo(n.b)?(e=f2e(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):Zo(n.h)&&Zo(n.s)&&Zo(n.v)?(i=Od(n.s),a=Od(n.v),e=m2e(n.h,i,a),o=!0,r="hsv"):Zo(n.h)&&Zo(n.s)&&Zo(n.l)&&(i=Od(n.s),l=Od(n.l),e=b2e(n.h,i,l),o=!0,r="hsl"),n.hasOwnProperty("a")&&(t=n.a)),t=hz(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function f2e(n,e,t){return{r:Ii(n,255)*255,g:Ii(e,255)*255,b:Ii(t,255)*255}}function IL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l,o,r=(i+a)/2;if(i==a)l=o=0;else{var f=i-a;switch(o=r>.5?f/(2-i-a):f/(i+a),i){case n:l=(e-t)/f+(e1&&(Z-=1),Z<1/6?v+(b-v)*6*Z:Z<1/2?b:Z<2/3?v+(b-v)*(2/3-Z)*6:v}if(e===0)i=a=l=t;else{var r=t<.5?t*(1+e):t+e-t*e,f=2*t-r;i=o(f,r,n+1/3),a=o(f,r,n),l=o(f,r,n-1/3)}return{r:i*255,g:a*255,b:l*255}}function YL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l,o,r=i,f=i-a;if(o=i===0?0:f/i,i==a)l=0;else{switch(i){case n:l=(e-t)/f+(e>1)+720)%360;--e;)i.h=(i.h+a)%360,l.push(rn(i));return l}function w2e(n,e){e=e||6;for(var t=rn(n).toHsv(),i=t.h,a=t.s,l=t.v,o=[],r=1/e;e--;)o.push(rn({h:i,s:a,v:l})),l=(l+r)%1;return o}rn.mix=function(n,e,t){t=t===0?0:t||50;var i=rn(n).toRgb(),a=rn(e).toRgb(),l=t/100,o={r:(a.r-i.r)*l+i.r,g:(a.g-i.g)*l+i.g,b:(a.b-i.b)*l+i.b,a:(a.a-i.a)*l+i.a};return rn(o)};rn.readability=function(n,e){var t=rn(n),i=rn(e);return(Math.max(t.getLuminance(),i.getLuminance())+.05)/(Math.min(t.getLuminance(),i.getLuminance())+.05)};rn.isReadable=function(n,e,t){var i=rn.readability(n,e),a,l;switch(l=!1,a=x2e(t),a.level+a.size){case"AAsmall":case"AAAlarge":l=i>=4.5;break;case"AAlarge":l=i>=3;break;case"AAAsmall":l=i>=7;break}return l};rn.mostReadable=function(n,e,t){var i=null,a=0,l,o,r,f;t=t||{},o=t.includeFallbackColors,r=t.level,f=t.size;for(var v=0;va&&(a=l,i=rn(e[v]));return rn.isReadable(n,i,{level:r,size:f})||!o?i:(t.includeFallbackColors=!1,rn.mostReadable(n,["#fff","#000"],t))};var yW=rn.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},g2e=rn.hexNames=V2e(yW);function V2e(n){var e={};for(var t in n)n.hasOwnProperty(t)&&(e[n[t]]=t);return e}function hz(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Ii(n,e){L2e(n)&&(n="100%");var t=R2e(n);return n=Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(n*e,10)/100),Math.abs(n-e)<1e-6?1:n%e/parseFloat(e)}function Jp(n){return Math.min(1,Math.max(0,n))}function Ca(n){return parseInt(n,16)}function L2e(n){return typeof n=="string"&&n.indexOf(".")!=-1&&parseFloat(n)===1}function R2e(n){return typeof n=="string"&&n.indexOf("%")!=-1}function Wr(n){return n.length==1?"0"+n:""+n}function Od(n){return n<=1&&(n=n*100+"%"),n}function fz(n){return Math.round(parseFloat(n)*255).toString(16)}function LL(n){return Ca(n)/255}var pr=function(){var n="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+n+")",i="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",a="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Zo(n){return!!pr.CSS_UNIT.exec(n)}function T2e(n){n=n.replace(u2e,"").replace(d2e,"").toLowerCase();var e=!1;if(yW[n])n=yW[n],e=!0;else if(n=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=pr.rgb.exec(n))?{r:t[1],g:t[2],b:t[3]}:(t=pr.rgba.exec(n))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=pr.hsl.exec(n))?{h:t[1],s:t[2],l:t[3]}:(t=pr.hsla.exec(n))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=pr.hsv.exec(n))?{h:t[1],s:t[2],v:t[3]}:(t=pr.hsva.exec(n))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=pr.hex8.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),a:LL(t[4]),format:e?"name":"hex8"}:(t=pr.hex6.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),format:e?"name":"hex"}:(t=pr.hex4.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),a:LL(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=pr.hex3.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function x2e(n){var e,t;return n=n||{level:"AA",size:"small"},e=(n.level||"AA").toUpperCase(),t=(n.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}var Th={},C2e={get exports(){return Th},set exports(n){Th=n}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(n,e){(function(){var t,i="4.17.21",a=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",r="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",v=500,b="__lodash_placeholder__",Z=1,p=2,y=4,X=1,m=2,N=1,G=2,d=4,u=8,s=16,h=32,c=64,W=128,M=256,I=512,w=30,C="...",x=800,R=16,g=1,S=2,L=3,V=1/0,Y=9007199254740991,T=17976931348623157e292,J=0/0,U=4294967295,K=U-1,H=U>>>1,k=[["ary",W],["bind",N],["bindKey",G],["curry",u],["curryRight",s],["flip",I],["partial",h],["partialRight",c],["rearg",M]],F="[object Arguments]",O="[object Array]",Q="[object AsyncFunction]",oe="[object Boolean]",se="[object Date]",he="[object DOMException]",pe="[object Error]",re="[object Function]",_="[object GeneratorFunction]",E="[object Map]",$="[object Number]",ae="[object Null]",le="[object Object]",ee="[object Promise]",te="[object Proxy]",be="[object RegExp]",ne="[object Set]",B="[object String]",q="[object Symbol]",ue="[object Undefined]",ve="[object WeakMap]",Ge="[object WeakSet]",Je="[object ArrayBuffer]",xe="[object DataView]",ke="[object Float32Array]",Pe="[object Float64Array]",Be="[object Int8Array]",Te="[object Int16Array]",we="[object Int32Array]",Se="[object Uint8Array]",De="[object Uint8ClampedArray]",me="[object Uint16Array]",Ve="[object Uint32Array]",Me=/\b__p \+= '';/g,Ie=/\b(__p \+=) '' \+/g,Ze=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ce=/&(?:amp|lt|gt|quot|#39);/g,ye=/[&<>"']/g,Ue=RegExp(Ce.source),qe=RegExp(ye.source),ie=/<%-([\s\S]+?)%>/g,Oe=/<%([\s\S]+?)%>/g,Ke=/<%=([\s\S]+?)%>/g,Xe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Re=/^\w*$/,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ct=/[\\^$.*+?()[\]{}|]/g,lt=RegExp(ct.source),ot=/^\s+/,wt=/\s/,Mt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,xt=/\{\n\/\* \[wrapped with (.+)\] \*/,Gt=/,? & /,Zt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Tt=/[()=,{}\[\]\/\s]/,Ct=/\\(\\)?/g,St=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Pt=/\w*$/,Ut=/^[-+]0x[0-9a-f]+$/i,kt=/^0b[01]+$/i,en=/^\[object .+?Constructor\]$/,nn=/^0o[0-7]+$/i,Ft=/^(?:0|[1-9]\d*)$/,Ln=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,Gi=/['\n\r\u2028\u2029\\]/g,Pi="\\ud800-\\udfff",Gl="\\u0300-\\u036f",Fn="\\ufe20-\\ufe2f",cl="\\u20d0-\\u20ff",ki=Gl+Fn+cl,tl="\\u2700-\\u27bf",nl="a-z\\xdf-\\xf6\\xf8-\\xff",Dt="\\xac\\xb1\\xd7\\xf7",ht="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Fe="\\u2000-\\u206f",tt=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nt="A-Z\\xc0-\\xd6\\xd8-\\xde",Vt="\\ufe0e\\ufe0f",Bt=Dt+ht+Fe+tt,Nn="['’]",oi="["+Pi+"]",gi="["+Bt+"]",Ll="["+ki+"]",il="\\d+",Lr="["+tl+"]",ul="["+nl+"]",Ol="[^"+Pi+Bt+il+tl+nl+nt+"]",jl="\\ud83c[\\udffb-\\udfff]",_t="(?:"+Ll+"|"+jl+")",Rt="[^"+Pi+"]",zt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ht="[\\ud800-\\udbff][\\udc00-\\udfff]",$t="["+nt+"]",si="\\u200d",Ul="(?:"+ul+"|"+Ol+")",Xl="(?:"+$t+"|"+Ol+")",El="(?:"+Nn+"(?:d|ll|m|re|s|t|ve))?",ll="(?:"+Nn+"(?:D|LL|M|RE|S|T|VE))?",Na=_t+"?",Rl="["+Vt+"]?",dl="(?:"+si+"(?:"+[Rt,zt,Ht].join("|")+")"+Rl+Na+")*",Tl="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",hl="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Nl=Rl+Na+dl,fl="(?:"+[Lr,zt,Ht].join("|")+")"+Nl,to="(?:"+[Rt+Ll+"?",Ll,zt,Ht,oi].join("|")+")",Ml=RegExp(Nn,"g"),xl=RegExp(Ll,"g"),Rr=RegExp(jl+"(?="+jl+")|"+to+Nl,"g"),ra=RegExp([$t+"?"+ul+"+"+El+"(?="+[gi,$t,"$"].join("|")+")",Xl+"+"+ll+"(?="+[gi,$t+Ul,"$"].join("|")+")",$t+"?"+Ul+"+"+El,$t+"+"+ll,hl,Tl,il,fl].join("|"),"g"),Ls=RegExp("["+si+Pi+ki+Vt+"]"),Kl=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,oa=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],no=-1,$n={};$n[ke]=$n[Pe]=$n[Be]=$n[Te]=$n[we]=$n[Se]=$n[De]=$n[me]=$n[Ve]=!0,$n[F]=$n[O]=$n[Je]=$n[oe]=$n[xe]=$n[se]=$n[pe]=$n[re]=$n[E]=$n[$]=$n[le]=$n[be]=$n[ne]=$n[B]=$n[ve]=!1;var Un={};Un[F]=Un[O]=Un[Je]=Un[xe]=Un[oe]=Un[se]=Un[ke]=Un[Pe]=Un[Be]=Un[Te]=Un[we]=Un[E]=Un[$]=Un[le]=Un[be]=Un[ne]=Un[B]=Un[q]=Un[Se]=Un[De]=Un[me]=Un[Ve]=!0,Un[pe]=Un[re]=Un[ve]=!1;var sr={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},Jo={"&":"&","<":"<",">":">",'"':""","'":"'"},Do={"&":"&","<":"<",">":">",""":'"',"'":"'"},Oo={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ja=parseFloat,je=parseInt,et=typeof vn=="object"&&vn&&vn.Object===Object&&vn,mt=typeof self=="object"&&self&&self.Object===Object&&self,Lt=et||mt||Function("return this")(),Jn=e&&!e.nodeType&&e,sn=Jn&&!0&&n&&!n.nodeType&&n,ii=sn&&sn.exports===Jn,_n=ii&&et.process,Dn=function(){try{var it=sn&&sn.require&&sn.require("util").types;return it||_n&&_n.binding&&_n.binding("util")}catch{}}(),ni=Dn&&Dn.isArrayBuffer,Fi=Dn&&Dn.isDate,fi=Dn&&Dn.isMap,Qn=Dn&&Dn.isRegExp,qn=Dn&&Dn.isSet,Ti=Dn&&Dn.isTypedArray;function yi(it,pt,dt){switch(dt.length){case 0:return it.call(pt);case 1:return it.call(pt,dt[0]);case 2:return it.call(pt,dt[0],dt[1]);case 3:return it.call(pt,dt[0],dt[1],dt[2])}return it.apply(pt,dt)}function Hl(it,pt,dt,Qt){for(var Mn=-1,ai=it==null?0:it.length;++Mn-1}function ge(it,pt,dt){for(var Qt=-1,Mn=it==null?0:it.length;++Qt-1;);return dt}function fN(it,pt){for(var dt=it.length;dt--&&Di(pt,it[dt],0)>-1;);return dt}function fz(it,pt){for(var dt=it.length,Qt=0;dt--;)it[dt]===pt&&++Qt;return Qt}var bz=Ma(sr),mz=Ma(Jo);function pz(it){return"\\"+Oo[it]}function yz(it,pt){return it==null?t:it[pt]}function Cc(it){return Ls.test(it)}function Zz(it){return Kl.test(it)}function vz(it){for(var pt,dt=[];!(pt=it.next()).done;)dt.push(pt.value);return dt}function Fp(it){var pt=-1,dt=Array(it.size);return it.forEach(function(Qt,Mn){dt[++pt]=[Mn,Qt]}),dt}function bN(it,pt){return function(dt){return it(pt(dt))}}function Eo(it,pt){for(var dt=-1,Qt=it.length,Mn=0,ai=[];++dt-1}function rk(z,j){var A=this.__data__,fe=yf(A,z);return fe<0?(++this.size,A.push([z,j])):A[fe][1]=j,this}lo.prototype.clear=nk,lo.prototype.delete=ik,lo.prototype.get=lk,lo.prototype.has=ak,lo.prototype.set=rk;function ao(z){var j=-1,A=z==null?0:z.length;for(this.clear();++j=j?z:j)),z}function Ha(z,j,A,fe,Ye,ze){var Qe,$e=j&Z,at=j&p,vt=j&y;if(A&&(Qe=Ye?A(z,fe,Ye,ze):A(z)),Qe!==t)return Qe;if(!Vi(z))return z;var Wt=Vn(z);if(Wt){if(Qe=uF(z),!$e)return sa(z,Qe)}else{var Xt=Sl(z),Jt=Xt==re||Xt==_;if(Ao(z))return AN(z,$e);if(Xt==le||Xt==F||Jt&&!Ye){if(Qe=at||Jt?{}:mM(z),!$e)return at?qk(z,Xk(Qe,z)):$k(z,YN(Qe,z))}else{if(!Un[Xt])return Ye?z:{};Qe=dF(z,Xt,$e)}}ze||(ze=new ur);var tn=ze.get(z);if(tn)return tn;ze.set(z,Qe),EM(z)?z.forEach(function(Zn){Qe.add(Ha(Zn,j,A,Zn,z,ze))}):jM(z)&&z.forEach(function(Zn,On){Qe.set(On,Ha(Zn,j,A,On,z,ze))});var yn=vt?at?uy:cy:at?ua:bl,Cn=Wt?t:yn(z);return Zi(Cn||z,function(Zn,On){Cn&&(On=Zn,Zn=z[On]),od(Qe,On,Ha(Zn,j,A,On,z,ze))}),Qe}function Nk(z){var j=bl(z);return function(A){return wN(A,z,j)}}function wN(z,j,A){var fe=A.length;if(z==null)return!fe;for(z=bi(z);fe--;){var Ye=A[fe],ze=j[Ye],Qe=z[Ye];if(Qe===t&&!(Ye in z)||!ze(Qe))return!1}return!0}function gN(z,j,A){if(typeof z!="function")throw new Ea(o);return bd(function(){z.apply(t,A)},j)}function sd(z,j,A,fe){var Ye=-1,ze=Tr,Qe=!0,$e=z.length,at=[],vt=j.length;if(!$e)return at;A&&(j=Ee(j,Ia(A))),fe?(ze=ge,Qe=!1):j.length>=a&&(ze=td,Qe=!1,j=new xs(j));e:for(;++Ye<$e;){var Wt=z[Ye],Xt=A==null?Wt:A(Wt);if(Wt=fe||Wt!==0?Wt:0,Qe&&Xt===Xt){for(var Jt=vt;Jt--;)if(j[Jt]===Xt)continue e;at.push(Wt)}else ze(j,Xt,fe)||at.push(Wt)}return at}var Ho=tM(Cr),VN=tM(Hp,!0);function Mk(z,j){var A=!0;return Ho(z,function(fe,Ye,ze){return A=!!j(fe,Ye,ze),A}),A}function Zf(z,j,A){for(var fe=-1,Ye=z.length;++feYe?0:Ye+A),fe=fe===t||fe>Ye?Ye:xn(fe),fe<0&&(fe+=Ye),fe=A>fe?0:HM(fe);A0&&A($e)?j>1?Il($e,j-1,A,fe,Ye):st(Ye,$e):fe||(Ye[Ye.length]=$e)}return Ye}var Kp=nM(),RN=nM(!0);function Cr(z,j){return z&&Kp(z,j,bl)}function Hp(z,j){return z&&RN(z,j,bl)}function vf(z,j){return al(j,function(A){return uo(z[A])})}function Ss(z,j){j=Qo(j,z);for(var A=0,fe=j.length;z!=null&&Aj}function Yk(z,j){return z!=null&&ci.call(z,j)}function wk(z,j){return z!=null&&j in bi(z)}function gk(z,j,A){return z>=Cl(j,A)&&z=120&&Wt.length>=120)?new xs(Qe&&Wt):t}Wt=z[0];var Xt=-1,Jt=$e[0];e:for(;++Xt-1;)$e!==z&&uf.call($e,at,1),uf.call(z,at,1);return z}function jN(z,j){for(var A=z?j.length:0,fe=A-1;A--;){var Ye=j[A];if(A==fe||Ye!==ze){var ze=Ye;co(Ye)?uf.call(z,Ye,1):ny(z,Ye)}}return z}function qp(z,j){return z+ff(XN()*(j-z+1))}function Ok(z,j,A,fe){for(var Ye=-1,ze=ol(hf((j-z)/(A||1)),0),Qe=dt(ze);ze--;)Qe[fe?ze:++Ye]=z,z+=A;return Qe}function ey(z,j){var A="";if(!z||j<1||j>Y)return A;do j%2&&(A+=z),j=ff(j/2),j&&(z+=z);while(j);return A}function kn(z,j){return yy(ZM(z,j,da),z+"")}function jk(z){return IN(Kc(z))}function Uk(z,j){var A=Kc(z);return Lf(A,Cs(j,0,A.length))}function dd(z,j,A,fe){if(!Vi(z))return z;j=Qo(j,z);for(var Ye=-1,ze=j.length,Qe=ze-1,$e=z;$e!=null&&++YeYe?0:Ye+j),A=A>Ye?Ye:A,A<0&&(A+=Ye),Ye=j>A?0:A-j>>>0,j>>>=0;for(var ze=dt(Ye);++fe>>1,Qe=z[ze];Qe!==null&&!wa(Qe)&&(A?Qe<=j:Qe=a){var vt=j?null:iF(z);if(vt)return tf(vt);Qe=!1,Ye=td,at=new xs}else at=j?[]:$e;e:for(;++fe=fe?z:Pa(z,j,A)}var BN=Cz||function(z){return Lt.clearTimeout(z)};function AN(z,j){if(j)return z.slice();var A=z.length,fe=yN?yN(A):new z.constructor(A);return z.copy(fe),fe}function ry(z){var j=new z.constructor(z.byteLength);return new sf(j).set(new sf(z)),j}function Qk(z,j){var A=j?ry(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.byteLength)}function Bk(z){var j=new z.constructor(z.source,Pt.exec(z));return j.lastIndex=z.lastIndex,j}function Ak(z){return rd?bi(rd.call(z)):{}}function _N(z,j){var A=j?ry(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.length)}function $N(z,j){if(z!==j){var A=z!==t,fe=z===null,Ye=z===z,ze=wa(z),Qe=j!==t,$e=j===null,at=j===j,vt=wa(j);if(!$e&&!vt&&!ze&&z>j||ze&&Qe&&at&&!$e&&!vt||fe&&Qe&&at||!A&&at||!Ye)return 1;if(!fe&&!ze&&!vt&&z=$e)return at;var vt=A[fe];return at*(vt=="desc"?-1:1)}}return z.index-j.index}function qN(z,j,A,fe){for(var Ye=-1,ze=z.length,Qe=A.length,$e=-1,at=j.length,vt=ol(ze-Qe,0),Wt=dt(at+vt),Xt=!fe;++$e1?A[Ye-1]:t,Qe=Ye>2?A[2]:t;for(ze=z.length>3&&typeof ze=="function"?(Ye--,ze):t,Qe&&_l(A[0],A[1],Qe)&&(ze=Ye<3?t:ze,Ye=1),j=bi(j);++fe-1?Ye[ze?j[Qe]:Qe]:t}}function aM(z){return so(function(j){var A=j.length,fe=A,Ye=Ka.prototype.thru;for(z&&j.reverse();fe--;){var ze=j[fe];if(typeof ze!="function")throw new Ea(o);if(Ye&&!Qe&&gf(ze)=="wrapper")var Qe=new Ka([],!0)}for(fe=Qe?fe:A;++fe1&&Bn.reverse(),Wt&&at$e))return!1;var vt=ze.get(z),Wt=ze.get(j);if(vt&&Wt)return vt==j&&Wt==z;var Xt=-1,Jt=!0,tn=A&m?new xs:t;for(ze.set(z,j),ze.set(j,z);++Xt<$e;){var yn=z[Xt],Cn=j[Xt];if(fe)var Zn=Qe?fe(Cn,yn,Xt,j,z,ze):fe(yn,Cn,Xt,z,j,ze);if(Zn!==t){if(Zn)continue;Jt=!1;break}if(tn){if(!Et(j,function(On,Bn){if(!td(tn,Bn)&&(yn===On||Ye(yn,On,A,fe,ze)))return tn.push(Bn)})){Jt=!1;break}}else if(!(yn===Cn||Ye(yn,Cn,A,fe,ze))){Jt=!1;break}}return ze.delete(z),ze.delete(j),Jt}function aF(z,j,A,fe,Ye,ze,Qe){switch(A){case xe:if(z.byteLength!=j.byteLength||z.byteOffset!=j.byteOffset)return!1;z=z.buffer,j=j.buffer;case Je:return!(z.byteLength!=j.byteLength||!ze(new sf(z),new sf(j)));case oe:case se:case $:return dr(+z,+j);case pe:return z.name==j.name&&z.message==j.message;case be:case B:return z==j+"";case E:var $e=Fp;case ne:var at=fe&X;if($e||($e=tf),z.size!=j.size&&!at)return!1;var vt=Qe.get(z);if(vt)return vt==j;fe|=m,Qe.set(z,j);var Wt=hM($e(z),$e(j),fe,Ye,ze,Qe);return Qe.delete(z),Wt;case q:if(rd)return rd.call(z)==rd.call(j)}return!1}function rF(z,j,A,fe,Ye,ze){var Qe=A&X,$e=cy(z),at=$e.length,vt=cy(j),Wt=vt.length;if(at!=Wt&&!Qe)return!1;for(var Xt=at;Xt--;){var Jt=$e[Xt];if(!(Qe?Jt in j:ci.call(j,Jt)))return!1}var tn=ze.get(z),yn=ze.get(j);if(tn&&yn)return tn==j&&yn==z;var Cn=!0;ze.set(z,j),ze.set(j,z);for(var Zn=Qe;++Xt1?"& ":"")+j[fe],j=j.join(A>2?", ":" "),z.replace(Mt,`{ + */(function(n,e){(function(){var t,i="4.17.21",a=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",r="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",v=500,b="__lodash_placeholder__",Z=1,p=2,y=4,X=1,m=2,N=1,G=2,d=4,u=8,s=16,h=32,c=64,W=128,M=256,I=512,w=30,C="...",x=800,R=16,g=1,S=2,L=3,V=1/0,Y=9007199254740991,T=17976931348623157e292,J=0/0,U=4294967295,K=U-1,H=U>>>1,k=[["ary",W],["bind",N],["bindKey",G],["curry",u],["curryRight",s],["flip",I],["partial",h],["partialRight",c],["rearg",M]],F="[object Arguments]",O="[object Array]",Q="[object AsyncFunction]",oe="[object Boolean]",se="[object Date]",he="[object DOMException]",pe="[object Error]",re="[object Function]",_="[object GeneratorFunction]",E="[object Map]",$="[object Number]",ae="[object Null]",le="[object Object]",ee="[object Promise]",te="[object Proxy]",be="[object RegExp]",ne="[object Set]",B="[object String]",q="[object Symbol]",ue="[object Undefined]",ve="[object WeakMap]",Ge="[object WeakSet]",Je="[object ArrayBuffer]",xe="[object DataView]",ke="[object Float32Array]",Pe="[object Float64Array]",Be="[object Int8Array]",Te="[object Int16Array]",we="[object Int32Array]",Se="[object Uint8Array]",De="[object Uint8ClampedArray]",me="[object Uint16Array]",Ve="[object Uint32Array]",Me=/\b__p \+= '';/g,Ie=/\b(__p \+=) '' \+/g,Ze=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ce=/&(?:amp|lt|gt|quot|#39);/g,ye=/[&<>"']/g,Ue=RegExp(Ce.source),qe=RegExp(ye.source),ie=/<%-([\s\S]+?)%>/g,Oe=/<%([\s\S]+?)%>/g,Ke=/<%=([\s\S]+?)%>/g,Xe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Re=/^\w*$/,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ct=/[\\^$.*+?()[\]{}|]/g,lt=RegExp(ct.source),ot=/^\s+/,wt=/\s/,Mt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,xt=/\{\n\/\* \[wrapped with (.+)\] \*/,Gt=/,? & /,Zt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Tt=/[()=,{}\[\]\/\s]/,Ct=/\\(\\)?/g,St=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Pt=/\w*$/,Ut=/^[-+]0x[0-9a-f]+$/i,kt=/^0b[01]+$/i,en=/^\[object .+?Constructor\]$/,nn=/^0o[0-7]+$/i,Ft=/^(?:0|[1-9]\d*)$/,Ln=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,Gi=/['\n\r\u2028\u2029\\]/g,Pi="\\ud800-\\udfff",Gl="\\u0300-\\u036f",Fn="\\ufe20-\\ufe2f",ul="\\u20d0-\\u20ff",ki=Gl+Fn+ul,tl="\\u2700-\\u27bf",nl="a-z\\xdf-\\xf6\\xf8-\\xff",Dt="\\xac\\xb1\\xd7\\xf7",ht="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Fe="\\u2000-\\u206f",tt=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nt="A-Z\\xc0-\\xd6\\xd8-\\xde",Vt="\\ufe0e\\ufe0f",Bt=Dt+ht+Fe+tt,Nn="['’]",oi="["+Pi+"]",gi="["+Bt+"]",Ll="["+ki+"]",il="\\d+",Lr="["+tl+"]",dl="["+nl+"]",Ol="[^"+Pi+Bt+il+tl+nl+nt+"]",jl="\\ud83c[\\udffb-\\udfff]",_t="(?:"+Ll+"|"+jl+")",Rt="[^"+Pi+"]",zt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ht="[\\ud800-\\udbff][\\udc00-\\udfff]",$t="["+nt+"]",si="\\u200d",Ul="(?:"+dl+"|"+Ol+")",Xl="(?:"+$t+"|"+Ol+")",El="(?:"+Nn+"(?:d|ll|m|re|s|t|ve))?",ll="(?:"+Nn+"(?:D|LL|M|RE|S|T|VE))?",Na=_t+"?",Rl="["+Vt+"]?",hl="(?:"+si+"(?:"+[Rt,zt,Ht].join("|")+")"+Rl+Na+")*",Tl="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",fl="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Nl=Rl+Na+hl,bl="(?:"+[Lr,zt,Ht].join("|")+")"+Nl,to="(?:"+[Rt+Ll+"?",Ll,zt,Ht,oi].join("|")+")",Ml=RegExp(Nn,"g"),xl=RegExp(Ll,"g"),Rr=RegExp(jl+"(?="+jl+")|"+to+Nl,"g"),ra=RegExp([$t+"?"+dl+"+"+El+"(?="+[gi,$t,"$"].join("|")+")",Xl+"+"+ll+"(?="+[gi,$t+Ul,"$"].join("|")+")",$t+"?"+Ul+"+"+El,$t+"+"+ll,fl,Tl,il,bl].join("|"),"g"),Ls=RegExp("["+si+Pi+ki+Vt+"]"),Kl=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,oa=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],no=-1,$n={};$n[ke]=$n[Pe]=$n[Be]=$n[Te]=$n[we]=$n[Se]=$n[De]=$n[me]=$n[Ve]=!0,$n[F]=$n[O]=$n[Je]=$n[oe]=$n[xe]=$n[se]=$n[pe]=$n[re]=$n[E]=$n[$]=$n[le]=$n[be]=$n[ne]=$n[B]=$n[ve]=!1;var Un={};Un[F]=Un[O]=Un[Je]=Un[xe]=Un[oe]=Un[se]=Un[ke]=Un[Pe]=Un[Be]=Un[Te]=Un[we]=Un[E]=Un[$]=Un[le]=Un[be]=Un[ne]=Un[B]=Un[q]=Un[Se]=Un[De]=Un[me]=Un[Ve]=!0,Un[pe]=Un[re]=Un[ve]=!1;var sr={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},Jo={"&":"&","<":"<",">":">",'"':""","'":"'"},Do={"&":"&","<":"<",">":">",""":'"',"'":"'"},Oo={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ja=parseFloat,je=parseInt,et=typeof vn=="object"&&vn&&vn.Object===Object&&vn,mt=typeof self=="object"&&self&&self.Object===Object&&self,Lt=et||mt||Function("return this")(),Jn=e&&!e.nodeType&&e,sn=Jn&&!0&&n&&!n.nodeType&&n,ii=sn&&sn.exports===Jn,_n=ii&&et.process,Dn=function(){try{var it=sn&&sn.require&&sn.require("util").types;return it||_n&&_n.binding&&_n.binding("util")}catch{}}(),ni=Dn&&Dn.isArrayBuffer,Fi=Dn&&Dn.isDate,fi=Dn&&Dn.isMap,Qn=Dn&&Dn.isRegExp,qn=Dn&&Dn.isSet,Ti=Dn&&Dn.isTypedArray;function yi(it,pt,dt){switch(dt.length){case 0:return it.call(pt);case 1:return it.call(pt,dt[0]);case 2:return it.call(pt,dt[0],dt[1]);case 3:return it.call(pt,dt[0],dt[1],dt[2])}return it.apply(pt,dt)}function Hl(it,pt,dt,Qt){for(var Mn=-1,ai=it==null?0:it.length;++Mn-1}function ge(it,pt,dt){for(var Qt=-1,Mn=it==null?0:it.length;++Qt-1;);return dt}function mN(it,pt){for(var dt=it.length;dt--&&Di(pt,it[dt],0)>-1;);return dt}function yz(it,pt){for(var dt=it.length,Qt=0;dt--;)it[dt]===pt&&++Qt;return Qt}var Zz=Ma(sr),vz=Ma(Jo);function Wz(it){return"\\"+Oo[it]}function Gz(it,pt){return it==null?t:it[pt]}function Sc(it){return Ls.test(it)}function Xz(it){return Kl.test(it)}function Nz(it){for(var pt,dt=[];!(pt=it.next()).done;)dt.push(pt.value);return dt}function Op(it){var pt=-1,dt=Array(it.size);return it.forEach(function(Qt,Mn){dt[++pt]=[Mn,Qt]}),dt}function pN(it,pt){return function(dt){return it(pt(dt))}}function Eo(it,pt){for(var dt=-1,Qt=it.length,Mn=0,ai=[];++dt-1}function uk(z,j){var A=this.__data__,fe=Zf(A,z);return fe<0?(++this.size,A.push([z,j])):A[fe][1]=j,this}lo.prototype.clear=rk,lo.prototype.delete=ok,lo.prototype.get=sk,lo.prototype.has=ck,lo.prototype.set=uk;function ao(z){var j=-1,A=z==null?0:z.length;for(this.clear();++j=j?z:j)),z}function Ha(z,j,A,fe,Ye,ze){var Qe,$e=j&Z,at=j&p,vt=j&y;if(A&&(Qe=Ye?A(z,fe,Ye,ze):A(z)),Qe!==t)return Qe;if(!Vi(z))return z;var Wt=Vn(z);if(Wt){if(Qe=bF(z),!$e)return sa(z,Qe)}else{var Xt=Sl(z),Jt=Xt==re||Xt==_;if(Ao(z))return $N(z,$e);if(Xt==le||Xt==F||Jt&&!Ye){if(Qe=at||Jt?{}:yM(z),!$e)return at?iF(z,Yk(Qe,z)):nF(z,gN(Qe,z))}else{if(!Un[Xt])return Ye?z:{};Qe=mF(z,Xt,$e)}}ze||(ze=new ur);var tn=ze.get(z);if(tn)return tn;ze.set(z,Qe),HM(z)?z.forEach(function(Zn){Qe.add(Ha(Zn,j,A,Zn,z,ze))}):EM(z)&&z.forEach(function(Zn,On){Qe.set(On,Ha(Zn,j,A,On,z,ze))});var yn=vt?at?fy:hy:at?ua:ml,Cn=Wt?t:yn(z);return Zi(Cn||z,function(Zn,On){Cn&&(On=Zn,Zn=z[On]),sd(Qe,On,Ha(Zn,j,A,On,z,ze))}),Qe}function wk(z){var j=ml(z);return function(A){return VN(A,z,j)}}function VN(z,j,A){var fe=A.length;if(z==null)return!fe;for(z=bi(z);fe--;){var Ye=A[fe],ze=j[Ye],Qe=z[Ye];if(Qe===t&&!(Ye in z)||!ze(Qe))return!1}return!0}function LN(z,j,A){if(typeof z!="function")throw new Ea(o);return md(function(){z.apply(t,A)},j)}function cd(z,j,A,fe){var Ye=-1,ze=Tr,Qe=!0,$e=z.length,at=[],vt=j.length;if(!$e)return at;A&&(j=Ee(j,Ia(A))),fe?(ze=ge,Qe=!1):j.length>=a&&(ze=nd,Qe=!1,j=new xs(j));e:for(;++Ye<$e;){var Wt=z[Ye],Xt=A==null?Wt:A(Wt);if(Wt=fe||Wt!==0?Wt:0,Qe&&Xt===Xt){for(var Jt=vt;Jt--;)if(j[Jt]===Xt)continue e;at.push(Wt)}else ze(j,Xt,fe)||at.push(Wt)}return at}var Ho=iM(Cr),RN=iM(Bp,!0);function gk(z,j){var A=!0;return Ho(z,function(fe,Ye,ze){return A=!!j(fe,Ye,ze),A}),A}function vf(z,j,A){for(var fe=-1,Ye=z.length;++feYe?0:Ye+A),fe=fe===t||fe>Ye?Ye:xn(fe),fe<0&&(fe+=Ye),fe=A>fe?0:QM(fe);A0&&A($e)?j>1?Il($e,j-1,A,fe,Ye):st(Ye,$e):fe||(Ye[Ye.length]=$e)}return Ye}var Qp=lM(),xN=lM(!0);function Cr(z,j){return z&&Qp(z,j,ml)}function Bp(z,j){return z&&xN(z,j,ml)}function Wf(z,j){return al(j,function(A){return uo(z[A])})}function Ss(z,j){j=Qo(j,z);for(var A=0,fe=j.length;z!=null&&Aj}function Lk(z,j){return z!=null&&ci.call(z,j)}function Rk(z,j){return z!=null&&j in bi(z)}function Tk(z,j,A){return z>=Cl(j,A)&&z=120&&Wt.length>=120)?new xs(Qe&&Wt):t}Wt=z[0];var Xt=-1,Jt=$e[0];e:for(;++Xt-1;)$e!==z&&df.call($e,at,1),df.call(z,at,1);return z}function EN(z,j){for(var A=z?j.length:0,fe=A-1;A--;){var Ye=j[A];if(A==fe||Ye!==ze){var ze=Ye;co(Ye)?df.call(z,Ye,1):ay(z,Ye)}}return z}function ny(z,j){return z+bf(MN()*(j-z+1))}function Kk(z,j,A,fe){for(var Ye=-1,ze=ol(ff((j-z)/(A||1)),0),Qe=dt(ze);ze--;)Qe[fe?ze:++Ye]=z,z+=A;return Qe}function iy(z,j){var A="";if(!z||j<1||j>Y)return A;do j%2&&(A+=z),j=bf(j/2),j&&(z+=z);while(j);return A}function kn(z,j){return Wy(WM(z,j,da),z+"")}function Hk(z){return wN(Hc(z))}function Pk(z,j){var A=Hc(z);return Rf(A,Cs(j,0,A.length))}function hd(z,j,A,fe){if(!Vi(z))return z;j=Qo(j,z);for(var Ye=-1,ze=j.length,Qe=ze-1,$e=z;$e!=null&&++YeYe?0:Ye+j),A=A>Ye?Ye:A,A<0&&(A+=Ye),Ye=j>A?0:A-j>>>0,j>>>=0;for(var ze=dt(Ye);++fe>>1,Qe=z[ze];Qe!==null&&!wa(Qe)&&(A?Qe<=j:Qe=a){var vt=j?null:oF(z);if(vt)return nf(vt);Qe=!1,Ye=nd,at=new xs}else at=j?[]:$e;e:for(;++fe=fe?z:Pa(z,j,A)}var _N=Fz||function(z){return Lt.clearTimeout(z)};function $N(z,j){if(j)return z.slice();var A=z.length,fe=vN?vN(A):new z.constructor(A);return z.copy(fe),fe}function cy(z){var j=new z.constructor(z.byteLength);return new cf(j).set(new cf(z)),j}function $k(z,j){var A=j?cy(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.byteLength)}function qk(z){var j=new z.constructor(z.source,Pt.exec(z));return j.lastIndex=z.lastIndex,j}function eF(z){return od?bi(od.call(z)):{}}function qN(z,j){var A=j?cy(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.length)}function eM(z,j){if(z!==j){var A=z!==t,fe=z===null,Ye=z===z,ze=wa(z),Qe=j!==t,$e=j===null,at=j===j,vt=wa(j);if(!$e&&!vt&&!ze&&z>j||ze&&Qe&&at&&!$e&&!vt||fe&&Qe&&at||!A&&at||!Ye)return 1;if(!fe&&!ze&&!vt&&z=$e)return at;var vt=A[fe];return at*(vt=="desc"?-1:1)}}return z.index-j.index}function tM(z,j,A,fe){for(var Ye=-1,ze=z.length,Qe=A.length,$e=-1,at=j.length,vt=ol(ze-Qe,0),Wt=dt(at+vt),Xt=!fe;++$e1?A[Ye-1]:t,Qe=Ye>2?A[2]:t;for(ze=z.length>3&&typeof ze=="function"?(Ye--,ze):t,Qe&&_l(A[0],A[1],Qe)&&(ze=Ye<3?t:ze,Ye=1),j=bi(j);++fe-1?Ye[ze?j[Qe]:Qe]:t}}function oM(z){return so(function(j){var A=j.length,fe=A,Ye=Ka.prototype.thru;for(z&&j.reverse();fe--;){var ze=j[fe];if(typeof ze!="function")throw new Ea(o);if(Ye&&!Qe&&Vf(ze)=="wrapper")var Qe=new Ka([],!0)}for(fe=Qe?fe:A;++fe1&&Bn.reverse(),Wt&&at$e))return!1;var vt=ze.get(z),Wt=ze.get(j);if(vt&&Wt)return vt==j&&Wt==z;var Xt=-1,Jt=!0,tn=A&m?new xs:t;for(ze.set(z,j),ze.set(j,z);++Xt<$e;){var yn=z[Xt],Cn=j[Xt];if(fe)var Zn=Qe?fe(Cn,yn,Xt,j,z,ze):fe(yn,Cn,Xt,z,j,ze);if(Zn!==t){if(Zn)continue;Jt=!1;break}if(tn){if(!Et(j,function(On,Bn){if(!nd(tn,Bn)&&(yn===On||Ye(yn,On,A,fe,ze)))return tn.push(Bn)})){Jt=!1;break}}else if(!(yn===Cn||Ye(yn,Cn,A,fe,ze))){Jt=!1;break}}return ze.delete(z),ze.delete(j),Jt}function cF(z,j,A,fe,Ye,ze,Qe){switch(A){case xe:if(z.byteLength!=j.byteLength||z.byteOffset!=j.byteOffset)return!1;z=z.buffer,j=j.buffer;case Je:return!(z.byteLength!=j.byteLength||!ze(new cf(z),new cf(j)));case oe:case se:case $:return dr(+z,+j);case pe:return z.name==j.name&&z.message==j.message;case be:case B:return z==j+"";case E:var $e=Op;case ne:var at=fe&X;if($e||($e=nf),z.size!=j.size&&!at)return!1;var vt=Qe.get(z);if(vt)return vt==j;fe|=m,Qe.set(z,j);var Wt=bM($e(z),$e(j),fe,Ye,ze,Qe);return Qe.delete(z),Wt;case q:if(od)return od.call(z)==od.call(j)}return!1}function uF(z,j,A,fe,Ye,ze){var Qe=A&X,$e=hy(z),at=$e.length,vt=hy(j),Wt=vt.length;if(at!=Wt&&!Qe)return!1;for(var Xt=at;Xt--;){var Jt=$e[Xt];if(!(Qe?Jt in j:ci.call(j,Jt)))return!1}var tn=ze.get(z),yn=ze.get(j);if(tn&&yn)return tn==j&&yn==z;var Cn=!0;ze.set(z,j),ze.set(j,z);for(var Zn=Qe;++Xt1?"& ":"")+j[fe],j=j.join(A>2?", ":" "),z.replace(Mt,`{ /* [wrapped with `+j+`] */ -`)}function fF(z){return Vn(z)||Fs(z)||!!(WN&&z&&z[WN])}function co(z,j){var A=typeof z;return j=j??Y,!!j&&(A=="number"||A!="symbol"&&Ft.test(z))&&z>-1&&z%1==0&&z0){if(++j>=x)return arguments[0]}else j=0;return z.apply(t,arguments)}}function Lf(z,j){var A=-1,fe=z.length,Ye=fe-1;for(j=j===t?fe:j;++A1?z[j-1]:t;return A=typeof A=="function"?(z.pop(),A):t,LM(z,A)});function RM(z){var j=Le(z);return j.__chain__=!0,j}function MJ(z,j){return j(z),z}function Rf(z,j){return j(z)}var IJ=so(function(z){var j=z.length,A=j?z[0]:0,fe=this.__wrapped__,Ye=function(ze){return Ep(ze,z)};return j>1||this.__actions__.length||!(fe instanceof En)||!co(A)?this.thru(Ye):(fe=fe.slice(A,+A+(j?1:0)),fe.__actions__.push({func:Rf,args:[Ye],thisArg:t}),new Ka(fe,this.__chain__).thru(function(ze){return j&&!ze.length&&ze.push(t),ze}))});function YJ(){return RM(this)}function wJ(){return new Ka(this.value(),this.__chain__)}function gJ(){this.__values__===t&&(this.__values__=KM(this.value()));var z=this.__index__>=this.__values__.length,j=z?t:this.__values__[this.__index__++];return{done:z,value:j}}function VJ(){return this}function LJ(z){for(var j,A=this;A instanceof pf;){var fe=MM(A);fe.__index__=0,fe.__values__=t,j?Ye.__wrapped__=fe:j=fe;var Ye=fe;A=A.__wrapped__}return Ye.__wrapped__=z,j}function RJ(){var z=this.__wrapped__;if(z instanceof En){var j=z;return this.__actions__.length&&(j=new En(this)),j=j.reverse(),j.__actions__.push({func:Rf,args:[Zy],thisArg:t}),new Ka(j,this.__chain__)}return this.thru(Zy)}function TJ(){return PN(this.__wrapped__,this.__actions__)}var xJ=Nf(function(z,j,A){ci.call(z,A)?++z[A]:ro(z,A,1)});function CJ(z,j,A){var fe=Vn(z)?Pl:Mk;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}function SJ(z,j){var A=Vn(z)?al:LN;return A(z,mn(j,3))}var zJ=lM(IM),kJ=lM(YM);function FJ(z,j){return Il(Tf(z,j),1)}function JJ(z,j){return Il(Tf(z,j),V)}function DJ(z,j,A){return A=A===t?1:xn(A),Il(Tf(z,j),A)}function TM(z,j){var A=Vn(z)?Zi:Ho;return A(z,mn(j,3))}function xM(z,j){var A=Vn(z)?io:VN;return A(z,mn(j,3))}var OJ=Nf(function(z,j,A){ci.call(z,A)?z[A].push(j):ro(z,A,[j])});function jJ(z,j,A,fe){z=ca(z)?z:Kc(z),A=A&&!fe?xn(A):0;var Ye=z.length;return A<0&&(A=ol(Ye+A,0)),kf(z)?A<=Ye&&z.indexOf(j,A)>-1:!!Ye&&Di(z,j,A)>-1}var UJ=kn(function(z,j,A){var fe=-1,Ye=typeof j=="function",ze=ca(z)?dt(z.length):[];return Ho(z,function(Qe){ze[++fe]=Ye?yi(j,Qe,A):cd(Qe,j,A)}),ze}),EJ=Nf(function(z,j,A){ro(z,A,j)});function Tf(z,j){var A=Vn(z)?Ee:zN;return A(z,mn(j,3))}function KJ(z,j,A,fe){return z==null?[]:(Vn(j)||(j=j==null?[]:[j]),A=fe?t:A,Vn(A)||(A=A==null?[]:[A]),DN(z,j,A))}var HJ=Nf(function(z,j,A){z[A?0:1].push(j)},function(){return[[],[]]});function PJ(z,j,A){var fe=Vn(z)?It:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,Ho)}function QJ(z,j,A){var fe=Vn(z)?an:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,VN)}function BJ(z,j){var A=Vn(z)?al:LN;return A(z,Sf(mn(j,3)))}function AJ(z){var j=Vn(z)?IN:jk;return j(z)}function _J(z,j,A){(A?_l(z,j,A):j===t)?j=1:j=xn(j);var fe=Vn(z)?vk:Uk;return fe(z,j)}function $J(z){var j=Vn(z)?Wk:Kk;return j(z)}function qJ(z){if(z==null)return 0;if(ca(z))return kf(z)?Sc(z):z.length;var j=Sl(z);return j==E||j==ne?z.size:Ap(z).length}function eD(z,j,A){var fe=Vn(z)?Et:Hk;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}var tD=kn(function(z,j){if(z==null)return[];var A=j.length;return A>1&&_l(z,j[0],j[1])?j=[]:A>2&&_l(j[0],j[1],j[2])&&(j=[j[0]]),DN(z,Il(j,1),[])}),xf=Sz||function(){return Lt.Date.now()};function nD(z,j){if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){if(--z<1)return j.apply(this,arguments)}}function CM(z,j,A){return j=A?t:j,j=z&&j==null?z.length:j,oo(z,W,t,t,t,t,j)}function SM(z,j){var A;if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){return--z>0&&(A=j.apply(this,arguments)),z<=1&&(j=t),A}}var Wy=kn(function(z,j,A){var fe=N;if(A.length){var Ye=Eo(A,Uc(Wy));fe|=h}return oo(z,fe,j,A,Ye)}),zM=kn(function(z,j,A){var fe=N|G;if(A.length){var Ye=Eo(A,Uc(zM));fe|=h}return oo(j,fe,z,A,Ye)});function kM(z,j,A){j=A?t:j;var fe=oo(z,u,t,t,t,t,t,j);return fe.placeholder=kM.placeholder,fe}function FM(z,j,A){j=A?t:j;var fe=oo(z,s,t,t,t,t,t,j);return fe.placeholder=FM.placeholder,fe}function JM(z,j,A){var fe,Ye,ze,Qe,$e,at,vt=0,Wt=!1,Xt=!1,Jt=!0;if(typeof z!="function")throw new Ea(o);j=Ba(j)||0,Vi(A)&&(Wt=!!A.leading,Xt="maxWait"in A,ze=Xt?ol(Ba(A.maxWait)||0,j):ze,Jt="trailing"in A?!!A.trailing:Jt);function tn(ji){var hr=fe,fo=Ye;return fe=Ye=t,vt=ji,Qe=z.apply(fo,hr),Qe}function yn(ji){return vt=ji,$e=bd(On,j),Wt?tn(ji):Qe}function Cn(ji){var hr=ji-at,fo=ji-vt,lI=j-hr;return Xt?Cl(lI,ze-fo):lI}function Zn(ji){var hr=ji-at,fo=ji-vt;return at===t||hr>=j||hr<0||Xt&&fo>=ze}function On(){var ji=xf();if(Zn(ji))return Bn(ji);$e=bd(On,Cn(ji))}function Bn(ji){return $e=t,Jt&&fe?tn(ji):(fe=Ye=t,Qe)}function ga(){$e!==t&&BN($e),vt=0,fe=at=Ye=$e=t}function $l(){return $e===t?Qe:Bn(xf())}function Va(){var ji=xf(),hr=Zn(ji);if(fe=arguments,Ye=this,at=ji,hr){if($e===t)return yn(at);if(Xt)return BN($e),$e=bd(On,j),tn(at)}return $e===t&&($e=bd(On,j)),Qe}return Va.cancel=ga,Va.flush=$l,Va}var iD=kn(function(z,j){return gN(z,1,j)}),lD=kn(function(z,j,A){return gN(z,Ba(j)||0,A)});function aD(z){return oo(z,I)}function Cf(z,j){if(typeof z!="function"||j!=null&&typeof j!="function")throw new Ea(o);var A=function(){var fe=arguments,Ye=j?j.apply(this,fe):fe[0],ze=A.cache;if(ze.has(Ye))return ze.get(Ye);var Qe=z.apply(this,fe);return A.cache=ze.set(Ye,Qe)||ze,Qe};return A.cache=new(Cf.Cache||ao),A}Cf.Cache=ao;function Sf(z){if(typeof z!="function")throw new Ea(o);return function(){var j=arguments;switch(j.length){case 0:return!z.call(this);case 1:return!z.call(this,j[0]);case 2:return!z.call(this,j[0],j[1]);case 3:return!z.call(this,j[0],j[1],j[2])}return!z.apply(this,j)}}function rD(z){return SM(2,z)}var oD=Pk(function(z,j){j=j.length==1&&Vn(j[0])?Ee(j[0],Ia(mn())):Ee(Il(j,1),Ia(mn()));var A=j.length;return kn(function(fe){for(var Ye=-1,ze=Cl(fe.length,A);++Ye=j}),Fs=xN(function(){return arguments}())?xN:function(z){return xi(z)&&ci.call(z,"callee")&&!vN.call(z,"callee")},Vn=dt.isArray,XD=ni?Ia(ni):Lk;function ca(z){return z!=null&&zf(z.length)&&!uo(z)}function Oi(z){return xi(z)&&ca(z)}function ND(z){return z===!0||z===!1||xi(z)&&Al(z)==oe}var Ao=kz||Ty,MD=Fi?Ia(Fi):Rk;function ID(z){return xi(z)&&z.nodeType===1&&!md(z)}function YD(z){if(z==null)return!0;if(ca(z)&&(Vn(z)||typeof z=="string"||typeof z.splice=="function"||Ao(z)||Ec(z)||Fs(z)))return!z.length;var j=Sl(z);if(j==E||j==ne)return!z.size;if(fd(z))return!Ap(z).length;for(var A in z)if(ci.call(z,A))return!1;return!0}function wD(z,j){return ud(z,j)}function gD(z,j,A){A=typeof A=="function"?A:t;var fe=A?A(z,j):t;return fe===t?ud(z,j,t,A):!!fe}function Xy(z){if(!xi(z))return!1;var j=Al(z);return j==pe||j==he||typeof z.message=="string"&&typeof z.name=="string"&&!md(z)}function VD(z){return typeof z=="number"&&GN(z)}function uo(z){if(!Vi(z))return!1;var j=Al(z);return j==re||j==_||j==Q||j==te}function OM(z){return typeof z=="number"&&z==xn(z)}function zf(z){return typeof z=="number"&&z>-1&&z%1==0&&z<=Y}function Vi(z){var j=typeof z;return z!=null&&(j=="object"||j=="function")}function xi(z){return z!=null&&typeof z=="object"}var jM=fi?Ia(fi):xk;function LD(z,j){return z===j||Bp(z,j,hy(j))}function RD(z,j,A){return A=typeof A=="function"?A:t,Bp(z,j,hy(j),A)}function TD(z){return UM(z)&&z!=+z}function xD(z){if(pF(z))throw new Mn(l);return CN(z)}function CD(z){return z===null}function SD(z){return z==null}function UM(z){return typeof z=="number"||xi(z)&&Al(z)==$}function md(z){if(!xi(z)||Al(z)!=le)return!1;var j=cf(z);if(j===null)return!0;var A=ci.call(j,"constructor")&&j.constructor;return typeof A=="function"&&A instanceof A&&af.call(A)==Rz}var Ny=Qn?Ia(Qn):Ck;function zD(z){return OM(z)&&z>=-Y&&z<=Y}var EM=qn?Ia(qn):Sk;function kf(z){return typeof z=="string"||!Vn(z)&&xi(z)&&Al(z)==B}function wa(z){return typeof z=="symbol"||xi(z)&&Al(z)==q}var Ec=Ti?Ia(Ti):zk;function kD(z){return z===t}function FD(z){return xi(z)&&Sl(z)==ve}function JD(z){return xi(z)&&Al(z)==Ge}var DD=wf(_p),OD=wf(function(z,j){return z<=j});function KM(z){if(!z)return[];if(ca(z))return kf(z)?cr(z):sa(z);if(nd&&z[nd])return vz(z[nd]());var j=Sl(z),A=j==E?Fp:j==ne?tf:Kc;return A(z)}function ho(z){if(!z)return z===0?z:0;if(z=Ba(z),z===V||z===-V){var j=z<0?-1:1;return j*T}return z===z?z:0}function xn(z){var j=ho(z),A=j%1;return j===j?A?j-A:j:0}function HM(z){return z?Cs(xn(z),0,U):0}function Ba(z){if(typeof z=="number")return z;if(wa(z))return J;if(Vi(z)){var j=typeof z.valueOf=="function"?z.valueOf():z;z=Vi(j)?j+"":j}if(typeof z!="string")return z===0?z:+z;z=dN(z);var A=kt.test(z);return A||nn.test(z)?je(z.slice(2),A?2:8):Ut.test(z)?J:+z}function PM(z){return Sr(z,ua(z))}function jD(z){return z?Cs(xn(z),-Y,Y):z===0?z:0}function ri(z){return z==null?"":Ya(z)}var UD=Oc(function(z,j){if(fd(j)||ca(j)){Sr(j,bl(j),z);return}for(var A in j)ci.call(j,A)&&od(z,A,j[A])}),QM=Oc(function(z,j){Sr(j,ua(j),z)}),Ff=Oc(function(z,j,A,fe){Sr(j,ua(j),z,fe)}),ED=Oc(function(z,j,A,fe){Sr(j,bl(j),z,fe)}),KD=so(Ep);function HD(z,j){var A=Dc(z);return j==null?A:YN(A,j)}var PD=kn(function(z,j){z=bi(z);var A=-1,fe=j.length,Ye=fe>2?j[2]:t;for(Ye&&_l(j[0],j[1],Ye)&&(fe=1);++A1),ze}),Sr(z,uy(z),A),fe&&(A=Ha(A,Z|p|y,lF));for(var Ye=j.length;Ye--;)ny(A,j[Ye]);return A});function dO(z,j){return AM(z,Sf(mn(j)))}var hO=so(function(z,j){return z==null?{}:Jk(z,j)});function AM(z,j){if(z==null)return{};var A=Ee(uy(z),function(fe){return[fe]});return j=mn(j),ON(z,A,function(fe,Ye){return j(fe,Ye[0])})}function fO(z,j,A){j=Qo(j,z);var fe=-1,Ye=j.length;for(Ye||(Ye=1,z=t);++fej){var fe=z;z=j,j=fe}if(A||z%1||j%1){var Ye=XN();return Cl(z+Ye*(j-z+ja("1e-"+((Ye+"").length-1))),j)}return qp(z,j)}var MO=jc(function(z,j,A){return j=j.toLowerCase(),z+(A?qM(j):j)});function qM(z){return Yy(ri(z).toLowerCase())}function eI(z){return z=ri(z),z&&z.replace(Ln,bz).replace(xl,"")}function IO(z,j,A){z=ri(z),j=Ya(j);var fe=z.length;A=A===t?fe:Cs(xn(A),0,fe);var Ye=A;return A-=j.length,A>=0&&z.slice(A,Ye)==j}function YO(z){return z=ri(z),z&&qe.test(z)?z.replace(ye,mz):z}function wO(z){return z=ri(z),z&<.test(z)?z.replace(ct,"\\$&"):z}var gO=jc(function(z,j,A){return z+(A?"-":"")+j.toLowerCase()}),VO=jc(function(z,j,A){return z+(A?" ":"")+j.toLowerCase()}),LO=iM("toLowerCase");function RO(z,j,A){z=ri(z),j=xn(j);var fe=j?Sc(z):0;if(!j||fe>=j)return z;var Ye=(j-fe)/2;return Yf(ff(Ye),A)+z+Yf(hf(Ye),A)}function TO(z,j,A){z=ri(z),j=xn(j);var fe=j?Sc(z):0;return j&&fe>>0,A?(z=ri(z),z&&(typeof j=="string"||j!=null&&!Ny(j))&&(j=Ya(j),!j&&Cc(z))?Bo(cr(z),0,A):z.split(j,A)):[]}var JO=jc(function(z,j,A){return z+(A?" ":"")+Yy(j)});function DO(z,j,A){return z=ri(z),A=A==null?0:Cs(xn(A),0,z.length),j=Ya(j),z.slice(A,A+j.length)==j}function OO(z,j,A){var fe=Le.templateSettings;A&&_l(z,j,A)&&(j=t),z=ri(z),j=Ff({},j,fe,uM);var Ye=Ff({},j.imports,fe.imports,uM),ze=bl(Ye),Qe=kp(Ye,ze),$e,at,vt=0,Wt=j.interpolate||An,Xt="__p += '",Jt=Jp((j.escape||An).source+"|"+Wt.source+"|"+(Wt===Ke?St:An).source+"|"+(j.evaluate||An).source+"|$","g"),tn="//# sourceURL="+(ci.call(j,"sourceURL")?(j.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++no+"]")+` -`;z.replace(Jt,function(Zn,On,Bn,ga,$l,Va){return Bn||(Bn=ga),Xt+=z.slice(vt,Va).replace(Gi,pz),On&&($e=!0,Xt+=`' + +`)}function yF(z){return Vn(z)||Fs(z)||!!(XN&&z&&z[XN])}function co(z,j){var A=typeof z;return j=j??Y,!!j&&(A=="number"||A!="symbol"&&Ft.test(z))&&z>-1&&z%1==0&&z0){if(++j>=x)return arguments[0]}else j=0;return z.apply(t,arguments)}}function Rf(z,j){var A=-1,fe=z.length,Ye=fe-1;for(j=j===t?fe:j;++A1?z[j-1]:t;return A=typeof A=="function"?(z.pop(),A):t,TM(z,A)});function xM(z){var j=Le(z);return j.__chain__=!0,j}function gJ(z,j){return j(z),z}function Tf(z,j){return j(z)}var VJ=so(function(z){var j=z.length,A=j?z[0]:0,fe=this.__wrapped__,Ye=function(ze){return Pp(ze,z)};return j>1||this.__actions__.length||!(fe instanceof En)||!co(A)?this.thru(Ye):(fe=fe.slice(A,+A+(j?1:0)),fe.__actions__.push({func:Tf,args:[Ye],thisArg:t}),new Ka(fe,this.__chain__).thru(function(ze){return j&&!ze.length&&ze.push(t),ze}))});function LJ(){return xM(this)}function RJ(){return new Ka(this.value(),this.__chain__)}function TJ(){this.__values__===t&&(this.__values__=PM(this.value()));var z=this.__index__>=this.__values__.length,j=z?t:this.__values__[this.__index__++];return{done:z,value:j}}function xJ(){return this}function CJ(z){for(var j,A=this;A instanceof yf;){var fe=YM(A);fe.__index__=0,fe.__values__=t,j?Ye.__wrapped__=fe:j=fe;var Ye=fe;A=A.__wrapped__}return Ye.__wrapped__=z,j}function SJ(){var z=this.__wrapped__;if(z instanceof En){var j=z;return this.__actions__.length&&(j=new En(this)),j=j.reverse(),j.__actions__.push({func:Tf,args:[Gy],thisArg:t}),new Ka(j,this.__chain__)}return this.thru(Gy)}function zJ(){return BN(this.__wrapped__,this.__actions__)}var kJ=Mf(function(z,j,A){ci.call(z,A)?++z[A]:ro(z,A,1)});function FJ(z,j,A){var fe=Vn(z)?Pl:gk;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}function JJ(z,j){var A=Vn(z)?al:TN;return A(z,mn(j,3))}var DJ=rM(wM),OJ=rM(gM);function jJ(z,j){return Il(xf(z,j),1)}function UJ(z,j){return Il(xf(z,j),V)}function EJ(z,j,A){return A=A===t?1:xn(A),Il(xf(z,j),A)}function CM(z,j){var A=Vn(z)?Zi:Ho;return A(z,mn(j,3))}function SM(z,j){var A=Vn(z)?io:RN;return A(z,mn(j,3))}var KJ=Mf(function(z,j,A){ci.call(z,A)?z[A].push(j):ro(z,A,[j])});function HJ(z,j,A,fe){z=ca(z)?z:Hc(z),A=A&&!fe?xn(A):0;var Ye=z.length;return A<0&&(A=ol(Ye+A,0)),Ff(z)?A<=Ye&&z.indexOf(j,A)>-1:!!Ye&&Di(z,j,A)>-1}var PJ=kn(function(z,j,A){var fe=-1,Ye=typeof j=="function",ze=ca(z)?dt(z.length):[];return Ho(z,function(Qe){ze[++fe]=Ye?yi(j,Qe,A):ud(Qe,j,A)}),ze}),QJ=Mf(function(z,j,A){ro(z,A,j)});function xf(z,j){var A=Vn(z)?Ee:FN;return A(z,mn(j,3))}function BJ(z,j,A,fe){return z==null?[]:(Vn(j)||(j=j==null?[]:[j]),A=fe?t:A,Vn(A)||(A=A==null?[]:[A]),jN(z,j,A))}var AJ=Mf(function(z,j,A){z[A?0:1].push(j)},function(){return[[],[]]});function _J(z,j,A){var fe=Vn(z)?It:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,Ho)}function $J(z,j,A){var fe=Vn(z)?an:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,RN)}function qJ(z,j){var A=Vn(z)?al:TN;return A(z,zf(mn(j,3)))}function eD(z){var j=Vn(z)?wN:Hk;return j(z)}function tD(z,j,A){(A?_l(z,j,A):j===t)?j=1:j=xn(j);var fe=Vn(z)?Nk:Pk;return fe(z,j)}function nD(z){var j=Vn(z)?Mk:Bk;return j(z)}function iD(z){if(z==null)return 0;if(ca(z))return Ff(z)?zc(z):z.length;var j=Sl(z);return j==E||j==ne?z.size:qp(z).length}function lD(z,j,A){var fe=Vn(z)?Et:Ak;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}var aD=kn(function(z,j){if(z==null)return[];var A=j.length;return A>1&&_l(z,j[0],j[1])?j=[]:A>2&&_l(j[0],j[1],j[2])&&(j=[j[0]]),jN(z,Il(j,1),[])}),Cf=Jz||function(){return Lt.Date.now()};function rD(z,j){if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){if(--z<1)return j.apply(this,arguments)}}function zM(z,j,A){return j=A?t:j,j=z&&j==null?z.length:j,oo(z,W,t,t,t,t,j)}function kM(z,j){var A;if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){return--z>0&&(A=j.apply(this,arguments)),z<=1&&(j=t),A}}var Ny=kn(function(z,j,A){var fe=N;if(A.length){var Ye=Eo(A,Ec(Ny));fe|=h}return oo(z,fe,j,A,Ye)}),FM=kn(function(z,j,A){var fe=N|G;if(A.length){var Ye=Eo(A,Ec(FM));fe|=h}return oo(j,fe,z,A,Ye)});function JM(z,j,A){j=A?t:j;var fe=oo(z,u,t,t,t,t,t,j);return fe.placeholder=JM.placeholder,fe}function DM(z,j,A){j=A?t:j;var fe=oo(z,s,t,t,t,t,t,j);return fe.placeholder=DM.placeholder,fe}function OM(z,j,A){var fe,Ye,ze,Qe,$e,at,vt=0,Wt=!1,Xt=!1,Jt=!0;if(typeof z!="function")throw new Ea(o);j=Ba(j)||0,Vi(A)&&(Wt=!!A.leading,Xt="maxWait"in A,ze=Xt?ol(Ba(A.maxWait)||0,j):ze,Jt="trailing"in A?!!A.trailing:Jt);function tn(ji){var hr=fe,fo=Ye;return fe=Ye=t,vt=ji,Qe=z.apply(fo,hr),Qe}function yn(ji){return vt=ji,$e=md(On,j),Wt?tn(ji):Qe}function Cn(ji){var hr=ji-at,fo=ji-vt,rI=j-hr;return Xt?Cl(rI,ze-fo):rI}function Zn(ji){var hr=ji-at,fo=ji-vt;return at===t||hr>=j||hr<0||Xt&&fo>=ze}function On(){var ji=Cf();if(Zn(ji))return Bn(ji);$e=md(On,Cn(ji))}function Bn(ji){return $e=t,Jt&&fe?tn(ji):(fe=Ye=t,Qe)}function ga(){$e!==t&&_N($e),vt=0,fe=at=Ye=$e=t}function $l(){return $e===t?Qe:Bn(Cf())}function Va(){var ji=Cf(),hr=Zn(ji);if(fe=arguments,Ye=this,at=ji,hr){if($e===t)return yn(at);if(Xt)return _N($e),$e=md(On,j),tn(at)}return $e===t&&($e=md(On,j)),Qe}return Va.cancel=ga,Va.flush=$l,Va}var oD=kn(function(z,j){return LN(z,1,j)}),sD=kn(function(z,j,A){return LN(z,Ba(j)||0,A)});function cD(z){return oo(z,I)}function Sf(z,j){if(typeof z!="function"||j!=null&&typeof j!="function")throw new Ea(o);var A=function(){var fe=arguments,Ye=j?j.apply(this,fe):fe[0],ze=A.cache;if(ze.has(Ye))return ze.get(Ye);var Qe=z.apply(this,fe);return A.cache=ze.set(Ye,Qe)||ze,Qe};return A.cache=new(Sf.Cache||ao),A}Sf.Cache=ao;function zf(z){if(typeof z!="function")throw new Ea(o);return function(){var j=arguments;switch(j.length){case 0:return!z.call(this);case 1:return!z.call(this,j[0]);case 2:return!z.call(this,j[0],j[1]);case 3:return!z.call(this,j[0],j[1],j[2])}return!z.apply(this,j)}}function uD(z){return kM(2,z)}var dD=_k(function(z,j){j=j.length==1&&Vn(j[0])?Ee(j[0],Ia(mn())):Ee(Il(j,1),Ia(mn()));var A=j.length;return kn(function(fe){for(var Ye=-1,ze=Cl(fe.length,A);++Ye=j}),Fs=SN(function(){return arguments}())?SN:function(z){return xi(z)&&ci.call(z,"callee")&&!GN.call(z,"callee")},Vn=dt.isArray,YD=ni?Ia(ni):Ck;function ca(z){return z!=null&&kf(z.length)&&!uo(z)}function Oi(z){return xi(z)&&ca(z)}function wD(z){return z===!0||z===!1||xi(z)&&Al(z)==oe}var Ao=Oz||Sy,gD=Fi?Ia(Fi):Sk;function VD(z){return xi(z)&&z.nodeType===1&&!pd(z)}function LD(z){if(z==null)return!0;if(ca(z)&&(Vn(z)||typeof z=="string"||typeof z.splice=="function"||Ao(z)||Kc(z)||Fs(z)))return!z.length;var j=Sl(z);if(j==E||j==ne)return!z.size;if(bd(z))return!qp(z).length;for(var A in z)if(ci.call(z,A))return!1;return!0}function RD(z,j){return dd(z,j)}function TD(z,j,A){A=typeof A=="function"?A:t;var fe=A?A(z,j):t;return fe===t?dd(z,j,t,A):!!fe}function Iy(z){if(!xi(z))return!1;var j=Al(z);return j==pe||j==he||typeof z.message=="string"&&typeof z.name=="string"&&!pd(z)}function xD(z){return typeof z=="number"&&NN(z)}function uo(z){if(!Vi(z))return!1;var j=Al(z);return j==re||j==_||j==Q||j==te}function UM(z){return typeof z=="number"&&z==xn(z)}function kf(z){return typeof z=="number"&&z>-1&&z%1==0&&z<=Y}function Vi(z){var j=typeof z;return z!=null&&(j=="object"||j=="function")}function xi(z){return z!=null&&typeof z=="object"}var EM=fi?Ia(fi):kk;function CD(z,j){return z===j||$p(z,j,my(j))}function SD(z,j,A){return A=typeof A=="function"?A:t,$p(z,j,my(j),A)}function zD(z){return KM(z)&&z!=+z}function kD(z){if(WF(z))throw new Mn(l);return zN(z)}function FD(z){return z===null}function JD(z){return z==null}function KM(z){return typeof z=="number"||xi(z)&&Al(z)==$}function pd(z){if(!xi(z)||Al(z)!=le)return!1;var j=uf(z);if(j===null)return!0;var A=ci.call(j,"constructor")&&j.constructor;return typeof A=="function"&&A instanceof A&&rf.call(A)==Sz}var Yy=Qn?Ia(Qn):Fk;function DD(z){return UM(z)&&z>=-Y&&z<=Y}var HM=qn?Ia(qn):Jk;function Ff(z){return typeof z=="string"||!Vn(z)&&xi(z)&&Al(z)==B}function wa(z){return typeof z=="symbol"||xi(z)&&Al(z)==q}var Kc=Ti?Ia(Ti):Dk;function OD(z){return z===t}function jD(z){return xi(z)&&Sl(z)==ve}function UD(z){return xi(z)&&Al(z)==Ge}var ED=gf(ey),KD=gf(function(z,j){return z<=j});function PM(z){if(!z)return[];if(ca(z))return Ff(z)?cr(z):sa(z);if(id&&z[id])return Nz(z[id]());var j=Sl(z),A=j==E?Op:j==ne?nf:Hc;return A(z)}function ho(z){if(!z)return z===0?z:0;if(z=Ba(z),z===V||z===-V){var j=z<0?-1:1;return j*T}return z===z?z:0}function xn(z){var j=ho(z),A=j%1;return j===j?A?j-A:j:0}function QM(z){return z?Cs(xn(z),0,U):0}function Ba(z){if(typeof z=="number")return z;if(wa(z))return J;if(Vi(z)){var j=typeof z.valueOf=="function"?z.valueOf():z;z=Vi(j)?j+"":j}if(typeof z!="string")return z===0?z:+z;z=fN(z);var A=kt.test(z);return A||nn.test(z)?je(z.slice(2),A?2:8):Ut.test(z)?J:+z}function BM(z){return Sr(z,ua(z))}function HD(z){return z?Cs(xn(z),-Y,Y):z===0?z:0}function ri(z){return z==null?"":Ya(z)}var PD=jc(function(z,j){if(bd(j)||ca(j)){Sr(j,ml(j),z);return}for(var A in j)ci.call(j,A)&&sd(z,A,j[A])}),AM=jc(function(z,j){Sr(j,ua(j),z)}),Jf=jc(function(z,j,A,fe){Sr(j,ua(j),z,fe)}),QD=jc(function(z,j,A,fe){Sr(j,ml(j),z,fe)}),BD=so(Pp);function AD(z,j){var A=Oc(z);return j==null?A:gN(A,j)}var _D=kn(function(z,j){z=bi(z);var A=-1,fe=j.length,Ye=fe>2?j[2]:t;for(Ye&&_l(j[0],j[1],Ye)&&(fe=1);++A1),ze}),Sr(z,fy(z),A),fe&&(A=Ha(A,Z|p|y,sF));for(var Ye=j.length;Ye--;)ay(A,j[Ye]);return A});function mO(z,j){return $M(z,zf(mn(j)))}var pO=so(function(z,j){return z==null?{}:Uk(z,j)});function $M(z,j){if(z==null)return{};var A=Ee(fy(z),function(fe){return[fe]});return j=mn(j),UN(z,A,function(fe,Ye){return j(fe,Ye[0])})}function yO(z,j,A){j=Qo(j,z);var fe=-1,Ye=j.length;for(Ye||(Ye=1,z=t);++fej){var fe=z;z=j,j=fe}if(A||z%1||j%1){var Ye=MN();return Cl(z+Ye*(j-z+ja("1e-"+((Ye+"").length-1))),j)}return ny(z,j)}var gO=Uc(function(z,j,A){return j=j.toLowerCase(),z+(A?tI(j):j)});function tI(z){return Vy(ri(z).toLowerCase())}function nI(z){return z=ri(z),z&&z.replace(Ln,Zz).replace(xl,"")}function VO(z,j,A){z=ri(z),j=Ya(j);var fe=z.length;A=A===t?fe:Cs(xn(A),0,fe);var Ye=A;return A-=j.length,A>=0&&z.slice(A,Ye)==j}function LO(z){return z=ri(z),z&&qe.test(z)?z.replace(ye,vz):z}function RO(z){return z=ri(z),z&<.test(z)?z.replace(ct,"\\$&"):z}var TO=Uc(function(z,j,A){return z+(A?"-":"")+j.toLowerCase()}),xO=Uc(function(z,j,A){return z+(A?" ":"")+j.toLowerCase()}),CO=aM("toLowerCase");function SO(z,j,A){z=ri(z),j=xn(j);var fe=j?zc(z):0;if(!j||fe>=j)return z;var Ye=(j-fe)/2;return wf(bf(Ye),A)+z+wf(ff(Ye),A)}function zO(z,j,A){z=ri(z),j=xn(j);var fe=j?zc(z):0;return j&&fe>>0,A?(z=ri(z),z&&(typeof j=="string"||j!=null&&!Yy(j))&&(j=Ya(j),!j&&Sc(z))?Bo(cr(z),0,A):z.split(j,A)):[]}var UO=Uc(function(z,j,A){return z+(A?" ":"")+Vy(j)});function EO(z,j,A){return z=ri(z),A=A==null?0:Cs(xn(A),0,z.length),j=Ya(j),z.slice(A,A+j.length)==j}function KO(z,j,A){var fe=Le.templateSettings;A&&_l(z,j,A)&&(j=t),z=ri(z),j=Jf({},j,fe,hM);var Ye=Jf({},j.imports,fe.imports,hM),ze=ml(Ye),Qe=Dp(Ye,ze),$e,at,vt=0,Wt=j.interpolate||An,Xt="__p += '",Jt=jp((j.escape||An).source+"|"+Wt.source+"|"+(Wt===Ke?St:An).source+"|"+(j.evaluate||An).source+"|$","g"),tn="//# sourceURL="+(ci.call(j,"sourceURL")?(j.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++no+"]")+` +`;z.replace(Jt,function(Zn,On,Bn,ga,$l,Va){return Bn||(Bn=ga),Xt+=z.slice(vt,Va).replace(Gi,Wz),On&&($e=!0,Xt+=`' + __e(`+On+`) + '`),$l&&(at=!0,Xt+=`'; `+$l+`; @@ -307,4 +307,4 @@ __p += '`),Bn&&(Xt+=`' + function print() { __p += __j.call(arguments, '') } `:`; `)+Xt+`return __p -}`;var Cn=nI(function(){return ai(ze,tn+"return "+Xt).apply(t,Qe)});if(Cn.source=Xt,Xy(Cn))throw Cn;return Cn}function jO(z){return ri(z).toLowerCase()}function UO(z){return ri(z).toUpperCase()}function EO(z,j,A){if(z=ri(z),z&&(A||j===t))return dN(z);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=cr(j),ze=hN(fe,Ye),Qe=fN(fe,Ye)+1;return Bo(fe,ze,Qe).join("")}function KO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.slice(0,mN(z)+1);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=fN(fe,cr(j))+1;return Bo(fe,0,Ye).join("")}function HO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.replace(ot,"");if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=hN(fe,cr(j));return Bo(fe,Ye).join("")}function PO(z,j){var A=w,fe=C;if(Vi(j)){var Ye="separator"in j?j.separator:Ye;A="length"in j?xn(j.length):A,fe="omission"in j?Ya(j.omission):fe}z=ri(z);var ze=z.length;if(Cc(z)){var Qe=cr(z);ze=Qe.length}if(A>=ze)return z;var $e=A-Sc(fe);if($e<1)return fe;var at=Qe?Bo(Qe,0,$e).join(""):z.slice(0,$e);if(Ye===t)return at+fe;if(Qe&&($e+=at.length-$e),Ny(Ye)){if(z.slice($e).search(Ye)){var vt,Wt=at;for(Ye.global||(Ye=Jp(Ye.source,ri(Pt.exec(Ye))+"g")),Ye.lastIndex=0;vt=Ye.exec(Wt);)var Xt=vt.index;at=at.slice(0,Xt===t?$e:Xt)}}else if(z.indexOf(Ya(Ye),$e)!=$e){var Jt=at.lastIndexOf(Ye);Jt>-1&&(at=at.slice(0,Jt))}return at+fe}function QO(z){return z=ri(z),z&&Ue.test(z)?z.replace(Ce,Nz):z}var BO=jc(function(z,j,A){return z+(A?" ":"")+j.toUpperCase()}),Yy=iM("toUpperCase");function tI(z,j,A){return z=ri(z),j=A?t:j,j===t?Zz(z)?Yz(z):Xi(z):z.match(j)||[]}var nI=kn(function(z,j){try{return yi(z,t,j)}catch(A){return Xy(A)?A:new Mn(A)}}),AO=so(function(z,j){return Zi(j,function(A){A=zr(A),ro(z,A,Wy(z[A],z))}),z});function _O(z){var j=z==null?0:z.length,A=mn();return z=j?Ee(z,function(fe){if(typeof fe[1]!="function")throw new Ea(o);return[A(fe[0]),fe[1]]}):[],kn(function(fe){for(var Ye=-1;++YeY)return[];var A=U,fe=Cl(z,U);j=mn(j),z-=U;for(var Ye=Uo(fe,j);++A0||j<0)?new En(A):(z<0?A=A.takeRight(-z):z&&(A=A.drop(z)),j!==t&&(j=xn(j),A=j<0?A.dropRight(-j):A.take(j-z)),A)},En.prototype.takeRightWhile=function(z){return this.reverse().takeWhile(z).reverse()},En.prototype.toArray=function(){return this.take(U)},Cr(En.prototype,function(z,j){var A=/^(?:filter|find|map|reject)|While$/.test(j),fe=/^(?:head|last)$/.test(j),Ye=Le[fe?"take"+(j=="last"?"Right":""):j],ze=fe||/^find/.test(j);Ye&&(Le.prototype[j]=function(){var Qe=this.__wrapped__,$e=fe?[1]:arguments,at=Qe instanceof En,vt=$e[0],Wt=at||Vn(Qe),Xt=function(On){var Bn=Ye.apply(Le,st([On],$e));return fe&&Jt?Bn[0]:Bn};Wt&&A&&typeof vt=="function"&&vt.length!=1&&(at=Wt=!1);var Jt=this.__chain__,tn=!!this.__actions__.length,yn=ze&&!Jt,Cn=at&&!tn;if(!ze&&Wt){Qe=Cn?Qe:new En(this);var Zn=z.apply(Qe,$e);return Zn.__actions__.push({func:Rf,args:[Xt],thisArg:t}),new Ka(Zn,Jt)}return yn&&Cn?z.apply(this,$e):(Zn=this.thru(Xt),yn?fe?Zn.value()[0]:Zn.value():Zn)})}),Zi(["pop","push","shift","sort","splice","unshift"],function(z){var j=nf[z],A=/^(?:push|sort|unshift)$/.test(z)?"tap":"thru",fe=/^(?:pop|shift)$/.test(z);Le.prototype[z]=function(){var Ye=arguments;if(fe&&!this.__chain__){var ze=this.value();return j.apply(Vn(ze)?ze:[],Ye)}return this[A](function(Qe){return j.apply(Vn(Qe)?Qe:[],Ye)})}}),Cr(En.prototype,function(z,j){var A=Le[j];if(A){var fe=A.name+"";ci.call(Jc,fe)||(Jc[fe]=[]),Jc[fe].push({name:j,func:A})}}),Jc[Mf(t,G).name]=[{name:"wrapper",func:t}],En.prototype.clone=Qz,En.prototype.reverse=Bz,En.prototype.value=Az,Le.prototype.at=IJ,Le.prototype.chain=YJ,Le.prototype.commit=wJ,Le.prototype.next=gJ,Le.prototype.plant=LJ,Le.prototype.reverse=RJ,Le.prototype.toJSON=Le.prototype.valueOf=Le.prototype.value=TJ,Le.prototype.first=Le.prototype.head,nd&&(Le.prototype[nd]=VJ),Le},zc=wz();sn?((sn.exports=zc)._=zc,Jn._=zc):Lt._=zc}).call(vn)})(V2e,Rh);const L2e=Rh;function uz(n){n=n.replace("#","");for(var e=n.match(/../g),t=0;t<3;t++)e[t]=parseInt(e[t],16);return e}function dz(n,e,t){for(var i=[n.toString(16),e.toString(16),t.toString(16)],a=0;a<3;a++)i[a].length==1&&(i[a]="0"+i[a]);return"#"+i.join("")}function R2e(n,e){for(var t=uz(n),i=0;i<3;i++)t[i]=Math.floor(t[i]*(1-e));return dz(t[0],t[1],t[2])}function T2e(n,e){for(var t=uz(n),i=0;i<3;i++)t[i]=Math.floor((255-t[i])*e+t[i]);return dz(t[0],t[1],t[2])}const l2=["#FFFFFF","#000000","#BFBFBF","#323232","#4472C4","#ED7D31","#A5A5A5","#FFC000","#5B9BD5","#71AD47"];let x2e=80;function VL(n,e={}){return C2e(oz(n),e)}function C2e(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t.arrayBuffer())}function S2e(n){try{return new fW.Workbook().xlsx.load(n)}catch(e){return console.warn(e),Promise.reject(e)}}function z2e(n,e,t){for(let i=0;i<(n.columns||[]).length;i++)e.cols[i.toString()]={},n.columns[i].width?e.cols[i.toString()].width=n.columns[i].width*6:e.cols[i.toString()].width=x2e;e.cols.len=Math.max(Object.keys(e.cols).length,t.minColLength||0)}function k2e(n){if(typeof n.value=="number")return n.value+"";let e="";if(n.value&&n.value.result)e=n.value.result;else if(n.value&&n.value.richText)for(let t in n.value.richText)e+=n.value.richText[t].text;else e=n.value;return e}function a2(n){if(typeof n=="object")return"#000000";if(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(n))return n.startsWith("#")?n:"#"+n;n=n.trim().toLowerCase();let e={};try{let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e.r=parseInt(t[2],16),e.g=parseInt(t[3],16),e.b=parseInt(t[4],16),e.a=parseInt(t[1],16)/255,rn(`rgba(${e.r}, ${e.g}, ${e.b}, ${e.a})`).toHexString()}catch(t){console.warn(t)}}function r2(n,e){return n>9?"#C7C9CC":typeof e>"u"?l2[n]:e>0?T2e(l2[n],e):R2e(l2[n],Math.abs(e))}function F2e(n){n.style=Rh.cloneDeep(n.style);let e=null;n.style.fill&&n.style.fill.fgColor&&(n.style.fill.fgColor.argb?e=a2(n.style.fill.fgColor.argb):n.style.fill.fgColor.hasOwnProperty("theme")?e=r2(n.style.fill.fgColor.theme,n.style.fill.fgColor.tint):e="#C7C9CC"),e&&(n.style.bgcolor=e);let t=null;if(n.style.font&&n.style.font.color&&(n.style.font.color.argb?t=a2(n.style.font.color.argb):n.style.font.color.hasOwnProperty("theme")?t=r2(n.style.font.color.theme,n.style.font.color.tint):t="#000000"),t&&(n.style.color=t),n.style.alignment&&(n.style.alignment.horizontal&&(n.style.align=n.style.alignment.horizontal),n.style.alignment.vertical&&(n.style.valign=n.style.alignment.vertical)),n.style.alignment&&n.style.alignment.wrapText&&(n.style.textwrap=!0),n.style.border){let i={};Object.keys(n.style.border).forEach(a=>{let l=n.style.border[a],o="#000000";typeof l.color=="string"?o=l.color:l.color&&(l.color.argb?o=a2(l.color.argb):l.color.hasOwnProperty("theme")&&(o=r2(l.color.theme,l.color.tint))),i[a]=[l.style||"thin",o]}),n.style.border2={...n.style.border},n.style.border=i}return n.style}function J2e(n,e){let t=[];return n.eachSheet(i=>{let a={name:i.name,styles:[],rows:{},cols:{},merges:[],media:[]},l=[];for(let o in i._merges){a.merges.push(i._merges[o].shortRange);let r={};r.startAddress=i._merges[o].tl,r.endAddress=i._merges[o].br,r.YRange=i._merges[o].model.bottom-i._merges[o].model.top,r.XRange=i._merges[o].model.right-i._merges[o].model.left,l.push(r)}z2e(i,a,e),(i._rows||[]).forEach((o,r)=>{a.rows[r]={cells:{}},o.height&&(a.rows[r].height=o.height),(o._cells||[]).forEach((f,v)=>{a.rows[r].cells[v]={};let b=L2e.find(l,function(Z){return Z.startAddress==f._address});b&&f.master.address!=b.startAddress||(b&&(a.rows[r].cells[v].merge=[b.YRange,b.XRange]),a.rows[r].cells[v].text=k2e(f),a.styles.push(F2e(f)),a.rows[r].cells[v].style=a.styles.length-1)})}),a._media&&(a.media=a._media),t.push(a)}),{workbookData:t,workbookSource:n,medias:n.media||[]}}let ym=[];function Lb(n,e,t,i){t&&t._media.length&&t._media.forEach(a=>{let{imageId:l,range:o,type:r}=a;if(r==="image"){let f=D2e(t,o,i);O2e(n,l,e[l],f)}})}let Zm=60,vm=25,o2=80,s2=24,Ur=window.devicePixelRatio;function D2e(n,e,t){var u,s,h,c,W,M,I,w,C,x,R,g,S,L;let{tl:i={},br:a={}}=e,{nativeCol:l,nativeColOff:o,nativeRow:r,nativeRowOff:f}=i,v=Zm,b=vm;for(let V=0;V{let l=0,o=0,r=a.width,f=a.height,v=i.x,b=i.y,Z=i.width,p=i.height,y=Z/r,X=p/f;if(v{})}function j2e(n,e){return new Promise((t,i)=>{if(ym[n])return t(ym[n]);const{buffer:a,extension:l}=e.buffer;let o=new Blob([a],{type:"image/"+l}),r=URL.createObjectURL(o),f=new Image;f.src=r,f.onload=function(){t(f),ym[n]=f},f.onerror=function(v){i(v)}})}const U2e=He({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({minColLength:20})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null),i=Ne(null);let a={_worksheets:[]},l=[],o=1,r=null,f=null,v=null;function b(Z){S2e(Z).then(p=>{if(!p._worksheets||p._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");const{workbookData:y,medias:X,workbookSource:m}=J2e(p,n.options);l=X,a=m,v=null,o=1,LL(),f.loadData(y),Lb(r,l,a._worksheets[o],v),e("rendered")}).catch(p=>{console.warn(p),l=[],a={_worksheets:[]},LL(),f.loadData({}),e("error",p)})}return Kt(()=>{window.xs=f=new rz(i.value,{mode:"read",showToolbar:!1,view:{height:()=>t.value.clientHeight||300,width:()=>t.value.clientWidth||300},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60}}).loadData({});let Z=f.bottombar.swapFunc;f.bottombar.swapFunc=function(m){Z.call(f.bottombar,m),o=m+1,setTimeout(()=>{f.reRender(),Lb(r,l,a._worksheets[o],v)})};let p=f.sheet.editor.clear;f.sheet.editor.clear=function(...m){p.apply(f.sheet.editor,m),setTimeout(()=>{Lb(r,l,a._worksheets[o],v)})};let y=f.sheet.editor.setOffset;f.sheet.editor.setOffset=function(...m){y.apply(f.sheet.editor,m),v=m[0],Lb(r,l,a._worksheets[o],v)},r=i.value.querySelector("canvas").getContext("2d"),n.src&&VL(n.src,n.requestOptions).then(b).catch(m=>{f.loadData({}),e("error",m)})}),rt(()=>n.src,()=>{n.src?VL(n.src).then(b).catch(Z=>{f.loadData({}),e("error",Z)}):f.loadData({})}),{wrapperRef:t,rootRef:i}}}),E2e={class:"vue-office-excel",ref:"wrapperRef"},K2e={class:"vue-office-excel-main",ref:"rootRef"};function H2e(n,e,t,i,a,l){return kl(),oc("div",E2e,[Ou("div",K2e,null,512)],512)}const Wm=qu(U2e,[["render",H2e]]);Wm.install=function(n){n.component(Wm.name,Wm)};const P2e={__name:"ExcelDemo",setup(n){function e(t){console.log("出差",t)}return(t,i)=>(kl(),Lo(eN,{accept:".xlsx",placeholder:"请输入xlsx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.xlsx"},{default:pa(a=>[D(mi(Wm),{src:a.src,style:{flex:"1",height:"0"},onError:e},null,8,["src"])]),_:1}))}},Q2e="LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KIWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT1bLChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNiksbz1hKDY5KSxjPWEoNjMpLGw9YSgxMDApLGg9YSgxMDEpLHU9YSgxMDIpO2NsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19dC5Xb3JrZXJUYXNrPVdvcmtlclRhc2s7Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGE9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uIHdwaFNldHVwVGVzdCh0KXtpZighYSl7YT0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KSk7ZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24gd3BoQ29uZmlndXJlKGUpeygwLHIuc2V0VmVyYm9zaXR5TGV2ZWwpKGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBEb2MoZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxkPSExLGY9bnVsbDtjb25zdCBnPVtdLHA9KDAsci5nZXRWZXJib3NpdHlMZXZlbCkoKSx7ZG9jSWQ6bSxhcGlWZXJzaW9uOmJ9PWUseT0iMy4wLjI3OSI7aWYoYiE9PXkpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Yn0iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiMy4wLjI3OSIuYCk7Y29uc3Qgdz1bXTtmb3IoY29uc3QgZSBpbltdKXcucHVzaChlKTtpZih3Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIit3LmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVhZGFibGVTdHJlYW0pe2NvbnN0IGU9IlRoZSBicm93c2VyL2Vudmlyb25tZW50IGxhY2tzIG5hdGl2ZSBzdXBwb3J0IGZvciBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgdGhlIFBERi5qcyBsaWJyYXJ5IChlLmcuIGBSZWFkYWJsZVN0cmVhbWApOyAiO2lmKGwuaXNOb2RlSlMpdGhyb3cgbmV3IEVycm9yKGUrInBsZWFzZSB1c2UgYSBgbGVnYWN5YC1idWlsZCBpbnN0ZWFkLiIpO3Rocm93IG5ldyBFcnJvcihlKyJwbGVhc2UgdXBkYXRlIHRvIGEgc3VwcG9ydGVkIGJyb3dzZXIuIil9Y29uc3QgUz1tKyJfd29ya2VyIjtsZXQgeD1uZXcgaC5NZXNzYWdlSGFuZGxlcihTLG0sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7Zy5wdXNoKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtjb25zdCB0PWcuaW5kZXhPZihlKTtnLnNwbGljZSh0LDEpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbYS5sb2FkWGZhRm9udHMoeCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGEubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbcixuXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOm4saHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm4sbGVuZ3RoOmksZG9jQmFzZVVybDpvLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDtpZihlKXt0cnl7ZD1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIobSxlLHQseCxsLGMsbyk7aC5yZXNvbHZlKGQpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXJldHVybiBoLnByb21pc2V9bGV0IGcscD1bXTt0cnl7Zz1uZXcgdS5QREZXb3JrZXJTdHJlYW0oeCl9Y2F0Y2goZSl7aC5yZWplY3QoZSk7cmV0dXJuIGgucHJvbWlzZX1jb25zdCBiPWcuZ2V0RnVsbFJlYWRlcigpO2IuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoYi5pc1JhbmdlU3VwcG9ydGVkKXthPWF8fGIuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7ZD1uZXcgcy5OZXR3b3JrUGRmTWFuYWdlcihtLGcse21zZ0hhbmRsZXI6eCxwYXNzd29yZDp0LGxlbmd0aDpiLmNvbnRlbnRMZW5ndGgsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm59LGwsYyxvKTtmb3IoY29uc3QgZSBvZiBwKWQuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtwPVtdO2gucmVzb2x2ZShkKTtmPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtmPW51bGx9KSk7bGV0IHk9MDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTpufSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihuKXtkfHxmdW5jdGlvbigpe2NvbnN0IGU9KDAsci5hcnJheXNUb0J5dGVzKShwKTtpJiZlLmxlbmd0aCE9PWkmJigwLHIud2FybikoInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO3RyeXtkPW5ldyBzLkxvY2FsUGRmTWFuYWdlcihtLGUsdCx4LGwsYyxvKTtoLnJlc29sdmUoZCl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9cD1bXX0oKTtmPW51bGw7cmV0dXJufXkrPSgwLHIuYXJyYXlCeXRlTGVuZ3RoKShlKTtiLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHx4LnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnksdG90YWw6TWF0aC5tYXgoeSxiLmNvbnRlbnRMZW5ndGh8fDApfSk7ZD9kLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6cC5wdXNoKGUpO2IucmVhZCgpLnRoZW4ocmVhZENodW5rLGEpfWNhdGNoKGUpe2EoZSl9fTtiLnJlYWQoKS50aGVuKHJlYWRDaHVuayxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7Zj1udWxsfSkpO2Y9ZnVuY3Rpb24oZSl7Zy5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGgucHJvbWlzZX14Lm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCx1c2VyVW5pdDphLHZpZXc6cn19KSl9KSl9KSk7eC5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD1uLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbiB3cGhTZXR1cEdldERlc3RpbmF0aW9ucyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0RGVzdGluYXRpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7eC5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxhYmVscyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7eC5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxheW91dChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7eC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbiB3cGhTZXR1cEdldFBhZ2VNb2RlKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7eC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO3gub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7eC5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbiB3cGhTZXR1cEdldEF0dGFjaG1lbnRzKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7eC5vbigiR2V0SmF2YVNjcmlwdCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0SmF2YVNjcmlwdChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSk7eC5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREb2NKU0FjdGlvbnMoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7eC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO3gub24oIkdldE91dGxpbmUiLChmdW5jdGlvbiB3cGhTZXR1cEdldE91dGxpbmUoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7eC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7eC5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO3gub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRNZXRhZGF0YShlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTt4Lm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0TWFya0luZm8oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTt4Lm9uKCJHZXREYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREYXRhKGUpe3JldHVybiBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTt4Lm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoeCxyLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpfSkpfSkpfSkpO3gub24oIkdldEZpZWxkT2JqZWN0cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiZmllbGRPYmplY3RzIil9KSk7eC5vbigiSGFzSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pKTt4Lm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KSk7eC5vbigiU2F2ZURvY3VtZW50IiwoZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6cyxmaWxlbmFtZTpvfSl7Y29uc3QgbD1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygieHJlZiIpLGEuZW5zdXJlRG9jKCJzdGFydFhSZWYiKV0saD1lP251bGw6KDAsaS5nZXROZXdBbm5vdGF0aW9uc01hcCkocyk7aWYoaClmb3IoY29uc3RbZSx0XW9mIGgpbC5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChhPT57Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2V9YCk7cmV0dXJuIGEuc2F2ZU5ld0Fubm90YXRpb25zKHgscix0KS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2socil9KSl9KSkpO2lmKGUpbC5wdXNoKGEuc2VyaWFsaXplWGZhRGF0YShzKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKWwucHVzaChhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7cmV0dXJuIHQuc2F2ZSh4LGEscykuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSkpfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwobCkudGhlbigoZnVuY3Rpb24oW3QsYSxpLHMsbCwuLi5oXSl7bGV0IHU9W10sZD1udWxsO2lmKGUpe2Q9aFswXTtpZighZClyZXR1cm4gdC5ieXRlc31lbHNle3U9aC5mbGF0KDIpO2lmKDA9PT11Lmxlbmd0aClyZXR1cm4gdC5ieXRlc31jb25zdCBmPWEgaW5zdGFuY2VvZiBuLkRpY3QmJmEuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgZz1udWxsLHA9ITE7aWYoQXJyYXkuaXNBcnJheShmKSl7Zm9yKGxldCBlPTAsdD1mLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09ZltlXSl7Zz1mW2UrMV07aT1udWxsO3A9ITB9bnVsbD09PWcmJihnPXMuZ2V0TmV3UmVmKCkpfWVsc2UgaWYoZil7aT1udWxsOygwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpfWxldCBtPU9iamVjdC5jcmVhdGUobnVsbCk7aWYocy50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1zLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO209e3Jvb3RSZWY6cy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6cy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpzLmdldE5ld1JlZigpLGluZm9SZWY6cy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOnMudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmwsZmlsZW5hbWU6b319cy5yZXNldE5ld1JlZigpO3JldHVybigwLGMuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6dC5ieXRlcyx4cmVmSW5mbzptLG5ld1JlZnM6dSx4cmVmOnMsaGFzWGZhOiEhZix4ZmFEYXRhc2V0c1JlZjpnLGhhc1hmYURhdGFzZXRzRW50cnk6cCxhY3JvRm9ybVJlZjppLGFjcm9Gb3JtOmEseGZhRGF0YTpkfSl9KSl9KSk7eC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBSZW5kZXJQYWdlKGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7bn1gKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjp4LHNpbms6dCx0YXNrOmksaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7cyYmKDAsci5pbmZvKShgcGFnZT0ke24rMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTt4Lm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uIHdwaEV4dHJhY3RUZXh0KGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIituKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjp4LHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ZS5pbmNsdWRlTWFya2VkQ29udGVudCxjb21iaW5lVGV4dEl0ZW1zOmUuY29tYmluZVRleHRJdGVtc30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtzJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktcykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbiB3cGhHZXRTdHJ1Y3RUcmVlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7eC5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQseCl9KSk7eC5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uIHdwaENsZWFudXAoZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KSk7eC5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24gd3BoVGVybWluYXRlKGUpe2Q9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWEuY2xlYW51cCgpO3QucHVzaChlKTthPW51bGx9ZWxzZSgwLG8uY2xlYXJHbG9iYWxDYWNoZXMpKCk7ZiYmZihuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBnKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXt4LmRlc3Ryb3koKTt4PW51bGx9KSl9KSk7eC5vbigiUmVhZHkiLChmdW5jdGlvbiB3cGhSZWFkeSh0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTt4LnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIHIuUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7eC5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTt4LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBlIGluc3RhbmNlb2Ygci5JbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5NaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVua25vd25FcnJvckV4Y2VwdGlvbj94LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6eC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgaS5YUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCEwKS50aGVuKG9uU3VjY2VzcyxvbkZhaWx1cmUpfSkpOm9uRmFpbHVyZShlKX0pKX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Z2V0UGRmTWFuYWdlcihlKS50aGVuKChmdW5jdGlvbihlKXtpZihkKXtlLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWE9ZTthLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9Pnt4LnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBTfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgaC5NZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1Xb3JrZXJNZXNzYWdlSGFuZGxlcjsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmIWwuaXNOb2RlSlMmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBlfShzZWxmKSYmV29ya2VyTWVzc2FnZUhhbmRsZXIuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5TdHJlYW1UeXBlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlBlcm1pc3Npb25GbGFnPXQuUGFzc3dvcmRSZXNwb25zZXM9dC5QYXNzd29yZEV4Y2VwdGlvbj10LlBhZ2VBY3Rpb25FdmVudFR5cGU9dC5PUFM9dC5NaXNzaW5nUERGRXhjZXB0aW9uPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRm9udFR5cGU9dC5GZWF0dXJlVGVzdD10LkZPTlRfSURFTlRJVFlfTUFUUklYPXQuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9dC5DTWFwQ29tcHJlc3Npb25UeXBlPXQuQmFzZUV4Y2VwdGlvbj10LkFubm90YXRpb25UeXBlPXQuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXQuQW5ub3RhdGlvblJldmlld1N0YXRlPXQuQW5ub3RhdGlvblJlcGx5VHlwZT10LkFubm90YXRpb25Nb2RlPXQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXQuQW5ub3RhdGlvbkZsYWc9dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXQuQW5ub3RhdGlvbkVkaXRvclR5cGU9dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PXQuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT10LkFib3J0RXhjZXB0aW9uPXZvaWQgMDt0LmFycmF5Qnl0ZUxlbmd0aD1hcnJheUJ5dGVMZW5ndGg7dC5hcnJheXNUb0J5dGVzPWZ1bmN0aW9uIGFycmF5c1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigxPT09dCYmZVswXWluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZVswXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYSs9YXJyYXlCeXRlTGVuZ3RoKGVbcl0pO2xldCByPTA7Y29uc3Qgbj1uZXcgVWludDhBcnJheShhKTtmb3IobGV0IGE9MDthPHQ7YSsrKXtsZXQgdD1lW2FdO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwodD0ic3RyaW5nIj09dHlwZW9mIHQ/c3RyaW5nVG9CeXRlcyh0KTpuZXcgVWludDhBcnJheSh0KSk7Y29uc3QgaT10LmJ5dGVMZW5ndGg7bi5zZXQodCxyKTtyKz1pfXJldHVybiBufTt0LmFzc2VydD1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX07dC5ieXRlc1RvU3RyaW5nPWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmdm9pZCAwIT09ZS5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQ7bis9YSl7Y29uc3QgaT1NYXRoLm1pbihuK2EsdCkscz1lLnN1YmFycmF5KG4saSk7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9O3QuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNldHRsZWQiLHtnZXQ6KCk9PnR9KTtlLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7ZS5yZXNvbHZlPWZ1bmN0aW9uKGUpe3Q9ITA7YShlKX07ZS5yZWplY3Q9ZnVuY3Rpb24oZSl7dD0hMDtyKGUpfX0pKTtyZXR1cm4gZX07dC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoYSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihhLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dCYmdC5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaChlKXt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe2lmKCFlKXJldHVybiExO3N3aXRjaChlLnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpKXJldHVybiByfWNhdGNoKGUpe31yZXR1cm4gbnVsbH07dC5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfTt0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfTt0LmdldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIHJ9O3QuaW5mbz1mdW5jdGlvbiBpbmZvKGUpe3I+PWEuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9O3QuaXNBcnJheUJ1ZmZlcj1mdW5jdGlvbiBpc0FycmF5QnVmZmVyKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJnZvaWQgMCE9PWUuYnl0ZUxlbmd0aH07dC5pc0FycmF5RXF1YWw9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaWYoZVthXSE9PXRbYV0pcmV0dXJuITE7cmV0dXJuITB9O3QuaXNBc2NpaT1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX07dC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uIG9iamVjdEZyb21NYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSl0W2FdPXI7cmV0dXJuIHR9O3Qub2JqZWN0U2l6ZT1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9O3Quc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHI9ZSl9O3Quc2hhZG93PXNoYWRvdzt0LnN0cmluZzMyPWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfTt0LnN0cmluZ1RvQnl0ZXM9c3RyaW5nVG9CeXRlczt0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0OyLDviI9PT1lWzBdJiYiw78iPT09ZVsxXT90PSJ1dGYtMTZiZSI6IsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdP3Q9InV0Zi0xNmxlIjoiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHI9c3RyaW5nVG9CeXRlcyhlKTtyZXR1cm4gYS5kZWNvZGUocil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9c1tlLmNoYXJDb2RlQXQoYSldO3QucHVzaChyP1N0cmluZy5mcm9tQ2hhckNvZGUocik6ZS5jaGFyQXQoYSkpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGMTZCRVN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1VURjE2QkVTdHJpbmcoZSl7Y29uc3QgdD1bIsO+w78iXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIHQuam9pbigiIil9O3Quc3RyaW5nVG9VVEY4U3RyaW5nPXN0cmluZ1RvVVRGOFN0cmluZzt0LnVucmVhY2hhYmxlPXVucmVhY2hhYmxlO3QudXRmOFN0cmluZ1RvU3RyaW5nPWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX07dC53YXJuPXdhcm47dC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXTt0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF07dC5MSU5FX0ZBQ1RPUj0xLjM1O3QuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzU7dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxBTk5PVEFUSU9OU19GT1JNUzoxNixBTk5PVEFUSU9OU19TVE9SQUdFOjMyLEFOTk9UQVRJT05TX0RJU0FCTEU6NjQsT1BMSVNUOjI1Nn07dC5Bbm5vdGF0aW9uTW9kZT17RElTQUJMRTowLEVOQUJMRToxLEVOQUJMRV9GT1JNUzoyLEVOQUJMRV9TVE9SQUdFOjN9O3QuQW5ub3RhdGlvbkVkaXRvclByZWZpeD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyI7dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT17RElTQUJMRTotMSxOT05FOjAsRlJFRVRFWFQ6MyxJTks6MTV9O3QuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9e0ZSRUVURVhUX1NJWkU6MSxGUkVFVEVYVF9DT0xPUjoyLEZSRUVURVhUX09QQUNJVFk6MyxJTktfQ09MT1I6MTEsSU5LX1RISUNLTkVTUzoxMixJTktfT1BBQ0lUWToxM307dC5QZXJtaXNzaW9uRmxhZz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fTt0LlRleHRSZW5kZXJpbmdNb2RlPXtGSUxMOjAsU1RST0tFOjEsRklMTF9TVFJPS0U6MixJTlZJU0lCTEU6MyxGSUxMX0FERF9UT19QQVRIOjQsU1RST0tFX0FERF9UT19QQVRIOjUsRklMTF9TVFJPS0VfQUREX1RPX1BBVEg6NixBRERfVE9fUEFUSDo3LEZJTExfU1RST0tFX01BU0s6MyxBRERfVE9fUEFUSF9GTEFHOjR9O3QuSW1hZ2VLaW5kPXtHUkFZU0NBTEVfMUJQUDoxLFJHQl8yNEJQUDoyLFJHQkFfMzJCUFA6M307dC5Bbm5vdGF0aW9uVHlwZT17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9O3QuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXtNQVJLRUQ6Ik1hcmtlZCIsUkVWSUVXOiJSZXZpZXcifTt0LkFubm90YXRpb25NYXJrZWRTdGF0ZT17TUFSS0VEOiJNYXJrZWQiLFVOTUFSS0VEOiJVbm1hcmtlZCJ9O3QuQW5ub3RhdGlvblJldmlld1N0YXRlPXtBQ0NFUFRFRDoiQWNjZXB0ZWQiLFJFSkVDVEVEOiJSZWplY3RlZCIsQ0FOQ0VMTEVEOiJDYW5jZWxsZWQiLENPTVBMRVRFRDoiQ29tcGxldGVkIixOT05FOiJOb25lIn07dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn07dC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn07dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9O3QuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn07dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In07dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07dC5TdHJlYW1UeXBlPXtVTktOT1dOOiJVTktOT1dOIixGTEFURToiRkxBVEUiLExaVzoiTFpXIixEQ1Q6IkRDVCIsSlBYOiJKUFgiLEpCSUc6IkpCSUciLEE4NToiQTg1IixBSFg6IkFIWCIsQ0NGOiJDQ0YiLFJMWDoiUkxYIn07dC5Gb250VHlwZT17VU5LTk9XTjoiVU5LTk9XTiIsVFlQRTE6IlRZUEUxIixUWVBFMVNUQU5EQVJEOiJUWVBFMVNUQU5EQVJEIixUWVBFMUM6IlRZUEUxQyIsQ0lERk9OVFRZUEUwOiJDSURGT05UVFlQRTAiLENJREZPTlRUWVBFMEM6IkNJREZPTlRUWVBFMEMiLFRSVUVUWVBFOiJUUlVFVFlQRSIsQ0lERk9OVFRZUEUyOiJDSURGT05UVFlQRTIiLFRZUEUzOiJUWVBFMyIsT1BFTlRZUEU6Ik9QRU5UWVBFIixUWVBFMDoiVFlQRTAiLE1NVFlQRTE6Ik1NVFlQRTEifTtjb25zdCBhPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9O3QuVmVyYm9zaXR5TGV2ZWw9YTt0LkNNYXBDb21wcmVzc2lvblR5cGU9e05PTkU6MCxCSU5BUlk6MX07dC5PUFM9e2RlcGVuZGVuY3k6MSxzZXRMaW5lV2lkdGg6MixzZXRMaW5lQ2FwOjMsc2V0TGluZUpvaW46NCxzZXRNaXRlckxpbWl0OjUsc2V0RGFzaDo2LHNldFJlbmRlcmluZ0ludGVudDo3LHNldEZsYXRuZXNzOjgsc2V0R1N0YXRlOjksc2F2ZToxMCxyZXN0b3JlOjExLHRyYW5zZm9ybToxMixtb3ZlVG86MTMsbGluZVRvOjE0LGN1cnZlVG86MTUsY3VydmVUbzI6MTYsY3VydmVUbzM6MTcsY2xvc2VQYXRoOjE4LHJlY3RhbmdsZToxOSxzdHJva2U6MjAsY2xvc2VTdHJva2U6MjEsZmlsbDoyMixlb0ZpbGw6MjMsZmlsbFN0cm9rZToyNCxlb0ZpbGxTdHJva2U6MjUsY2xvc2VGaWxsU3Ryb2tlOjI2LGNsb3NlRU9GaWxsU3Ryb2tlOjI3LGVuZFBhdGg6MjgsY2xpcDoyOSxlb0NsaXA6MzAsYmVnaW5UZXh0OjMxLGVuZFRleHQ6MzIsc2V0Q2hhclNwYWNpbmc6MzMsc2V0V29yZFNwYWNpbmc6MzQsc2V0SFNjYWxlOjM1LHNldExlYWRpbmc6MzYsc2V0Rm9udDozNyxzZXRUZXh0UmVuZGVyaW5nTW9kZTozOCxzZXRUZXh0UmlzZTozOSxtb3ZlVGV4dDo0MCxzZXRMZWFkaW5nTW92ZVRleHQ6NDEsc2V0VGV4dE1hdHJpeDo0MixuZXh0TGluZTo0MyxzaG93VGV4dDo0NCxzaG93U3BhY2VkVGV4dDo0NSxuZXh0TGluZVNob3dUZXh0OjQ2LG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OjQ3LHNldENoYXJXaWR0aDo0OCxzZXRDaGFyV2lkdGhBbmRCb3VuZHM6NDksc2V0U3Ryb2tlQ29sb3JTcGFjZTo1MCxzZXRGaWxsQ29sb3JTcGFjZTo1MSxzZXRTdHJva2VDb2xvcjo1MixzZXRTdHJva2VDb2xvck46NTMsc2V0RmlsbENvbG9yOjU0LHNldEZpbGxDb2xvck46NTUsc2V0U3Ryb2tlR3JheTo1NixzZXRGaWxsR3JheTo1NyxzZXRTdHJva2VSR0JDb2xvcjo1OCxzZXRGaWxsUkdCQ29sb3I6NTksc2V0U3Ryb2tlQ01ZS0NvbG9yOjYwLHNldEZpbGxDTVlLQ29sb3I6NjEsc2hhZGluZ0ZpbGw6NjIsYmVnaW5JbmxpbmVJbWFnZTo2MyxiZWdpbkltYWdlRGF0YTo2NCxlbmRJbmxpbmVJbWFnZTo2NSxwYWludFhPYmplY3Q6NjYsbWFya1BvaW50OjY3LG1hcmtQb2ludFByb3BzOjY4LGJlZ2luTWFya2VkQ29udGVudDo2OSxiZWdpbk1hcmtlZENvbnRlbnRQcm9wczo3MCxlbmRNYXJrZWRDb250ZW50OjcxLGJlZ2luQ29tcGF0OjcyLGVuZENvbXBhdDo3MyxwYWludEZvcm1YT2JqZWN0QmVnaW46NzQscGFpbnRGb3JtWE9iamVjdEVuZDo3NSxiZWdpbkdyb3VwOjc2LGVuZEdyb3VwOjc3LGJlZ2luQW5ub3RhdGlvbjo4MCxlbmRBbm5vdGF0aW9uOjgxLHBhaW50SW1hZ2VNYXNrWE9iamVjdDo4MyxwYWludEltYWdlTWFza1hPYmplY3RHcm91cDo4NCxwYWludEltYWdlWE9iamVjdDo4NSxwYWludElubGluZUltYWdlWE9iamVjdDo4NixwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOjg3LHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Ojg4LHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDo4OSxwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6OTAsY29uc3RydWN0UGF0aDo5MX07dC5VTlNVUFBPUlRFRF9GRUFUVVJFUz17Zm9ybXM6ImZvcm1zIixqYXZhU2NyaXB0OiJqYXZhU2NyaXB0IixzaWduYXR1cmVzOiJzaWduYXR1cmVzIixzbWFzazoic21hc2siLHNoYWRpbmdQYXR0ZXJuOiJzaGFkaW5nUGF0dGVybiIsZXJyb3JUaWxpbmdQYXR0ZXJuOiJlcnJvclRpbGluZ1BhdHRlcm4iLGVycm9yRXh0R1N0YXRlOiJlcnJvckV4dEdTdGF0ZSIsZXJyb3JYT2JqZWN0OiJlcnJvclhPYmplY3QiLGVycm9yRm9udExvYWRUeXBlMzoiZXJyb3JGb250TG9hZFR5cGUzIixlcnJvckZvbnRTdGF0ZToiZXJyb3JGb250U3RhdGUiLGVycm9yRm9udE1pc3Npbmc6ImVycm9yRm9udE1pc3NpbmciLGVycm9yRm9udFRyYW5zbGF0ZToiZXJyb3JGb250VHJhbnNsYXRlIixlcnJvckNvbG9yU3BhY2U6ImVycm9yQ29sb3JTcGFjZSIsZXJyb3JPcGVyYXRvckxpc3Q6ImVycm9yT3BlcmF0b3JMaXN0IixlcnJvckZvbnRUb1VuaWNvZGU6ImVycm9yRm9udFRvVW5pY29kZSIsZXJyb3JGb250TG9hZE5hdGl2ZToiZXJyb3JGb250TG9hZE5hdGl2ZSIsZXJyb3JGb250QnVpbGRQYXRoOiJlcnJvckZvbnRCdWlsZFBhdGgiLGVycm9yRm9udEdldFBhdGg6ImVycm9yRm9udEdldFBhdGgiLGVycm9yTWFya2VkQ29udGVudDoiZXJyb3JNYXJrZWRDb250ZW50IixlcnJvckNvbnRlbnRTdWJTdHJlYW06ImVycm9yQ29udGVudFN1YlN0cmVhbSJ9O3QuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IHI9YS5XQVJOSU5HUztmdW5jdGlvbiB3YXJuKGUpe3I+PWEuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IG49ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7dC5CYXNlRXhjZXB0aW9uPW47dC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX07dC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX07dC5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19O3QuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTt0LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19O3QuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fTt0LkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIGFycmF5Qnl0ZUxlbmd0aChlKXtpZih2b2lkIDAhPT1lLmxlbmd0aClyZXR1cm4gZS5sZW5ndGg7aWYodm9pZCAwIT09ZS5ieXRlTGVuZ3RoKXJldHVybiBlLmJ5dGVMZW5ndGg7dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGFycmF5Qnl0ZUxlbmd0aCIpfXQuRmVhdHVyZVRlc3Q9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfX07Y29uc3QgaT1bLi4uQXJyYXkoMjU2KS5rZXlzKCldLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7aVtlXX0ke2lbdF19JHtpW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzFdO3RbMV09YX10WzBdKj1lWzBdO3RbMV0qPWVbMF07aWYoZVszXTwwKXthPXRbMl07dFsyXT10WzNdO3RbM109YX10WzJdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzJdO3RbMl09YTthPXRbMV07dFsxXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMl07dFsxXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNF07dFsyXSs9ZVs1XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGE9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvYSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvYV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgYT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCkscj1VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxuPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksaT1VdGlsLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1pbihhWzFdLHJbMV0sblsxXSxpWzFdKSxNYXRoLm1heChhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1heChhWzFdLHJbMV0sblsxXSxpWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGE9ZVswXSp0WzBdK2VbMV0qdFsyXSxyPWVbMF0qdFsxXStlWzFdKnRbM10sbj1lWzJdKnRbMF0rZVszXSp0WzJdLGk9ZVsyXSp0WzFdK2VbM10qdFszXSxzPShhK2kpLzIsbz1NYXRoLnNxcnQoKGEraSkqKjItNCooYSppLW4qcikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksaT1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBuPmk/bnVsbDpbYSxuLHIsaV19c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsbixpLHMsbyl7Y29uc3QgYz1bXSxsPVtbXSxbXV07bGV0IGgsdSxkLGYsZyxwLG0sYjtmb3IobGV0IGw9MDtsPDI7KytsKXtpZigwPT09bCl7dT02KmUtMTIqYSs2Km47aD0tMyplKzkqYS05Km4rMypzO2Q9MyphLTMqZX1lbHNle3U9Nip0LTEyKnIrNippO2g9LTMqdCs5KnItOSppKzMqbztkPTMqci0zKnR9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKHUpPDFlLTEyKWNvbnRpbnVlO2Y9LWQvdTswPGYmJmY8MSYmYy5wdXNoKGYpfWVsc2V7bT11KnUtNCpkKmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtnPSgtdStiKS8oMipoKTswPGcmJmc8MSYmYy5wdXNoKGcpO3A9KC11LWIpLygyKmgpOzA8cCYmcDwxJiZjLnB1c2gocCl9fX1sZXQgeSx3PWMubGVuZ3RoO2NvbnN0IFM9dztmb3IoO3ctLTspe2Y9Y1t3XTt5PTEtZjtsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZiphKzMqeSpmKmYqbitmKmYqZipzO2xbMV1bd109eSp5KnkqdCszKnkqeSpmKnIrMyp5KmYqZippK2YqZipmKm99bFswXVtTXT1lO2xbMV1bU109dDtsWzBdW1MrMV09cztsWzFdW1MrMV09bztsWzBdLmxlbmd0aD1sWzFdLmxlbmd0aD1TKzI7cmV0dXJuW01hdGgubWluKC4uLmxbMF0pLE1hdGgubWluKC4uLmxbMV0pLE1hdGgubWF4KC4uLmxbMF0pLE1hdGgubWF4KC4uLmxbMV0pXX19dC5VdGlsPVV0aWw7Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5SZWZTZXRDYWNoZT10LlJlZlNldD10LlJlZj10Lk5hbWU9dC5FT0Y9dC5EaWN0PXQuQ21kPXQuQ0lSQ1VMQVJfUkVGPXZvaWQgMDt0LmNsZWFyUHJpbWl0aXZlQ2FjaGVzPWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7by5fY2xlYXJDYWNoZSgpO3MuX2NsZWFyQ2FjaGUoKTtsLl9jbGVhckNhY2hlKCl9O3QuaXNDbWQ9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG8mJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfTt0LmlzRGljdD1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9O3QuaXNOYW1lPWlzTmFtZTt0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59O3ZhciByPWEoMik7Y29uc3Qgbj1TeW1ib2woIkNJUkNVTEFSX1JFRiIpO3QuQ0lSQ1VMQVJfUkVGPW47Y29uc3QgaT1TeW1ib2woIkVPRiIpO3QuRU9GPWk7Y29uc3Qgcz1mdW5jdGlvbiBOYW1lQ2xvc3VyZSgpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KHQpe3JldHVybiBlW3RdfHwoZVt0XT1uZXcgTmFtZSh0KSl9c3RhdGljIF9jbGVhckNhY2hlKCl7ZT1PYmplY3QuY3JlYXRlKG51bGwpfX1yZXR1cm4gTmFtZX0oKTt0Lk5hbWU9cztjb25zdCBvPWZ1bmN0aW9uIENtZENsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQodCl7cmV0dXJuIGVbdF18fChlW3RdPW5ldyBDbWQodCkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIENtZH0oKTt0LkNtZD1vO2NvbnN0IGM9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBjfTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1jfWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKS5sZW5ndGh9Z2V0KGUsdCxhKXtsZXQgcj10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXBbdF07dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwW2FdKX1yZXR1cm4gciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1hc3luYyBnZXRBc3luYyhlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBsJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9ciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZiYmKHI9dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KHIpKXtyPXIuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXWluc3RhbmNlb2YgbCYmdGhpcy54cmVmJiYocltlXT10aGlzLnhyZWYuZmV0Y2gocltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiByfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9PnsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksbj1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1uLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO24uc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBuKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcFt0XT1hWzBdO2NvbnRpbnVlfWNvbnN0IG49bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09bi5fbWFwW3RdJiYobi5fbWFwW3RdPWEpO24uc2l6ZT4wJiYoci5fbWFwW3RdPW4pfW4uY2xlYXIoKTtyZXR1cm4gci5zaXplPjA/cjpEaWN0LmVtcHR5fX10LkRpY3Q9RGljdDtjb25zdCBsPWZ1bmN0aW9uIFJlZkNsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZ2V0KHQsYSl7Y29uc3Qgcj0wPT09YT9gJHt0fVJgOmAke3R9UiR7YX1gO3JldHVybiBlW3JdfHwoZVtyXT1uZXcgUmVmKHQsYSkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIFJlZn0oKTt0LlJlZj1sO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGUmJmUuX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX10LlJlZlNldD1SZWZTZXQ7Y2xhc3MgUmVmU2V0Q2FjaGV7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19dC5SZWZTZXRDYWNoZT1SZWZTZXRDYWNoZTtmdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHMmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj10LkRvY1N0YXRzPXZvaWQgMDt0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxhKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2Ygbi5EaWN0KWZvcihjb25zdCB0IG9mIHIuZ2V0S2V5cygpKXtjb25zdCBzPWFbdF07aWYoIXMpY29udGludWU7Y29uc3Qgbz1yLmdldFJhdyh0KSxjPW5ldyBuLlJlZlNldCxsPVtdO19jb2xsZWN0SlMobyxlLGwsYyk7bC5sZW5ndGg+MCYmKGlbc109bCl9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGE9dC5nZXQoIkEiKSxyPW5ldyBuLlJlZlNldCxzPVtdO19jb2xsZWN0SlMoYSxlLHMscik7cy5sZW5ndGg+MCYmKGkuQWN0aW9uPXMpfXJldHVybigwLHIub2JqZWN0U2l6ZSkoaSk+MD9pOm51bGx9O3QuZW5jb2RlVG9YbWxTdHJpbmc9ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1uJiZuPD0xMjYpe2NvbnN0IGk9b1tuXTtpZihpKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goaSk7YT1yKzF9fWVsc2V7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAmI3gke24udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmcisrO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYobjwzM3x8bj4xMjZ8fDM1PT09bnx8NDA9PT1ufHw0MT09PW58fDYwPT09bnx8NjI9PT1ufHw5MT09PW58fDkzPT09bnx8MTIzPT09bnx8MTI1PT09bnx8NDc9PT1ufHwzNz09PW4pe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7bi50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfTt0LmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5PWZ1bmN0aW9uIGdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe2xldCBhPWUoKTtlPW51bGw7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrPTIpdFthW2VdXT1hW2UrMV07YT1udWxsfXJldHVybiB0fX07dC5nZXRJbmhlcml0YWJsZVByb3BlcnR5PWdldEluaGVyaXRhYmxlUHJvcGVydHk7dC5nZXRMb29rdXBUYWJsZUZhY3Rvcnk9ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19O3QuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSl7aWYoIWEuc3RhcnRzV2l0aChyLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KG4ucGFnZUluZGV4KTtpZighZSl7ZT1bXTt0LnNldChuLnBhZ2VJbmRleCxlKX1lLnB1c2gobil9cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH07dC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX07dC5sb2cyPWZ1bmN0aW9uIGxvZzIoZSl7aWYoZTw9MClyZXR1cm4gMDtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihlKSl9O3QubnVtYmVyVG9TdHJpbmc9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7aWYodCUxMDA9PTApcmV0dXJuKHQvMTAwKS50b1N0cmluZygpO2lmKHQlMTA9PTApcmV0dXJuIGUudG9GaXhlZCgxKTtyZXR1cm4gZS50b0ZpeGVkKDIpfTt0LnBhcnNlWEZBUGF0aD1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX07dC5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9O3QucmVhZFVpbnQxNj1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfTt0LnJlYWRVaW50MzI9ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH07dC5yZWNvdmVySnNVUkw9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8Iikuc3BsaXQoIi4iKS5qb2luKCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYodCYmdFsyXSl7Y29uc3QgZT10WzJdO2xldCBhPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihhPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93OmF9fXJldHVybiBudWxsfTt0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXsoMCxyLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT1bXTtsZXQgbjtmb3IoO2U+PTFlMzspe2UtPTFlMzthLnB1c2goIk0iKX1uPWUvMTAwfDA7ZSU9MTAwO2EucHVzaChzW25dKTtuPWUvMTB8MDtlJT0xMDthLnB1c2goc1sxMCtuXSk7YS5wdXNoKHNbMjArZV0pO2NvbnN0IGk9YS5qb2luKCIiKTtyZXR1cm4gdD9pLnRvTG93ZXJDYXNlKCk6aX07dC52YWxpZGF0ZUNTU0ZvbnQ9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTppfT1lO2lmKC9eIi4qIiQvLnRlc3QoYSkpe2lmKC9bXlxcXSIvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAiOiAke2F9LmApO3JldHVybiExfX1lbHNlIGlmKC9eJy4qJyQvLnRlc3QoYSkpe2lmKC9bXlxcXScvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAnOiAke2F9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBlIG9mIGEuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoZSl8fCEvXltcdy1cXF0rJC8udGVzdChlKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7YX0uYCk7cmV0dXJuITF9Y29uc3Qgcz1uP24udG9TdHJpbmcoKToiIjtlLmZvbnRXZWlnaHQ9dC5oYXMocyk/czoiNDAwIjtjb25zdCBvPXBhcnNlRmxvYXQoaSk7ZS5pdGFsaWNBbmdsZT1pc05hTihvKXx8bzwtOTB8fG8+OTA/IjE0IjppLnRvU3RyaW5nKCk7cmV0dXJuITB9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg1KTt0LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO2NsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPU1pc3NpbmdEYXRhRXhjZXB0aW9uO2NsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249UGFyc2VyRU9GRXhjZXB0aW9uO2NsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19dC5YUmVmRW50cnlFeGNlcHRpb249WFJlZkVudHJ5RXhjZXB0aW9uO2NsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19dC5YUmVmUGFyc2VFeGNlcHRpb249WFJlZlBhcnNlRXhjZXB0aW9uO3QuRG9jU3RhdHM9Y2xhc3MgRG9jU3RhdHN7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lO3RoaXMuX3N0cmVhbVR5cGVzPW5ldyBTZXQ7dGhpcy5fZm9udFR5cGVzPW5ldyBTZXR9X3NlbmQoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0cmVhbVR5cGVzKWVbdF09ITA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZm9udFR5cGVzKXRbZV09ITA7dGhpcy5faGFuZGxlci5zZW5kKCJEb2NTdGF0cyIse3N0cmVhbVR5cGVzOmUsZm9udFR5cGVzOnR9KX1hZGRTdHJlYW1UeXBlKGUpe2lmKCF0aGlzLl9zdHJlYW1UeXBlcy5oYXMoZSkpe3RoaXMuX3N0cmVhbVR5cGVzLmFkZChlKTt0aGlzLl9zZW5kKCl9fWFkZEZvbnRUeXBlKGUpe2lmKCF0aGlzLl9mb250VHlwZXMuaGFzKGUpKXt0aGlzLl9mb250VHlwZXMuYWRkKGUpO3RoaXMuX3NlbmQoKX19fTtmdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOnI9ITB9KXtsZXQgaTtjb25zdCBzPW5ldyBuLlJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBuLkRpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IG49YT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW4pe2lmKHIpcmV0dXJuIG47aXx8KGk9W10pO2kucHVzaChuKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gaX1jb25zdCBzPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxzKXtpZighZSlyZXR1cm47bGV0IG89bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHMuaGFzKGUpKXJldHVybjtvPWU7cy5wdXQobyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxhLHMpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7aWYoKDAsbi5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgbjt0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP249dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihuPXQpO249biYmKDAsci5zdHJpbmdUb1BERlN0cmluZykobikucmVwbGFjZSgvXHUwMDAwL2csIiIpO24mJmEucHVzaChuKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLHMpfW8mJnMucmVtb3ZlKG8pfWNvbnN0IG89ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CYXNlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDIpO2NsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fXQuQmFzZVN0cmVhbT1CYXNlU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmV0d29ya1BkZk1hbmFnZXI9dC5Mb2NhbFBkZk1hbmFnZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDcpLGk9YSg0KSxzPWEoOSksbz1hKDgpO2Z1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PSgwLHIuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSk7aWYodClyZXR1cm4gdC5ocmVmOygwLHIud2FybikoYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIil9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLGMpe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKGMpO3RoaXMubXNnSGFuZGxlcj1yO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1uO3RoaXMuZW5hYmxlWGZhPWk7Y29uc3QgbD1uZXcgby5TdHJlYW0odCk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLGwpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKGwpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSx0LGEscixpLG8pe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hLnBhc3N3b3JkO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKG8pO3RoaXMubXNnSGFuZGxlcj1hLm1zZ0hhbmRsZXI7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXI7dGhpcy5lbmFibGVYZmE9aTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IG4uQ2h1bmtlZFN0cmVhbU1hbmFnZXIodCx7bXNnSGFuZGxlcjphLm1zZ0hhbmRsZXIsbGVuZ3RoOmEubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6YS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmEucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LGEpe3RyeXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgcjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShyLmJlZ2luLHIuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpLGk9YSg4KTtjbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgaS5TdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxhPXRoaXMubnVtQ2h1bmtzO3Q8YTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBhPXRoaXMuY2h1bmtTaXplO2lmKGUlYSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCByPWUrdC5ieXRlTGVuZ3RoO2lmKHIlYSE9MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBuPU1hdGguZmxvb3IoZS9hKSxpPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9bjtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBhPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoYT50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3Qgcj1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IGk9YTtpPHI7KytpKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGkpKXRocm93IG5ldyBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGE9MDthPHQ7KythKXtjb25zdCByPShlK2EpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpcmV0dXJuIHJ9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsYT10aGlzLnBvcyxyPXRoaXMuZW5kO2lmKCFlKXtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEscik7cmV0dXJuIHQuc3ViYXJyYXkoYSxyKX1sZXQgbj1hK2U7bj5yJiYobj1yKTtuPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEsbik7dGhpcy5wb3M9bjtyZXR1cm4gdC5zdWJhcnJheShhLG4pfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGE9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxyPVtdO2ZvcihsZXQgZT10O2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8ci5wdXNoKGUpO3JldHVybiByfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCByPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO3IucG9zPXIuc3RhcnQ9ZTtyLmVuZD1lK3R8fHRoaXMuZW5kO3IuZGljdD1hO3JldHVybiByfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX10LkNodW5rZWRTdHJlYW09Q2h1bmtlZFN0cmVhbTt0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9c2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO2EuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChhLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO2xldCBuPVtdLGk9MDtyZXR1cm4gbmV3IFByb21pc2UoKChlLHQpPT57Y29uc3QgcmVhZENodW5rPXM9Pnt0cnl7aWYoIXMuZG9uZSl7Y29uc3QgZT1zLnZhbHVlO24ucHVzaChlKTtpKz0oMCxyLmFycmF5Qnl0ZUxlbmd0aCkoZSk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpO3JldHVybn1jb25zdCBvPSgwLHIuYXJyYXlzVG9CeXRlcykobik7bj1udWxsO2Uobyl9Y2F0Y2goZSl7dChlKX19O2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBuPSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsbik7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgYT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxhKTtpLnB1c2goZSl9YS5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLG49W107Zm9yKGxldCBlPWE7ZTxyOysrZSluLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mobil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxyPS0xO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbil7Y29uc3QgaT1lW25dO2E8MCYmKGE9aSk7aWYocj49MCYmcisxIT09aSl7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7YT1pfW4rMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazppKzF9KTtyPWl9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssYT12b2lkIDA9PT1lLmJlZ2luLHI9YT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG49cit0LmJ5dGVMZW5ndGgsaT1NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpLHM9bjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKG4vdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChuL3RoaXMuY2h1bmtTaXplKTtpZihhKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9bn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEocix0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9aTtlPHM7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhzKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbSYmdGhpcy5wZGZOZXR3b3JrU3RyZWFtLmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJpbmdTdHJlYW09dC5TdHJlYW09dC5OdWxsU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgyKTtjbGFzcyBTdHJlYW0gZXh0ZW5kcyByLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBuPWErZTtuPnImJihuPXIpO3RoaXMucG9zPW47cmV0dXJuIHQuc3ViYXJyYXkoYSxuKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX10LlN0cmVhbT1TdHJlYW07dC5TdHJpbmdTdHJlYW09Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCgwLG4uc3RyaW5nVG9CeXRlcykoZSkpfX07dC5OdWxsU3RyZWFtPWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhZ2U9dC5QREZEb2N1bWVudD12b2lkIDA7dmFyIHI9YSgxMCksbj1hKDIpLGk9YSg0KSxzPWEoMyksbz1hKDQ5KSxjPWEoNSksbD1hKDY1KSxoPWEoNjcpLHU9YSg2OSksZD1hKDk4KSxmPWEoMTUpLGc9YSg4KSxwPWEoNzMpLG09YSg2MCksYj1hKDEzKSx5PWEoMTcpLHc9YSg3MiksUz1hKDYzKSx4PWEoNzQpLGs9YSg5OSk7Y29uc3QgQz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6aSxmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsSW1hZ2VDYWNoZTpsLG5vbkJsZW5kTW9kZXNTZXQ6aCx4ZmFGYWN0b3J5OnV9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1uO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT11O2NvbnN0IGQ9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIGl7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2F9XyR7KytkLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcGFnZSR7bi50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGE9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2Ygcy5EaWN0P3MuRGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OmF9KTphWzBdOmF9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2Ygcy5EaWN0P2U6cy5EaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZih0WzJdLXRbMF0hPTAmJnRbM10tdFsxXSE9MClyZXR1cm4gdDsoMCxuLndhcm4pKGBFbXB0eSAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxDKX1nZXQgY3JvcEJveCgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjcm9wQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtsZXQgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTsoIm51bWJlciIhPXR5cGVvZiBlfHxlPD0wKSYmKGU9MSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2xldCBhO2lmKGU9PT10fHwoMCxuLmlzQXJyYXlFcXVhbCkoZSx0KSlhPXQ7ZWxzZXtjb25zdCByPW4uVXRpbC5pbnRlcnNlY3QoZSx0KTtyJiZyWzJdLXJbMF0hPTAmJnJbM10tclsxXSE9MD9hPXI6KDAsbi53YXJuKSgiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXciLGF8fHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQsYSl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDtlLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29udGVudFN1YlN0cmVhbX0pOygwLG4ud2FybikoYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke2F9KTogIiR7dH0iLmApfWdldENvbnRlbnRTdHJlYW0oZSl7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpLnRoZW4oKHQ9PnQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/dDpBcnJheS5pc0FycmF5KHQpP25ldyB5LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbSh0LHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzLGUpKTpuZXcgZy5OdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksaT10aGlzLnBhZ2VEaWN0LHM9dGhpcy5hbm5vdGF0aW9ucy5zbGljZSgpLG89YXdhaXQgci5Bbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMobix0LGEpO2Zvcihjb25zdHtyZWY6ZX1vZiBvLmFubm90YXRpb25zKXMucHVzaChlKTtjb25zdCBjPWkuZ2V0KCJBbm5vdHMiKTtpLnNldCgiQW5ub3RzIixzKTtjb25zdCBsPVtdO2xldCBoPW51bGw7dGhpcy54cmVmLmVuY3J5cHQmJihoPXRoaXMueHJlZi5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsaSxsLGgpO2MmJmkuc2V0KCJBbm5vdHMiLGMpO2NvbnN0IHU9by5kZXBlbmRlbmNpZXM7dS5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5vLmFubm90YXRpb25zKTtyZXR1cm4gdX1zYXZlKGUsdCxhKXtjb25zdCByPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChhKSYmaS5wdXNoKHMuc2F2ZShyLHQsYSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fCh0aGlzLnJlc291cmNlc1Byb21pc2U9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IHAuT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazphLGludGVudDpzLGNhY2hlS2V5Om8sYW5ub3RhdGlvblN0b3JhZ2U6Yz1udWxsfSl7Y29uc3QgbD10aGlzLmdldENvbnRlbnRTdHJlYW0oZSksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZD10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShjKTtsZXQgZj1Qcm9taXNlLnJlc29sdmUobnVsbCk7aWYoZCl7Y29uc3QgZT1kLmdldCh0aGlzLnBhZ2VJbmRleCk7ZSYmKGY9ci5Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKHUsYSxlKSl9Y29uc3QgZz1Qcm9taXNlLmFsbChbbCxoXSkudGhlbigoKFtyXSk9Pntjb25zdCBuPW5ldyBtLk9wZXJhdG9yTGlzdChzLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OnUuaGFzQmxlbmRNb2Rlcyh0aGlzLnJlc291cmNlcyx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxjYWNoZUtleTpvfSk7cmV0dXJuIHUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOmEscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2csdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsZl0pLnRoZW4oKGZ1bmN0aW9uKFtlLHQscl0pe3ImJih0PXQuY29uY2F0KHIpKTtpZigwPT09dC5sZW5ndGh8fHMmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEUpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3QgaT0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUyksbz0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEocyZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCksZD1bXTtmb3IoY29uc3QgZSBvZiB0KShvfHxsJiZlLm11c3RCZVZpZXdlZChjKXx8aCYmZS5tdXN0QmVQcmludGVkKGMpKSYmZC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsYSxzLGksYykuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbigoZnVuY3Rpb24odCl7bGV0IGE9ITEscj0hMTtmb3IoY29uc3R7b3BMaXN0Om4sc2VwYXJhdGVGb3JtOmksc2VwYXJhdGVDYW52YXM6c31vZiB0KXtlLmFkZE9wTGlzdChuKTtpJiYoYT1pKTtzJiYocj1zKX1lLmZsdXNoKCEwLHtmb3JtOmEsY2FudmFzOnJ9KTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLHNpbms6cixjb21iaW5lVGV4dEl0ZW1zOm59KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbShlKSxzPXRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2ksc10pLnRoZW4oKChbaV0pPT5uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTppLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxjb21iaW5lVGV4dEl0ZW1zOm4sc2luazpyLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyB3LlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSgpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107Y29uc3QgaT1bXSxzPVtdO2xldCBvO2NvbnN0IGM9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKGEmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9Y3x8bCYmYS52aWV3YWJsZTsocnx8aCYmYS5wcmludGFibGUpJiZzLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtvfHwobz1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkpO2kucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChvLHQsdGhpcy52aWV3KS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKGkpO3JldHVybiBzfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKCgoKT0+e2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbm5vdGF0aW9ucyllLnB1c2goci5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChlKS50aGVuKChmdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgdD1bXTtsZXQgYTtmb3IoY29uc3QgbiBvZiBlKWlmKG4paWYobiBpbnN0YW5jZW9mIHIuUG9wdXBBbm5vdGF0aW9uKXthfHwoYT1bXSk7YS5wdXNoKG4pfWVsc2UgdC5wdXNoKG4pO2EmJnQucHVzaCguLi5hKTtyZXR1cm4gdH0pKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX3BhcnNlZEFubm90YXRpb25zIixlKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT0oMCxpLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCxuLlBhZ2VBY3Rpb25FdmVudFR5cGUpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLGUpfX10LlBhZ2U9UGFnZTtjb25zdCB2PW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLEY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxPPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsYT0xMDI0LHI9ITEpe2NvbnN0IG49dC5sZW5ndGgsaT1lLnBlZWtCeXRlcyhhKSxzPWkubGVuZ3RoLW47aWYoczw9MClyZXR1cm4hMTtpZihyKXtjb25zdCBhPW4tMTtsZXQgcj1pLmxlbmd0aC0xO2Zvcig7cj49YTspe2xldCBzPTA7Zm9yKDtzPG4mJmlbci1zXT09PXRbYS1zXTspcysrO2lmKHM+PW4pe2UucG9zKz1yLWE7cmV0dXJuITB9ci0tfX1lbHNle2xldCBhPTA7Zm9yKDthPD1zOyl7bGV0IHI9MDtmb3IoO3I8biYmaVthK3JdPT09dFtyXTspcisrO2lmKHI+PW4pe2UucG9zKz1hO3JldHVybiEwfWErK319cmV0dXJuITF9dC5QREZEb2N1bWVudD1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBuLkludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBrLlhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgYT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKythLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBoLkNhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPWYuTGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShlKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtmaW5kKGUsTykmJih0PWUucG9zKzYtZS5zdGFydCl9ZWxzZXtjb25zdCBhPTEwMjQscj1GLmxlbmd0aDtsZXQgbj0hMSxzPWUuZW5kO2Zvcig7IW4mJnM+MDspe3MtPWEtcjtzPDAmJihzPTApO2UucG9zPXM7bj1maW5kKGUsRixhLCEwKX1pZihuKXtlLnNraXAoOSk7bGV0IGE7ZG97YT1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkoYSkpO2xldCByPSIiO2Zvcig7YT49MzImJmE8PTU3Oyl7cis9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQociwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsdikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHYubGVuZ3RoKTtsZXQgdCxhPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZhLmxlbmd0aDw3OylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2kuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoYSk/dGhpcy5fdmVyc2lvbj1hOigwLG4ud2FybikoYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX1faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLHQ9MCl7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KChlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXsoMCxuLndhcm4pKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT0oMCxzLmlzTmFtZSkoZS5nZXQoIkZUIiksIlNpZyIpLHI9ZS5nZXQoIlJlY3QiKSxpPUFycmF5LmlzQXJyYXkocikmJnIuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGEmJml9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksYT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2FbInhkcDp4ZHAiXT10O3JldHVybiBhfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9Mil7bGV0IG47bj0wPT09ZT8ieGRwOnhkcCI6ZT09PXItMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWEuaGFzT3duUHJvcGVydHkobikpY29udGludWU7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO2kgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFpLmlzRW1wdHkmJihhW25dPWkpfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgYT1lW3RdO2lmKGEpdHJ5e2NvbnN0IGU9e1t0XTooMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSl9O3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IGQuRGF0YXNldFJlYWRlcihlKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYocil0cnl7dFthXT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRmFjdG9yeSIsZT9uZXcgeC5YRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyBsb2FkWGZhSW1hZ2VzKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRLZXlzKCksYT1uZXcgcC5PYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgYS5sb2FkKCk7Y29uc3Qgcj1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoYSk7dCBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmci5zZXQoYSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMocil9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgcj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGM9bmV3IHAuT2JqZWN0TG9hZGVyKHIsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCBjLmxvYWQoKTtjb25zdCBsPXIuZ2V0KCJGb250Iik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO2gudXNlU3lzdGVtRm9udHM9ITE7Y29uc3QgdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmh9KSxkPW5ldyBtLk9wZXJhdG9yTGlzdCxmPVtdLGc9e2dldCBmb250KCl7cmV0dXJuIGYuYXQoLTEpfSxzZXQgZm9udChlKXtmLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSx5PW5ldyBNYXA7bC5mb3JFYWNoKCgoZSx0KT0+e3kuc2V0KGUsdCl9KSk7Y29uc3Qgdz1bXTtmb3IoY29uc3RbZSxhXW9mIHkpe2NvbnN0IG89YS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShvIGluc3RhbmNlb2Ygcy5EaWN0KSljb250aW51ZTtsZXQgYz1vLmdldCgiRm9udEZhbWlseSIpO2M9Yy5yZXBsYWNlKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGw9e2ZvbnRGYW1pbHk6Yyxmb250V2VpZ2h0Om8uZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LW8uZ2V0KCJJdGFsaWNBbmdsZSIpfTsoMCxpLnZhbGlkYXRlQ1NTRm9udCkobCkmJncucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChlKSwxXSxudWxsLGQsdCxnLG51bGwsbCkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTtjb25zdCBTPXRoaXMueGZhRmFjdG9yeS5zZXRGb250cyhmKTtpZighUylyZXR1cm47aC5pZ25vcmVFcnJvcnM9ITA7dy5sZW5ndGg9MDtmLmxlbmd0aD0wO2NvbnN0IHg9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBTKSgwLG8uZ2V0WGZhRm9udE5hbWUpKGAke2V9LVJlZ3VsYXJgKXx8eC5hZGQoZSk7eC5zaXplJiZTLnB1c2goIlBkZkpTLUZhbGxiYWNrIik7Zm9yKGNvbnN0IGUgb2YgUylpZigheC5oYXMoZSkpZm9yKGNvbnN0IGEgb2Zbe25hbWU6IlJlZ3VsYXIiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJCb2xkIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiSXRhbGljIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZToxMn0se25hbWU6IkJvbGRJdGFsaWMiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjEyfV0pe2NvbnN0IGk9YCR7ZX0tJHthLm5hbWV9YCxjPSgwLG8uZ2V0WGZhRm9udERpY3QpKGkpO3cucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChpKSwxXSxudWxsLGQsdCxnLGMse2ZvbnRGYW1pbHk6ZSxmb250V2VpZ2h0OmEuZm9udFdlaWdodCxpdGFsaWNBbmdsZTphLml0YWxpY0FuZ2xlfSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoZix4KX1hc3luYyBzZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy5fdmVyc2lvbn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHQ9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCF0KXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IG49dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPjB8fG4gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFuLmlzRW1wdHk7Y29uc3QgaT0hISgxJnQuZ2V0KCJTaWdGbGFncyIpKSxzPWkmJnRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoYSk7ZS5oYXNBY3JvRm9ybT1yJiYhcztlLmhhc1NpZ25hdHVyZXM9aX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCByPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2Ygcil7ZVthXT0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShyKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKHIgaW5zdGFuY2VvZiBzLk5hbWUpe2VbYV09cjtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCB0O3N3aXRjaCh0eXBlb2Ygcil7Y2FzZSJzdHJpbmciOnQ9KDAsbi5zdHJpbmdUb1BERlN0cmluZykocik7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6dD1yO2JyZWFrO2RlZmF1bHQ6ciBpbnN0YW5jZW9mIHMuTmFtZSYmKHQ9cil9aWYodm9pZCAwPT09dCl7KDAsbi53YXJuKShgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCk7Y29udGludWV9ZS5DdXN0b218fChlLkN1c3RvbT1PYmplY3QuY3JlYXRlKG51bGwpKTtlLkN1c3RvbVthXT10O2NvbnRpbnVlfSgwLG4ud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGE7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9KDAsbi5zdHJpbmdUb0J5dGVzKShlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihhPSgwLG4uc3RyaW5nVG9CeXRlcykoZVsxXSkpfWVsc2UgdD0oMCxsLmNhbGN1bGF0ZU1ENSkodGhpcy5zdHJlYW0uZ2V0Qnl0ZVJhbmdlKDAsMTAyNCksMCwxMDI0KTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGE/aGV4U3RyaW5nKGEpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246YSx4cmVmOnJ9PXRoaXMsaT1zLlJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2Ygcy5SZWYmJihhPWF3YWl0IHIuZmV0Y2hBc3luYyhhKSk7aWYoKDAscy5pc05hbWUpKGEsIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpeygwLG4ud2FybikoYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLl9wYWdlUHJvbWlzZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Om59PXRoaXM7bGV0IGk7aT1uP1Byb21pc2UucmVzb2x2ZShbcy5EaWN0LmVtcHR5LG51bGxdKTpyJiZyLnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6YS5nZXRQYWdlRGljdChlKTtpPWkudGhlbigoKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bn0pKSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6YX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IHI7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGEuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksYS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjtyPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihyPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2Uoci0xKX1jYXRjaChzKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKHItMSk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7aWYocyBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247KDAsbi53YXJuKShgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBvO3RyeXtvPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFtyLG5dXW9mIG8pe2xldCBpO2lmKHIgaW5zdGFuY2VvZiBFcnJvcil7aT1Qcm9taXNlLnJlamVjdChyKTtpLmNhdGNoKCgoKT0+e30pKX1lbHNlIGk9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxpKX10LnNldEFjdHVhbE51bVBhZ2VzKG8uc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOigwLHUuY2xlYXJHbG9iYWxDYWNoZXMpKCl9X2NvbGxlY3RGaWVsZE9iamVjdHMoZSx0LGEpe2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpLmdldCgiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWEuaGFzKGUpfHxhLnNldChlLFtdKTthLmdldChlKS5wdXNoKHIuQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMCkudGhlbigoZT0+ZSYmZS5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IHQ9aS5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixuXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKG4pLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlfHwhZS5oYXMoIkNPIikpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3B1cEFubm90YXRpb249dC5NYXJrdXBBbm5vdGF0aW9uPXQuQW5ub3RhdGlvbkZhY3Rvcnk9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9dC5Bbm5vdGF0aW9uPXZvaWQgMDt0LmdldFF1YWRQb2ludHM9Z2V0UXVhZFBvaW50czt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMTEpLHM9YSgzKSxvPWEoNjMpLGM9YSg1KSxsPWEoNTgpLGg9YSg2NyksdT1hKDEyKSxkPWEoNzApLGY9YSg3MyksZz1hKDYwKSxwPWEoOCksbT1hKDc0KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixuKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksbj90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoKFtpLHMsbyxjLGxdKT0+YS5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsaSxvLGMsbixsXSkpKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxpLG8sYz1udWxsLGwsaCx1PS0xKXtjb25zdCBkPWUuZmV0Y2hJZlJlZih0KTtpZighKGQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBmPXQgaW5zdGFuY2VvZiBzLlJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7aS5jcmVhdGVPYmpJZCgpfWA7bGV0IGc9ZC5nZXQoIlN1YnR5cGUiKTtnPWcgaW5zdGFuY2VvZiBzLk5hbWU/Zy5uYW1lOm51bGw7Y29uc3QgcD17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOmEsYWNyb0Zvcm06byBpbnN0YW5jZW9mIHMuRGljdD9vOnMuRGljdC5lbXB0eSxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLHBhZ2VJbmRleDp1fTtzd2l0Y2goZyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpkLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2Ygcy5OYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24ocCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24ocCl9KDAsci53YXJuKShgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKHApO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKHApO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKHApO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKHApO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKHApO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24ocCk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihwKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKHApO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24ocCk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24ocCk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24ocCk7ZGVmYXVsdDpofHwoZz8oMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtnfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYCk6KDAsci53YXJuKSgiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKSk7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IHI9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4tMTtjb25zdCBuPXIuZ2V0UmF3KCJQIik7aWYoIShuIGluc3RhbmNlb2Ygcy5SZWYpKXJldHVybi0xO3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW25dKX1jYXRjaChlKXsoMCxyLndhcm4pKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCk7cmV0dXJuLTF9fXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEpe2NvbnN0IG49ZS54cmVmO2xldCBpO2NvbnN0IGM9W10sbD1bXTtmb3IoY29uc3QgaCBvZiBhKXN3aXRjaChoLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6aWYoIWkpe2NvbnN0IGU9bmV3IHMuRGljdChuKTtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Y29uc3QgdD1bXTtpPW4uZ2V0TmV3UmVmKCk7KDAsby53cml0ZU9iamVjdCkoaSxlLHQsbnVsbCk7Yy5wdXNoKHtyZWY6aSxkYXRhOnQuam9pbigiIil9KX1sLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixoLGMse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6bC5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGgsYykpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChsKSxkZXBlbmRlbmNpZXM6Y319c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49ZS54cmVmLGk9W107Zm9yKGNvbnN0IHMgb2YgYSlzd2l0Y2gocy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSByLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmkucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scyx7ZXZhbHVhdG9yOmUsdGFzazp0fSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6aS5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scykpfXJldHVybiBQcm9taXNlLmFsbChpKX19O2Z1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGE9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2lmKCFlLmhhcygiUXVhZFBvaW50cyIpKXJldHVybiBudWxsO2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPVtdO2ZvcihsZXQgZT0wLG49YS5sZW5ndGgvODtlPG47ZSsrKXtyLnB1c2goW10pO2ZvcihsZXQgbj04KmUsaT04KmUrODtuPGk7bis9Mil7Y29uc3QgaT1hW25dLHM9YVtuKzFdO2lmKG51bGwhPT10JiYoaTx0WzBdfHxpPnRbMl18fHM8dFsxXXx8cz50WzNdKSlyZXR1cm4gbnVsbDtyW2VdLnB1c2goe3g6aSx5OnN9KX19cmV0dXJuIHIubWFwKChlPT57Y29uc3RbdCxhLHIsbl09ZS5yZWR1Y2UoKChbZSx0LGEscl0sbik9PltNYXRoLm1pbihlLG4ueCksTWF0aC5tYXgodCxuLngpLE1hdGgubWluKGEsbi55KSxNYXRoLm1heChyLG4ueSldKSxbTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUlOX1ZBTFVFLE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1JTl9WQUxVRV0pO3JldHVyblt7eDp0LHk6bn0se3g6YSx5Om59LHt4OnQseTpyfSx7eDphLHk6cn1dfSkpfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3RbbixpLHMsb109ci5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsYSk7aWYobj09PXN8fGk9PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1uKSxsPShlWzNdLWVbMV0pLyhvLWkpO3JldHVybltjLDAsMCxsLGVbMF0tbipjLGVbMV0taSpsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9ZS5kaWN0O3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgYT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoYSk7dGhpcy5zZXRSb3RhdGlvbihhKTt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITF9O2lmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3QgYT10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSl0IGluc3RhbmNlb2Ygcy5SZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9KDAsbi5jb2xsZWN0QWN0aW9ucykoZS54cmVmLHQsci5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbH1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLklOVklTSUJMRSkmJiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5OT1ZJRVcpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuUFJJTlQpJiYhdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKX1tdXN0QmVWaWV3ZWQoZSl7Y29uc3QgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxyLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWUmJmUuZ2V0KHRoaXMuZGF0YS5pZCk7cmV0dXJuIHQmJnZvaWQgMCE9PXQucHJpbnQ/dC5wcmludDp0aGlzLnByaW50YWJsZX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLGwuYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MH1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe0FycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD90aGlzLnJlY3RhbmdsZT1yLlV0aWwubm9ybWFsaXplUmVjdChlKTp0aGlzLnJlY3RhbmdsZT1bMCwwLDAsMF19c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9KDAsci53YXJuKShgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUpe3RoaXMucm90YXRpb249MDtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtsZXQgdD1lLmdldCgiUiIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIodCkmJjAhPT10KXt0JT0zNjA7dDwwJiYodCs9MzYwKTt0JTkwPT0wJiYodGhpcy5yb3RhdGlvbj10KX19fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIiksYT10LmdldCgiVHlwZSIpO2lmKCFhfHwoMCxzLmlzTmFtZSkoYSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZihhIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9YTtyZXR1cm59aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtyIGluc3RhbmNlb2Ygcy5OYW1lJiZhLmhhcyhyLm5hbWUpJiYodGhpcy5hcHBlYXJhbmNlPWEuZ2V0KHIubmFtZSkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2Ygcy5OYW1lPygwLHIud2FybikoInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBzLkRpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgZi5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7Y29uc3Qgbz10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgcC5TdHJpbmdTdHJlYW0oIiIpO2MuZGljdD1uZXcgcy5EaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxkPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGY9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sbT1nZXRUcmFuc2Zvcm1NYXRyaXgoby5yZWN0LGQsZiksYj1uZXcgZy5PcGVyYXRvckxpc3Q7bGV0IHk7dGhpcy5vYyYmKHk9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHldKTtiLmFkZE9wKHIuT1BTLmJlZ2luQW5ub3RhdGlvbixbby5pZCxvLnJlY3QsbSxmLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmMsdGFzazp0LHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDpiLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2IuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09eSYmYi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpiLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxuPVtdLGk9W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcyl7aS5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7bi5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpyLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGNvbWJpbmVUZXh0SXRlbXM6ITAsc2luazpzLHZpZXdCb3g6YX0pO3RoaXMucmVzZXQoKTtpLmxlbmd0aCYmbi5wdXNoKGkuam9pbigiIikpO24ubGVuZ3RoPjAmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9bil9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7KDAsci53YXJuKSgiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IG49bmV3IHMuUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1Bbm5vdGF0aW9uO2NsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDt0aGlzLmRhc2hBcnJheT1bM107dGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPTA7dGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz0wfXNldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IGE9KHRbMl0tdFswXSkvMixuPSh0WzNdLXRbMV0pLzI7aWYoYT4wJiZuPjAmJihlPmF8fGU+bikpeygwLHIud2FybikoYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlVOREVSTElORX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7bGV0IGE9ITAscj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihyPSExKX1pZihhJiYhcil7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKHMuTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPUFubm90YXRpb25Cb3JkZXJTdHlsZTtjbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PWUuZGljdDtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIHMuUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2Ygcy5OYW1lP2EubmFtZTpyLkFubm90YXRpb25SZXBseVR5cGUuUkVQTFl9aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PXIuQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO3RoaXMuZGF0YS5oYXNQb3B1cD1lLmhhcygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7dGhpcy5kYXRhLmhhc1BvcHVwPXQuaGFzKCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTpuLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6Y30pe2xldCBsPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1JTl9WQUxVRSxkPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgZj1bInEiXTt0JiZmLnB1c2godCk7YSYmZi5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSBSR2ApO3ImJmYucHVzaChgJHtyWzBdfSAke3JbMV19ICR7clsyXX0gcmdgKTtsZXQgZz10aGlzLmRhdGEucXVhZFBvaW50cztnfHwoZz1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIGcpe2NvbnN0W3QsYSxyLG5dPWMoZixlKTtsPU1hdGgubWluKGwsdCk7dT1NYXRoLm1heCh1LGEpO2g9TWF0aC5taW4oaCxyKTtkPU1hdGgubWF4KGQsbil9Zi5wdXNoKCJRIik7Y29uc3QgbT1uZXcgcy5EaWN0KGUpLGI9bmV3IHMuRGljdChlKTtiLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtjb25zdCB5PW5ldyBwLlN0cmluZ1N0cmVhbShmLmpvaW4oIiAiKSk7eS5kaWN0PWI7bS5zZXQoIkZtMCIseSk7Y29uc3Qgdz1uZXcgcy5EaWN0KGUpO24mJncuc2V0KCJCTSIscy5OYW1lLmdldChuKSk7Im51bWJlciI9PXR5cGVvZiBpJiZ3LnNldCgiQ0EiLGkpOyJudW1iZXIiPT10eXBlb2YgbyYmdy5zZXQoImNhIixvKTtjb25zdCBTPW5ldyBzLkRpY3QoZSk7Uy5zZXQoIkdTMCIsdyk7Y29uc3QgeD1uZXcgcy5EaWN0KGUpO3guc2V0KCJFeHRHU3RhdGUiLFMpO3guc2V0KCJYT2JqZWN0IixtKTtjb25zdCBrPW5ldyBzLkRpY3QoZSk7ay5zZXQoIlJlc291cmNlcyIseCk7Y29uc3QgQz10aGlzLmRhdGEucmVjdD1bbCxoLHUsZF07ay5zZXQoIkJCb3giLEMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgcC5TdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PWs7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSx5KX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBuPWUuZ2V0TmV3UmVmKCksaT1lLmdldE5ld1JlZigpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6aX0pLGM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxyKSxsPVtdO2xldCBoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKGksYyxsLGgpO2EucHVzaCh7cmVmOmksZGF0YTpsLmpvaW4oIiIpfSk7bC5sZW5ndGg9MDtoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKG4scyxsLGgpO3JldHVybntyZWY6bixkYXRhOmwuam9pbigiIil9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwOnJ9KTtyZXR1cm4gbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjplfSl9fXQuTWFya3VwQW5ub3RhdGlvbj1NYXJrdXBBbm5vdGF0aW9uO2NsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0LGE9dGhpcy5kYXRhO3RoaXMucmVmPWUucmVmO2EuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ7dm9pZCAwPT09YS5maWVsZE5hbWUmJihhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PWEuYWN0aW9ucyYmKGEuYWN0aW9ucz0oMCxuLmNvbGxlY3RBY3Rpb25zKShlLnhyZWYsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO2EuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTthLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7YS5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PWEuZGVmYXVsdEZpZWxkVmFsdWUmJihhLmZpZWxkVmFsdWU9YS5kZWZhdWx0RmllbGRWYWx1ZSk7YS5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTtjb25zdCBsPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIGw/bDoiIjthLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKTtjb25zdCBoPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZUIn0pO2EuZmllbGRUeXBlPWggaW5zdGFuY2VvZiBzLk5hbWU/aC5uYW1lOm51bGw7Y29uc3QgdT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEUiJ9KSxkPWUuYWNyb0Zvcm0uZ2V0KCJEUiIpLGY9dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLmFwcGVhcmFuY2UuZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczp1LGFjcm9Gb3JtUmVzb3VyY2VzOmQsYXBwZWFyYW5jZVJlc291cmNlczpmLG1lcmdlZFJlc291cmNlczpzLkRpY3QubWVyZ2Uoe3hyZWY6ZS54cmVmLGRpY3RBcnJheTpbdSxmLGRdLG1lcmdlU3ViRGljdHM6ITB9KX07YS5maWVsZEZsYWdzPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhLmZpZWxkRmxhZ3MpfHxhLmZpZWxkRmxhZ3M8MCkmJihhLmZpZWxkRmxhZ3M9MCk7YS5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVBRE9OTFkpO2EucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFUVVJUkVEKTthLmhpZGRlbj10aGlzLl9oYXNGbGFnKGEuYW5ub3RhdGlvbkZsYWdzLHIuQW5ub3RhdGlvbkZsYWcuSElEREVOKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpKSk6ZSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1zdGF0aWMgX2dldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19Z2V0Um90YXRpb25NYXRyaXgoZSl7Y29uc3QgdD1lP2UuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwO2xldCBhPXQmJnQucm90YXRpb247dm9pZCAwPT09YSYmKGE9dGhpcy5yb3RhdGlvbik7aWYoMD09PWEpcmV0dXJuIHIuSURFTlRJVFlfTUFUUklYO2NvbnN0IG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0saT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4gV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoYSxuLGkpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtjb25zdCB0PWU/ZS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGE9dCYmdC5yb3RhdGlvbjt2b2lkIDA9PT1hJiYoYT10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IHI9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT1hfHwxODA9PT1hP2AwIDAgJHtyfSAke259IHJlYDpgMCAwICR7bn0gJHtyfSByZWA7bGV0IG89IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihvPWAkeygwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtzfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe28rPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHsoMCxpLmdldFBkZkNvbG9yKSh0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtzfSBTIGB9cmV0dXJuIG99YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7aWYobiYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikpcmV0dXJue29wTGlzdDpuZXcgZy5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtjb25zdCBvPW5ldyBnLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGM9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgaDt0aGlzLm9jJiYoaD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWgmJm8uYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsaF0pO28uYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsbCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpLCExXSk7Y29uc3QgdT1uZXcgcC5TdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp1LHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpvfSk7by5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT1oJiZvLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3JldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLEFycmF5LmZyb20odGhpcy5ib3JkZXJDb2xvciwoZT0+ZS8yNTUpKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsQXJyYXkuZnJvbSh0aGlzLmJhY2tncm91bmRDb2xvciwoZT0+ZS8yNTUpKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hc3luYyBzYXZlKGUsdCxhKXtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGk9biYmbi52YWx1ZSxjPW4mJm4ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1jKXJldHVybiBudWxsO2k9aXx8dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09YyYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmkubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZpLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbik7bGV0IGw9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSk7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IGQ9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZj17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh1LmdldCgiVCIpfHwiIiksdmFsdWU6aX0sZz1oLmdldE5ld1JlZigpLHA9bmV3IHMuRGljdChoKTtwLnNldCgiTiIsZyk7Y29uc3QgbT1oLmVuY3J5cHQ7bGV0IGI9bnVsbCx5PW51bGw7aWYobSl7Yj1tLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTt5PW0uY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGcubnVtLGcuZ2VuKTtsPXkuZW5jcnlwdFN0cmluZyhsKX1jb25zdCBlbmNvZGVyPWU9PigwLHIuaXNBc2NpaSkoZSk/ZTooMCxyLnN0cmluZ1RvVVRGMTZCRVN0cmluZykoZSk7dS5zZXQoIlYiLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoZW5jb2Rlcik6ZW5jb2RlcihpKSk7dS5zZXQoIkFQIixwKTt1LnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3Qgdz10aGlzLl9nZXRNS0RpY3QoYyk7dyYmdS5zZXQoIk1LIix3KTtjb25zdCBTPW5ldyBzLkRpY3QoaCk7Uy5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO1Muc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO1Muc2V0KCJSZXNvdXJjZXMiLHRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhoKSk7Uy5zZXQoIkJCb3giLGQpO2NvbnN0IHg9dGhpcy5nZXRSb3RhdGlvbk1hdHJpeChhKTt4IT09ci5JREVOVElUWV9NQVRSSVgmJlMuc2V0KCJNYXRyaXgiLHgpO2NvbnN0IGs9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKHUsayxiKTtrLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBDPVtgJHtnLm51bX0gJHtnLmdlbn0gb2JqXG5gXTsoMCxvLndyaXRlRGljdCkoUyxDLHkpO0MucHVzaCgiIHN0cmVhbVxuIixsLCJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOmsuam9pbigiIikseGZhOmZ9LHtyZWY6ZyxkYXRhOkMuam9pbigiIikseGZhOm51bGx9XX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSlyZXR1cm4gbnVsbDtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IHMsbztpZihuKXtzPW4uZm9ybWF0dGVkVmFsdWV8fG4udmFsdWU7bz1uLnJvdGF0aW9ufWlmKHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2lmKHZvaWQgMD09PXMpe3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXMpcmV0dXJuIiJ9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTsoMCxyLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltKCk7aWYoIiI9PT1zKXJldHVybiIiO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBjPS0xO3RoaXMuZGF0YS5tdWx0aUxpbmUmJihjPXMuc3BsaXQoL1xyXG58XHJ8XG4vKS5sZW5ndGgpO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGg9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1vJiYyNzAhPT1vfHwoW2gsbF09W2wsaF0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IHU9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKSxbZCxmXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLGgtNCxzLHUsYyk7bGV0IGc9dS5kZXNjZW50O2lzTmFOKGcpJiYoZz0wKTtjb25zdCBwPU1hdGgubWluKE1hdGguZmxvb3IoKGwtZikvMiksMikrTWF0aC5hYnMoZykqZixtPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZCxzLHUsZixoLGwsbSwyLHAsYSk7Y29uc3QgYj11LmVuY29kZVN0cmluZyhzKS5qb2luKCIiKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoZCx1LGIsaCwyLHAsYSk7Y29uc3QgeT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZigwPT09bXx8bT4yKXJldHVybmAvVHggQk1DIHEgJHt5fUJUIGArZCtgIDEgMCAwIDEgMiAke3B9IFRtICgkeygwLHIuZXNjYXBlU3RyaW5nKShiKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7eX1CVCBgK2QrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQoYix1LGYsaCxtLDIscCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxhLHIpe2NvbnN0IG49bmV3IGcuT3BlcmF0b3JMaXN0LGk9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOm8sZm9udFNpemU6Y309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbbyYmcy5OYW1lLmdldChvKSxjXSxudWxsLG4sdCxpLG51bGwpO3JldHVybiBpLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsYSxuLHMpe2xldHtmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKCFvKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3QgaT10aGlzLl9nZXRUZXh0V2lkdGgoYSxuKTtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3IuTElORV9GQUNUT1IsdC9pKSl9ZWxzZXtjb25zdCBpPWEuc3BsaXQoL1xyXG4/fFxuLyksYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW4uZW5jb2RlU3RyaW5nKGUpLmpvaW4oIiIpLGE9bi5jaGFyc1RvR2x5cGhzKHQpLHI9bi5nZXRDaGFyUG9zaXRpb25zKHQpO2MucHVzaCh7bGluZTp0LGdseXBoczphLHBvc2l0aW9uczpyfSl9Y29uc3QgaXNUb29CaWc9YT0+e2xldCByPTA7Zm9yKGNvbnN0IGkgb2YgYyl7cis9dGhpcy5fc3BsaXRMaW5lKG51bGwsbixhLHQsaSkubGVuZ3RoKmE7aWYocj5lKXJldHVybiEwfXJldHVybiExfTtvPTEyO2xldCBsPW8qci5MSU5FX0ZBQ1RPUixoPU1hdGgucm91bmQoZS9sKTtoPU1hdGgubWF4KGgscyk7Zm9yKDs7KXtsPWUvaDtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhsL3IuTElORV9GQUNUT1IpO2lmKCFpc1Rvb0JpZyhvKSlicmVhaztoKyt9fWNvbnN0e2ZvbnROYW1lOmMsZm9udENvbG9yOmx9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9KDAsaS5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSkoe2ZvbnRTaXplOm8sZm9udE5hbWU6Yyxmb250Q29sb3I6bH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxvXX1fcmVuZGVyVGV4dChlLHQsYSxpLHMsbyxjKXtsZXQgbDtpZigxPT09cyl7bD0oaS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PXMpe2w9aS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLW99ZWxzZSBsPW87bD0oMCxuLm51bWJlclRvU3RyaW5nKShsKTtyZXR1cm5gJHtsfSAke2M9KDAsbi5udW1iZXJUb1N0cmluZykoYyl9IFRkICgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOnJ9PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSYmdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZTtpZighbilyZXR1cm4gdHx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKG4pKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2Ygcy5EaWN0JiZhLmhhcyhuKSl7Y29uc3Qgcj1uZXcgcy5EaWN0KGUpO3Iuc2V0KG4sYS5nZXRSYXcobikpO2NvbnN0IGk9bmV3IHMuRGljdChlKTtpLnNldCgiRm9udCIscik7cmV0dXJuIHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbaSx0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCBpPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApO3RoaXMuZGF0YS5tYXhMZW49aTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLGkscyxvLGMpe2NvbnN0IGw9KDAsbi5udW1iZXJUb1N0cmluZykoaS90aGlzLmRhdGEubWF4TGVuKSxoPVtdLHU9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgdSloLnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGMpfUJUIGArZStgIDEgMCAwIDEgJHtzfSAke299IFRtICR7aC5qb2luKGAgJHtsfSAwIFRkIGApfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGEscixuLGkscyxvLGMsbCl7Y29uc3QgaD10LnNwbGl0KC9cclxuP3xcbi8pLHU9W10sZD1uLTIqbztmb3IoY29uc3QgZSBvZiBoKXtjb25zdCB0PXRoaXMuX3NwbGl0TGluZShlLGEscixkKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PTA9PT11Lmxlbmd0aD9vOjA7dS5wdXNoKHRoaXMuX3JlbmRlclRleHQoZSxhLHIsbixzLHQsLXIpKX19Y29uc3QgZj11LmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGwpfUJUIGArZStgIDEgMCAwIDEgMCAke2l9IFRtICR7Zn0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixuPXt9KXtlPW4ubGluZXx8dC5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7Y29uc3QgaT1uLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKGkubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBzPW4ucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxjPVtdO2xldCBsPS0xLGg9LTEsdT0tMSxkPTAsZj0wO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxuXT1zW3RdLGc9aVt0XSxwPWcud2lkdGgqbztpZigiICI9PT1nLnVuaWNvZGUpaWYoZitwPnIpe2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wO2w9LTE7dT0tMX1lbHNle2YrPXA7bD1hO2g9bjt1PXR9ZWxzZSBpZihmK3A+cilpZigtMSE9PWwpe2MucHVzaChlLnN1YnN0cmluZyhkLGgpKTtkPWg7dD11KzE7bD0tMTtmPTB9ZWxzZXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cH1lbHNlIGYrPXB9ZDxlLmxlbmd0aCYmYy5wdXNoKGUuc3Vic3RyaW5nKGQsZS5sZW5ndGgpKTtyZXR1cm4gY31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5wdXNoQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLCExLGkpO2xldCBzPW51bGwsbz1udWxsO2lmKGkpe2NvbnN0IGU9aS5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO289ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7bnVsbD09cyYmKHM9dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTtjb25zdCBjPXM/dGhpcy5jaGVja2VkQXBwZWFyYW5jZTp0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U7aWYoYyl7Y29uc3Qgcz10aGlzLmFwcGVhcmFuY2UsbD1jLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpfHxyLklERU5USVRZX01BVFJJWDtvJiZjLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSkpO3RoaXMuYXBwZWFyYW5jZT1jO2NvbnN0IGg9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7dGhpcy5hcHBlYXJhbmNlPXM7Yy5kaWN0LnNldCgiTWF0cml4IixsKTtyZXR1cm4gaH1yZXR1cm57b3BMaXN0Om5ldyBnLk9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGEpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKTpudWxsfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaT1uJiZuLnJvdGF0aW9uLGM9biYmbi52YWx1ZTtpZih2b2lkIDA9PT1pKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBoPXtwYXRoOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGwuZ2V0KCJUIil8fCIiKSx2YWx1ZTpjP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sdT1zLk5hbWUuZ2V0KGM/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtsLnNldCgiViIsdSk7bC5zZXQoIkFTIix1KTtsLnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3QgZD10aGlzLl9nZXRNS0RpY3QoaSk7ZCYmbC5zZXQoIk1LIixkKTtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2xldCBnPW51bGw7ZiYmKGc9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IHA9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwscCxnKTtwLnB1c2goIlxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGk9biYmbi5yb3RhdGlvbixjPW4mJm4udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09YylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PWMpcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1jJiYoYz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKShsLmdldCgiVCIpfHwiIiksdmFsdWU6Yz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7bGV0IGQ9bnVsbDtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2lmKGMpaWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzLlJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO2xldCBhPW51bGw7ZiYmKGE9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpO3Quc2V0KCJWIix1KTtkPVtgJHt0aGlzLnBhcmVudC5udW19ICR7dGhpcy5wYXJlbnQuZ2VufSBvYmpcbmBdOygwLG8ud3JpdGVEaWN0KSh0LGQsYSk7ZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwsbSxwKTttLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBiPVt7cmVmOnRoaXMucmVmLGRhdGE6bS5qb2luKCIiKSx4ZmE6aH1dO251bGwhPT1kJiZiLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmQuam9pbigiIikseGZhOm51bGx9KTtyZXR1cm4gYn1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxpPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLG89WzAsMCxhLGldLGM9LjgqTWF0aC5taW4oYSxpKTtsZXQgbCxoO2lmKCJjaGVjayI9PT10KXtsPXt3aWR0aDouNzU1KmMsaGVpZ2h0Oi43MDUqY307aD0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtsPXt3aWR0aDouNzkxKmMsaGVpZ2h0Oi43MDUqY307aD0ibCJ9ZWxzZSgwLHIudW5yZWFjaGFibGUpKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IHU9YHEgQlQgL1BkZkpzWmFEYiAke2N9IFRmIDAgZyAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChhLWwud2lkdGgpLzIpfSAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChpLWwuaGVpZ2h0KS8yKX0gVGQgKCR7aH0pIFRqIEVUIFFgLGQ9bmV3IHMuRGljdChlLnhyZWYpO2Quc2V0KCJGb3JtVHlwZSIsMSk7ZC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7ZC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7ZC5zZXQoIkJCb3giLG8pO2Quc2V0KCJNYXRyaXgiLFsxLDAsMCwxLDAsMF0pO2Quc2V0KCJMZW5ndGgiLHUubGVuZ3RoKTtjb25zdCBmPW5ldyBzLkRpY3QoZS54cmVmKSxnPW5ldyBzLkRpY3QoZS54cmVmKTtnLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2Yuc2V0KCJGb250IixnKTtkLnNldCgiUmVzb3VyY2VzIixmKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBwLlN0cmluZ1N0cmVhbSh1KTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlLmRpY3Q9ZDt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9X3Byb2Nlc3NDaGVja0JveChlKXtjb25zdCB0PWUuZGljdC5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IG49bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLGk9YS5nZXRLZXlzKCk7aWYoMD09PWkubGVuZ3RoKWkucHVzaCgiT2ZmIixuKTtlbHNlIGlmKDE9PT1pLmxlbmd0aCkiT2ZmIj09PWlbMF0/aS5wdXNoKG4pOmkudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihpLmluY2x1ZGVzKG4pKXtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixuKX1lbHNle2NvbnN0IGU9aS5maW5kKChlPT4iT2ZmIiE9PWUpKTtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixlKX1pLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9aVsxXTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSl8fG51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KCJPZmYiKXx8bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIHMuTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZihyIGluc3RhbmNlb2Ygcy5EaWN0KXtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpfHxudWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCgiT2ZmIil8fG51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7aWYoZS5kaWN0LmhhcygiQSIpfHxlLmRpY3QuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hZS5kaWN0LmhhcygiQSIpJiYhZS5kaWN0LmhhcygiQUEiKTtoLkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9ZWxzZSgwLHIud2FybikoIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHQ9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWEuZmV0Y2hJZlJlZih0W2VdKSxuPUFycmF5LmlzQXJyYXkocik7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShuP2EuZmV0Y2hJZlJlZihyWzBdKTpyKSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4/YS5mZXRjaElmUmVmKHJbMV0pOnIpfX19InN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQk8pO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElTRUxFQ1QpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBzPW4ucm90YXRpb247bGV0IG89bi52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1vKXJldHVybiBudWxsO3ZvaWQgMD09PW8/bz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG8pfHwobz1bb10pO2xldCBjPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGw9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1zJiYyNzAhPT1zfHwoW2wsY109W2MsbF0pO2NvbnN0IGg9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHU9W107Zm9yKGxldCBlPTA7ZTxoO2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07by5pbmNsdWRlcyh0KSYmdS5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGQ9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZix7Zm9udFNpemU6Z309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihnKWY9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShjLTIpL2g7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZCk7aWYocj5hKXthPXI7dD1lfX1bZixnXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxsLTQsdCxkLC0xKX1jb25zdCBwPWcqci5MSU5FX0ZBQ1RPUixtPShwLWcpLzIsYj1NYXRoLmZsb29yKGMvcCk7bGV0IHk7aWYoMT09PXUubGVuZ3RoKXtjb25zdCBlPXVbMF07eT1lLWUlYn1lbHNlIHk9dS5sZW5ndGg/dVswXTowO2NvbnN0IHc9TWF0aC5taW4oeStiKzEsaCksUz1bIi9UeCBCTUMgcSIsYDEgMSAke2x9ICR7Y30gcmUgVyBuYF07aWYodS5sZW5ndGgpe1MucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiB1KXk8PWUmJmU8dyYmUy5wdXNoKGAxICR7Yy0oZS15KzEpKnB9ICR7bH0gJHtwfSByZSBmYCl9Uy5wdXNoKCJCVCIsZixgMSAwIDAgMSAwICR7Y30gVG1gKTtmb3IobGV0IGU9eTtlPHc7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09eT8yOjAscj1lPT09eT9tOjA7Uy5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxkLGcsbCwwLGEsLXArcikpfVMucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4gUy5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0O3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlRFWFQ7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5MSU5LO2NvbnN0IHQ9Z2V0UXVhZFBvaW50cyhlLmRpY3QsdGhpcy5yZWN0YW5nbGUpO3QmJih0aGlzLmRhdGEucXVhZFBvaW50cz10KTt0aGlzLmRhdGEuYm9yZGVyQ29sb3I9dGhpcy5kYXRhLmJvcmRlckNvbG9yfHx0aGlzLmRhdGEuY29sb3I7aC5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPUFVQO2xldCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKCF0KXsoMCxyLndhcm4pKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59Y29uc3QgYT10LmdldCgiU3VidHlwZSIpO3RoaXMuZGF0YS5wYXJlbnRUeXBlPWEgaW5zdGFuY2VvZiBzLk5hbWU/YS5uYW1lOm51bGw7Y29uc3Qgbj1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTt0aGlzLmRhdGEucGFyZW50SWQ9biBpbnN0YW5jZW9mIHMuUmVmP24udG9TdHJpbmcoKTpudWxsO2NvbnN0IGk9dC5nZXRBcnJheSgiUmVjdCIpO0FycmF5LmlzQXJyYXkoaSkmJjQ9PT1pLmxlbmd0aD90aGlzLmRhdGEucGFyZW50UmVjdD1yLlV0aWwubm9ybWFsaXplUmVjdChpKTp0aGlzLmRhdGEucGFyZW50UmVjdD1bMCwwLDAsMF07Y29uc3Qgbz10LmdldCgiUlQiKTsoMCxzLmlzTmFtZSkobyxyLkFubm90YXRpb25SZXBseVR5cGUuR1JPVVApJiYodD10LmdldCgiSVJUIikpO2lmKHQuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2lmKHQuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IodC5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsO2lmKCF0aGlzLnZpZXdhYmxlKXtjb25zdCBlPXQuZ2V0KCJGIik7dGhpcy5faXNWaWV3YWJsZShlKSYmdGhpcy5zZXRGbGFncyhlKX10aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKHQuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9fXQuUG9wdXBBbm5vdGF0aW9uPVBvcHVwQW5ub3RhdGlvbjtjbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkZSRUVURVhUfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7Y29sb3I6byxmb250U2l6ZTpjLHJlY3Q6bCxyb3RhdGlvbjpoLHVzZXI6dSx2YWx1ZTpkfT1lLGY9bmV3IHMuRGljdCh0KTtmLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpO2Yuc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2Yuc2V0KCJSZWN0IixsKTtjb25zdCBnPWAvSGVsdiAke2N9IFRmICR7KDAsaS5nZXRQZGZDb2xvcikobywhMCl9YDtmLnNldCgiREEiLGcpO2Yuc2V0KCJDb250ZW50cyIsZCk7Zi5zZXQoIkYiLDQpO2Yuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2Yuc2V0KCJSb3RhdGUiLGgpO3UmJmYuc2V0KCJUIiwoMCxyLnN0cmluZ1RvVVRGOFN0cmluZykodSkpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtmLnNldCgiQVAiLHApO2E/cC5zZXQoIk4iLGEpOnAuc2V0KCJOIixuKTtyZXR1cm4gZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6byxldmFsdWF0b3I6Yyx0YXNrOmx9PWEse2NvbG9yOmgsZm9udFNpemU6dSxyZWN0OmQscm90YXRpb246Zix2YWx1ZTpnfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYobyliLnNldCgiSGVsdiIsbyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2Iuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShjLGwse2ZvbnROYW1lOiJIZWx2ZXRpY2EiLGZvbnRTaXplOnV9LG0pLFt3LFMseCxrXT1kO2xldCBDPXgtdyx2PWstUztmJTE4MCE9MCYmKFtDLHZdPVt2LENdKTtjb25zdCBGPWcuc3BsaXQoIlxuIiksTz11LzFlMztsZXQgVD0tMS8wO2NvbnN0IE09W107Zm9yKGxldCBlIG9mIEYpe2U9eS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7TS5wdXNoKGUpO2xldCB0PTA7Y29uc3QgYT15LmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl0Kz1lLndpZHRoKk87VD1NYXRoLm1heChULHQpfWxldCBFPTE7VD5DJiYoRT1DL1QpO2xldCBEPTE7Y29uc3QgTj1yLkxJTkVfRkFDVE9SKnUsUj1yLkxJTkVfREVTQ0VOVF9GQUNUT1IqdSxMPU4qRi5sZW5ndGg7TD52JiYoRD12L0wpO2NvbnN0IGo9dSpNYXRoLm1pbihFLEQpLCQ9WyJxIixgMCAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoQyl9ICR7KDAsbi5udW1iZXJUb1N0cmluZykodil9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoditSKX0gVG0gMCBUYyAkeygwLGkuZ2V0UGRmQ29sb3IpKGgsITApfWAsYC9IZWx2ICR7KDAsbi5udW1iZXJUb1N0cmluZykoail9IFRmYF0sXz0oMCxuLm51bWJlclRvU3RyaW5nKShOKTtmb3IoY29uc3QgZSBvZiBNKSQucHVzaChgMCAtJHtffSBUZCAoJHsoMCxyLmVzY2FwZVN0cmluZykoZSl9KSBUamApOyQucHVzaCgiRVQiLCJRIik7Y29uc3QgVT0kLmpvaW4oIlxuIiksWD1uZXcgcy5EaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7WC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7WC5zZXQoIkJCb3giLFswLDAsQyx2XSk7WC5zZXQoIkxlbmd0aCIsVS5sZW5ndGgpO1guc2V0KCJSZXNvdXJjZXMiLG0pO2lmKGYpe2NvbnN0IGU9V2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoZixDLHYpO1guc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEg9bmV3IHAuU3RyaW5nU3RyZWFtKFUpO0guZGljdD1YO3JldHVybiBIfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTkU7Y29uc3QgYT10LmdldEFycmF5KCJMIik7dGhpcy5kYXRhLmxpbmVDb29yZGluYXRlcz1yLlV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IG49dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpO2xldCBzPW51bGwsbz10LmdldEFycmF5KCJJQyIpO2lmKG8pe289Z2V0UmdiQ29sb3IobyxudWxsKTtzPW8/QXJyYXkuZnJvbShvLChlPT5lLzI1NSkpOm51bGx9Y29uc3QgYz1zP2k6bnVsbCxsPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaD0yKmwsdT1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2gsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStoXTtyLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHUpfHwodGhpcy5yZWN0YW5nbGU9dSk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6Yyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWwsdFsxXS54K2wsdFszXS55LWwsdFsxXS55K2xdfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVQVJFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLnhyZWYsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6dCxmaWxsQ29sb3I6cixzdHJva2VBbHBoYTphLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtufSAke2l9ICR7c30gcmVgKTtyP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjtjb25zdCBzPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUueHJlZixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjp0LGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOmkscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbMF0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzBdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFszXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbM10ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYz1hKyhpLWEpLzIsbD1uKyhvLW4pLzIsaD0oaS1hKS8yKnMsdT0oby1uKS8yKnM7ZS5wdXNoKGAke2N9ICR7b30gbWAsYCR7YytofSAke299ICR7aX0gJHtsK3V9ICR7aX0gJHtsfSBjYCxgJHtpfSAke2wtdX0gJHtjK2h9ICR7bn0gJHtjfSAke259IGNgLGAke2MtaH0gJHtufSAke2F9ICR7bC11fSAke2F9ICR7bH0gY2AsYCR7YX0gJHtsK3V9ICR7Yy1ofSAke299ICR7Y30gJHtvfSBjYCwiaCIpO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4OmFbZV0seTphW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBhPXRoaXMuY29sb3I/QXJyYXkuZnJvbSh0aGlzLmNvbG9yLChlPT5lLzI1NSkpOlswLDAsMF0sbj10LmdldCgiQ0EiKSxpPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKmksbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7b1swXT1NYXRoLm1pbihvWzBdLGUueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpO29bMl09TWF0aC5tYXgob1syXSxlLngrcyk7b1szXT1NYXRoLm1heChvWzNdLGUueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2l9IHdgLHN0cm9rZUNvbG9yOmEsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dGhpcy5kYXRhLnZlcnRpY2VzO2ZvcihsZXQgdD0wLHI9YS5sZW5ndGg7dDxyO3QrKyllLnB1c2goYCR7YVt0XS54fSAke2FbdF0ueX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPTFlHT059fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0FSRVR9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLklOSzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgdD1lLmRpY3QuZ2V0QXJyYXkoIklua0xpc3QiKTtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm47Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCByPTAsbj10W2VdLmxlbmd0aDtyPG47cis9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDphLmZldGNoSWZSZWYodFtlXVtyXSkseTphLmZldGNoSWZSZWYodFtlXVtyKzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIiksbj10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGk9MipuLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7c1swXT1NYXRoLm1pbihzWzBdLHQueC1pKTtzWzFdPU1hdGgubWluKHNbMV0sdC55LWkpO3NbMl09TWF0aC5tYXgoc1syXSx0LngraSk7c1szXT1NYXRoLm1heChzWzNdLHQueStpKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke259IHdgLHN0cm9rZUNvbG9yOnQsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWUucHVzaChgJHt0W2FdLnh9ICR7dFthXS55fSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7cGF0aHM6aSxyZWN0Om8scm90YXRpb246Y309ZSxsPW5ldyBzLkRpY3QodCk7bC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO2wuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSk7bC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7bC5zZXQoIlJlY3QiLG8pO2wuc2V0KCJJbmtMaXN0IixpLm1hcCgoZT0+ZS5wb2ludHMpKSk7bC5zZXQoIkYiLDQpO2wuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2wuc2V0KCJSb3RhdGUiLGMpO2NvbnN0IGg9bmV3IHMuRGljdCh0KTtsLnNldCgiQVAiLGgpO2E/aC5zZXQoIk4iLGEpOmguc2V0KCJOIixuKTtyZXR1cm4gbH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Om8scm90YXRpb246YyxwYXRoczpsLHRoaWNrbmVzczpoLG9wYWNpdHk6dX09ZSxbZCxmLGcsbV09bztsZXQgYj1nLWQseT1tLWY7YyUxODAhPTAmJihbYix5XT1beSxiXSk7Y29uc3Qgdz1bYCR7aH0gdyAxIEogMSBqYCxgJHsoMCxpLmdldFBkZkNvbG9yKShyLCExKX1gXTsxIT09dSYmdy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBTPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtTLmxlbmd0aD0wO1MucHVzaChgJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzBdKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTYpe2NvbnN0IGE9ZS5zbGljZSh0LHQrNikubWFwKG4ubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtTLnB1c2goYCR7YX0gY2ApfVMucHVzaCgiUyIpO3cucHVzaChTLmpvaW4oIlxuIikpfWNvbnN0IHg9dy5qb2luKCJcbiIpLGs9bmV3IHMuRGljdCh0KTtrLnNldCgiRm9ybVR5cGUiLDEpO2suc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2suc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2suc2V0KCJCQm94IixbMCwwLGIseV0pO2suc2V0KCJMZW5ndGgiLHgubGVuZ3RoKTtpZihjKXtjb25zdCBlPVdpZGdldEFubm90YXRpb24uX2dldFJvdGF0aW9uTWF0cml4KGMsYix5KTtrLnNldCgiTWF0cml4IixlKX1pZigxIT09dSl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpLGE9bmV3IHMuRGljdCh0KSxyPW5ldyBzLkRpY3QodCk7ci5zZXQoIkNBIix1KTtyLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRXh0R1N0YXRlIikpO2Euc2V0KCJSMCIscik7ZS5zZXQoIkV4dEdTdGF0ZSIsYSk7ay5zZXQoIlJlc291cmNlcyIsZSl9Y29uc3QgQz1uZXcgcC5TdHJpbmdTdHJlYW0oeCk7Qy5kaWN0PWs7cmV0dXJuIEN9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKGUuZGljdCxudWxsKSl7Y29uc3QgdD10aGlzLmFwcGVhcmFuY2UmJnRoaXMuYXBwZWFyYW5jZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzEsMSwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGZpbGxDb2xvcjp0LGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueX0gbWAsYCR7dFszXS54fSAke3RbM10ueX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzBdLnktdFsyXS55KS82O2xldCByPWEsbj10WzJdLng7Y29uc3QgaT10WzJdLnkscz10WzNdLng7ZS5wdXNoKGAke259ICR7aStyfSBtYCk7ZG97bis9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7bn0gJHtpK3J9IGxgKX13aGlsZShuPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngscyxpLTIqYSxpKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1RBTVB9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgZC5GaWxlU3BlYyhlLmRpY3QuZ2V0KCJGUyIpLGUueHJlZik7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ7dGhpcy5kYXRhLmZpbGU9dC5zZXJpYWxpemFibGV9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOmF9KXtyZXR1cm5gLyR7KDAsci5lc2NhcGVQREZOYW1lKSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGEsITApfWB9O3QuZ2V0UGRmQ29sb3I9Z2V0UGRmQ29sb3I7dC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfTt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMTIpLHM9YSgxMyksbz1hKDMpLGM9YSg4KTtjbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIHMuRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBjLlN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6cn09ZTtzd2l0Y2goMHxhKXtjYXNlIG4uT1BTLnNldEZvbnQ6Y29uc3RbZSxhXT1yO2UgaW5zdGFuY2VvZiBvLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxHcmF5OmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTppLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7KDAsbi53YXJuKShgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7Y29uc3QgYT1lWzBdLzI1NTtyZXR1cm5gJHsoMCxyLm51bWJlclRvU3RyaW5nKShhKX0gJHt0PyJnIjoiRyJ9YH1yZXR1cm4gQXJyYXkuZnJvbShlLChlPT4oMCxyLm51bWJlclRvU3RyaW5nKShlLzI1NSkpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29sb3JTcGFjZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSg0KTtjbGFzcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbG9yU3BhY2UmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb2xvclNwYWNlLiIpO3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSXRlbShlLHQsYSxuKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLGkscyxvKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsYSxyLG4saSxzLG8sYyl7Y29uc3QgbD10KmE7bGV0IGg9bnVsbDtjb25zdCB1PTE8PHMsZD1hIT09bnx8dCE9PXI7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKHMpKWg9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZsPnUmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9czw9OD9uZXcgVWludDhBcnJheSh1KTpuZXcgVWludDE2QXJyYXkodSk7Zm9yKGxldCBlPTA7ZTx1O2UrKyl0W2VdPWU7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyp1KTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsdSxhLDAscywwKTtpZihkKXtoPW5ldyBVaW50OEFycmF5KDMqbCk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGw7Kyt0KXtjb25zdCByPTMqb1t0XTtoW2UrK109YVtyXTtoW2UrK109YVtyKzFdO2hbZSsrXT1hW3IrMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IHI9MDtyPGw7KytyKXtjb25zdCBuPTMqb1tyXTtlW3QrK109YVtuXTtlW3QrK109YVtuKzFdO2VbdCsrXT1hW24rMl07dCs9Y319fWVsc2UgaWYoZCl7aD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypsKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsbCxoLDAscywwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxyKmksZSwwLHMsYyk7aWYoaClpZihkKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsYSxyLG4saSxzKXtzPTEhPT1zPzA6cztjb25zdCBvPWEvbixjPXIvaTtsZXQgbCxoPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkobiksZD0zKmE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1W2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmMpKmQ7Zm9yKGxldCBhPTA7YTxuO2ErKyl7bD1yK3VbYV07dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107aCs9c319fShoLGUsdCxhLHIsbixjKTtlbHNle2xldCB0PTAsYT0wO2ZvcihsZXQgbj0wLHM9cippO248cztuKyspe2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO3QrPWN9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGEscil7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgaSxzO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7cz1lO2U9dC5mZXRjaChlKX1lIGluc3RhbmNlb2Ygbi5OYW1lJiYoaT1lLm5hbWUpOyhpfHxzKSYmYS5zZXQoaSxzLHIpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7Y29uc3Qgcj1hLmdldEJ5UmVmKGUpO2lmKHIpcmV0dXJuIHI7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlfX1pZihlIGluc3RhbmNlb2Ygbi5OYW1lKXtjb25zdCB0PWEuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3QgaT10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixpKTtyZXR1cm4gaX1zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IGk9dGhpcy5nZXRDYWNoZWQoZSx0LG4pO2lmKGkpcmV0dXJuIGk7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixzKTtyZXR1cm4gc31zdGF0aWMgX3BhcnNlKGUsdCxhPW51bGwsaSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygbi5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihhIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCByPWEuZ2V0KCJDb2xvclNwYWNlIik7aWYociBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxhLGkpO2U9czticmVha319fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj10LmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgcyxvLHUsZCxmLGc7c3dpdGNoKG4pe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Zz1zLmdldCgiR2FtbWEiKTtyZXR1cm4gbmV3IGMoZCxmLGcpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgcD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IGwoZCxmLGcscCk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3QgbT10LmZldGNoSWZSZWYoZVsxXSkuZGljdDtvPW0uZ2V0KCJOIik7Y29uc3QgYj1tLmdldCgiQWx0ZXJuYXRlIik7aWYoYil7Y29uc3QgZT10aGlzLl9wYXJzZShiLHQsYSxpKTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTsoMCxyLndhcm4pKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azticmVhaztjYXNlIlBhdHRlcm4iOnU9ZVsxXXx8bnVsbDt1JiYodT10aGlzLl9wYXJzZSh1LHQsYSxpKSk7cmV0dXJuIG5ldyBQYXR0ZXJuQ1ModSk7Y2FzZSJJIjpjYXNlIkluZGV4ZWQiOnU9dGhpcy5fcGFyc2UoZVsxXSx0LGEsaSk7Y29uc3QgeT10LmZldGNoSWZSZWYoZVsyXSkrMSx3PXQuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyh1LHksdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IFM9dC5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShTKT9TLmxlbmd0aDoxO3U9dGhpcy5fcGFyc2UoZVsyXSx0LGEsaSk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sdSx4KTtjYXNlIkxhYiI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3Qgaz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgaChkLGYsayk7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtufWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2V9YCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX0sZ2V0IGNteWsoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY215ayIsbmV3IG8pfX0pfX10LkNvbG9yU3BhY2U9Q29sb3JTcGFjZTtjbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPWE7dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LG4sMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0obiwwLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy50aW50Rm4sYz10aGlzLmJhc2UsbD0xLygoMTw8aSktMSksaD1jLm51bUNvbXBzLHU9Yy51c2VzWmVyb1RvT25lUmFuZ2UsZD0oYy5pc1Bhc3N0aHJvdWdoKDgpfHwhdSkmJjA9PT1zO2xldCBmPWQ/bjowO2NvbnN0IGc9ZD9yOm5ldyBVaW50OENsYW1wZWRBcnJheShoKmEpLHA9dGhpcy5udW1Db21wcyxtPW5ldyBGbG9hdDMyQXJyYXkocCksYj1uZXcgRmxvYXQzMkFycmF5KGgpO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXtmb3Iodz0wO3c8cDt3KyspbVt3XT1lW3QrK10qbDtvKG0sMCxiLDApO2lmKHUpZm9yKHc9MDt3PGg7dysrKWdbZisrXT0yNTUqYlt3XTtlbHNle2MuZ2V0UmdiSXRlbShiLDAsZyxmKTtmKz1ofX1kfHxjLmdldFJnYkJ1ZmZlcihnLDAsYSxyLG4sOCxzKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuYmFzZT1lO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49ZS5udW1Db21wcyp0O3RoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KG4pO2lmKGEgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhuKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7YX1gKTtmb3IobGV0IGU9MDtlPG47KytlKXRoaXMubG9va3VwW2VdPTI1NSZhLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj10aGlzLmJhc2UubnVtQ29tcHMsaT1lW3RdKm47dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxpLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy5iYXNlLGM9by5udW1Db21wcyxsPW8uZ2V0T3V0cHV0TGVuZ3RoKGMscyksaD10aGlzLmxvb2t1cDtmb3IobGV0IGk9MDtpPGE7KytpKXtjb25zdCBhPWVbdCsrXSpjO28uZ2V0UmdiQnVmZmVyKGgsYSwxLHIsbiw4LHMpO24rPWx9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7KDAsci53YXJuKSgiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXsoMCxyLndhcm4pKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49MjU1KmVbdF07YVtyXT1hW3IrMV09YVtyKzJdPW59Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbYysrXTtyW2wrK109dDtyW2wrK109dDtyW2wrK109dDtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxyKXthW3JdPTI1NSplW3RdO2FbcisxXT0yNTUqZVt0KzFdO2FbcisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxyLG4saSxzKXtpZig4PT09aSYmMD09PXMpe3Iuc2V0KGUuc3ViYXJyYXkodCx0KzMqYSksbik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtyW2wrK109byplW2MrK107bCs9c319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jb25zdCBvPWZ1bmN0aW9uIERldmljZUNteWtDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuKXtjb25zdCBpPWVbdF0qYSxzPWVbdCsxXSphLG89ZVt0KzJdKmEsYz1lW3QrM10qYTtyW25dPTI1NStpKigtNC4zODczMzIzODQ2MDk5ODgqaSs1NC40ODYxNTE5NDE4OTE3NipzKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK3MqKDEuNzE0OTc2MzQ3NzM2MjEzNCpzLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0Nyk7cltuKzFdPTI1NStpKig4Ljg0MTA0MTQyMjAzNjE0OSppKzYwLjExODAyNzA0NTU5NzM2NipzKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrcyooLTE1LjMxMDM2MTMwNjk2NzgxNypzKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KTtyW24rMl09MjU1K2kqKC44ODQyNTIyNDMwMDAzMjk2KmkrOC4wNzg2Nzc1MDMxMTI5MjgqcyszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrcyooMTAuNDk1OTMyNzM0MzIwNzIqcys2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfXJldHVybiBjbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MS8oKDE8PGkpLTEpO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnZlcnRUb1JnYihlLHQsbyxyLG4pO3QrPTQ7bis9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fX0oKSxjPWZ1bmN0aW9uIENhbEdyYXlDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2NvbnN0IHM9KHRbYV0qaSkqKmUuRyxvPWUuWVcqcyxjPU1hdGgubWF4KDI5NS44Km8qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7cltuXT1jO3JbbisxXT1jO3JbbisyXT1jfXJldHVybiBjbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7dD10fHxbMCwwLDBdO2E9YXx8MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0xO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxuPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksaT1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyk7ZnVuY3Rpb24gbWF0cml4UHJvZHVjdChlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19ZnVuY3Rpb24gc1JHQlRyYW5zZmVyRnVuY3Rpb24oZSl7cmV0dXJuIGU8PS4wMDMxMzA4P2FkanVzdFRvUmFuZ2UoMCwxLDEyLjkyKmUpOmU+PS45OTU1NDUyNT8xOmFkanVzdFRvUmFuZ2UoMCwxLDEuMDU1KmUqKigxLzIuNCktLjA1NSl9ZnVuY3Rpb24gYWRqdXN0VG9SYW5nZShlLHQsYSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxhKSl9ZnVuY3Rpb24gZGVjb2RlTChlKXtyZXR1cm4gZTwwPy1kZWNvZGVMKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOi4wMDExMDcwNTY0NTk4Nzk0NTM5KmV9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksaz1zO2tbMF09dztrWzFdPVM7a1syXT14O2NvbnN0IEM9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsbil7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtuWzBdPXJbMF07blsxXT1yWzFdO25bMl09clsyXTtyZXR1cm59Y29uc3Qgcz1uO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89aTshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxuKX0oci53aGl0ZVBvaW50LGssQyk7Y29uc3Qgdj1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxuPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLGk9MS1uLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qbitpO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LEMsdik7Y29uc3QgRj1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLG4pe2NvbnN0IHM9bjttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLG4pfShuLHYsRik7Y29uc3QgTz1zO21hdHJpeFByb2R1Y3QoYSxGLE8pO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKE9bMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oT1sxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihPWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO2E9YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtuPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3QgaT1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9blswXTt0aGlzLk1ZQT1uWzFdO3RoaXMuTVpBPW5bMl07dGhpcy5NWEI9blszXTt0aGlzLk1ZQj1uWzRdO3RoaXMuTVpCPW5bNV07dGhpcy5NWEM9bls2XTt0aGlzLk1ZQz1uWzddO3RoaXMuTVpDPW5bOF07aWYoaTwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe2xldCB0O3Q9ZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSk7cmV0dXJuIHR9ZnVuY3Rpb24gZGVjb2RlKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH1mdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2xldCBzPXRbYV0sbz10W2ErMV0sYz10W2ErMl07aWYoITEhPT1yKXtzPWRlY29kZShzLHIsMCwxMDApO289ZGVjb2RlKG8scixlLmFtaW4sZS5hbWF4KTtjPWRlY29kZShjLHIsZS5ibWluLGUuYm1heCl9bz5lLmFtYXg/bz1lLmFtYXg6bzxlLmFtaW4mJihvPWUuYW1pbik7Yz5lLmJtYXg/Yz1lLmJtYXg6YzxlLmJtaW4mJihjPWUuYm1pbik7Y29uc3QgbD0ocysxNikvMTE2LGg9bCtvLzUwMCx1PWwtYy8yMDAsZD1lLlhXKmZuX2coaCksZj1lLllXKmZuX2cobCksZz1lLlpXKmZuX2codSk7bGV0IHAsbSxiO2lmKGUuWlc8MSl7cD0zLjEzMzkqZCstMS42MTcqZistLjQ5MDYqZzttPS0uOTc4NSpkKzEuOTE2KmYrLjAzMzMqZztiPS4wNzIqZCstLjIyOSpmKzEuNDA1NypnfWVsc2V7cD0zLjI0MDYqZCstMS41MzcyKmYrLS40OTg2Kmc7bT0tLjk2ODkqZCsxLjg3NTgqZisuMDQxNSpnO2I9LjA1NTcqZCstLjIwNCpmKzEuMDU3Kmd9bltpXT0yNTUqTWF0aC5zcXJ0KHApO25baSsxXT0yNTUqTWF0aC5zcXJ0KG0pO25baSsyXT0yNTUqTWF0aC5zcXJ0KGIpfXJldHVybiBjbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7dD10fHxbMCwwLDBdO2E9YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLmFtaW49YVswXTt0aGlzLmFtYXg9YVsxXTt0aGlzLmJtaW49YVsyXTt0aGlzLmJtYXg9YVszXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXsoMCxyLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXsoMCxyLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89KDE8PGkpLTE7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKHRoaXMsZSx0LG8scixuKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fX0oKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnRpYWxFdmFsdWF0b3I9dC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9dm9pZCAwO3ZhciByPWEoMiksbj1hKDE0KSxpPWEoMykscz1hKDMyKSxvPWEoMzYpLGM9YSgzNSksbD1hKDM5KSxoPWEoMzgpLHU9YSg0OCksZD1hKDQ5KSxmPWEoNDApLGc9YSg1NSkscD1hKDE1KSxtPWEoNTcpLGI9YSg4KSx5PWEoNSksdz1hKDU4KSxTPWEoMTIpLHg9YSgxNyksaz1hKDM3KSxDPWEoNCksdj1hKDQzKSxGPWEoNTkpLE89YSg2MCksVD1hKDYxKTtjb25zdCBNPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMCxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxFPTEsRD0yLE49UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX0oMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudChlKXtlLmZuPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0JiZlLmFyZ3NbMF0mJmUuYXJnc1swXS5jb3VudD4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIGdldCBUSU1FX1NMT1RfRFVSQVRJT05fTVMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiVElNRV9TTE9UX0RVUkFUSU9OX01TIiwyMCl9c3RhdGljIGdldCBDSEVDS19USU1FX0VWRVJZKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIRUNLX1RJTUVfRVZFUlkiLDEwMCl9Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6YSxpZEZhY3Rvcnk6cixmb250Q2FjaGU6bixidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOnMsZ2xvYmFsSW1hZ2VDYWNoZTpvLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLmlkRmFjdG9yeT1yO3RoaXMuZm9udENhY2hlPW47dGhpcy5idWlsdEluQ01hcENhY2hlPWk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9czt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLm9wdGlvbnM9Y3x8TTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITE7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7Y29uc3QgZT1uZXcgZy5QREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLGUpfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IGkuUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IG49W2VdLHM9dGhpcy54cmVmO2Zvcig7bi5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgaS5EaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgaS5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbz1lLmdldCgiWE9iamVjdCIpO2lmKG8gaW5zdGFuY2VvZiBpLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTsoMCxyLmluZm8pKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBpLkRpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7bi5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxuPWF3YWl0IGZldGNoKHQpO2lmKCFuLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7bi5zdGF0dXNUZXh0fSIuYCk7YT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbi5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWX19ZWxzZSBhPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTthLmNvbXByZXNzaW9uVHlwZSE9PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBiLlN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9KDAsbC5nZXRGb250TmFtZVRvRmlsZU1hcCkoKVtlXTtsZXQgbjtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP249YXdhaXQgdC5hcnJheUJ1ZmZlcigpOigwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7bj1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTphfSl9Y2F0Y2goZSl7KDAsci53YXJuKShgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHthfSIgd2l0aCAiJHtlfSIuYCl9aWYoIW4pcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG5ldyBiLlN0cmVhbShuKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLG4scyxvLGMpe2NvbnN0IGw9dC5kaWN0LGg9bC5nZXRBcnJheSgiTWF0cml4Iik7bGV0IHUsZCxmPWwuZ2V0QXJyYXkoIkJCb3giKTtmPUFycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChmKTpudWxsO2wuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZuLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHVdKTtjb25zdCBnPWwuZ2V0KCJHcm91cCIpO2lmKGcpe2Q9e21hdHJpeDpoLGJib3g6ZixzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtjb25zdCB0PWcuZ2V0KCJTIik7bGV0IHM9bnVsbDtpZigoMCxpLmlzTmFtZSkodCwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMTtpZihnLmhhcygiQ1MiKSl7Y29uc3QgdD1nLmdldFJhdygiQ1MiKSxhPVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQodCx0aGlzLnhyZWYsYyk7cz1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9fWlmKGEmJmEuYmFja2Ryb3Ape3M9c3x8Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2EuYmFja2Ryb3A9cy5nZXRSZ2IoYS5iYWNrZHJvcCwwKX1uLmFkZE9wKHIuT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW4scCk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKTtnJiZuLmFkZE9wKHIuT1BTLmVuZEdyb3VwLFtkXSk7dm9pZCAwIT09dSYmbi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OmksbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGM9dC5kaWN0LGw9Yy5vYmpJZCxoPWMuZ2V0KCJXIiwiV2lkdGgiKSx1PWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWh8fCJudW1iZXIiIT10eXBlb2YgaHx8IXV8fCJudW1iZXIiIT10eXBlb2YgdSl7KDAsci53YXJuKSgiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGQ9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWQmJmgqdT5kKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGY7Yy5oYXMoIk9DIikmJihmPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBnLHA7aWYoYy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxhPWgrNz4+MyxvPXQuZ2V0Qnl0ZXMoYSp1KSxkPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2c9VC5QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpvLHdpZHRoOmgsaGVpZ2h0OnUsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIHguRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6ISFkJiZkWzBdPjAsaW50ZXJwb2xhdGU6ZX0pO2cuY2FjaGVkPSEhaTtwPVtnXTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1nPVQuUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6byx3aWR0aDpoLGhlaWdodDp1LGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiB4LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOiEhZCYmZFswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoZy5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxmKTtpJiZzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxhcmdzOltdLG9wdGlvbmFsQ29udGVudDpmfSk7cmV0dXJufWNvbnN0IG09YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7bi5hZGREZXBlbmRlbmN5KG0pO3RoaXMuX3NlbmRJbWdEYXRhKG0sZyk7cD1be2RhdGE6bSx3aWR0aDpnLndpZHRoLGhlaWdodDpnLmhlaWdodCxpbnRlcnBvbGF0ZTpnLmludGVycG9sYXRlLGNvdW50OjF9XTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1jb25zdCBtPWMuZ2V0KCJTTSIsIlNNYXNrIil8fCExLGI9Yy5nZXQoIk1hc2siKXx8ITE7aWYoYSYmIW0mJiFiJiZoK3U8MjAwKXtjb25zdCBpPW5ldyBULlBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7Zz1pLmNyZWF0ZUltYWdlRGF0YSghMCk7bi5hZGRJbWFnZU9wcyhyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxbZ10sZik7cmV0dXJufWxldCB5PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsdz0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3l9YDtlbHNlIGlmKGwpe3c9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGwsdGhpcy5wYWdlSW5kZXgpO3cmJih5PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7eX1gKX1uLmFkZERlcGVuZGVuY3koeSk7cD1beSxoLHVdO1QuUERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pLnRoZW4oKGU9PntnPWUuY3JlYXRlSW1hZ2VEYXRhKCExKTtpJiZsJiZ3JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUobCxnLmRhdGEubGVuZ3RoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxnLHcpfSkpLmNhdGNoKChlPT57KDAsci53YXJuKShgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt5fSI6ICIke2V9Ii5gKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxudWxsLHcpfSkpO24uYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZVhPYmplY3QscCxmKTtpZihpKXtzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO2lmKGwpeygwLHIuYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkUGFnZUluZGV4KGwsdGhpcy5wYWdlSW5kZXgpO3cmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGwse29iaklkOnksZm46ci5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpwLG9wdGlvbmFsQ29udGVudDpmLGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGM9ZS5nZXQoIlRSIik7aWYoKDAsZy5pc1BERkZ1bmN0aW9uKShjKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGMpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKXthWzBdPXIvMjU1O2UoYSwwLGEsMCk7dFtyXT0yNTUqYVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQscyxvLGEscixuLnN0YXRlLmNsb25lKCksaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCEoMCxnLmlzUERGRnVuY3Rpb24pKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGE9W107bGV0IHI9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtyKys7aWYoKDAsaS5pc05hbWUpKHQsIklkZW50aXR5Iikpe2EucHVzaChudWxsKTtjb250aW51ZX1pZighKDAsZy5pc1BERkZ1bmN0aW9uKSh0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbz1uZXcgVWludDhBcnJheSgyNTYpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe2NbMF09ZS8yNTU7cyhjLDAsYywwKTtvW2VdPTI1NSpjWzBdfDB9YS5wdXNoKG8pO24rK31yZXR1cm4gMSE9PXImJjQhPT1yfHwwPT09bj9udWxsOmF9aGFuZGxlVGlsaW5nVHlwZShlLHQsYSxuLHMsbyxjLGwpe2NvbnN0IGg9bmV3IE8uT3BlcmF0b3JMaXN0LGQ9aS5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazpjLHJlc291cmNlczpkLG9wZXJhdG9yTGlzdDpofSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBhPWguZ2V0SVIoKSxyPSgwLHUuZ2V0VGlsaW5nUGF0dGVybklSKShhLHMsdCk7by5hZGREZXBlbmRlbmNpZXMoaC5kZXBlbmRlbmNpZXMpO28uYWRkT3AoZSxyKTtzLm9iaklkJiZsLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDpzfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JUaWxpbmdQYXR0ZXJufSk7KDAsci53YXJuKShgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9aGFuZGxlU2V0Rm9udChlLHQsYSxuLG8sYyxsPW51bGwsaD1udWxsKXtjb25zdCB1PXQmJnRbMF1pbnN0YW5jZW9mIGkuTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udCh1LGEsZSxsLGgpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLG8pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pnt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZFR5cGUzfSk7cmV0dXJuIG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX0pKTp0KSkudGhlbigoZT0+e2MuZm9udD1lLmZvbnQ7ZS5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGUubG9hZGVkTmFtZX0pKX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgYT10LmZvbnQsbj1hLmNoYXJzVG9HbHlwaHMoZSk7aWYoYS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZyLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlfHx0aGlzLm9wdGlvbnMuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLG4sdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIG59ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFN0YXRlfSk7KDAsci53YXJuKShgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpuLHRhc2s6cyxzdGF0ZU1hbmFnZXI6byxsb2NhbEdTdGF0ZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe2NvbnN0IGg9dC5vYmpJZDtsZXQgdT0hMDtjb25zdCBkPVtdO2xldCBmPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBuIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBjPXQuZ2V0KG4pO3N3aXRjaChuKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6ZC5wdXNoKFtuLGNdKTticmVhaztjYXNlIkZvbnQiOnU9ITE7Zj1mLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLGNbMF0sYSxzLG8uc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTtkLnB1c2goW24sW2UsY1sxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOmQucHVzaChbbixub3JtYWxpemVCbGVuZE1vZGUoYyldKTticmVhaztjYXNlIlNNYXNrIjppZigoMCxpLmlzTmFtZSkoYywiTm9uZSIpKXtkLnB1c2goW24sITFdKTticmVha31pZihjIGluc3RhbmNlb2YgaS5EaWN0KXt1PSExO2Y9Zi50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhjLGUsYSxzLG8sbCkpKTtkLnB1c2goW24sITBdKX1lbHNlKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGMpO2QucHVzaChbbix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOigwLHIuaW5mbykoImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIituKTticmVhaztkZWZhdWx0OigwLHIuaW5mbykoIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK24pfX1yZXR1cm4gZi50aGVuKChmdW5jdGlvbigpe2QubGVuZ3RoPjAmJmEuYWRkT3Aoci5PUFMuc2V0R1N0YXRlLFtkXSk7dSYmYy5zZXQobixoLGQpfSkpfWxvYWRGb250KGUsdCxhLG49bnVsbCxjPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgcy5FcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSksbD10aGlzLnhyZWY7bGV0IGg7aWYodCl0IGluc3RhbmNlb2YgaS5SZWYmJihoPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihoPXQuZ2V0UmF3KGUpKX1pZighaCl7Y29uc3QgYT1gRm9udCAiJHtlfHx0JiZ0LnRvU3RyaW5nKCl9IiBpcyBub3QgYXZhaWxhYmxlYDtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7KDAsci53YXJuKShgJHthfS5gKTtyZXR1cm4gZXJyb3JGb250KCl9dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udE1pc3Npbmd9KTsoMCxyLndhcm4pKGAke2F9IC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7aD1ufHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodGhpcy5wYXJzaW5nVHlwZTNGb250JiZ0aGlzLnR5cGUzRm9udFJlZnMuaGFzKGgpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMoaCkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChoKTtpZighKCh0PWwuZmV0Y2hJZlJlZihoKSlpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIGVycm9yRm9udCgpO2lmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IHU9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDt0cnl7ZD10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtkLmNzc0ZvbnRJbmZvPWN9Y2F0Y2goZSl7KDAsci53YXJuKShgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6ZixoYXNoOmd9PWQscD1oIGluc3RhbmNlb2YgaS5SZWY7bGV0IG07cCYmKG09YGYke2gudG9TdHJpbmcoKX1gKTtpZihnJiZmIGluc3RhbmNlb2YgaS5EaWN0KXtmLmZvbnRBbGlhc2VzfHwoZi5mb250QWxpYXNlcz1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdCBlPWYuZm9udEFsaWFzZXM7aWYoZVtnXSl7Y29uc3QgdD1lW2ddLmFsaWFzUmVmO2lmKHAmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaCx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGgpfX1lbHNlIGVbZ109e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07cCYmKGVbZ10uYWxpYXNSZWY9aCk7bT1lW2ddLmZvbnRJRH1pZihwKXRoaXMuZm9udENhY2hlLnB1dChoLHUucHJvbWlzZSk7ZWxzZXttfHwobT10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKSk7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHttfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksdS5wcm9taXNlKX0oMCxyLmFzc2VydCkobSYmbS5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bX1gO3RoaXMudHJhbnNsYXRlRm9udChkKS50aGVuKChlPT57dm9pZCAwIT09ZS5mb250VHlwZSYmbC5zdGF0cy5hZGRGb250VHlwZShlLmZvbnRUeXBlKTt1LnJlc29sdmUobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRyYW5zbGF0ZX0pOygwLHIud2FybikoYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTt0cnl7Y29uc3QgZT1mJiZmLmdldCgiRm9udEZpbGUzIiksdD1lJiZlLmdldCgiU3VidHlwZSIpLGE9KDAsby5nZXRGb250VHlwZSkoZC50eXBlLHQmJnQubmFtZSk7dm9pZCAwIT09YSYmbC5zdGF0cy5hZGRGb250VHlwZShhKX1jYXRjaChlKXt9dS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgcy5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIHUucHJvbWlzZX1idWlsZFBhdGgoZSx0LGEsbj0hMSl7Y29uc3QgaT1lLmxlbmd0aC0xO2F8fChhPVtdKTtpZihpPDB8fGUuZm5BcnJheVtpXSE9PXIuT1BTLmNvbnN0cnVjdFBhdGgpe2lmKG4peygwLHIud2FybikoYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3Aoci5PUFMuc2F2ZSxudWxsKX1sZXQgaTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107aT1bTWF0aC5taW4oYVswXSxlKSxNYXRoLm1heChhWzBdLGUpLE1hdGgubWluKGFbMV0sdCksTWF0aC5tYXgoYVsxXSx0KV07YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86aT1bYVswXSxhWzBdLGFbMV0sYVsxXV07YnJlYWs7ZGVmYXVsdDppPVsxLzAsLTEvMCwxLzAsLTEvMF19ZS5hZGRPcChyLk9QUy5jb25zdHJ1Y3RQYXRoLFtbdF0sYSxpXSk7biYmZS5hZGRPcChyLk9QUy5yZXN0b3JlLG51bGwpfWVsc2V7Y29uc3Qgbj1lLmFyZ3NBcnJheVtpXTtuWzBdLnB1c2godCk7blsxXS5wdXNoKC4uLmEpO2NvbnN0IHM9blsyXTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107c1swXT1NYXRoLm1pbihzWzBdLGFbMF0sZSk7c1sxXT1NYXRoLm1heChzWzFdLGFbMF0sZSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0sdCk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0sdCk7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86c1swXT1NYXRoLm1pbihzWzBdLGFbMF0pO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdKTtzWzJdPU1hdGgubWluKHNbMl0sYVsxXSk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KXtyZXR1cm4gUy5Db2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTphfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JDb2xvclNwYWNlfSk7KDAsci53YXJuKShgcGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSl9cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cn0pe2xldCBuPXIuZ2V0KGUpO2lmKCFuKXtjb25zdCBpPXUuUGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLmhhbmRsZXIsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGEpLmdldElSKCk7bj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtyLnNldChlLG4pO3RoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSl9cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLG4scyxvLGMsbCxoLGQpe2NvbnN0IGY9YS5wb3AoKTtpZihmIGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBnPXMuZ2V0UmF3KGYubmFtZSkscD1nIGluc3RhbmNlb2YgaS5SZWYmJmguZ2V0QnlSZWYoZyk7aWYocCl0cnl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGwsaT0oMCx1LmdldFRpbGluZ1BhdHRlcm5JUikocC5vcGVyYXRvckxpc3RJUixwLmRpY3Qscik7ZS5hZGRPcCh0LGkpO3JldHVybn1jYXRjaChlKXt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihtKXtjb25zdCBpPW0gaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0/bS5kaWN0Om0scz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihzPT09RSl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LHIsbyxtLGksZSxjLGgpfWlmKHM9PT1EKXtjb25zdCBhPWkuZ2V0KCJTaGFkaW5nIikscj1pLmdldEFycmF5KCJNYXRyaXgiKSxuPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO2UuYWRkT3AodCxbIlNoYWRpbmciLG4scl0pO3JldHVybn10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtzfWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtmfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApeygwLHIud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgaS5OYW1lKXtzd2l0Y2gocy5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChzLm5hbWUpO2JyZWFrO2RlZmF1bHQ6KDAsci53YXJuKShgSW52YWxpZCBvcGVyYXRvciAke3MubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8bjtyKyspe2NvbnN0IG49ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKG4pO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgbiBpbnN0YW5jZW9mIGkuUmVmJiZhLnB1c2gobi50b1N0cmluZygpKX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIikubmFtZTtpZigiT0NHIj09PW4pcmV0dXJue3R5cGU6bixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1uKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6bixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgaS5OYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIGkuUmVmKXJldHVybnt0eXBlOm4saWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6cz1udWxsLGZhbGxiYWNrRm9udERpY3Q6bz1udWxsfSl7YT1hfHxpLkRpY3QuZW1wdHk7cz1zfHxuZXcgRXZhbFN0YXRlO2lmKCFuKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IGM9dGhpcyxsPXRoaXMueHJlZjtsZXQgaD0hMTtjb25zdCB1PW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxkPW5ldyBtLkxvY2FsQ29sb3JTcGFjZUNhY2hlLGY9bmV3IG0uTG9jYWxHU3RhdGVDYWNoZSxnPW5ldyBtLkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxiPWEuZ2V0KCJYT2JqZWN0Iil8fGkuRGljdC5lbXB0eSx3PWEuZ2V0KCJQYXR0ZXJuIil8fGkuRGljdC5lbXB0eSx4PW5ldyBTdGF0ZU1hbmFnZXIocyksaz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbCx4KSxDPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWsuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKW4uYWRkT3Aoci5PUFMucmVzdG9yZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHMpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3Qsbi5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscyl9Y2F0Y2goZSl7cyhlKX19KSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Qy5yZXNldCgpO2NvbnN0IG09e307bGV0IHYsRixPLFQsTSxFO2Zvcig7ISh2PUMuY2hlY2soKSk7KXttLmFyZ3M9bnVsbDtpZighay5yZWFkKG0pKWJyZWFrO2xldCBlPW0uYXJncyxzPW0uZm47c3dpdGNoKDB8cyl7Y2FzZSByLk9QUy5wYWludFhPYmplY3Q6RT1lWzBdaW5zdGFuY2VvZiBpLk5hbWU7TT1lWzBdLm5hbWU7aWYoRSl7Y29uc3QgdD11LmdldEJ5TmFtZShNKTtpZih0KXtuLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBvPWIuZ2V0UmF3KE0pO2lmKG8gaW5zdGFuY2VvZiBpLlJlZil7Y29uc3QgdD11LmdldEJ5UmVmKG8pO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2UoKTtyZXR1cm59Y29uc3QgYT1jLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShvLGMucGFnZUluZGV4KTtpZihhKXtuLmFkZERlcGVuZGVuY3koYS5vYmpJZCk7bi5hZGRJbWFnZU9wcyhhLmZuLGEuYXJncyxhLm9wdGlvbmFsQ29udGVudCk7ZSgpO3JldHVybn1vPWwuZmV0Y2gobyl9aWYoIShvIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBoPW8uZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGggaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09aC5uYW1lKWlmKCJJbWFnZSIhPT1oLm5hbWUpe2lmKCJQUyIhPT1oLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtoLm5hbWV9YCk7KDAsci5pbmZvKSgiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOm8sb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkudGhlbihlLHMpO2Vsc2V7eC5zYXZlKCk7Yy5idWlsZEZvcm1YT2JqZWN0KGEsbyxudWxsLG4sdCx4LnN0YXRlLmNsb25lKCksZCkudGhlbigoZnVuY3Rpb24oKXt4LnJlc3RvcmUoKTtlKCl9KSxzKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvclhPYmplY3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBEPWVbMV07bmV4dChjLmhhbmRsZVNldEZvbnQoYSxlLG51bGwsbix0LHguc3RhdGUsbykudGhlbigoZnVuY3Rpb24oZSl7bi5hZGREZXBlbmRlbmN5KGUpO24uYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxEXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDpoPSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDpoPSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIFI9ZVswXS5jYWNoZUtleTtpZihSKXtjb25zdCB0PXUuZ2V0QnlOYW1lKFIpO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6Uixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCF4LnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KHguc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0seC5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZigheC5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udCh4LnN0YXRlKTtjb250aW51ZX12YXIgTD1bXSxqPXguc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/TC5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LGopKToibnVtYmVyIj09dHlwZW9mIHQmJkwucHVzaCh0KTtlWzBdPUw7cz1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7bi5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7bi5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6eC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9Uy5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGwsZCk7aWYodCl7eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxsLGQpO2lmKHQpe3guc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpUPXguc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnguc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlQ9eC5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1ULm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4obixyLk9QUy5zZXRGaWxsQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09VC5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKG4sci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciAkPWEuZ2V0KCJTaGFkaW5nIik7aWYoISQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgXz0kLmdldChlWzBdLm5hbWUpO2lmKCFfKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2MucGFyc2VTaGFkaW5nKHtzaGFkaW5nOl8scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pXTtzPXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkU9ZVswXWluc3RhbmNlb2YgaS5OYW1lO009ZVswXS5uYW1lO2lmKEUpe2NvbnN0IHQ9Zi5nZXRCeU5hbWUoTSk7aWYodCl7dC5sZW5ndGg+MCYmbi5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1vLmdldChNKTtpZighKGwgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmwsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSx0YXNrOnQsc3RhdGVNYW5hZ2VyOngsbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckV4dEdTdGF0ZX0pOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6Yy5idWlsZFBhdGgobixzLGUsaCk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKChlPT57bi5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTtjLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JNYXJrZWRDb250ZW50fSk7KDAsci53YXJuKShgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgaS5EaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmRlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihGPTAsTz1lLmxlbmd0aDtGPE8mJiEoZVtGXWluc3RhbmNlb2YgaS5EaWN0KTtGKyspO2lmKEY8Tyl7KDAsci53YXJuKSgiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIrcyk7Y29udGludWV9fX1uLmFkZE9wKHMsZSl9aWYodiluZXh0KE4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JPcGVyYXRvckxpc3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmEsc3RhdGVNYW5hZ2VyOm49bnVsbCxjb21iaW5lVGV4dEl0ZW1zOnM9ITEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bz0hMSxzaW5rOmMsc2VlblN0eWxlczpsPW5ldyBTZXQsdmlld0JveDp1LG1hcmtlZENvbnRlbnREYXRhOmQ9bnVsbH0pe2E9YXx8aS5EaWN0LmVtcHR5O249bnx8bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtvJiYoZD1kfHx7bGV2ZWw6MH0pO2NvbnN0IGY9KDAsaC5nZXROb3JtYWxpemVkVW5pY29kZXMpKCksZz17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9LHA9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sYj1bIiAiLCIgIl07bGV0IFM9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oUysxKSUyLGE9IiAiIT09YltTXSYmIiAiPT09Ylt0XTtiW1NdPWU7Uz10O3JldHVybiBhfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7YlswXT1iWzFdPSIgIjtTPTB9Y29uc3QgeD10aGlzLGs9dGhpcy54cmVmLEM9W107bGV0IHY9bnVsbDtjb25zdCBGPW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxPPW5ldyBtLkxvY2FsR1N0YXRlQ2FjaGUsVD1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsayxuKTtsZXQgTTtmdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9TS5mb250LHQ9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxyLmlzQXJyYXlFcXVhbCkoTS5mb250TWF0cml4LHIuRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpNLmZvbnRNYXRyaXhbM10pfXJldHVybiByLlV0aWwudHJhbnNmb3JtKE0uY3RtLHIuVXRpbC50cmFuc2Zvcm0oTS50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihwLmluaXRpYWxpemVkKXJldHVybiBwO2NvbnN0IGU9TS5mb250LHQ9ZS5sb2FkZWROYW1lO2lmKCFsLmhhcyh0KSl7bC5hZGQodCk7Zy5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9fXAuZm9udE5hbWU9dDtjb25zdCBhPXAudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7cC53aWR0aD1wLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3AuaGVpZ2h0PXAudG90YWxIZWlnaHQ9MDtwLnZlcnRpY2FsPSEwfWVsc2V7cC53aWR0aD1wLnRvdGFsV2lkdGg9MDtwLmhlaWdodD1wLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTtwLnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLG49TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSk7cC50ZXh0QWR2YW5jZVNjYWxlPW4qcjtwLnRyYWNraW5nU3BhY2VNaW49LjEqTS5mb250U2l6ZTtwLm5vdEFTcGFjZT0uMDMqTS5mb250U2l6ZTtwLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKk0uZm9udFNpemU7cC5zcGFjZUluRmxvd01pbj0uMSpNLmZvbnRTaXplO3Auc3BhY2VJbkZsb3dNYXg9LjYqTS5mb250U2l6ZTtwLmhhc0VPTD0hMTtwLmluaXRpYWxpemVkPSEwO3JldHVybiBwfWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCFwLmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pKmU7aWYodCE9PXAudGV4dEFkdmFuY2VTY2FsZSl7aWYocC52ZXJ0aWNhbCl7cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlO3AuaGVpZ2h0PTB9ZWxzZXtwLnRvdGFsV2lkdGgrPXAud2lkdGgqcC50ZXh0QWR2YW5jZVNjYWxlO3Aud2lkdGg9MH1wLnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLG4pe3JldHVybiB4LmxvYWRGb250KGUsbixhKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5mb250LmlzVHlwZTNGb250P2UubG9hZFR5cGUzRGF0YSh4LGEsdCkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSk6ZX0pKS50aGVuKChmdW5jdGlvbihlKXtNLmZvbnQ9ZS5mb250O00uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbigpe2NvbnN0IGU9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgdD1lWzRdLGE9ZVs1XTtjb25zdCByPXQtdVswXSxuPWEtdVsxXTtpZihyPDB8fHI+dVsyXXx8bjwwfHxuPnVbM10pcmV0dXJuITE7aWYoIXN8fCFNLmZvbnR8fCFwLnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IGk9cC5wcmV2VHJhbnNmb3JtWzRdLG89cC5wcmV2VHJhbnNmb3JtWzVdO2lmKGk9PT10JiZvPT09YSlyZXR1cm4hMDtsZXQgYz0tMTtlWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0/Yz1lWzBdPjA/MDoxODA6ZVsxXSYmMD09PWVbMF0mJjA9PT1lWzNdJiYoYz1lWzFdPjA/OTA6MjcwKTtzd2l0Y2goYyl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W3QsYV09W2EsdF07W2ksb109W28saV07YnJlYWs7Y2FzZSAxODA6W3QsYSxpLG9dPVstdCwtYSwtaSwtb107YnJlYWs7Y2FzZSAyNzA6W3QsYV09Wy1hLC10XTtbaSxvXT1bLW8sLWldO2JyZWFrO2RlZmF1bHQ6W3QsYV09YXBwbHlJbnZlcnNlUm90YXRpb24odCxhLGUpO1tpLG9dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksbyxwLnByZXZUcmFuc2Zvcm0pfWlmKE0uZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0oby1hKS9wLnRleHRBZHZhbmNlU2NhbGUscj10LWksbj1NYXRoLnNpZ24ocC5oZWlnaHQpO2lmKGU8bipwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHIpPi41KnAud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhyKT5wLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnAubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qcC50cmFja2luZ1NwYWNlTWluKXAuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSxwLnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXAuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0Ok1hdGguYWJzKGUpLHRyYW5zZm9ybTpwLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6cC5mb250TmFtZSxoYXNFT0w6ITF9KX1lbHNlIHAuaGVpZ2h0Kz1lO3JldHVybiEwfWNvbnN0IGw9KHQtaSkvcC50ZXh0QWR2YW5jZVNjYWxlLGg9YS1vLGQ9TWF0aC5zaWduKHAud2lkdGgpO2lmKGw8ZCpwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGgpPi41KnAuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoaCk+cC5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfWw8PWQqcC5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobDw9ZCpwLnRyYWNraW5nU3BhY2VNaW4pcC53aWR0aCs9bDtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGwscC5wcmV2VHJhbnNmb3JtLGQpKWlmKDA9PT1wLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7Zy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDpNYXRoLmFicyhsKSxoZWlnaHQ6MCx0cmFuc2Zvcm06cC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnAuZm9udE5hbWUsaGFzRU9MOiExfSl9ZWxzZSBwLndpZHRoKz1sO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1NLmZvbnQ7aWYoIWUpe2NvbnN0IGU9TS5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpNLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxuPU0uZm9udE1hdHJpeFswXSpNLmZvbnRTaXplO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3Qgcz1yW2VdO2lmKHMuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBvPU0uY2hhclNwYWNpbmcrKGUrMT09PWk/dDowKSxjPXMud2lkdGg7YS52ZXJ0aWNhbCYmKGM9cy52bWV0cmljP3Mudm1ldHJpY1swXTotYyk7bGV0IGw9YypuO2lmKHMuaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtvKz0tbCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1vKX1lbHNle28rPWwrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgobypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKCkpY29udGludWU7Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtzLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobD0wKTtpZihhLnZlcnRpY2FsKXtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxsKTtsPU1hdGguYWJzKGwpO3UuaGVpZ2h0Kz1sfWVsc2V7bCo9TS50ZXh0SFNjYWxlO00udHJhbnNsYXRlVGV4dE1hdHJpeChsLDApO3Uud2lkdGgrPWx9bCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtsZXQgZD1zLnVuaWNvZGU7ZD1mW2RdfHxkO2Q9KDAsaC5yZXZlcnNlSWZSdGwpKGQpO3NhdmVMYXN0Q2hhcihkKSYmdS5zdHIucHVzaCgiICIpO3Uuc3RyLnB1c2goZCk7byYmKGEudmVydGljYWw/TS50cmFuc2xhdGVUZXh0TWF0cml4KDAsLW8pOk0udHJhbnNsYXRlVGV4dE1hdHJpeChvKk0udGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYocC5pbml0aWFsaXplZCl7cC5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGcuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk0uZm9udC5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGEpe2lmKGEqcC5zcGFjZUluRmxvd01pbjw9ZSYmZTw9YSpwLnNwYWNlSW5GbG93TWF4KXtpZihwLmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO3Auc3RyLnB1c2goIiAiKX1yZXR1cm4hMX1jb25zdCByPXAuZm9udE5hbWU7bGV0IG49MDtpZihwLnZlcnRpY2FsKXtuPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhuKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpyLGhhc0VPTDohMX0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYocC5pbml0aWFsaXplZCYmcC5zdHIpe3AudmVydGljYWw/cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlOnAudG90YWxXaWR0aCs9cC53aWR0aCpwLnRleHRBZHZhbmNlU2NhbGU7Zy5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lLnN0ci5qb2luKCIiKSxhPSgwLHcuYmlkaSkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fShwKSk7cC5pbml0aWFsaXplZD0hMTtwLnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Zy5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2MuZW5xdWV1ZShnLHQpO2cuaXRlbXM9W107Zy5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgRT1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxoKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3QsYy5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaCl9Y2F0Y2goZSl7aChlKX19KSxoKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7RS5yZXNldCgpO2NvbnN0IGY9e307bGV0IHAsbT1bXTtmb3IoOyEocD1FLmNoZWNrKCkpOyl7bS5sZW5ndGg9MDtmLmFyZ3M9bTtpZighVC5yZWFkKGYpKWJyZWFrO009bi5zdGF0ZTtjb25zdCBlPWYuZm47bT1mLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zZXRGb250OnZhciBiPW1bMF0ubmFtZSx3PW1bMV07aWYoTS5mb250JiZiPT09TS5mb250TmFtZSYmdz09PU0uZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPWI7TS5mb250U2l6ZT13O25leHQoaGFuZGxlU2V0Rm9udChiLG51bGwpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTpNLnRleHRSaXNlPW1bMF07YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6TS50ZXh0SFNjYWxlPW1bMF0vMTAwO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZzpNLmxlYWRpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLm1vdmVUZXh0Ok0udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgobVswXSxtWzFdKTtNLnRleHRNYXRyaXg9TS50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0Ok0ubGVhZGluZz0tbVsxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOk0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIHIuT1BTLnNldFRleHRNYXRyaXg6TS5zZXRUZXh0TWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTtNLnNldFRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOk0uY2hhclNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOk0ud29yZFNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLmJlZ2luVGV4dDpNLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1jb25zdCBlPShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMsaD1tWzBdO2ZvcihsZXQgdD0wLGE9aC5sZW5ndGg7dDxhLTE7dCsrKXtjb25zdCBhPWhbdF07aWYoInN0cmluZyI9PXR5cGVvZiBhKUMucHVzaChhKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSYmMCE9PWEpe2NvbnN0IHQ9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp0LGV4dHJhU3BhY2luZzphKmV9KX19Y29uc3QgZj1oLmF0KC0xKTsic3RyaW5nIj09dHlwZW9mIGYmJkMucHVzaChmKTtpZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2Ugci5PUFMuc2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOm1bMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczptWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPW1bMF07TS5jaGFyU3BhY2luZz1tWzFdO00uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6bVsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRYT2JqZWN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7dnx8KHY9YS5nZXQoIlhPYmplY3QiKXx8aS5EaWN0LmVtcHR5KTt2YXIgUz1tWzBdaW5zdGFuY2VvZiBpLk5hbWUsRD1tWzBdLm5hbWU7aWYoUyYmRi5nZXRCeU5hbWUoRCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxoKXtpZighUyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IGY9di5nZXRSYXcoRCk7aWYoZiBpbnN0YW5jZW9mIGkuUmVmKXtpZihGLmdldEJ5UmVmKGYpKXtlKCk7cmV0dXJufWlmKHguZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKGYseC5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufWY9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9Zi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpe0Yuc2V0KEQsZi5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHA9bi5zdGF0ZS5jbG9uZSgpLG09bmV3IFN0YXRlTWFuYWdlcihwKSxiPWYuZGljdC5nZXRBcnJheSgiTWF0cml4Iik7QXJyYXkuaXNBcnJheShiKSYmNj09PWIubGVuZ3RoJiZtLnRyYW5zZm9ybShiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCB3PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtjLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGMuZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBjLnJlYWR5fX07eC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazp0LHJlc291cmNlczpmLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8YSxzdGF0ZU1hbmFnZXI6bSxjb21iaW5lVGV4dEl0ZW1zOnMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6byxzaW5rOncsc2VlblN0eWxlczpsLHZpZXdCb3g6dSxtYXJrZWRDb250ZW50RGF0YTpkfSkudGhlbigoZnVuY3Rpb24oKXt3LmVucXVldWVJbnZva2VkfHxGLnNldChELGYuZGljdC5vYmpJZCwhMCk7ZSgpfSksaCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOlM9bVswXWluc3RhbmNlb2YgaS5OYW1lO0Q9bVswXS5uYW1lO2lmKFMmJk8uZ2V0QnlOYW1lKEQpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uLmdldChEKTtpZighKHMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KCJGb250Iik7aWYobyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPW51bGw7TS5mb250U2l6ZT1vWzFdO2hhbmRsZVNldEZvbnQobnVsbCxvWzBdKS50aGVuKGUsdCl9ZWxzZXtPLnNldChELHMub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihvKXtkLmxldmVsKys7Zy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzptWzBdaW5zdGFuY2VvZiBpLk5hbWU/bVswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7ZC5sZXZlbCsrO2xldCBlPW51bGw7bVsxXWluc3RhbmNlb2YgaS5EaWN0JiYoZT1tWzFdLmdldCgiTUNJRCIpKTtnLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake3guaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tY2lkJHtlfWA6bnVsbCx0YWc6bVswXWluc3RhbmNlb2YgaS5OYW1lP21bMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7aWYoMD09PWQubGV2ZWwpYnJlYWs7ZC5sZXZlbC0tO2cuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX19aWYoZy5pdGVtcy5sZW5ndGg+PWMuZGVzaXJlZFNpemUpe3A9ITA7YnJlYWt9fWlmKHApbmV4dChOKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9ZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCxhKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgcztjb25zdCBsPXRoaXMucmVhZFRvVW5pY29kZShhLnRvVW5pY29kZXx8ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIikpO2lmKGEuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmKGEuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OnQuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtJiYocz10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBoPVtdO2xldCB1LGQ9bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7dT1lLmdldCgiRW5jb2RpbmciKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtkPXUuZ2V0KCJCYXNlRW5jb2RpbmciKTtkPWQgaW5zdGFuY2VvZiBpLk5hbWU/ZC5uYW1lOm51bGw7aWYodS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9dS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPW4uZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7aFt0KytdPWUubmFtZX19fX1lbHNlIGlmKHUgaW5zdGFuY2VvZiBpLk5hbWUpZD11Lm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGUpOygwLHIud2FybikoZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09ZCYmIk1hY0V4cGVydEVuY29kaW5nIiE9PWQmJiJXaW5BbnNpRW5jb2RpbmciIT09ZCYmKGQ9bnVsbCl9aWYoZClhLmRlZmF1bHRFbmNvZGluZz0oMCxjLmdldEVuY29kaW5nKShkKTtlbHNle2NvbnN0IGU9ISEoYS5mbGFncyZvLkZvbnRGbGFncy5TeW1ib2xpYyksdD0hIShhLmZsYWdzJm8uRm9udEZsYWdzLk5vbnN5bWJvbGljKTt1PWMuU3RhbmRhcmRFbmNvZGluZzsiVHJ1ZVR5cGUiIT09YS50eXBlfHx0fHwodT1jLldpbkFuc2lFbmNvZGluZyk7aWYoZSl7dT1jLk1hY1JvbWFuRW5jb2Rpbmc7YS5maWxlJiYhYS5pc0ludGVybmFsRm9udHx8KC9TeW1ib2wvaS50ZXN0KGEubmFtZSk/dT1jLlN5bWJvbFNldEVuY29kaW5nOi9EaW5nYmF0c3xXaW5nZGluZ3MvaS50ZXN0KGEubmFtZSkmJih1PWMuWmFwZkRpbmdiYXRzRW5jb2RpbmcpKX1hLmRlZmF1bHRFbmNvZGluZz11fWEuZGlmZmVyZW5jZXM9aDthLmJhc2VFbmNvZGluZ05hbWU9ZDthLmhhc0VuY29kaW5nPSEhZHx8aC5sZW5ndGg+MDthLmRpY3Q9ZTtyZXR1cm4gbC50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtyZXR1cm4gdGhpcy5idWlsZFRvVW5pY29kZShhKX0pKS50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtzJiYoYS5jaWRUb0dpZE1hcD10aGlzLnJlYWRDaWRUb0dpZE1hcChzLGUpKTtyZXR1cm4gYX0pKX1fc2ltcGxlRm9udFRvVW5pY29kZShlLHQ9ITEpeygwLHIuYXNzZXJ0KSghZS5jb21wb3NpdGUsIk11c3QgYmUgYSBzaW1wbGUgZm9udC4iKTtjb25zdCBhPVtdLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxpPWUuYmFzZUVuY29kaW5nTmFtZSxzPWUuZGlmZmVyZW5jZXM7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdOyIubm90ZGVmIiE9PXQmJihuW2VdPXQpfWNvbnN0IG89KDAsay5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcihjb25zdCByIGluIG4pe2xldCBzPW5bcl07aWYoIiI9PT1zKWNvbnRpbnVlO2xldCBsPW9bc107aWYodm9pZCAwIT09bCl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpO2NvbnRpbnVlfWxldCB1PTA7c3dpdGNoKHNbMF0pe2Nhc2UiRyI6Mz09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihzLmxlbmd0aD49MyYmcy5sZW5ndGg8PTQpe2NvbnN0IGE9cy5zdWJzdHJpbmcoMSk7aWYodCl7dT1wYXJzZUludChhLDE2KTticmVha311PSthO2lmKE51bWJlci5pc05hTih1KSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpsPSgwLGguZ2V0VW5pY29kZUZvckdseXBoKShzLG8pOy0xIT09bCYmKHU9bCl9aWYodT4wJiZ1PD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKHUpKXtpZihpJiZ1PT09K3Ipe2NvbnN0IGU9KDAsYy5nZXRFbmNvZGluZykoaSk7aWYoZSYmKHM9ZVtyXSkpe2Fbcl09U3RyaW5nLmZyb21DaGFyQ29kZShvW3NdKTtjb250aW51ZX19YVtyXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh1KX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD0hIWUudG9Vbmljb2RlJiZlLnRvVW5pY29kZS5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scz1pLk5hbWUuZ2V0KGAke3R9LSR7YX0tVUNTMmApLG89YXdhaXQgbi5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXTtlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgYT1vLmxvb2t1cCh0KTthJiYoY1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChhLmNoYXJDb2RlQXQoMCk8PDgpK2EuY2hhckNvZGVBdCgxKSkpfSkpO3JldHVybiBuZXcgZi5Ub1VuaWNvZGVNYXAoYyl9cmV0dXJuIG5ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfXJlYWRUb1VuaWNvZGUoZSl7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIGkuTmFtZT9uLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uSWRlbnRpdHlDTWFwP25ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBmLlRvVW5pY29kZU1hcChlLmdldE1hcCgpKX0pKTplIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtP24uQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcClyZXR1cm4gbmV3IGYuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgdD1uZXcgQXJyYXkoZS5sZW5ndGgpO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpe3RbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk7cmV0dXJufWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0yKXtjb25zdCB0PWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JnQpKXtyLnB1c2godCk7Y29udGludWV9ZSs9Mjtjb25zdCBuPWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtyLnB1c2goKCgxMDIzJnQpPDwxMCkrKDEwMjMmbikrNjU1MzYpfXRbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucil9KSk7cmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0KX0pLChlPT57aWYoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRvVW5pY29kZX0pOygwLHIud2FybikoYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpOlByb21pc2UucmVzb2x2ZShudWxsKX1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lW3IrK108PDh8ZVtyXSxpPXI+PjE7KDAhPT1ufHx0LmhhcyhpKSkmJihhW2ldPW4pfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IHI9dGhpcy54cmVmO2xldCBuPVtdLHM9MDtjb25zdCBjPVtdO2xldCBsLGgsdSxkLGYsZyxwLG07aWYoYS5jb21wb3NpdGUpe3M9ZS5oYXMoIkRXIik/ZS5nZXQoIkRXIik6MWUzO209ZS5nZXQoIlciKTtpZihtKWZvcihoPTAsdT1tLmxlbmd0aDtoPHU7aCsrKXtnPXIuZmV0Y2hJZlJlZihtW2grK10pO3A9ci5mZXRjaElmUmVmKG1baF0pO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjtkKyspbltnKytdPXIuZmV0Y2hJZlJlZihwW2RdKTtlbHNle2NvbnN0IGU9ci5mZXRjaElmUmVmKG1bKytoXSk7Zm9yKGQ9ZztkPD1wO2QrKyluW2RdPWV9fWlmKGEudmVydGljYWwpe2xldCB0PWUuZ2V0QXJyYXkoIkRXMiIpfHxbODgwLC0xZTNdO2w9W3RbMV0sLjUqcyx0WzBdXTt0PWUuZ2V0KCJXMiIpO2lmKHQpZm9yKGg9MCx1PXQubGVuZ3RoO2g8dTtoKyspe2c9ci5mZXRjaElmUmVmKHRbaCsrXSk7cD1yLmZldGNoSWZSZWYodFtoXSk7aWYoQXJyYXkuaXNBcnJheShwKSlmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmO2QrKyljW2crK109W3IuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2RdKV07ZWxzZXtjb25zdCBlPVtyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKV07Zm9yKGQ9ZztkPD1wO2QrKyljW2RdPWV9fX19ZWxzZXtjb25zdCBvPWEuZmlyc3RDaGFyO209ZS5nZXQoIldpZHRocyIpO2lmKG0pe2Q9bztmb3IoaD0wLHU9bS5sZW5ndGg7aDx1O2grKyluW2QrK109ci5mZXRjaElmUmVmKG1baF0pO3M9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7bj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYj0hMCx5PXM7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQpaWYoeSl7aWYoeSE9PXQpe2I9ITE7YnJlYWt9fWVsc2UgeT10fWImJihhLmZsYWdzfD1vLkZvbnRGbGFncy5GaXhlZFBpdGNoKTthLmRlZmF1bHRXaWR0aD1zO2Eud2lkdGhzPW47YS5kZWZhdWx0Vk1ldHJpY3M9bDthLnZtZXRyaWNzPWN9aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBuPSgwLGwuZ2V0U3RkRm9udE1hcCkoKVtlXXx8ZTtjb25zdCBpPSgwLHYuZ2V0TWV0cmljcykoKTtuIGluIGl8fChuPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgcz1pW25dO2lmKCJudW1iZXIiPT10eXBlb2Ygcyl7dD1zO3I9ITB9ZWxzZSBhPXMoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOnIsd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5kaWZmZXJlbmNlcyxuPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIHImJmVbclt0XV0/YVt0XT1lW3JbdF1dOnQgaW4gbiYmZVtuW3RdXSYmKGFbdF09ZVtuW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bGV0IG4scyxvPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtvPSEwfWNvbnN0IGM9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChvPzY1NTM1OjI1NSksaD1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihoKXtuPW5ldyBGLk11cm11ckhhc2gzXzY0O2NvbnN0IGE9dC5nZXRSYXcoIkVuY29kaW5nIik7aWYoYSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShhLm5hbWUpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5EaWN0KWZvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgaS5OYW1lP2Fbcl09dC5uYW1lOigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZikmJihhW3JdPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke2N9LSR7bH1gKTtzPWUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpO2lmKHMgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pe2NvbnN0IGU9cy5zdHJ8fHMsdD1lLmJ1ZmZlcj9uZXcgVWludDhBcnJheShlLmJ1ZmZlci5idWZmZXIsMCxlLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoZS5ieXRlcy5idWZmZXIsZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtuLnVwZGF0ZSh0KX1lbHNlIHMgaW5zdGFuY2VvZiBpLk5hbWUmJm4udXBkYXRlKHMubmFtZSk7Y29uc3Qgcj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKG8pe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgb2YgdCkoIm51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgaS5SZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIGkuTmFtZT9uLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBpLlJlZj9uLnVwZGF0ZShyLnRvU3RyaW5nKCkpOnIgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0mJm4udXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpoLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpvLHR5cGU6YS5uYW1lLGZpcnN0Q2hhcjpjLGxhc3RDaGFyOmwsdG9Vbmljb2RlOnMsaGFzaDpuP24uaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6YSxjb21wb3NpdGU6Yyx0eXBlOmgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpwfSl7Y29uc3QgbT0iVHlwZTMiPT09aDtsZXQgeTtpZighZSl7aWYoIW0pe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkJhc2UgZm9udCBpcyBub3Qgc3BlY2lmaWVkIik7ZT1lLm5hbWUucmVwbGFjZSgvWyxfXS9nLCItIik7Y29uc3Qgbj10aGlzLmdldEJhc2VGb250TWV0cmljcyhlKSxjPWUuc3BsaXQoIi0iKVswXSxkPSh0aGlzLmlzU2VyaWZGb250KGMpP28uRm9udEZsYWdzLlNlcmlmOjApfChuLm1vbm9zcGFjZT9vLkZvbnRGbGFncy5GaXhlZFBpdGNoOjApfCgoMCxsLmdldFN5bWJvbHNGb250cykoKVtjXT9vLkZvbnRGbGFncy5TeW1ib2xpYzpvLkZvbnRGbGFncy5Ob25zeW1ib2xpYyk7eT17dHlwZTpoLG5hbWU6ZSxsb2FkZWROYW1lOmEubG9hZGVkTmFtZSx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZCxmaXJzdENoYXI6dSxsYXN0Q2hhcjpmLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Om19O2NvbnN0IHA9dC5nZXQoIldpZHRocyIpLGI9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgdz1udWxsO2lmKGIpe3kuaXNTdGFuZGFyZEZvbnQ9ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShiKTt5LmlzSW50ZXJuYWxGb250PSEhd31yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCx0LHkpLnRoZW4oKHQ9PntpZihwKXtjb25zdCBlPVtdO2xldCBhPXU7Zm9yKGNvbnN0IHQgb2YgcCllW2ErK109dGhpcy54cmVmLmZldGNoSWZSZWYodCk7dC53aWR0aHM9ZX1lbHNlIHQud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgobi53aWR0aHMsdCk7cmV0dXJuIG5ldyBzLkZvbnQoZSx3LHQpfSkpfShlPW5ldyBpLkRpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLGkuTmFtZS5nZXQoaCkpO2Uuc2V0KCJGb250QkJveCIsdC5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgdyxTLHgsayxDLHY9ZS5nZXQoIkZvbnROYW1lIiksRj10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIHYmJih2PWkuTmFtZS5nZXQodikpOyJzdHJpbmciPT10eXBlb2YgRiYmKEY9aS5OYW1lLmdldChGKSk7aWYoIW0pe2NvbnN0IGU9diYmdi5uYW1lLHQ9RiYmRi5uYW1lO2lmKGUhPT10KXsoMCxyLmluZm8pKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtlfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke3R9Ii5gKTtlJiZ0JiZ0LnN0YXJ0c1dpdGgoZSkmJih2PUYpfX12PXZ8fEY7aWYoISh2IGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTt0cnl7dz1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt2Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTt3PW5ldyBiLk51bGxTdHJlYW19bGV0IE89ITEsVD0hMSxNPW51bGw7aWYodyl7aWYody5kaWN0KXtjb25zdCBlPXcuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgaS5OYW1lJiYoUz1lLm5hbWUpO3g9dy5kaWN0LmdldCgiTGVuZ3RoMSIpO2s9dy5kaWN0LmdldCgiTGVuZ3RoMiIpO0M9dy5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKHApe2NvbnN0IGU9KDAsZC5nZXRYZmFGb250TmFtZSkodi5uYW1lKTtpZihlKXtwLmZvbnRGYW1pbHk9YCR7cC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO3AubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7TT1lLmZhY3RvcnN8fG51bGw7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO1Q9ISF3O2E9dD0oMCxkLmdldFhmYUZvbnREaWN0KSh2Lm5hbWUpO2M9ITB9fWVsc2UgaWYoIW0pe2NvbnN0IGU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKSh2Lm5hbWUpO2lmKGUpe089ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTtUPSEhd319eT17dHlwZTpoLG5hbWU6di5uYW1lLHN1YnR5cGU6UyxmaWxlOncsbGVuZ3RoMTp4LGxlbmd0aDI6ayxsZW5ndGgzOkMsaXNTdGFuZGFyZEZvbnQ6Tyxpc0ludGVybmFsRm9udDpULGxvYWRlZE5hbWU6YS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpjLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDp0LmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6ZyxiYm94OmUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OmUuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OmUuZ2V0KCJEZXNjZW50IikseEhlaWdodDplLmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDplLmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6ZS5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6ZS5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6bSxjc3NGb250SW5mbzpwLHNjYWxlRmFjdG9yczpNfTtpZihjKXtjb25zdCBlPWEuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBpLk5hbWUmJih5LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBuLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt5LmNNYXA9dDt5LnZlcnRpY2FsPXkuY01hcC52ZXJ0aWNhbH1yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxhLHkpLnRoZW4oKGE9Pnt0aGlzLmV4dHJhY3RXaWR0aHModCxlLGEpO3JldHVybiBuZXcgcy5Gb250KHYubmFtZSx3LGEpfSkpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsYSxuKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3QgaT1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjthLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKG4uaWdub3JlRXJyb3JzKXthLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEJ1aWxkUGF0aH0pOygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0JiZ0LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IGkuRGljdDtlLnNldCgiQmFzZUZvbnQiLGkuTmFtZS5nZXQoIlBERkpTLUZhbGxiYWNrRm9udCIpKTtlLnNldCgiVHlwZSIsaS5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixpLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixpLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX10LlBhcnRpYWxFdmFsdWF0b3I9UGFydGlhbEV2YWx1YXRvcjtjbGFzcyBUcmFuc2xhdGVkRm9udHtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmEsZXZhbHVhdG9yT3B0aW9uczpyfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWE7dGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1yfHxNO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxhKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pO24ucGFyc2luZ1R5cGUzRm9udD0hMDtjb25zdCBzPW5ldyBpLlJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7Y29uc3Qgbz10aGlzLmZvbnQsYz10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBsPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGg9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksdT10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxkPU9iamVjdC5jcmVhdGUobnVsbCksZj1yLlV0aWwubm9ybWFsaXplUmVjdChvLmJib3h8fFswLDAsMCwwXSksZz1mWzJdLWZbMF0scD1mWzNdLWZbMV0sbT1NYXRoLmh5cG90KGcscCk7Zm9yKGNvbnN0IGUgb2YgaC5nZXRLZXlzKCkpbD1sLnRoZW4oKCgpPT57Y29uc3QgdD1oLmdldChlKSxpPW5ldyBPLk9wZXJhdG9yTGlzdDtyZXR1cm4gbi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6aX0pLnRoZW4oKCgpPT57aS5mbkFycmF5WzBdPT09ci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGksbSk7ZFtlXT1pLmdldElSKCk7Zm9yKGNvbnN0IGUgb2YgaS5kZXBlbmRlbmNpZXMpYy5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLHIud2FybikoYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgYT1uZXcgTy5PcGVyYXRvckxpc3Q7ZFtlXT1hLmdldElSKCl9KSl9KSk7dGhpcy50eXBlM0xvYWRlZD1sLnRoZW4oKCgpPT57by5jaGFyUHJvY09wZXJhdG9yTGlzdD1kO2lmKHRoaXMuX2Jib3gpe28uaXNDaGFyQkJveD0hMDtvLmJib3g9dGhpcy5fYmJveH19KSk7cmV0dXJuIHRoaXMudHlwZTNMb2FkZWR9X3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMoZSx0PU5hTil7Y29uc3QgYT1yLlV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksbj1hWzJdLWFbMF0saT1hWzNdLWFbMV0scz1NYXRoLmh5cG90KG4saSk7aWYoMD09PW58fDA9PT1pKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGFbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxhWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0sYVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGFbM10pfWxldCBvPTAsYz1lLmxlbmd0aDtmb3IoO288Yzspe3N3aXRjaChlLmZuQXJyYXlbb10pe2Nhc2Ugci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzOmJyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldEZpbGxDb2xvclNwYWNlOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOmNhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTpjYXNlIHIuT1BTLnNldEZpbGxHcmF5OmNhc2Ugci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDTVlLQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2hhZGluZ0ZpbGw6Y2FzZSByLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2MtLTtjb250aW51ZTtjYXNlIHIuT1BTLnNldEdTdGF0ZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtvXTtsZXQgYT0wLG49dC5sZW5ndGg7Zm9yKDthPG47KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7bi0tO2NvbnRpbnVlfWErK319bysrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09ci5VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9ci5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTt0aGlzLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsYSxyLG4saSl7Y29uc3Qgcz10aGlzLnRleHRNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09bjtzWzVdPWl9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEscixuLGkpe2NvbnN0IHM9dGhpcy50ZXh0TGluZU1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1uO3NbNV09aX10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KHIuSURFTlRJVFlfTUFUUklYKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPXIuVGV4dFJlbmRlcmluZ01vZGUuRklMTDt0aGlzLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5zdHJva2VDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtjb25zdCBlPSgwLEMuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS53PXtpZDpyLk9QUy5zZXRMaW5lV2lkdGgsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5KPXtpZDpyLk9QUy5zZXRMaW5lQ2FwLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2Uuaj17aWQ6ci5PUFMuc2V0TGluZUpvaW4sbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NPXtpZDpyLk9QUy5zZXRNaXRlckxpbWl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZD17aWQ6ci5PUFMuc2V0RGFzaCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLnJpPXtpZDpyLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5pPXtpZDpyLk9QUy5zZXRGbGF0bmVzcyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmdzPXtpZDpyLk9QUy5zZXRHU3RhdGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5xPXtpZDpyLk9QUy5zYXZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuUT17aWQ6ci5PUFMucmVzdG9yZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmNtPXtpZDpyLk9QUy50cmFuc2Zvcm0sbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5tPXtpZDpyLk9QUy5tb3ZlVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5sPXtpZDpyLk9QUy5saW5lVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5jPXtpZDpyLk9QUy5jdXJ2ZVRvLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2Uudj17aWQ6ci5PUFMuY3VydmVUbzIsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS55PXtpZDpyLk9QUy5jdXJ2ZVRvMyxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLmg9e2lkOnIuT1BTLmNsb3NlUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLnJlPXtpZDpyLk9QUy5yZWN0YW5nbGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5TPXtpZDpyLk9QUy5zdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5zPXtpZDpyLk9QUy5jbG9zZVN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmY9e2lkOnIuT1BTLmZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5GPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImYqIl09e2lkOnIuT1BTLmVvRmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkI9e2lkOnIuT1BTLmZpbGxTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiQioiXT17aWQ6ci5PUFMuZW9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuYj17aWQ6ci5PUFMuY2xvc2VGaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImIqIl09e2lkOnIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uubj17aWQ6ci5PUFMuZW5kUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlc9e2lkOnIuT1BTLmNsaXAsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiVyoiXT17aWQ6ci5PUFMuZW9DbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlQ9e2lkOnIuT1BTLmJlZ2luVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVUPXtpZDpyLk9QUy5lbmRUZXh0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGM9e2lkOnIuT1BTLnNldENoYXJTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHc9e2lkOnIuT1BTLnNldFdvcmRTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHo9e2lkOnIuT1BTLnNldEhTY2FsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRMPXtpZDpyLk9QUy5zZXRMZWFkaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGY9e2lkOnIuT1BTLnNldEZvbnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5Ucj17aWQ6ci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5Ucz17aWQ6ci5PUFMuc2V0VGV4dFJpc2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UZD17aWQ6ci5PUFMubW92ZVRleHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5URD17aWQ6ci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVG09e2lkOnIuT1BTLnNldFRleHRNYXRyaXgsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZVsiVCoiXT17aWQ6ci5PUFMubmV4dExpbmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5Uaj17aWQ6ci5PUFMuc2hvd1RleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5USj17aWQ6ci5PUFMuc2hvd1NwYWNlZFRleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZVsiJyJdPXtpZDpyLk9QUy5uZXh0TGluZVNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbJyInXT17aWQ6ci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5kMD17aWQ6ci5PUFMuc2V0Q2hhcldpZHRoLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuZDE9e2lkOnIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLkNTPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuY3M9e2lkOnIuT1BTLnNldEZpbGxDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuU0M9e2lkOnIuT1BTLnNldFN0cm9rZUNvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9O2UuU0NOPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2Uuc2M9e2lkOnIuT1BTLnNldEZpbGxDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLnNjbj17aWQ6ci5PUFMuc2V0RmlsbENvbG9yTixudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH07ZS5HPXtpZDpyLk9QUy5zZXRTdHJva2VHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZz17aWQ6ci5PUFMuc2V0RmlsbEdyYXksbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5SRz17aWQ6ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3IsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5yZz17aWQ6ci5PUFMuc2V0RmlsbFJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuSz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2Uuaz17aWQ6ci5PUFMuc2V0RmlsbENNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLnNoPXtpZDpyLk9QUy5zaGFkaW5nRmlsbCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJJPXtpZDpyLk9QUy5iZWdpbklubGluZUltYWdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuSUQ9e2lkOnIuT1BTLmJlZ2luSW1hZ2VEYXRhLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRUk9e2lkOnIuT1BTLmVuZElubGluZUltYWdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRG89e2lkOnIuT1BTLnBhaW50WE9iamVjdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLk1QPXtpZDpyLk9QUy5tYXJrUG9pbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5EUD17aWQ6ci5PUFMubWFya1BvaW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5CTUM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJEQz17aWQ6ci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5FTUM9e2lkOnIuT1BTLmVuZE1hcmtlZENvbnRlbnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CWD17aWQ6ci5PUFMuYmVnaW5Db21wYXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FWD17aWQ6ci5PUFMuZW5kQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQk09bnVsbDtlLkJEPW51bGw7ZS50cnVlPW51bGw7ZS5mYT1udWxsO2UuZmFsPW51bGw7ZS5mYWxzPW51bGw7ZS5mYWxzZT1udWxsO2UubnU9bnVsbDtlLm51bD1udWxsO2UubnVsbD1udWxsfSkpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJvcE1hcCIsZSgpKX1zdGF0aWMgZ2V0IE1BWF9JTlZBTElEX1BBVEhfT1BTKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCl9Y29uc3RydWN0b3IoZSx0LGE9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IHAuUGFyc2VyKHtsZXhlcjpuZXcgcC5MZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIGkuQ21kKXtjb25zdCBuPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW25dO2lmKCFpKXsoMCxyLndhcm4pKGBVbmtub3duIGNvbW1hbmQgIiR7bn0iLmApO2NvbnRpbnVlfWNvbnN0IHM9aS5pZCxvPWkubnVtQXJncztsZXQgYz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49ci5PUFMubW92ZVRvJiZzPD1yLk9QUy5lbmRQYXRoO2lmKGkudmFyaWFibGVBcmdzKWM+byYmKDAsci5pbmZvKShgQ29tbWFuZCAke259OiBleHBlY3RlZCBbMCwgJHtvfV0gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gKTtlbHNle2lmKGMhPT1vKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO2M+bzspe2UucHVzaCh0LnNoaWZ0KCkpO2MtLX1mb3IoO2M8byYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7YysrfX1pZihjPG8pe2NvbnN0IGU9YGNvbW1hbmQgJHtufTogZXhwZWN0ZWQgJHtvfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtjfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTsoMCxyLndhcm4pKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09aS5FT0YpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2Ugci5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPUV2YWx1YXRvclByZXByb2Nlc3Nvcn0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSgxNSksbz1hKDQpLGM9YSg4KTtjb25zdCBsPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0saD0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT5oKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1hO2NvbnN0IHQ9YS5jaGFyQ29kZUF0KHIpKzE7dD4yNTU/YT1hLnN1YnN0cmluZygwLHItMSkrU3RyaW5nLmZyb21DaGFyQ29kZShhLmNoYXJDb2RlQXQoci0xKSsxKSsiXDAiOmE9YS5zdWJzdHJpbmcoMCxyKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBuPTA7Zm9yKDtlPD10JiZuPHI7KXt0aGlzLl9tYXBbZV09YVtuKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBuPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLHM9bi5sZW5ndGg7aTxzO2krKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtpKSk+Pj4wO2NvbnN0IHM9bltpXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLG49c1tlKytdO2lmKHI+PXQmJnI8PW4pe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1pKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjspe2NvbnN0IG49clt0KytdLGk9clt0KytdO2lmKGU+PW4mJmU8PWkpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9Q01hcDtjbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX10LklkZW50aXR5Q01hcD1JZGVudGl0eUNNYXA7Y29uc3QgdT1mdW5jdGlvbiBCaW5hcnlDTWFwUmVhZGVyQ2xvc3VyZSgpe2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPD10O3IrKylhPWE8PDh8ZVtyXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPWE7bj49MDtuLS0pe3IrPWVbbl0rdFtuXTtlW25dPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3QgZT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBpPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcz10LG89MCxjPTA7Zm9yKDtzPj0wOyl7Zm9yKDtjPDgmJm4ubGVuZ3RoPjA7KXtvfD1uWy0taV08PGM7Yys9N31lW3NdPTI1NSZvO3MtLTtvPj49ODtjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKyl7cj0oMSZyKTw8OHxlW25dO2Vbbl09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtsZXQgdD0iIjtmb3IobGV0IGE9MDthPGU7YSsrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkTnVtYmVyKCkpO3JldHVybiB0fX1yZXR1cm4gY2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKHQsYSxyKXtjb25zdCBuPW5ldyBCaW5hcnlDTWFwU3RyZWFtKHQpLGk9bi5yZWFkQnl0ZSgpO2EudmVydGljYWw9ISEoMSZpKTtsZXQgcz1udWxsO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoZSksYz1uZXcgVWludDhBcnJheShlKSxsPW5ldyBVaW50OEFycmF5KGUpLGg9bmV3IFVpbnQ4QXJyYXkoZSksdT1uZXcgVWludDhBcnJheShlKTtsZXQgZCxmO2Zvcig7KGY9bi5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IHQ9Zj4+NTtpZig3PT09dCl7c3dpdGNoKDMxJmYpe2Nhc2UgMDpuLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cz1uLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCByPSEhKDE2JmYpLGk9MTUmZjtpZihpKzE+ZSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBnPTEscD1uLnJlYWROdW1iZXIoKTtzd2l0Y2godCl7Y2FzZSAwOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKX1icmVhaztjYXNlIDE6bi5yZWFkSGV4KG8saSk7bi5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtuLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7bi5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOm4ucmVhZEhleChsLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBPbmUoaGV4VG9JbnQobCxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxpKTtpZighcil7bi5yZWFkSGV4TnVtYmVyKHUsaSk7YWRkSGV4KGwsdSxpKX1kPW4ucmVhZFNpZ25lZCgpKyhkKzEpO2EubWFwT25lKGhleFRvSW50KGwsaSksZCl9YnJlYWs7Y2FzZSAzOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7ZD1uLnJlYWROdW1iZXIoKTthLm1hcENpZFJhbmdlKGhleFRvSW50KG8saSksaGV4VG9JbnQoYyxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtpZihyKW8uc2V0KGMpO2Vsc2V7bi5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8sYyxpKX1uLnJlYWRIZXhOdW1iZXIoYyxpKTthZGRIZXgoYyxvLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBDaWRSYW5nZShoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSksZCl9YnJlYWs7Y2FzZSA0Om4ucmVhZEhleChsLGcpO24ucmVhZEhleChoLGkpO2EubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsZyk7aWYoIXIpe24ucmVhZEhleE51bWJlcih1LGcpO2FkZEhleChsLHUsZyl9aW5jSGV4KGgsaSk7bi5yZWFkSGV4U2lnbmVkKHUsaSk7YWRkSGV4KGgsdSxpKTthLm1hcE9uZShoZXhUb0ludChsLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2Nhc2UgNTpuLnJlYWRIZXgobyxnKTtuLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO24ucmVhZEhleChoLGkpO2EubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGMsZyk7aWYocilvLnNldChjKTtlbHNle24ucmVhZEhleE51bWJlcihvLGcpO2FkZEhleChvLGMsZyl9bi5yZWFkSGV4TnVtYmVyKGMsZyk7YWRkSGV4KGMsbyxnKTtuLnJlYWRIZXgoaCxpKTthLm1hcEJmUmFuZ2UoaGV4VG9JbnQobyxnKSxoZXhUb0ludChjLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7dH1gKX19cmV0dXJuIHM/cihzKTphfX19KCksZD1mdW5jdGlvbiBDTWFwRmFjdG9yeUNsb3N1cmUoKXtmdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKXx8InN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoYSk/U3RyaW5nLmZyb21DaGFyQ29kZShhKTphO2UubWFwQmZSYW5nZShyLGksdCl9ZWxzZXtpZighKDAsbi5pc0NtZCkoYSwiWyIpKWJyZWFrO3thPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyEoMCxuLmlzQ21kKShhLCJdIikmJmEhPT1uLkVPRjspe3MucHVzaChhKTthPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShyLGkscyl9fX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoKDAsbi5pc0NtZCkoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcz1hO2UubWFwQ2lkUmFuZ2UocixpLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IGk9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxyLGkpfXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2Ygbi5OYW1lJiYoZS5uYW1lPWEubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxhLGkpe2xldCBzLGM7ZTpmb3IoOzspdHJ5e2NvbnN0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoYSBpbnN0YW5jZW9mIG4uTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3M9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBuLkNtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBuLk5hbWUmJihjPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFpJiZjJiYoaT1jKTtyZXR1cm4gaT9leHRlbmRDTWFwKGUsYSxpKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWwuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmEsY29tcHJlc3Npb25UeXBlOm59PWF3YWl0IHQoZSksaT1uZXcgQ01hcCghMCk7aWYobj09PXIuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkpcmV0dXJuKG5ldyB1KS5wcm9jZXNzKGEsaSwoZT0+ZXh0ZW5kQ01hcChpLHQsZSkpKTtpZihuPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2NvbnN0IGU9bmV3IHMuTGV4ZXIobmV3IGMuU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKGksZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke259YCl9cmV0dXJue2FzeW5jIGNyZWF0ZShlKXtjb25zdCB0PWUuZW5jb2RpbmcsYT1lLmZldGNoQnVpbHRJbkNNYXAscj1lLnVzZUNNYXA7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAodC5uYW1lLGEpO2lmKHQgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBzLkxleGVyKHQpLGEscik7cmV0dXJuIGUuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLGEpOmV9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19fSgpO3QuQ01hcEZhY3Rvcnk9ZH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnNlcj10LkxpbmVhcml6YXRpb249dC5MZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpLHM9YSgxNiksbz1hKDE4KSxjPWEoMTkpLGw9YSgyMSksaD1hKDIyKSx1PWEoMjUpLGQ9YSgyNyksZj1hKDI5KSxnPWEoOCkscD1hKDMwKSxtPWEoMzEpO2Z1bmN0aW9uIGNvbXB1dGVBZGxlcjMyKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MSxyPTA7Zm9yKGxldCBuPTA7bjx0Oysrbil7YSs9MjU1JmVbbl07cis9YX1yZXR1cm4gciU2NTUyMTw8MTZ8YSU2NTUyMX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2Ygbi5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2Ygbi5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1uLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBhO2Nhc2UiPDwiOmNvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09bi5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIG4uTmFtZSkpeygwLHIuaW5mbykoIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW4uRU9GKWJyZWFrO3Muc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW4uRU9GKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gczt0aHJvdyBuZXcgaS5QYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKCgwLG4uaXNDbWQpKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM7dGhpcy5zaGlmdCgpO3JldHVybiBzO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiYoMCxuLmlzQ21kKSh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1uLlJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPWUucG9zO2xldCBzLG8sYz0wO2Zvcig7LTEhPT0ocz1lLmdldEJ5dGUoKSk7KWlmKDA9PT1jKWM9Njk9PT1zPzE6MDtlbHNlIGlmKDE9PT1jKWM9NzM9PT1zPzI6MDtlbHNleygwLHIuYXNzZXJ0KSgyPT09YywiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBpbnZhbGlkIHN0YXRlLiIpO2lmKDMyPT09c3x8MTA9PT1zfHwxMz09PXMpe289ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxMCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtzPWFbZV07aWYoKDAhPT1zfHwwPT09YVtlKzFdKSYmKDEwIT09cyYmMTMhPT1zJiYoczwzMnx8cz4xMjcpKSl7Yz0wO2JyZWFrfX1pZigyIT09Yyljb250aW51ZTtpZih0Lmtub3duQ29tbWFuZHMpe2NvbnN0IGU9dC5wZWVrT2JqKCk7ZSBpbnN0YW5jZW9mIG4uQ21kJiYhdC5rbm93bkNvbW1hbmRzW2UuY21kXSYmKGM9MCl9ZWxzZSgwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtpZigyPT09YylicmVha31lbHNlIGM9MH1pZigtMT09PXMpeygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihvKXsoMCxyLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLW8pKX19bGV0IGw9NDtlLnNraXAoLWwpO3M9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChsKTsoMCxpLmlzV2hpdGVTcGFjZSkocyl8fGwtLTtyZXR1cm4gZS5wb3MtbC1hfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYSxuLGk9ITE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09YSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzppPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0Om49ZS5nZXRVaW50MTYoKTtuPjI/ZS5za2lwKG4tMik6ZS5za2lwKC0yKX1pZihpKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWEpe2NvbnN0IHQ9ZS5wb3M7YT1lLnBlZWtCeXRlKCk7Zm9yKDsoMCxpLmlzV2hpdGVTcGFjZSkoYSk7KXtlLnNraXAoKTthPWUucGVla0J5dGUoKX1pZig2Mj09PWEpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IG49ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1hOyk7Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGE9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YSlhPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YSlhPTczPT09dD8yOjA7ZWxzZSBpZigyPT09YSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGE9dC5zdHJlYW0saT1uZXcgbi5EaWN0KHRoaXMueHJlZik7bGV0IHM7Zm9yKDshKDAsbi5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bi5FT0YpYnJlYWs7aS5zZXQodCx0aGlzLmdldE9iaihlKSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihzPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbz1pLmdldCgiRiIsIkZpbHRlciIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBuLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBuLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1hLnBvcztsZXQgaDtzd2l0Y2goYyl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpoPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpoPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpoPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9bGV0IHUsZD1hLm1ha2VTdWJTdHJlYW0obCxoLGkpO2lmKGg8MWUzJiZzPDU1NTIpe2NvbnN0IGU9ZC5nZXRCeXRlcygpO2QucmVzZXQoKTtjb25zdCByPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjb25zdCBpPWEuZ2V0Qnl0ZXMocyk7YS5wb3M9cjt1PWNvbXB1dGVBZGxlcjMyKGUpKyJfIitjb21wdXRlQWRsZXIzMihpKTtjb25zdCBvPXRoaXMuaW1hZ2VDYWNoZVt1XTtpZih2b2lkIDAhPT1vKXt0aGlzLmJ1ZjI9bi5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtvLnJlc2V0KCk7cmV0dXJuIG99fWUmJihkPWUuY3JlYXRlU3RyZWFtKGQsaCkpO2Q9dGhpcy5maWx0ZXIoZCxpLGgpO2QuZGljdD1pO2lmKHZvaWQgMCE9PXUpe2QuY2FjaGVLZXk9YGlubGluZV8ke2h9XyR7dX1gO3RoaXMuaW1hZ2VDYWNoZVt1XT1kfXRoaXMuYnVmMj1uLkNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBkfV9maW5kU3RyZWFtTGVuZ3RoKGUsdCl7Y29uc3R7c3RyZWFtOmF9PXRoaXMubGV4ZXI7YS5wb3M9ZTtjb25zdCByPXQubGVuZ3RoO2Zvcig7YS5wb3M8YS5lbmQ7KXtjb25zdCBuPWEucGVla0J5dGVzKDIwNDgpLGk9bi5sZW5ndGgtcjtpZihpPD0wKWJyZWFrO2xldCBzPTA7Zm9yKDtzPGk7KXtsZXQgaT0wO2Zvcig7aTxyJiZuW3MraV09PT10W2ldOylpKys7aWYoaT49cil7YS5wb3MrPXM7cmV0dXJuIGEucG9zLWV9cysrfWEucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IHM9YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpeygwLHIuaW5mbykoYEJhZCBsZW5ndGggIiR7YyYmYy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO2M9MH1zLnBvcz1vK2M7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmKDAsbi5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSk7bGV0IHQ9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGUpO2lmKHQ8MCl7Y29uc3QgYT0xO2ZvcihsZXQgbj0xO248PWE7bisrKXtjb25zdCBhPWUubGVuZ3RoLW4sYz1lLnNsaWNlKDAsYSksbD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKG8sYyk7aWYobD49MCl7Y29uc3QgZT1zLnBlZWtCeXRlcyhhKzEpW2FdO2lmKCEoMCxpLmlzV2hpdGVTcGFjZSkoZSkpYnJlYWs7KDAsci5pbmZvKShgRm91bmQgIiR7KDAsci5ieXRlc1RvU3RyaW5nKShjKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PWw7YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKX1jPXQ7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3M9cy5tYWtlU3ViU3RyZWFtKG8sYyxlKTt0JiYocz10LmNyZWF0ZVN0cmVhbShzLGMpKTtzPXRoaXMuZmlsdGVyKHMsZSxjKTtzLmRpY3Q9ZTtyZXR1cm4gc31maWx0ZXIoZSx0LGEpe2xldCBpPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGkgaW5zdGFuY2VvZiBuLk5hbWUpe0FycmF5LmlzQXJyYXkocykmJigwLHIud2FybikoIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsYSxzKX1sZXQgbz1hO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxhPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pO2lmKCEoaSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtpfSJgKTtzPW51bGw7QXJyYXkuaXNBcnJheShhKSYmYyBpbiBhJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW2NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKTtvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEsbil7aWYoMD09PWEpeygwLHIud2FybikoYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBnLk51bGxTdHJlYW19Y29uc3QgYj10aGlzLnhyZWYuc3RhdHM7dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkZMQVRFKTtyZXR1cm4gbj9uZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGwuRmxhdGVTdHJlYW0oZSxhKSxhLG4pOm5ldyBsLkZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkxaVyk7bGV0IHQ9MTtpZihuKXtuLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9bi5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGYuTFpXU3RyZWFtKGUsYSx0KSxhLG4pfXJldHVybiBuZXcgZi5MWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5EQ1QpO3JldHVybiBuZXcgdS5KcGVnU3RyZWFtKGUsYSxuKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOmIuYWRkU3RyZWFtVHlwZShyLlN0cmVhbVR5cGUuSlBYKTtyZXR1cm4gbmV3IGQuSnB4U3RyZWFtKGUsYSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkE4NSk7cmV0dXJuIG5ldyBzLkFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5BSFgpO3JldHVybiBuZXcgby5Bc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkNDRik7cmV0dXJuIG5ldyBjLkNDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5STFgpO3JldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkpCSUcpO3JldHVybiBuZXcgaC5KYmlnMlN0cmVhbShlLGEsbil9KDAsci53YXJuKShgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgZy5OdWxsU3RyZWFtfX19dC5QYXJzZXI9UGFyc2VyO2NvbnN0IGI9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxhPTAsbj0wO2lmKDQ1PT09ZSl7bj0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSBpZig0Mz09PWUpe249MTtlPXRoaXMubmV4dENoYXIoKX1pZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXthPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpeygwLHIuaW5mbykoYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcih0KX1uPW58fDE7bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodClvPTEwKm8rcjtlbHNlezAhPT1hJiYoYSo9MTApO3M9MTAqcytyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKSgwLHIud2FybikoIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtjPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKHMvPWEpO3QmJihzKj0xMCoqKGMqbykpO3JldHVybiBuKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgbj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxuKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjpuPXRoaXMubmV4dENoYXIoKTtzd2l0Y2gobil7Y2FzZS0xOigwLHIud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1Jm47bj10aGlzLm5leHRDaGFyKCk7aT0hMDtpZihuPj00OCYmbjw9NTUpe2U9KGU8PDMpKygxNSZuKTtuPXRoaXMubmV4dENoYXIoKTtpZihuPj00OCYmbjw9NTUpe2k9ITE7ZT0oZTw8MykrKDE1Jm4pfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9aWYodClicmVhaztpfHwobj10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGJbZV0peygwLHIud2FybikoIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgbj10b0hleERpZ2l0KGUpO2lmKC0xIT09bil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpeygwLHIud2FybikoYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDR8aSkpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJigwLHIud2FybikoYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gbi5OYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHwoMCxyLndhcm4pKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOigwLHIud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxhLG49dGhpcy5jdXJyZW50Q2hhcixpPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKG48MCl7KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PW4pe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09YltuXSl7aWYoaSl7dD10b0hleERpZ2l0KG4pO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihuKTtuPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXthPXRvSGV4RGlnaXQobik7aWYoLTE9PT1hKXt0aGlzLl9oZXhTdHJpbmdXYXJuKG4pO249dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8YSkpfWk9IWk7bj10aGlzLm5leHRDaGFyKCl9ZWxzZSBuPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG4uRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgiPj4iKX1yZXR1cm4gbi5DbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KGEpfX1jb25zdCBpPXRoaXMua25vd25Db21tYW5kcztsZXQgcz1pJiZ2b2lkIDAhPT1pW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1pW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2EubGVuZ3RofWApO2E9ZTtzPWkmJnZvaWQgMCE9PWlbYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIG4uQ21kLmdldChhKX1wZWVrT2JqKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MsdD10aGlzLmN1cnJlbnRDaGFyLGE9dGhpcy5iZWdpbklubGluZUltYWdlUG9zO2xldCBuO3RyeXtuPXRoaXMuZ2V0T2JqKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBwZWVrT2JqOiAke2V9YCl9dGhpcy5zdHJlYW0ucG9zPWU7dGhpcy5jdXJyZW50Q2hhcj10O3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz1hO3JldHVybiBufXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19dC5MZXhlcj1MZXhlcjt0LkxpbmVhcml6YXRpb249Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoYT9yPj0wOnI+MCkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxpPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBvLGM7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoMCxuLmlzQ21kKShpLCJvYmoiKSYmcyBpbnN0YW5jZW9mIG4uRGljdCYmIm51bWJlciI9PXR5cGVvZihvPXMuZ2V0KCJMaW5lYXJpemVkIikpJiZvPjApKXJldHVybiBudWxsO2lmKChjPWdldEludChzLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6YyxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShzKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQocywiTyIpLGVuZEZpcnN0OmdldEludChzLCJFIiksbnVtUGFnZXM6Z2V0SW50KHMsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHMsIlQiKSxwYWdlRmlyc3Q6cy5oYXMoIlAiKT9nZXRJbnQocywiUCIsITApOjB9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaTg1U3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KSxuPWEoNCk7Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7KDAsbi5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7c1tpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKXNbaV09MTE3O3RoaXMuZW9mPSEwfWxldCBvPTA7Zm9yKGk9MDtpPDU7KytpKW89ODUqbysoc1tpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZvO28+Pj04fX19fXQuQXNjaWk4NVN0cmVhbT1Bc2NpaTg1U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPXQuRGVjb2RlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSg4KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIHIuQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO3RoaXMucG9zPTA7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmVvZj0hMTt0aGlzLmJ1ZmZlcj1pO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIodCtlKTthPXQrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2soKTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTthPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KHQsYSl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IG4uU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fXQuRGVjb2RlU3RyZWFtPURlY29kZVN0cmVhbTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3QmJnQuZGljdC5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGEscik7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBhPXQuZ2V0QmFzZVN0cmVhbXMoKTthJiZlLnB1c2goLi4uYSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaUhleFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGE9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IHI9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKG48MCluPWU7ZWxzZXthW3IrK109bjw8NHxlO249LTF9fWlmKG4+PTAmJnRoaXMuZW9mKXthW3IrK109bjw8NDtuPS0xfXRoaXMuZmlyc3REaWdpdD1uO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fXQuQXNjaWlIZXhTdHJlYW09QXNjaWlIZXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheFN0cmVhbT12b2lkIDA7dmFyIHI9YSgyMCksbj1hKDE3KSxpPWEoMyk7Y2xhc3MgQ0NJVFRGYXhTdHJlYW0gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBpLkRpY3R8fChhPWkuRGljdC5lbXB0eSk7Y29uc3Qgbj17bmV4dDooKT0+ZS5nZXRCeXRlKCl9O3RoaXMuY2NpdHRGYXhEZWNvZGVyPW5ldyByLkNDSVRURmF4RGVjb2RlcihuLHtLOmEuZ2V0KCJLIiksRW5kT2ZMaW5lOmEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpLFJvd3M6YS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmEuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6YS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fXQuQ0NJVFRGYXhTdHJlYW09Q0NJVFRGYXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheERlY29kZXI9dm9pZCAwO3ZhciByPWEoMik7Y29uc3Qgbj0tMSxpPVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLHM9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxvPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs4LDI5XSxbOCwyOV0sWzgsMzBdLFs4LDMwXSxbOCw0NV0sWzgsNDVdLFs4LDQ2XSxbOCw0Nl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbOCw0N10sWzgsNDddLFs4LDQ4XSxbOCw0OF0sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzgsMzNdLFs4LDMzXSxbOCwzNF0sWzgsMzRdLFs4LDM1XSxbOCwzNV0sWzgsMzZdLFs4LDM2XSxbOCwzN10sWzgsMzddLFs4LDM4XSxbOCwzOF0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzcsMTldLFs4LDMxXSxbOCwzMV0sWzgsMzJdLFs4LDMyXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs4LDUzXSxbOCw1M10sWzgsNTRdLFs4LDU0XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzgsMzldLFs4LDM5XSxbOCw0MF0sWzgsNDBdLFs4LDQxXSxbOCw0MV0sWzgsNDJdLFs4LDQyXSxbOCw0M10sWzgsNDNdLFs4LDQ0XSxbOCw0NF0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbOCw2MV0sWzgsNjFdLFs4LDYyXSxbOCw2Ml0sWzgsNjNdLFs4LDYzXSxbOCwwXSxbOCwwXSxbOCwzMjBdLFs4LDMyMF0sWzgsMzg0XSxbOCwzODRdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzcsMjddLFs3LDI3XSxbNywyN10sWzcsMjddLFs4LDU5XSxbOCw1OV0sWzgsNjBdLFs4LDYwXSxbOSwxNDcyXSxbOSwxNTM2XSxbOSwxNjAwXSxbOSwxNzI4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs4LDQ5XSxbOCw0OV0sWzgsNTBdLFs4LDUwXSxbOCw1MV0sWzgsNTFdLFs4LDUyXSxbOCw1Ml0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs4LDU1XSxbOCw1NV0sWzgsNTZdLFs4LDU2XSxbOCw1N10sWzgsNTddLFs4LDU4XSxbOCw1OF0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs4LDQ0OF0sWzgsNDQ4XSxbOCw1MTJdLFs4LDUxMl0sWzksNzA0XSxbOSw3NjhdLFs4LDY0MF0sWzgsNjQwXSxbOCw1NzZdLFs4LDU3Nl0sWzksODMyXSxbOSw4OTZdLFs5LDk2MF0sWzksMTAyNF0sWzksMTA4OF0sWzksMTE1Ml0sWzksMTIxNl0sWzksMTI4MF0sWzksMTM0NF0sWzksMTQwOF0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddXSxjPVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLGw9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0saD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbNiw5XSxbNiw4XSxbNSw3XSxbNSw3XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXV07dC5DQ0lUVEZheERlY29kZXI9Y2xhc3MgQ0NJVFRGYXhEZWNvZGVye2NvbnN0cnVjdG9yKGUsdD17fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm5leHQpdGhyb3cgbmV3IEVycm9yKCdDQ0lUVEZheERlY29kZXIgLSBpbnZhbGlkICJzb3VyY2UiIHBhcmFtZXRlci4nKTt0aGlzLnNvdXJjZT1lO3RoaXMuZW9mPSExO3RoaXMuZW5jb2Rpbmc9dC5LfHwwO3RoaXMuZW9saW5lPXQuRW5kT2ZMaW5lfHwhMTt0aGlzLmJ5dGVBbGlnbj10LkVuY29kZWRCeXRlQWxpZ258fCExO3RoaXMuY29sdW1ucz10LkNvbHVtbnN8fDE3Mjg7dGhpcy5yb3dzPXQuUm93c3x8MDtsZXQgYSxyPXQuRW5kT2ZCbG9jaztudWxsPT1yJiYocj0hMCk7dGhpcy5lb2Jsb2NrPXI7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCBpLHMsbyxjLGw7aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbyxsLGg7aWYodGhpcy5uZXh0TGluZTJEKXtmb3IoYz0wO3RbY108YTsrK2MpZVtjXT10W2NdO2VbYysrXT1hO2VbY109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtpPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChvKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbaSsxXSxzKTtlW2krMV08YSYmKGkrPTIpO2JyZWFrO2Nhc2UgMTpvPWw9MDtpZihzKXtkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KX1lbHNle2Rve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtpXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbaV0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2ldKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtpXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSBuOnRoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289MDtpZihzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyk7c149MX19bGV0IHU9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7bz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtvIT09biYmMSE9PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bzspe3RoaXMuX2VhdEJpdHMoMSk7bz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO3U9ITB9ZWxzZSBvPT09biYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZ1JiZ0aGlzLmJ5dGVBbGlnbil7bz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYyl7bz10aGlzLl9sb29rQml0cygxMik7MSE9PW8mJigwLHIuaW5mbykoImJhZCBydGMgY29kZTogIitvKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtvPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihvPT09bil7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJm8pfX10WzBdPjA/dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgbj10aGlzLmNvZGluZ1BvcztpZihlPmFbbl0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZuXnQmJisrbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IG49dGhpcy5jb2RpbmdQb3M7aWYoZT5hW25dKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmbl50JiYrK247YVtuXT1lfWVsc2UgaWYoZTxhW25dKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO24+MCYmZTxhW24tMV07KS0tbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBpPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1uKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPWlbdF07aWYoZSYmZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsaSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIG59X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHQ9PT1uKXJldHVybiAxO2U9dD4+NT09MD9zW3RdOm9bdD4+M107aWYoZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw5LG8pO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLHMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PW4pcmV0dXJuIDE7dD1lPj43PT0wP2NbZV06ZT4+OT09MCYmZT4+NyE9MD9sWyhlPj4xKS02NF06aFtlPj43XTtpZih0WzBdPjApe3RoaXMuX2VhdEJpdHModFswXSk7cmV0dXJuIHRbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgyLDYsaCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixsLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxjKTtpZihlWzBdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoImJhZCBibGFjayBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/bjp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GbGF0ZVN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDIpO2NvbnN0IGk9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxzPW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLG89bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxjPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxsPVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLHI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoKChhPDw4KStyKSUzMSE9MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigzMiZyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1hPDxyO3IrPTh9YT1pJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1pPj5lO3RoaXMuY29kZVNpemU9ci09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsYT1lWzBdLHI9ZVsxXTtsZXQgaSxzPXRoaXMuY29kZVNpemUsbz10aGlzLmNvZGVCdWY7Zm9yKDtzPHImJi0xIT09KGk9dC5nZXRCeXRlKCkpOyl7b3w9aTw8cztzKz04fWNvbnN0IGM9YVtvJigxPDxyKS0xXSxsPWM+PjE2LGg9NjU1MzUmYztpZihsPDF8fHM8bCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1vPj5sO3RoaXMuY29kZVNpemU9cy1sO3JldHVybiBofWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGEscj0wO2ZvcihhPTA7YTx0OysrYSllW2FdPnImJihyPWVbYV0pO2NvbnN0IG49MTw8cixpPW5ldyBJbnQzMkFycmF5KG4pO2ZvcihsZXQgcz0xLG89MCxjPTI7czw9cjsrK3Msbzw8PTEsYzw8PTEpZm9yKGxldCByPTA7cjx0OysrcilpZihlW3JdPT09cyl7bGV0IGU9MCx0PW87Zm9yKGE9MDthPHM7KythKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihhPWU7YTxuO2ErPWMpaVthXT1zPDwxNnxyOysrb31yZXR1cm5baSxyXX1yZWFkQmxvY2soKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHI7bGV0IHIsaCx1PXRoaXMuZ2V0Qml0cygzKTsxJnUmJih0aGlzLmVvZj0hMCk7dT4+PTE7aWYoMD09PXUpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2xldCByPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cnw9dDw8ODtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2l8PXQ8PDg7aWYoaSE9PSg2NTUzNSZ+cikmJigwIT09cnx8MCE9PWkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxvPXMrcjtlPXRoaXMuZW5zdXJlQnVmZmVyKG8pO3RoaXMuYnVmZmVyTGVuZ3RoPW87aWYoMD09PXIpLTE9PT1hLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWEuZ2V0Qnl0ZXMocik7ZS5zZXQodCxzKTt0Lmxlbmd0aDxyJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09dSl7cj1jO2g9bH1lbHNle2lmKDIhPT11KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxhPXRoaXMuZ2V0Qml0cyg1KSsxLG49dGhpcy5nZXRCaXRzKDQpKzQscz1uZXcgVWludDhBcnJheShpLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPG47KytvKXNbaVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTt0PTA7bz0wO2NvbnN0IGw9ZSthLHU9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGQsZixnO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKXtkPTI7Zj0zO2c9dH1lbHNlIGlmKDE3PT09ZSl7ZD0zO2Y9MztnPXQ9MH1lbHNle2lmKDE4IT09ZSl7dVtvKytdPXQ9ZTtjb250aW51ZX1kPTc7Zj0xMTtnPXQ9MH1sZXQgYT10aGlzLmdldEJpdHMoZCkrZjtmb3IoO2EtLSA+MDspdVtvKytdPWd9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoMCxlKSk7aD10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoZSxsKSl9fWU9dGhpcy5idWZmZXI7bGV0IGQ9ZT9lLmxlbmd0aDowLGY9dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgYT10aGlzLmdldENvZGUocik7aWYoYTwyNTYpe2lmKGYrMT49ZCl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihmKzEpO2Q9ZS5sZW5ndGh9ZVtmKytdPWE7Y29udGludWV9aWYoMjU2PT09YSl7dGhpcy5idWZmZXJMZW5ndGg9ZjtyZXR1cm59YS09MjU3O2E9c1thXTtsZXQgbj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7dD0oNjU1MzUmYSkrbjthPXRoaXMuZ2V0Q29kZShoKTthPW9bYV07bj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7Y29uc3QgaT0oNjU1MzUmYSkrbjtpZihmK3Q+PWQpe2U9dGhpcy5lbnN1cmVCdWZmZXIoZit0KTtkPWUubGVuZ3RofWZvcihsZXQgYT0wO2E8dDsrK2EsKytmKWVbZl09ZVtmLWldfX19dC5GbGF0ZVN0cmVhbT1GbGF0ZVN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpiaWcyU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgxNyksaT1hKDMpLHM9YSgyMyksbz1hKDIpO2NsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBzLkpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiByLkJhc2VTdHJlYW0pe2NvbnN0IGE9ZS5nZXRCeXRlcygpO3QucHVzaCh7ZGF0YTphLHN0YXJ0OjAsZW5kOmEubGVuZ3RofSl9fXQucHVzaCh7ZGF0YTp0aGlzLmJ5dGVzLHN0YXJ0OjAsZW5kOnRoaXMuYnl0ZXMubGVuZ3RofSk7Y29uc3QgYT1lLnBhcnNlQ2h1bmtzKHQpLG49YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuO2UrKylhW2VdXj0yNTU7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1uO3RoaXMuZW9mPSEwfX10LkpiaWcyU3RyZWFtPUpiaWcyU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNCksaT1hKDI0KSxzPWEoMjApO2NsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoYEpCSUcyIGVycm9yOiAke2V9YCwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtjb25zdCBlPW5ldyBpLkFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZGVjb2RlciIsZSl9Z2V0IGNvbnRleHRDYWNoZSgpe2NvbnN0IGU9bmV3IENvbnRleHRDYWNoZTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY29udGV4dENhY2hlIixlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKHQpO2xldCBuPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGU7aSsrKXtjb25zdCBlPWEucmVhZEJpdChyLG4pO249bjwyNTY/bjw8MXxlOjUxMSYobjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IGk9cmVhZEJpdHMoMSkscz1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7cmV0dXJuIDA9PT1pP3M6cz4wPy1zOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IG49MTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuPW48PDF8dC5yZWFkQml0KHIsbil9cmV0dXJuIGE8MzE/biYoMTw8YSktMToyMTQ3NDgzNjQ3Jm59Y29uc3Qgbz1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLGM9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLGw9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxoPVszOTcxNywxOTQxLDIyOSw0MDVdLHU9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLG4saSxzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIWkmJiFuJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsbj1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1pW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6aVtvLTFdO2Q9bzwyP2g6aVtvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQobixzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBpfSh0LGEsbyk7Y29uc3QgbD0hIWksdT1jW3JdLmNvbmNhdChzKTt1LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgZD11Lmxlbmd0aCxmPW5ldyBJbnQ4QXJyYXkoZCksZz1uZXcgSW50OEFycmF5KGQpLHA9W107bGV0IG0sYix5PTAsdz0wLFM9MCx4PTA7Zm9yKGI9MDtiPGQ7YisrKXtmW2JdPXVbYl0ueDtnW2JdPXVbYl0ueTt3PU1hdGgubWluKHcsdVtiXS54KTtTPU1hdGgubWF4KFMsdVtiXS54KTt4PU1hdGgubWluKHgsdVtiXS55KTtiPGQtMSYmdVtiXS55PT09dVtiKzFdLnkmJnVbYl0ueD09PXVbYisxXS54LTE/eXw9MTw8ZC0xLWI6cC5wdXNoKGIpfWNvbnN0IGs9cC5sZW5ndGgsQz1uZXcgSW50OEFycmF5KGspLHY9bmV3IEludDhBcnJheShrKSxGPW5ldyBVaW50MTZBcnJheShrKTtmb3IobT0wO208azttKyspe2I9cFttXTtDW21dPXVbYl0ueDt2W21dPXVbYl0ueTtGW21dPTE8PGQtMS1ifWNvbnN0IE89LXcsVD0teCxNPXQtUyxFPWhbcl07bGV0IEQ9bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgTj1bXSxSPW8uZGVjb2RlcixMPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBqLCQsXyxVLFgsSD0wLHE9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZihuKXtIXj1SLnJlYWRCaXQoTCxFKTtpZihIKXtOLnB1c2goRCk7Y29udGludWV9fUQ9bmV3IFVpbnQ4QXJyYXkoRCk7Ti5wdXNoKEQpO2ZvcihqPTA7ajx0O2orKyl7aWYobCYmaVtlXVtqXSl7RFtqXT0wO2NvbnRpbnVlfWlmKGo+PU8mJmo8TSYmZT49VCl7cT1xPDwxJnk7Zm9yKGI9MDtiPGs7YisrKXskPWUrdltiXTtfPWorQ1tiXTtVPU5bJF1bX107aWYoVSl7VT1GW2JdO3F8PVV9fX1lbHNle3E9MDtYPWQtMTtmb3IoYj0wO2I8ZDtiKyssWC0tKXtfPWorZltiXTtpZihfPj0wJiZfPHQpeyQ9ZStnW2JdO2lmKCQ+PTApe1U9TlskXVtfXTtVJiYocXw9VTw8WCl9fX19Y29uc3QgYT1SLnJlYWRCaXQoTCxxKTtEW2pdPWF9fXJldHVybiBOfWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGEscixuLGkscyxvLGMpe2xldCBoPWxbYV0uY29kaW5nOzA9PT1hJiYoaD1oLmNvbmNhdChbb1swXV0pKTtjb25zdCBkPWgubGVuZ3RoLGY9bmV3IEludDMyQXJyYXkoZCksZz1uZXcgSW50MzJBcnJheShkKTtsZXQgcDtmb3IocD0wO3A8ZDtwKyspe2ZbcF09aFtwXS54O2dbcF09aFtwXS55fWxldCBtPWxbYV0ucmVmZXJlbmNlOzA9PT1hJiYobT1tLmNvbmNhdChbb1sxXV0pKTtjb25zdCBiPW0ubGVuZ3RoLHk9bmV3IEludDMyQXJyYXkoYiksdz1uZXcgSW50MzJBcnJheShiKTtmb3IocD0wO3A8YjtwKyspe3lbcF09bVtwXS54O3dbcF09bVtwXS55fWNvbnN0IFM9clswXS5sZW5ndGgseD1yLmxlbmd0aCxrPXVbYV0sQz1bXSx2PWMuZGVjb2RlcixGPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBPPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYocyl7T149di5yZWFkQml0KEYsayk7aWYoTyl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtDLnB1c2godCk7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG8sYyxsPTA7Zm9yKHA9MDtwPGQ7cCsrKXtvPWErZ1twXTtjPXMrZltwXTtvPDB8fGM8MHx8Yz49ZT9sPDw9MTpsPWw8PDF8Q1tvXVtjXX1mb3IocD0wO3A8YjtwKyspe289YSt3W3BdLWk7Yz1zK3lbcF0tbjtvPDB8fG8+PXh8fGM8MHx8Yz49Uz9sPDw9MTpsPWw8PDF8cltvXVtjXX1jb25zdCBoPXYucmVhZEJpdChGLGwpO3Rbc109aH19cmV0dXJuIEN9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5KXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3Qgdz1bXTtsZXQgUyx4O2ZvcihTPTA7UzxyO1MrKyl7eD1uZXcgVWludDhBcnJheShhKTtpZihuKWZvcihsZXQgZT0wO2U8YTtlKyspeFtlXT1uO3cucHVzaCh4KX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDtTPTA7Zm9yKDtTPGk7KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgbj0wO3M+MSYmKG49ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IGk9cyp2K24sRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksTz10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgVD1vW0ZdLE09VFswXS5sZW5ndGgsRT1ULmxlbmd0aDtpZihPKXtjb25zdCBlPWRlY29kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayksYT1kZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSxyPWRlY29kZUludGVnZXIoQywiSUFSRFkiLGspO00rPWU7RSs9dDtUPWRlY29kZVJlZmluZW1lbnQoTSxFLGcsVCwoZT4+MSkrYSwodD4+MSkrciwhMSxwLG0pfWNvbnN0IEQ9aS0oMSZ1PzA6RS0xKSxOPXItKDImdT9NLTE6MCk7bGV0IFIsTCxqO2lmKGwpe2ZvcihSPTA7UjxFO1IrKyl7eD13W04rUl07aWYoIXgpY29udGludWU7aj1UW1JdO2NvbnN0IGU9TWF0aC5taW4oYS1ELE0pO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXXw9altMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXV49altMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19cis9RS0xfWVsc2V7Zm9yKEw9MDtMPEU7TCsrKXt4PXdbRCtMXTtpZih4KXtqPVRbTF07c3dpdGNoKGQpe2Nhc2UgMDpmb3IoUj0wO1I8TTtSKyspeFtOK1JdfD1qW1JdO2JyZWFrO2Nhc2UgMjpmb3IoUj0wO1I8TTtSKyspeFtOK1JdXj1qW1JdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX19cis9TS0xfVMrKztjb25zdCAkPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09JClicmVhaztyKz0kK2h9fXJldHVybiB3fWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgYT17fTthLm51bWJlcj0oMCxuLnJlYWRVaW50MzIpKGUsdCk7Y29uc3Qgcj1lW3QrNF0saT02MyZyO2lmKCFvW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPW9baV07YS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmcik7Y29uc3Qgcz0hISg2NCZyKSxjPWVbdCs1XTtsZXQgbD1jPj41Jjc7Y29uc3QgaD1bMzEmY107bGV0IHU9dCs2O2lmKDc9PT1jKXtsPTUzNjg3MDkxMSYoMCxuLnJlYWRVaW50MzIpKGUsdS0xKTt1Kz0zO2xldCB0PWwrNz4+MztoWzBdPWVbdSsrXTtmb3IoOy0tdD4wOyloLnB1c2goZVt1KytdKX1lbHNlIGlmKDU9PT1jfHw2PT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2EucmV0YWluQml0cz1oO2xldCBmPTQ7YS5udW1iZXI8PTI1Nj9mPTE6YS5udW1iZXI8PTY1NTM2JiYoZj0yKTtjb25zdCBnPVtdO2xldCBwLG07Zm9yKHA9MDtwPGw7cCsrKXtsZXQgdDt0PTE9PT1mP2VbdV06Mj09PWY/KDAsbi5yZWFkVWludDE2KShlLHUpOigwLG4ucmVhZFVpbnQzMikoZSx1KTtnLnB1c2godCk7dSs9Zn1hLnJlZmVycmVkVG89ZztpZihzKXthLnBhZ2VBc3NvY2lhdGlvbj0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NH1lbHNlIGEucGFnZUFzc29jaWF0aW9uPWVbdSsrXTthLmxlbmd0aD0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NDtpZig0Mjk0OTY3Mjk1PT09YS5sZW5ndGgpe2lmKDM4IT09aSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHUpLHI9ISEoMSZlW3UrZF0pLG49NixpPW5ldyBVaW50OEFycmF5KG4pO2lmKCFyKXtpWzBdPTI1NTtpWzFdPTE3Mn1pWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O2lbM109dC5oZWlnaHQ+PjE2JjI1NTtpWzRdPXQuaGVpZ2h0Pj44JjI1NTtpWzVdPTI1NSZ0LmhlaWdodDtmb3IocD11LG09ZS5sZW5ndGg7cDxtO3ArKyl7bGV0IHQ9MDtmb3IoO3Q8biYmaVt0XT09PWVbcCt0XTspdCsrO2lmKHQ9PT1uKXthLmxlbmd0aD1wK247YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1hLmhlYWRlckVuZD11O3JldHVybiBhfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsYSxyKXtjb25zdCBuPVtdO2xldCBpPWE7Zm9yKDtpPHI7KXtjb25zdCBhPXJlYWRTZWdtZW50SGVhZGVyKHQsaSk7aT1hLmhlYWRlckVuZDtjb25zdCByPXtoZWFkZXI6YSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7ci5zdGFydD1pO2krPWEubGVuZ3RoO3IuZW5kPWl9bi5wdXNoKHIpO2lmKDUxPT09YS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bltlXS5zdGFydD1pO2krPW5bZV0uaGVhZGVyLmxlbmd0aDtuW2VdLmVuZD1pfXJldHVybiBufWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6KDAsbi5yZWFkVWludDMyKShlLHQpLGhlaWdodDooMCxuLnJlYWRVaW50MzIpKGUsdCs0KSx4OigwLG4ucmVhZFVpbnQzMikoZSx0KzgpLHk6KDAsbi5yZWFkVWludDMyKShlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBkPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBzLG8sYyxsLGg9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PSgwLG4ucmVhZFVpbnQxNikocixoKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7aCs9MjtpZighZS5odWZmbWFuKXtsPTA9PT1lLnRlbXBsYXRlPzQ6MTtvPVtdO2ZvcihjPTA7YzxsO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfWUuYXQ9b31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7bz1bXTtmb3IoYz0wO2M8MjtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn1lLnJlZmluZW1lbnRBdD1vfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgdT17fTt1LmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWQ7Y29uc3QgZj0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9Mjt1Lmh1ZmZtYW49ISEoMSZmKTt1LnJlZmluZW1lbnQ9ISEoMiZmKTt1LmxvZ1N0cmlwU2l6ZT1mPj4yJjM7dS5zdHJpcFNpemU9MTw8dS5sb2dTdHJpcFNpemU7dS5yZWZlcmVuY2VDb3JuZXI9Zj4+NCYzO3UudHJhbnNwb3NlZD0hISg2NCZmKTt1LmNvbWJpbmF0aW9uT3BlcmF0b3I9Zj4+NyYzO3UuZGVmYXVsdFBpeGVsVmFsdWU9Zj4+OSYxO3UuZHNPZmZzZXQ9Zjw8MTc+PjI3O3UucmVmaW5lbWVudFRlbXBsYXRlPWY+PjE1JjE7aWYodS5odWZmbWFuKXtjb25zdCBlPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO3UuaHVmZm1hbkZTPTMmZTt1Lmh1ZmZtYW5EUz1lPj4yJjM7dS5odWZmbWFuRFQ9ZT4+NCYzO3UuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7dS5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMzt1Lmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKHUucmVmaW5lbWVudCYmIXUucmVmaW5lbWVudFRlbXBsYXRlKXtvPVtdO2ZvcihjPTA7YzwyO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfXUucmVmaW5lbWVudEF0PW99dS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVt1LGEucmVmZXJyZWRUbyxyLGgsaV07YnJlYWs7Y2FzZSAxNjpjb25zdCBnPXt9LHA9cltoKytdO2cubW1yPSEhKDEmcCk7Zy50ZW1wbGF0ZT1wPj4xJjM7Zy5wYXR0ZXJuV2lkdGg9cltoKytdO2cucGF0dGVybkhlaWdodD1yW2grK107Zy5tYXhQYXR0ZXJuSW5kZXg9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZyxhLm51bWJlcixyLGgsaV07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1kO2NvbnN0IGI9cltoKytdO20ubW1yPSEhKDEmYik7bS50ZW1wbGF0ZT1iPj4xJjM7bS5lbmFibGVTa2lwPSEhKDgmYik7bS5jb21iaW5hdGlvbk9wZXJhdG9yPWI+PjQmNzttLmRlZmF1bHRQaXhlbFZhbHVlPWI+PjcmMTttLmdyaWRXaWR0aD0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRIZWlnaHQ9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JigwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRWZWN0b3JYPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO20uZ3JpZFZlY3Rvclk9KDAsbi5yZWFkVWludDE2KShyLGgpO2grPTI7cz1bbSxhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCB5PXt9O3kuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9ZDtjb25zdCB3PXJbaCsrXTt5Lm1tcj0hISgxJncpO3kudGVtcGxhdGU9dz4+MSYzO3kucHJlZGljdGlvbj0hISg4JncpO2lmKCF5Lm1tcil7bD0wPT09eS50ZW1wbGF0ZT80OjE7bz1bXTtmb3IoYz0wO2M8bDtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn15LmF0PW99cz1beSxyLGgsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCBTPXt3aWR0aDooMCxuLnJlYWRVaW50MzIpKHIsaCksaGVpZ2h0OigwLG4ucmVhZFVpbnQzMikocixoKzQpLHJlc29sdXRpb25YOigwLG4ucmVhZFVpbnQzMikocixoKzgpLHJlc29sdXRpb25ZOigwLG4ucmVhZFVpbnQzMikocixoKzEyKX07NDI5NDk2NzI5NT09PVMuaGVpZ2h0JiZkZWxldGUgUy5oZWlnaHQ7Y29uc3QgeD1yW2grMTZdOygwLG4ucmVhZFVpbnQxNikocixoKzE3KTtTLmxvc3NsZXNzPSEhKDEmeCk7Uy5yZWZpbmVtZW50PSEhKDImeCk7Uy5kZWZhdWx0UGl4ZWxWYWx1ZT14Pj4yJjE7Uy5jb21iaW5hdGlvbk9wZXJhdG9yPXg+PjMmMztTLnJlcXVpcmVzQnVmZmVyPSEhKDMyJngpO1MuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JngpO3M9W1NdO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpzPVthLm51bWJlcixyLGgsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCB1PSJvbiIrYS50eXBlTmFtZTt1IGluIHQmJnRbdV0uYXBwbHkodCxzKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLG49ZS5oZWlnaHQsaT1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqaSsoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxuO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1pfWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8bjtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9aX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IG49ZS5pbmZvLGk9bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsbi53aWR0aCxuLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsaSk7dGhpcy5kcmF3Qml0bWFwKG4scyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyl7bGV0IG8sYztpZihlLmh1ZmZtYW4pe289ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLG4saSxzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpuPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIGk9Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6bix0YWJsZUJpdG1hcFNpemU6aSx0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtjPW5ldyBSZWFkZXIocixpLHMpfWxldCBsPXRoaXMuc3ltYm9scztsfHwodGhpcy5zeW1ib2xzPWw9e30pO2NvbnN0IGg9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQocixpLHMpO2xbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBmPVtdO2xldCBnPTAscD0oMCxuLmxvZzIpKGEubGVuZ3RoK3IpO2NvbnN0IG09dS5kZWNvZGVyLGI9dS5jb250ZXh0Q2FjaGU7bGV0IHksdztpZihlKXt5PWdldFN0YW5kYXJkVGFibGUoMSk7dz1bXTtwPU1hdGgubWF4KHAsMSl9Zm9yKDtmLmxlbmd0aDxyOyl7Zys9ZT9zLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFESCIsbSk7bGV0IHI9MCxuPTA7Y29uc3QgaT1lP3cubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBpPWU/cy50YWJsZURlbHRhV2lkdGguZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFEVyIsbSk7aWYobnVsbD09PWkpYnJlYWs7cis9aTtuKz1yO2xldCB5O2lmKHQpe2NvbnN0IG49ZGVjb2RlSW50ZWdlcihiLCJJQUFJIixtKTtpZihuPjEpeT1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGcsMCxuLDEsYS5jb25jYXQoZikscCwwLDAsMSwwLHMsbCxoLHUsMCxkKTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChiLG0scCksdD1kZWNvZGVJbnRlZ2VyKGIsIklBUkRYIixtKSxuPWRlY29kZUludGVnZXIoYiwiSUFSRFkiLG0pO3k9ZGVjb2RlUmVmaW5lbWVudChyLGcsbCxlPGEubGVuZ3RoP2FbZV06ZltlLWEubGVuZ3RoXSx0LG4sITEsaCx1KX1mLnB1c2goeSl9ZWxzZSBpZihlKXcucHVzaChyKTtlbHNle3k9ZGVjb2RlQml0bWFwKCExLHIsZyxvLCExLG51bGwsYyx1KTtmLnB1c2goeSl9fWlmKGUmJiF0KXtjb25zdCBlPXMudGFibGVCaXRtYXBTaXplLmRlY29kZShkKTtkLmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcChkLG4sZyk7ZWxzZXtjb25zdCBhPWQuZW5kLHI9ZC5wb3NpdGlvbitlO2QuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAoZCxuLGcsITEpO2QuZW5kPWE7ZC5wb3NpdGlvbj1yfWNvbnN0IGE9dy5sZW5ndGg7aWYoaT09PWEtMSlmLnB1c2godCk7ZWxzZXtsZXQgZSxyLG4scyxvLGM9MDtmb3IoZT1pO2U8YTtlKyspe3M9d1tlXTtuPWMrcztvPVtdO2ZvcihyPTA7cjxnO3IrKylvLnB1c2godFtyXS5zdWJhcnJheShjLG4pKTtmLnB1c2gobyk7Yz1ufX19fWNvbnN0IFM9W10seD1bXTtsZXQgayxDLHY9ITE7Y29uc3QgRj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8Rjspe2xldCB0PWU/eS5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQUVYIixtKTtmb3IoO3QtLTspeC5wdXNoKHYpO3Y9IXZ9Zm9yKGs9MCxDPWEubGVuZ3RoO2s8QztrKyspeFtrXSYmUy5wdXNoKGFba10pO2ZvcihsZXQgZT0wO2U8cjtrKyssZSsrKXhba10mJlMucHVzaChmW2VdKTtyZXR1cm4gU30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxoLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMsbyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsdSxjKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPWUuaW5mbztsZXQgbyxjO2NvbnN0IGw9dGhpcy5zeW1ib2xzLGg9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PSgwLG4ubG9nMikoaC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7Yz1uZXcgUmVhZGVyKGEscixpKTtvPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsbil7Y29uc3QgaT1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9bi5yZWFkQml0cyg0KTtpLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShpLCExKTtpLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUobik7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1uLnJlYWRCaXRzKDIpKzM7YT1pW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1uLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1uLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fW4uYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKGksITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxoLmxlbmd0aCxjKX1jb25zdCBkPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGY9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGgsdSxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxkLGUubG9nU3RyaXBTaXplLGMpO3RoaXMuZHJhd0JpdG1hcChzLGYpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsbil7bGV0IGk9dGhpcy5wYXR0ZXJucztpfHwodGhpcy5wYXR0ZXJucz1pPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLG4pO2lbdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixuLGkpe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09biYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLG4sITEsbnVsbCxzLGkpLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10sbj10KmUsaT1uK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShuLGkpKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPXRoaXMucGF0dGVybnNbdFswXV0sbz1lLmluZm8sYz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxsPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxzLG8sYyxsLGgsdSxkLGYsZyxwKXtpZihvKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7Y30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgbT1bXTtsZXQgYix5LHc7Zm9yKGI9MDtiPGk7YisrKXt3PW5ldyBVaW50OEFycmF5KHIpO2lmKHMpZm9yKHk9MDt5PHI7eSsrKXdbeV09czttLnB1c2godyl9Y29uc3QgUz10Lmxlbmd0aCx4PXRbMF0saz14WzBdLmxlbmd0aCxDPXgubGVuZ3RoLHY9KDAsbi5sb2cyKShTKSxGPVtdO2lmKCFlKXtGLnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZGLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgTz1bXTtsZXQgVCxNLEUsRCxOLFIsTCxqLCQsXyxVO2UmJihUPW5ldyBSZWFkZXIocC5kYXRhLHAuc3RhcnQscC5lbmQpKTtmb3IoYj12LTE7Yj49MDtiLS0pe009ZT9kZWNvZGVNTVJCaXRtYXAoVCxsLGgsITApOmRlY29kZUJpdG1hcCghMSxsLGgsYSwhMSxudWxsLEYscCk7T1tiXT1NfWZvcihFPTA7RTxoO0UrKylmb3IoRD0wO0Q8bDtEKyspe049MDtSPTA7Zm9yKHk9di0xO3k+PTA7eS0tKXtOXj1PW3ldW0VdW0RdO1J8PU48PHl9TD10W1JdO2o9dStFKmcrRCpmPj44OyQ9ZCtFKmYtRCpnPj44O2lmKGo+PTAmJmorazw9ciYmJD49MCYmJCtDPD1pKWZvcihiPTA7YjxDO2IrKyl7VT1tWyQrYl07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKylVW2oreV18PV9beV19ZWxzZXtsZXQgZSx0O2ZvcihiPTA7YjxDO2IrKyl7dD0kK2I7aWYoISh0PDB8fHQ+PWkpKXtVPW1bdF07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKyl7ZT1qK3k7ZT49MCYmZTxyJiYoVVtlXXw9X1t5XSl9fX19fXJldHVybiBtfShlLm1tcixzLGUudGVtcGxhdGUsby53aWR0aCxvLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3RvclksYyk7dGhpcy5kcmF3Qml0bWFwKG8sbCl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKGUsdCsxKSxzPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShlLHQrNSksbz1uZXcgUmVhZGVyKGUsdCs5LGEpLGM9MSsocj4+MSY3KSxsPTErKHI+PjQmNyksaD1bXTtsZXQgdSxkLGY9aTtkb3t1PW8ucmVhZEJpdHMoYyk7ZD1vLnJlYWRCaXRzKGwpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW2YsdSxkLDBdKSk7Zis9MTw8ZH13aGlsZShmPHMpO3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsdSwzMiwwLCJsb3dlciJdKSk7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3MsdSwzMiwwXSkpO2lmKDEmcil7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3UsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShoLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBuLGkscyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO249YztpPTA7Zm9yKDtpPHQ7KXtzPWVbaV07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9bjtuKyt9aSsrfW8rK319fWNvbnN0IGY9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxhPWZbZV07aWYoYSlyZXR1cm4gYTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2E9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtmW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWFbdFtuXV07aWYoaSl7aWYoZT09PXIpcmV0dXJuIGk7cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjxhO24rKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IG49e0s6LTEsQ29sdW1uczp0LFJvd3M6YSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOnJ9LGk9bmV3IHMuQ0NJVFRGYXhEZWNvZGVyKGUsbiksbz1bXTtsZXQgYyxsPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7by5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7Yz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09Yyl7Yz0wO2w9ITB9YT03fWVbcl09Yz4+YSYxO2EtLX19aWYociYmIWwpe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gb310LkpiaWcySW1hZ2U9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LHIuZGF0YSxyLnN0YXJ0LHIuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7Y29uc3QgYT1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTt0LkFyaXRobWV0aWNEZWNvZGVyPWNsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWE7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgcj1lW3RdPj4xLG49MSZlW3RdO2NvbnN0IGk9YVtyXSxzPWkucWU7bGV0IG8sYz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpaWYoYzxzKXtjPXM7bz1uO3I9aS5ubXBzfWVsc2V7Yz1zO289MV5uOzE9PT1pLnN3aXRjaEZsYWcmJihuPW8pO3I9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09cztpZigwIT0oMzI3NjgmYykpe3RoaXMuYT1jO3JldHVybiBufWlmKGM8cyl7bz0xXm47MT09PWkuc3dpdGNoRmxhZyYmKG49byk7cj1pLm5scHN9ZWxzZXtvPW47cj1pLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO2M8PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4JmMpKTt0aGlzLmE9YztlW3RdPXI8PDF8bjtyZXR1cm4gb319fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSnBlZ1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyNikscz1hKDIpO2NsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IHI7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09cil7ZS5za2lwKC0xKTticmVha31zdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYodGhpcy5mb3JjZVJHQiYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxuPW5ldyBJbnQzMkFycmF5KHIpO2xldCBpPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe25bZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtuW2UrMV09dFtlXSpzfDA7MjU2PT09bltlXSYmMD09PW5bZSsxXXx8KGk9ITApfWkmJihlLmRlY29kZVRyYW5zZm9ybT1uKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9Y29uc3QgYT1uZXcgaS5KcGVnSW1hZ2UoZSk7YS5wYXJzZSh0aGlzLmJ5dGVzKTtjb25zdCByPWEuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1yLmxlbmd0aDt0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPUpwZWdTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpO2NsYXNzIEpwZWdFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBFRyBlcnJvcjogJHtlfWAsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLHM9NDAxNyxvPTc5OSxjPTM0MDYsbD0yMjc2LGg9MTU2Nyx1PTM3ODQsZD01NzkzLGY9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsbj0wLGk9MTY7Zm9yKDtpPjAmJiFlW2ktMV07KWktLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8aTthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtuXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31uKyt9aWYoYSsxPGkpe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscyxvLGMsbCxoLHUsZD0hMSl7Y29uc3QgZj1hLm1jdXNQZXJMaW5lLGc9YS5wcm9ncmVzc2l2ZSxwPXQ7bGV0IG09MCxiPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGI+MCl7Yi0tO3JldHVybiBtPj5iJjF9bT1lW3QrK107aWYoMjU1PT09bSl7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmZCl7dCs9Mjtjb25zdCByPSgwLG4ucmVhZFVpbnQxNikoZSx0KTt0Kz0yO2lmKHI+MCYmciE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIscil9ZWxzZSBpZigyMTc9PT1yKXtpZihkKXtjb25zdCBlPXgqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhtPDw4fHIpLnRvU3RyaW5nKDE2KX1gKX19Yj03O3JldHVybiBtPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB5PTA7bGV0IHcsUz0wO2xldCB4PTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxhLHIsbil7Y29uc3QgaT1hJWY7eD0oYS9mfDApKmUudityO2NvbnN0IHM9aSplLmgrbjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHMpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsYSl7eD1hL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IHI9YSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseCxyKSl9Y29uc3Qgaz1zLmxlbmd0aDtsZXQgQyx2LEYsTyxULE07TT1nPzA9PT1jPzA9PT1oP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk8PHU7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDx1fTowPT09aD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoeT4wKXt5LS07cmV0dXJufWxldCBhPWM7Y29uc3Qgcj1sO2Zvcig7YTw9cjspe2NvbnN0IHI9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxuPTE1JnIscz1yPj40O2lmKDA9PT1uKXtpZihzPDE1KXt5PXJlY2VpdmUocykrKDE8PHMpLTE7YnJlYWt9YSs9MTY7Y29udGludWV9YSs9cztjb25zdCBvPWlbYV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKG4pKigxPDx1KTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1jO2NvbnN0IHI9bDtsZXQgbixzLG89MDtmb3IoO2E8PXI7KXtjb25zdCByPXQraVthXSxjPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goUyl7Y2FzZSAwOnM9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtuPTE1JnM7bz1zPj40O2lmKDA9PT1uKWlmKG88MTUpe3k9cmVjZWl2ZShvKSsoMTw8byk7Uz00fWVsc2V7bz0xNjtTPTF9ZWxzZXtpZigxIT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO3c9cmVjZWl2ZUFuZEV4dGVuZChuKTtTPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtvLS07MD09PW8mJihTPTI9PT1TPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1jKihyZWFkQml0KCk8PHUpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09dzw8dTtTPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSkpfWErK31pZig0PT09Uyl7eS0tOzA9PT15JiYoUz0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgbj0xO2Zvcig7bjw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEscz1hPj40O2lmKDA9PT1yKXtpZihzPDE1KWJyZWFrO24rPTE2O2NvbnRpbnVlfW4rPXM7Y29uc3Qgbz1pW25dO2UuYmxvY2tEYXRhW3Qrb109cmVjZWl2ZUFuZEV4dGVuZChyKTtuKyt9fTtsZXQgRSxELE4sUixMPTA7RD0xPT09az9zWzBdLmJsb2Nrc1BlckxpbmUqc1swXS5ibG9ja3NQZXJDb2x1bW46ZiphLm1jdXNQZXJDb2x1bW47Zm9yKDtMPD1EOyl7Y29uc3QgYT1vP01hdGgubWluKEQtTCxvKTpEO2lmKGE+MCl7Zm9yKHY9MDt2PGs7disrKXNbdl0ucHJlZD0wO3k9MDtpZigxPT09ayl7Qz1zWzBdO2ZvcihUPTA7VDxhO1QrKyl7ZGVjb2RlQmxvY2soQyxNLEwpO0wrK319ZWxzZSBmb3IoVD0wO1Q8YTtUKyspe2Zvcih2PTA7djxrO3YrKyl7Qz1zW3ZdO049Qy5oO1I9Qy52O2ZvcihGPTA7RjxSO0YrKylmb3IoTz0wO088TjtPKyspZGVjb2RlTWN1KEMsTSxMLEYsTyl9TCsrfX1iPTA7RT1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighRSlicmVhaztpZihFLmludmFsaWQpe2NvbnN0IGU9YT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIjsoMCxyLndhcm4pKGBkZWNvZGVTY2FuIC0gJHtlfSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7RS5pbnZhbGlkfWApO3Q9RS5vZmZzZXR9aWYoIShFLm1hcmtlcj49NjU0ODgmJkUubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1wfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsYSl7Y29uc3Qgcj1lLnF1YW50aXphdGlvblRhYmxlLG49ZS5ibG9ja0RhdGE7bGV0IGksZyxwLG0sYix5LHcsUyx4LGssQyx2LEYsTyxULE0sRTtpZighcil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe3g9blt0K2VdO2s9blt0K2UrMV07Qz1uW3QrZSsyXTt2PW5bdCtlKzNdO0Y9blt0K2UrNF07Tz1uW3QrZSs1XTtUPW5bdCtlKzZdO009blt0K2UrN107eCo9cltlXTtpZigwIT0oa3xDfHZ8RnxPfFR8TSkpe2sqPXJbZSsxXTtDKj1yW2UrMl07dio9cltlKzNdO0YqPXJbZSs0XTtPKj1yW2UrNV07VCo9cltlKzZdO00qPXJbZSs3XTtpPWQqeCsxMjg+Pjg7Zz1kKkYrMTI4Pj44O3A9QzttPVQ7Yj1mKihrLU0pKzEyOD4+ODtTPWYqKGsrTSkrMTI4Pj44O3k9djw8NDt3PU88PDQ7aT1pK2crMT4+MTtnPWktZztFPXAqdSttKmgrMTI4Pj44O3A9cCpoLW0qdSsxMjg+Pjg7bT1FO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtpPWkrbSsxPj4xO209aS1tO2c9ZytwKzE+PjE7cD1nLXA7RT1iKmwrUypjKzIwNDg+PjEyO2I9YipjLVMqbCsyMDQ4Pj4xMjtTPUU7RT15Km8rdypzKzIwNDg+PjEyO3k9eSpzLXcqbysyMDQ4Pj4xMjt3PUU7YVtlXT1pK1M7YVtlKzddPWktUzthW2UrMV09Zyt3O2FbZSs2XT1nLXc7YVtlKzJdPXAreTthW2UrNV09cC15O2FbZSszXT1tK2I7YVtlKzRdPW0tYn1lbHNle0U9ZCp4KzUxMj4+MTA7YVtlXT1FO2FbZSsxXT1FO2FbZSsyXT1FO2FbZSszXT1FO2FbZSs0XT1FO2FbZSs1XT1FO2FbZSs2XT1FO2FbZSs3XT1FfX1mb3IobGV0IGU9MDtlPDg7KytlKXt4PWFbZV07az1hW2UrOF07Qz1hW2UrMTZdO3Y9YVtlKzI0XTtGPWFbZSszMl07Tz1hW2UrNDBdO1Q9YVtlKzQ4XTtNPWFbZSs1Nl07aWYoMCE9KGt8Q3x2fEZ8T3xUfE0pKXtpPWQqeCsyMDQ4Pj4xMjtnPWQqRisyMDQ4Pj4xMjtwPUM7bT1UO2I9Ziooay1NKSsyMDQ4Pj4xMjtTPWYqKGsrTSkrMjA0OD4+MTI7eT12O3c9TztpPTQxMTIrKGkrZysxPj4xKTtnPWktZztFPXAqdSttKmgrMjA0OD4+MTI7cD1wKmgtbSp1KzIwNDg+PjEyO209RTtiPWIrdysxPj4xO3c9Yi13O1M9Uyt5KzE+PjE7eT1TLXk7aT1pK20rMT4+MTttPWktbTtnPWcrcCsxPj4xO3A9Zy1wO0U9YipsK1MqYysyMDQ4Pj4xMjtiPWIqYy1TKmwrMjA0OD4+MTI7Uz1FO0U9eSpvK3cqcysyMDQ4Pj4xMjt5PXkqcy13Km8rMjA0OD4+MTI7dz1FO3g9aStTO009aS1TO2s9Zyt3O1Q9Zy13O0M9cCt5O089cC15O3Y9bStiO0Y9bS1iO3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7azwxNj9rPTA6az49NDA4MD9rPTI1NTprPj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O3Y8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQ7RjwxNj9GPTA6Rj49NDA4MD9GPTI1NTpGPj49NDtPPDE2P089MDpPPj00MDgwP089MjU1Ok8+Pj00O1Q8MTY/VD0wOlQ+PTQwODA/VD0yNTU6VD4+PTQ7TTwxNj9NPTA6TT49NDA4MD9NPTI1NTpNPj49NDtuW3QrZV09eDtuW3QrZSs4XT1rO25bdCtlKzE2XT1DO25bdCtlKzI0XT12O25bdCtlKzMyXT1GO25bdCtlKzQwXT1PO25bdCtlKzQ4XT1UO25bdCtlKzU2XT1NfWVsc2V7RT1kKngrODE5Mj4+MTQ7RT1FPC0yMDQwPzA6RT49MjAyND8yNTU6RSsyMDU2Pj40O25bdCtlXT1FO25bdCtlKzhdPUU7blt0K2UrMTZdPUU7blt0K2UrMjRdPUU7blt0K2UrMzJdPUU7blt0K2UrNDBdPUU7blt0K2UrNDhdPUU7blt0K2UrNTZdPUV9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBhPXQuYmxvY2tzUGVyTGluZSxyPXQuYmxvY2tzUGVyQ29sdW1uLG49bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8cjtlKyspZm9yKGxldCByPTA7cjxhO3IrKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLHIpLG4pfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGE9dCl7Y29uc3Qgcj1lLmxlbmd0aC0xO2xldCBpPWE8dD9hOnQ7aWYodD49cilyZXR1cm4gbnVsbDtjb25zdCBzPSgwLG4ucmVhZFVpbnQxNikoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG89KDAsbi5yZWFkVWludDE2KShlLGkpO2Zvcig7IShvPj02NTQ3MiYmbzw9NjU1MzQpOyl7aWYoKytpPj1yKXJldHVybiBudWxsO289KDAsbi5yZWFkVWludDE2KShlLGkpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpvLG9mZnNldDppfX10LkpwZWdJbWFnZT1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2Z1bmN0aW9uIHJlYWREYXRhQmxvY2soKXtjb25zdCB0PSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhPW8rdC0yO2NvbnN0IGk9ZmluZE5leHRGaWxlTWFya2VyKGUsYSxvKTtpZihpJiZpLmludmFsaWQpeygwLHIud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpO2E9aS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KG8sYSk7bys9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCByIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgbj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqci5oL2UubWF4SCksaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKnIudi9lLm1heFYpLHM9dCpyLmgsbz02NCooYSpyLnYpKihzKzEpO3IuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO3IuYmxvY2tzUGVyTGluZT1uO3IuYmxvY2tzUGVyQ29sdW1uPWl9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWxldCBhLHMsbz0wLGM9bnVsbCxsPW51bGwsaD0wO2NvbnN0IHU9W10sZD1bXSxmPVtdO2xldCBnPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2lmKDY1NDk2IT09Zyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7Zz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjtlOmZvcig7NjU0OTchPT1nOyl7bGV0IHAsbSxiO3N3aXRjaChnKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgeT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1nJiY3ND09PXlbMF0mJjcwPT09eVsxXSYmNzM9PT15WzJdJiY3MD09PXlbM10mJjA9PT15WzRdJiYoYz17dmVyc2lvbjp7bWFqb3I6eVs1XSxtaW5vcjp5WzZdfSxkZW5zaXR5VW5pdHM6eVs3XSx4RGVuc2l0eTp5WzhdPDw4fHlbOV0seURlbnNpdHk6eVsxMF08PDh8eVsxMV0sdGh1bWJXaWR0aDp5WzEyXSx0aHVtYkhlaWdodDp5WzEzXSx0aHVtYkRhdGE6eS5zdWJhcnJheSgxNCwxNCszKnlbMTJdKnlbMTNdKX0pOzY1NTE4PT09ZyYmNjU9PT15WzBdJiYxMDA9PT15WzFdJiYxMTE9PT15WzJdJiY5OD09PXlbM10mJjEwMT09PXlbNF0mJihsPXt2ZXJzaW9uOnlbNV08PDh8eVs2XSxmbGFnczA6eVs3XTw8OHx5WzhdLGZsYWdzMTp5WzldPDw4fHlbMTBdLHRyYW5zZm9ybUNvZGU6eVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IHc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7Y29uc3QgUz13K28tMjtsZXQgeDtmb3IoO288Uzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihtPTA7bTw2NDttKyspe3g9aVttXTthW3hdPWVbbysrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKG09MDttPDY0O20rKyl7eD1pW21dO2FbeF09KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9fXVbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO28rPTI7YT17fTthLmV4dGVuZGVkPTY1NDczPT09ZzthLnByb2dyZXNzaXZlPTY1NDc0PT09ZzthLnByZWNpc2lvbj1lW28rK107Y29uc3Qgaz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLnNjYW5MaW5lcz10fHxrO2Euc2FtcGxlc1BlckxpbmU9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YS5jb21wb25lbnRzPVtdO2EuY29tcG9uZW50SWRzPXt9O2NvbnN0IEM9ZVtvKytdO2xldCB2PTAsRj0wO2ZvcihwPTA7cDxDO3ArKyl7Y29uc3QgdD1lW29dLHI9ZVtvKzFdPj40LG49MTUmZVtvKzFdO3Y8ciYmKHY9cik7RjxuJiYoRj1uKTtjb25zdCBpPWVbbysyXTtiPWEuY29tcG9uZW50cy5wdXNoKHtoOnIsdjpuLHF1YW50aXphdGlvbklkOmkscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2EuY29tcG9uZW50SWRzW3RdPWItMTtvKz0zfWEubWF4SD12O2EubWF4Vj1GO3ByZXBhcmVDb21wb25lbnRzKGEpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtmb3IocD0yO3A8Tzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCByPTA7Zm9yKG09MDttPDE2O20rKyxvKyspcis9YVttXT1lW29dO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKG09MDttPHI7bSsrLG8rKyluW21dPWVbb107cCs9MTcrcjsodD4+ND09MD9mOmQpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEsbil9YnJlYWs7Y2FzZSA2NTUwMTpvKz0yO3M9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBUPTE9PSsraCYmIXQ7bys9Mjtjb25zdCBNPWVbbysrXSxFPVtdO2ZvcihwPTA7cDxNO3ArKyl7Y29uc3QgdD1lW28rK10scj1hLmNvbXBvbmVudElkc1t0XSxuPWEuY29tcG9uZW50c1tyXTtuLmluZGV4PXQ7Y29uc3QgaT1lW28rK107bi5odWZmbWFuVGFibGVEQz1mW2k+PjRdO24uaHVmZm1hblRhYmxlQUM9ZFsxNSZpXTtFLnB1c2gobil9Y29uc3QgRD1lW28rK10sTj1lW28rK10sUj1lW28rK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLG8sYSxFLHMsRCxOLFI+PjQsMTUmUixUKTtvKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7KDAsci53YXJuKShgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bys9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbb10mJm8tLTticmVhaztkZWZhdWx0OmNvbnN0IEw9ZmluZE5leHRGaWxlTWFya2VyKGUsby0yLG8tMyk7aWYoTCYmTC5pbnZhbGlkKXsoMCxyLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK0wuaW52YWxpZCk7bz1MLm9mZnNldDticmVha31pZighTHx8bz49ZS5sZW5ndGgtMSl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrZy50b1N0cmluZygxNikpfWc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1jO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PXVbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCByPXRoaXMud2lkdGgvZSxuPXRoaXMuaGVpZ2h0L3Q7bGV0IGkscyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSksUz1uZXcgVWludDMyQXJyYXkoZSkseD00Mjk0OTY3Mjg4O2xldCBrO2Zvcih1PTA7dTxiO3UrKyl7aT10aGlzLmNvbXBvbmVudHNbdV07cz1pLnNjYWxlWCpyO289aS5zY2FsZVkqbjttPXU7cD1pLm91dHB1dDtjPWkuYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1rKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7U1tsXT0oZCZ4KTw8M3w3JmR9az1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmeCl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZytTW2xdXTttKz1ifX19bGV0IEM9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHxDfHwoQz1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoQylmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKkNbZl0+PjgpK0NbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bis9Myl7dD1lW25dO2E9ZVtuKzFdO3I9ZVtuKzJdO2Vbbl09dC0xNzkuNDU2KzEuNDAyKnI7ZVtuKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbbisyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxhLHIsbixpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl7dD1lW3NdO2E9ZVtzKzFdO3I9ZVtzKzJdO249ZVtzKzNdO2VbaSsrXT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW2krK109MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbaSsrXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEscjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKz00KXt0PWVbbl07YT1lW24rMV07cj1lW24rMl07ZVtuXT00MzQuNDU2LXQtMS40MDIqcjtlW24rMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0KnI7ZVtuKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGEscixuLGk9MDtmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKz00KXt0PWVbc107YT1lW3MrMV07cj1lW3MrMl07bj1lW3MrM107ZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNipuLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpuLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqbisuMDY4Njc0MjIzODU5NTM0NSktbiooLjAwMDMzNjE5NzE3NzYxODM5MzcqbisuNzQzMDY1OTE1MTM0MjI1NCk7ZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqbi0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqbi0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqbi0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLW4qKC4wMDAzMTg5MTMxMTc1ODgzMjgxKm4rLjczNjQ4ODM4MDc3MzMxNjgpO2VbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqbi0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqbi0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqbi0uNzU5MTQ1NDY0OTc0OTYwOSktbiooLjAwMDM0MzUzMTk5NjUxMDU1NTMqbisuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cj0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCBuPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHIpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJmEpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbi5sZW5ndGgpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2Ygbil7ZVt0KytdPWE7ZVt0KytdPWE7ZVt0KytdPWF9cmV0dXJuIGV9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihuKTtpZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDI4KSxpPWEoMik7Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBuLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLGE9ZS5oZWlnaHQscj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqcik7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1lLnRpbGVzW2FdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKnI7Y29uc3QgZj10KnIsZz1zKnI7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTtuLnNldChlLGQpO3UrPWc7ZCs9Zn19dGhpcy5idWZmZXI9bn10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPUpweFN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweEltYWdlPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMjQpO2NsYXNzIEpweEVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKUFggZXJyb3I6ICR7ZX1gLCJKcHhFcnJvciIpfX1jb25zdCBzPXtMTDowLExIOjEsSEw6MSxISDoyfTt0LkpweEltYWdlPWNsYXNzIEpweEltYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZT0hMX1wYXJzZShlKXtpZig2NTM1OT09PSgwLG4ucmVhZFVpbnQxNikoZSwwKSl7dGhpcy5wYXJzZUNvZGVzdHJlYW0oZSwwLGUubGVuZ3RoKTtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0Oyl7bGV0IGk9OCxzPSgwLG4ucmVhZFVpbnQzMikoZSxhKTtjb25zdCBvPSgwLG4ucmVhZFVpbnQzMikoZSxhKzQpO2ErPWk7aWYoMT09PXMpe3M9NDI5NDk2NzI5NiooMCxuLnJlYWRVaW50MzIpKGUsYSkrKDAsbi5yZWFkVWludDMyKShlLGErNCk7YSs9ODtpKz04fTA9PT1zJiYocz10LWEraSk7aWYoczxpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCBib3ggZmllbGQgc2l6ZSIpO2NvbnN0IGM9cy1pO2xldCBsPSEwO3N3aXRjaChvKXtjYXNlIDE3ODU3Mzc4MzI6bD0hMTticmVhaztjYXNlIDE2NjgyNDY2NDI6Y29uc3QgdD1lW2FdO2lmKDE9PT10KXtjb25zdCB0PSgwLG4ucmVhZFVpbnQzMikoZSxhKzMpO3N3aXRjaCh0KXtjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztkZWZhdWx0OigwLHIud2FybikoIlVua25vd24gY29sb3JzcGFjZSAiK3QpfX1lbHNlIDI9PT10JiYoMCxyLmluZm8pKCJJQ0MgcHJvZmlsZSBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAxNzg1NzM3ODI3OnRoaXMucGFyc2VDb2Rlc3RyZWFtKGUsYSxhK2MpO2JyZWFrO2Nhc2UgMTc4MzYzNmUzOjIxODc5MzczOCE9PSgwLG4ucmVhZFVpbnQzMikoZSxhKSYmKDAsci53YXJuKSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7YnJlYWs7Y2FzZSAxNzgzNjM0NDU4OmNhc2UgMTcxODkwOTI5NjpjYXNlIDE5MjAwOTk2OTc6Y2FzZSAxOTE5MjUxMjMyOmNhc2UgMTc2ODQ0OTEzODpicmVhaztkZWZhdWx0OmNvbnN0IGk9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvKTsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBoZWFkZXIgdHlwZSAke299ICgke2l9KS5gKX1sJiYoYSs9Yyl9fXBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtjb25zdCBpPWUuZ2V0VWludDE2KCk7dGhpcy53aWR0aD10LXI7dGhpcy5oZWlnaHQ9YS1uO3RoaXMuY29tcG9uZW50c0NvdW50PWk7dGhpcy5iaXRzUGVyQ29tcG9uZW50PTg7cmV0dXJufX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX1wYXJzZUNvZGVzdHJlYW0oZSx0LGEpe2NvbnN0IGk9e307bGV0IHM9ITE7dHJ5e2xldCBvPXQ7Zm9yKDtvKzE8YTspe2NvbnN0IHQ9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7bGV0IGEsYyxsLGgsdSxkLGY9MDtzd2l0Y2godCl7Y2FzZSA2NTM1OTppLm1haW5IZWFkZXI9ITA7YnJlYWs7Y2FzZSA2NTQ5NzpicmVhaztjYXNlIDY1MzYxOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IGc9e307Zy5Yc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2cuWXNpej0oMCxuLnJlYWRVaW50MzIpKGUsbys4KTtnLlhPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzEyKTtnLllPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzE2KTtnLlhUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzIwKTtnLllUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzI0KTtnLlhUT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysyOCk7Zy5ZVE9zaXo9KDAsbi5yZWFkVWludDMyKShlLG8rMzIpO2NvbnN0IHA9KDAsbi5yZWFkVWludDE2KShlLG8rMzYpO2cuQ3Npej1wO2NvbnN0IG09W107YT1vKzM4O2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IHQ9e3ByZWNpc2lvbjoxKygxMjcmZVthXSksaXNTaWduZWQ6ISEoMTI4JmVbYV0pLFhSc2l6OmVbYSsxXSxZUnNpejplW2ErMl19O2ErPTM7Y2FsY3VsYXRlQ29tcG9uZW50RGltZW5zaW9ucyh0LGcpO20ucHVzaCh0KX1pLlNJWj1nO2kuY29tcG9uZW50cz1tO2NhbGN1bGF0ZVRpbGVHcmlkcyhpLG0pO2kuUUNDPVtdO2kuQ09DPVtdO2JyZWFrO2Nhc2UgNjUzNzI6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7Y29uc3QgYj17fTthPW8rMjtjPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9Yi5ub1F1YW50aXphdGlvbj04PT09aDtiLnNjYWxhckV4cG91bmRlZD11O2IuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX1iLlNQcWNkcz1sO2lmKGkubWFpbkhlYWRlcilpLlFDRD1iO2Vsc2V7aS5jdXJyZW50VGlsZS5RQ0Q9YjtpLmN1cnJlbnRUaWxlLlFDQz1bXX1icmVhaztjYXNlIDY1MzczOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IHk9e307YT1vKzI7bGV0IHc7aWYoaS5TSVouQ3NpejwyNTcpdz1lW2ErK107ZWxzZXt3PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yfWM9ZVthKytdO3N3aXRjaCgzMSZjKXtjYXNlIDA6aD04O3U9ITA7YnJlYWs7Y2FzZSAxOmg9MTY7dT0hMTticmVhaztjYXNlIDI6aD0xNjt1PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitjKX15Lm5vUXVhbnRpemF0aW9uPTg9PT1oO3kuc2NhbGFyRXhwb3VuZGVkPXU7eS5ndWFyZEJpdHM9Yz4+NTtsPVtdO2Zvcig7YTxmK287KXtjb25zdCB0PXt9O2lmKDg9PT1oKXt0LmVwc2lsb249ZVthKytdPj4zO3QubXU9MH1lbHNle3QuZXBzaWxvbj1lW2FdPj4zO3QubXU9KDcmZVthXSk8PDh8ZVthKzFdO2ErPTJ9bC5wdXNoKHQpfXkuU1BxY2RzPWw7aS5tYWluSGVhZGVyP2kuUUNDW3ddPXk6aS5jdXJyZW50VGlsZS5RQ0Nbd109eTticmVhaztjYXNlIDY1MzYyOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IFM9e307YT1vKzI7Y29uc3QgeD1lW2ErK107Uy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmeCk7Uy5zb3BNYXJrZXJVc2VkPSEhKDImeCk7Uy5lcGhNYXJrZXJVc2VkPSEhKDQmeCk7Uy5wcm9ncmVzc2lvbk9yZGVyPWVbYSsrXTtTLmxheWVyc0NvdW50PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yO1MubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVthKytdO1MuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbYSsrXTtTLnhjYj0yKygxNSZlW2ErK10pO1MueWNiPTIrKDE1JmVbYSsrXSk7Y29uc3Qgaz1lW2ErK107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzPSEhKDEmayk7Uy5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzPSEhKDImayk7Uy50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3M9ISEoNCZrKTtTLnZlcnRpY2FsbHlTdHJpcGU9ISEoOCZrKTtTLnByZWRpY3RhYmxlVGVybWluYXRpb249ISEoMTYmayk7Uy5zZWdtZW50YXRpb25TeW1ib2xVc2VkPSEhKDMyJmspO1MucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uPWVbYSsrXTtpZihTLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2NvbnN0IHQ9W107Zm9yKDthPGYrbzspe2NvbnN0IHI9ZVthKytdO3QucHVzaCh7UFB4OjE1JnIsUFB5OnI+PjR9KX1TLnByZWNpbmN0c1NpemVzPXR9Y29uc3QgQz1bXTtTLnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkMucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZDLnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpO1MudmVydGljYWxseVN0cmlwZSYmQy5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIik7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZDLnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKTtpZihDLmxlbmd0aD4wKXtzPSEwOygwLHIud2FybikoYEpQWDogVW5zdXBwb3J0ZWQgQ09EIG9wdGlvbnMgKCR7Qy5qb2luKCIsICIpfSkuYCl9aWYoaS5tYWluSGVhZGVyKWkuQ09EPVM7ZWxzZXtpLmN1cnJlbnRUaWxlLkNPRD1TO2kuY3VycmVudFRpbGUuQ09DPVtdfWJyZWFrO2Nhc2UgNjU0MjQ6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7ZD17fTtkLmluZGV4PSgwLG4ucmVhZFVpbnQxNikoZSxvKzIpO2QubGVuZ3RoPSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2QuZGF0YUVuZD1kLmxlbmd0aCtvLTI7ZC5wYXJ0SW5kZXg9ZVtvKzhdO2QucGFydHNDb3VudD1lW28rOV07aS5tYWluSGVhZGVyPSExO2lmKDA9PT1kLnBhcnRJbmRleCl7ZC5DT0Q9aS5DT0Q7ZC5DT0M9aS5DT0Muc2xpY2UoMCk7ZC5RQ0Q9aS5RQ0Q7ZC5RQ0M9aS5RQ0Muc2xpY2UoMCl9aS5jdXJyZW50VGlsZT1kO2JyZWFrO2Nhc2UgNjU0Mjc6ZD1pLmN1cnJlbnRUaWxlO2lmKDA9PT1kLnBhcnRJbmRleCl7aW5pdGlhbGl6ZVRpbGUoaSxkLmluZGV4KTtidWlsZFBhY2tldHMoaSl9Zj1kLmRhdGFFbmQtbztwYXJzZVRpbGVQYWNrZXRzKGksZSxvLGYpO2JyZWFrO2Nhc2UgNjUzNjM6KDAsci53YXJuKSgiSlBYOiBDb2Rlc3RyZWFtIGNvZGUgMHhGRjUzIChDT0MpIGlzIG5vdCBpbXBsZW1lbnRlZC4iKTtjYXNlIDY1MzY1OmNhc2UgNjUzNjc6Y2FzZSA2NTM2ODpjYXNlIDY1MzgwOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvZGVzdHJlYW0gY29kZTogIit0LnRvU3RyaW5nKDE2KSl9bys9Zn19Y2F0Y2goZSl7aWYoc3x8dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSl0aHJvdyBuZXcgSnB4RXJyb3IoZS5tZXNzYWdlKTsoMCxyLndhcm4pKGBKUFg6IFRyeWluZyB0byByZWNvdmVyIGZyb206ICIke2UubWVzc2FnZX0iLmApfXRoaXMudGlsZXM9ZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jb21wb25lbnRzLHI9dC5Dc2l6LG49W107Zm9yKGxldCB0PTAsaT1lLnRpbGVzLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUudGlsZXNbdF0scz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXNbdF09dHJhbnNmb3JtVGlsZShlLGksdCk7Y29uc3Qgbz1zWzBdLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uaXRlbXMubGVuZ3RoKnIpLGw9e2xlZnQ6by5sZWZ0LHRvcDpvLnRvcCx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxpdGVtczpjfTtsZXQgaCx1LGQsZixnLHAsbSxiPTA7aWYoaS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKXtjb25zdCBlPTQ9PT1yLHQ9c1swXS5pdGVtcyxuPXNbMV0uaXRlbXMsbz1zWzJdLml0ZW1zLGw9ZT9zWzNdLml0ZW1zOm51bGw7aD1hWzBdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Y29uc3QgeT1pLmNvbXBvbmVudHNbMF0sdz1yLTM7Zj10Lmxlbmd0aDtpZih5LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24pZm9yKGQ9MDtkPGY7ZCsrLGIrPXcpe2c9dFtkXSt1O3A9bltkXTttPW9bZF07Y29uc3QgZT1nLShtK3A+PjIpO2NbYisrXT1lK20+Pmg7Y1tiKytdPWU+Pmg7Y1tiKytdPWUrcD4+aH1lbHNlIGZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPW5bZF07bT1vW2RdO2NbYisrXT1nKzEuNDAyKm0+Pmg7Y1tiKytdPWctLjM0NDEzKnAtLjcxNDE0Km0+Pmg7Y1tiKytdPWcrMS43NzIqcD4+aH1pZihlKWZvcihkPTAsYj0zO2Q8ZjtkKyssYis9NCljW2JdPWxbZF0rdT4+aH1lbHNlIGZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9c1tlXS5pdGVtcztoPWFbZV0ucHJlY2lzaW9uLTg7dT0uNSsoMTI4PDxoKTtmb3IoYj1lLGQ9MCxmPXQubGVuZ3RoO2Q8ZjtkKyspe2NbYl09dFtkXSt1Pj5oO2IrPXJ9fW4ucHVzaChsKX1yZXR1cm4gbn0oaSk7dGhpcy53aWR0aD1pLlNJWi5Yc2l6LWkuU0laLlhPc2l6O3RoaXMuaGVpZ2h0PWkuU0laLllzaXotaS5TSVouWU9zaXo7dGhpcy5jb21wb25lbnRzQ291bnQ9aS5TSVouQ3Npen19O2Z1bmN0aW9uIGNhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnMoZSx0KXtlLngwPU1hdGguY2VpbCh0LlhPc2l6L2UuWFJzaXopO2UueDE9TWF0aC5jZWlsKHQuWHNpei9lLlhSc2l6KTtlLnkwPU1hdGguY2VpbCh0LllPc2l6L2UuWVJzaXopO2UueTE9TWF0aC5jZWlsKHQuWXNpei9lLllSc2l6KTtlLndpZHRoPWUueDEtZS54MDtlLmhlaWdodD1lLnkxLWUueTB9ZnVuY3Rpb24gY2FsY3VsYXRlVGlsZUdyaWRzKGUsdCl7Y29uc3QgYT1lLlNJWixyPVtdO2xldCBuO2NvbnN0IGk9TWF0aC5jZWlsKChhLlhzaXotYS5YVE9zaXopL2EuWFRzaXopLHM9TWF0aC5jZWlsKChhLllzaXotYS5ZVE9zaXopL2EuWVRzaXopO2ZvcihsZXQgZT0wO2U8cztlKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7bj17fTtuLnR4MD1NYXRoLm1heChhLlhUT3Npeit0KmEuWFRzaXosYS5YT3Npeik7bi50eTA9TWF0aC5tYXgoYS5ZVE9zaXorZSphLllUc2l6LGEuWU9zaXopO24udHgxPU1hdGgubWluKGEuWFRPc2l6Kyh0KzEpKmEuWFRzaXosYS5Yc2l6KTtuLnR5MT1NYXRoLm1pbihhLllUT3NpeisoZSsxKSphLllUc2l6LGEuWXNpeik7bi53aWR0aD1uLnR4MS1uLnR4MDtuLmhlaWdodD1uLnR5MS1uLnR5MDtuLmNvbXBvbmVudHM9W107ci5wdXNoKG4pfWUudGlsZXM9cjtmb3IobGV0IGU9MCxpPWEuQ3NpejtlPGk7ZSsrKXtjb25zdCBhPXRbZV07Zm9yKGxldCB0PTAsaT1yLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPXt9O249clt0XTtpLnRjeDA9TWF0aC5jZWlsKG4udHgwL2EuWFJzaXopO2kudGN5MD1NYXRoLmNlaWwobi50eTAvYS5ZUnNpeik7aS50Y3gxPU1hdGguY2VpbChuLnR4MS9hLlhSc2l6KTtpLnRjeTE9TWF0aC5jZWlsKG4udHkxL2EuWVJzaXopO2kud2lkdGg9aS50Y3gxLWkudGN4MDtpLmhlaWdodD1pLnRjeTEtaS50Y3kwO24uY29tcG9uZW50c1tlXT1pfX19ZnVuY3Rpb24gZ2V0QmxvY2tzRGltZW5zaW9ucyhlLHQsYSl7Y29uc3Qgcj10LmNvZGluZ1N0eWxlUGFyYW1ldGVycyxuPXt9O2lmKHIuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cyl7bi5QUHg9ci5wcmVjaW5jdHNTaXplc1thXS5QUHg7bi5QUHk9ci5wcmVjaW5jdHNTaXplc1thXS5QUHl9ZWxzZXtuLlBQeD0xNTtuLlBQeT0xNX1uLnhjYl89YT4wP01hdGgubWluKHIueGNiLG4uUFB4LTEpOk1hdGgubWluKHIueGNiLG4uUFB4KTtuLnljYl89YT4wP01hdGgubWluKHIueWNiLG4uUFB5LTEpOk1hdGgubWluKHIueWNiLG4uUFB5KTtyZXR1cm4gbn1mdW5jdGlvbiBidWlsZFByZWNpbmN0cyhlLHQsYSl7Y29uc3Qgcj0xPDxhLlBQeCxuPTE8PGEuUFB5LGk9MD09PXQucmVzTGV2ZWwscz0xPDxhLlBQeCsoaT8wOi0xKSxvPTE8PGEuUFB5KyhpPzA6LTEpLGM9dC50cngxPnQudHJ4MD9NYXRoLmNlaWwodC50cngxL3IpLU1hdGguZmxvb3IodC50cngwL3IpOjAsbD10LnRyeTE+dC50cnkwP01hdGguY2VpbCh0LnRyeTEvbiktTWF0aC5mbG9vcih0LnRyeTAvbik6MCxoPWMqbDt0LnByZWNpbmN0UGFyYW1ldGVycz17cHJlY2luY3RXaWR0aDpyLHByZWNpbmN0SGVpZ2h0Om4sbnVtcHJlY2luY3Rzd2lkZTpjLG51bXByZWNpbmN0c2hpZ2g6bCxudW1wcmVjaW5jdHM6aCxwcmVjaW5jdFdpZHRoSW5TdWJiYW5kOnMscHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6b319ZnVuY3Rpb24gYnVpbGRDb2RlYmxvY2tzKGUsdCxhKXtjb25zdCByPWEueGNiXyxuPWEueWNiXyxpPTE8PHIscz0xPDxuLG89dC50YngwPj5yLGM9dC50YnkwPj5uLGw9dC50YngxK2ktMT4+cixoPXQudGJ5MStzLTE+Pm4sdT10LnJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLGQ9W10sZj1bXTtsZXQgZyxwLG0sYjtmb3IocD1jO3A8aDtwKyspZm9yKGc9bztnPGw7ZysrKXttPXtjYng6ZyxjYnk6cCx0YngwOmkqZyx0YnkwOnMqcCx0YngxOmkqKGcrMSksdGJ5MTpzKihwKzEpfTttLnRieDBfPU1hdGgubWF4KHQudGJ4MCxtLnRieDApO20udGJ5MF89TWF0aC5tYXgodC50YnkwLG0udGJ5MCk7bS50YngxXz1NYXRoLm1pbih0LnRieDEsbS50YngxKTttLnRieTFfPU1hdGgubWluKHQudGJ5MSxtLnRieTEpO2I9TWF0aC5mbG9vcigobS50YngwXy10LnRieDApL3UucHJlY2luY3RXaWR0aEluU3ViYmFuZCkrTWF0aC5mbG9vcigobS50YnkwXy10LnRieTApL3UucHJlY2luY3RIZWlnaHRJblN1YmJhbmQpKnUubnVtcHJlY2luY3Rzd2lkZTttLnByZWNpbmN0TnVtYmVyPWI7bS5zdWJiYW5kVHlwZT10LnR5cGU7bS5MYmxvY2s9MztpZihtLnRieDFfPD1tLnRieDBffHxtLnRieTFfPD1tLnRieTBfKWNvbnRpbnVlO2QucHVzaChtKTtsZXQgZT1mW2JdO2lmKHZvaWQgMCE9PWUpe2c8ZS5jYnhNaW4/ZS5jYnhNaW49ZzpnPmUuY2J4TWF4JiYoZS5jYnhNYXg9Zyk7cDxlLmNieU1pbj9lLmNieE1pbj1wOnA+ZS5jYnlNYXgmJihlLmNieU1heD1wKX1lbHNlIGZbYl09ZT17Y2J4TWluOmcsY2J5TWluOnAsY2J4TWF4OmcsY2J5TWF4OnB9O20ucHJlY2luY3Q9ZX10LmNvZGVibG9ja1BhcmFtZXRlcnM9e2NvZGVibG9ja1dpZHRoOnIsY29kZWJsb2NrSGVpZ2h0Om4sbnVtY29kZWJsb2Nrd2lkZTpsLW8rMSxudW1jb2RlYmxvY2toaWdoOmgtYysxfTt0LmNvZGVibG9ja3M9ZDt0LnByZWNpbmN0cz1mfWZ1bmN0aW9uIGNyZWF0ZVBhY2tldChlLHQsYSl7Y29uc3Qgcj1bXSxuPWUuc3ViYmFuZHM7Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPW5bZV0uY29kZWJsb2Nrcztmb3IobGV0IGU9MCxuPWEubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49YVtlXTtuLnByZWNpbmN0TnVtYmVyPT09dCYmci5wdXNoKG4pfX1yZXR1cm57bGF5ZXJOdW1iZXI6YSxjb2RlYmxvY2tzOnJ9fWZ1bmN0aW9uIExheWVyUmVzb2x1dGlvbkNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288bjtvKyspe2Zvcig7Yzw9cztjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYoYz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2NdLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLG8pO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288PXM7bysrKXtmb3IoO2M8bjtjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYobz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW29dLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLGMpO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzLG8sYyxsLGg9MDtmb3IoYz0wO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2g9TWF0aC5tYXgoaCxlLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpfWNvbnN0IHU9bmV3IEludDMyQXJyYXkoaCsxKTtmb3Iobz0wO288PWg7KytvKXtsZXQgZT0wO2ZvcihjPTA7YzxpOysrYyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbY10ucmVzb2x1dGlvbnM7bzx0Lmxlbmd0aCYmKGU9TWF0aC5tYXgoZSx0W29dLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpKX11W29dPWV9cz0wO289MDtjPTA7bD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1oO28rKyl7Zm9yKDtsPHVbb107bCsrKXtmb3IoO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztpZighKGw+PWEpKXtmb3IoO3M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsbCxzKTtzKys7cmV0dXJuIGV9cz0wfX1jPTB9bD0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0sbj1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXoscz1nZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKHIpLG89cztsZXQgYz0wLGw9MCxoPTAsdT0wLGQ9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7ZDxvLm1heE51bUhpZ2g7ZCsrKXtmb3IoO3U8by5tYXhOdW1XaWRlO3UrKyl7Zm9yKDtoPGk7aCsrKXtjb25zdCBlPXIuY29tcG9uZW50c1toXSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmb3IoO2w8PXQ7bCsrKXtjb25zdCB0PWUucmVzb2x1dGlvbnNbbF0sYT1zLmNvbXBvbmVudHNbaF0ucmVzb2x1dGlvbnNbbF0scj1nZXRQcmVjaW5jdEluZGV4SWZFeGlzdCh1LGQsYSxvLHQpO2lmKG51bGwhPT1yKXtmb3IoO2M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQscixjKTtjKys7cmV0dXJuIGV9Yz0wfX1sPTB9aD0wfXU9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKTtsZXQgbz0wLGM9MCxsPTAsaD0wLHU9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bDxpOysrbCl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF0sdD1zLmNvbXBvbmVudHNbbF0sYT1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDt1PHQubWF4TnVtSGlnaDt1Kyspe2Zvcig7aDx0Lm1heE51bVdpZGU7aCsrKXtmb3IoO2M8PWE7YysrKXtjb25zdCBhPWUucmVzb2x1dGlvbnNbY10scj10LnJlc29sdXRpb25zW2NdLGk9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QoaCx1LHIsdCxhKTtpZihudWxsIT09aSl7Zm9yKDtvPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldChhLGksbyk7bysrO3JldHVybiBlfW89MH19Yz0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBnZXRQcmVjaW5jdEluZGV4SWZFeGlzdChlLHQsYSxyLG4pe2NvbnN0IGk9ZSpyLm1pbldpZHRoLHM9dCpyLm1pbkhlaWdodDtpZihpJWEud2lkdGghPTB8fHMlYS5oZWlnaHQhPTApcmV0dXJuIG51bGw7Y29uc3Qgbz1zL2Eud2lkdGgqbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTtyZXR1cm4gaS9hLmhlaWdodCtvfWZ1bmN0aW9uIGdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUoZSl7Y29uc3QgdD1lLmNvbXBvbmVudHMubGVuZ3RoO2xldCBhPU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLG49MCxpPTA7Y29uc3Qgcz1uZXcgQXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyl7Y29uc3QgdD1lLmNvbXBvbmVudHNbb10sYz10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbD1uZXcgQXJyYXkoYysxKTtsZXQgaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1BWF9WQUxVRSxkPTAsZj0wLGc9MTtmb3IobGV0IGU9YztlPj0wOy0tZSl7Y29uc3QgYT10LnJlc29sdXRpb25zW2VdLHI9ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdFdpZHRoLG49ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdEhlaWdodDtoPU1hdGgubWluKGgscik7dT1NYXRoLm1pbih1LG4pO2Q9TWF0aC5tYXgoZCxhLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHN3aWRlKTtmPU1hdGgubWF4KGYsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzaGlnaCk7bFtlXT17d2lkdGg6cixoZWlnaHQ6bn07Zzw8PTF9YT1NYXRoLm1pbihhLGgpO3I9TWF0aC5taW4ocix1KTtuPU1hdGgubWF4KG4sZCk7aT1NYXRoLm1heChpLGYpO3Nbb109e3Jlc29sdXRpb25zOmwsbWluV2lkdGg6aCxtaW5IZWlnaHQ6dSxtYXhOdW1XaWRlOmQsbWF4TnVtSGlnaDpmfX1yZXR1cm57Y29tcG9uZW50czpzLG1pbldpZHRoOmEsbWluSGVpZ2h0OnIsbWF4TnVtV2lkZTpuLG1heE51bUhpZ2g6aX19ZnVuY3Rpb24gYnVpbGRQYWNrZXRzKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXQuQ3Npejtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCB0PXIuY29tcG9uZW50c1tlXSxhPXQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxuPVtdLGk9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspe2NvbnN0IHI9Z2V0QmxvY2tzRGltZW5zaW9ucygwLHQsZSkscz17fSxvPTE8PGEtZTtzLnRyeDA9TWF0aC5jZWlsKHQudGN4MC9vKTtzLnRyeTA9TWF0aC5jZWlsKHQudGN5MC9vKTtzLnRyeDE9TWF0aC5jZWlsKHQudGN4MS9vKTtzLnRyeTE9TWF0aC5jZWlsKHQudGN5MS9vKTtzLnJlc0xldmVsPWU7YnVpbGRQcmVjaW5jdHMoMCxzLHIpO24ucHVzaChzKTtsZXQgYztpZigwPT09ZSl7Yz17fTtjLnR5cGU9IkxMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9vKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9vKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9vKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9vKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtzLnN1YmJhbmRzPVtjXX1lbHNle2NvbnN0IG49MTw8YS1lKzEsbz1bXTtjPXt9O2MudHlwZT0iSEwiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24pO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24pO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iTEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24pO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24pO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iSEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtzLnN1YmJhbmRzPW99fXQucmVzb2x1dGlvbnM9bjt0LnN1YmJhbmRzPWl9Y29uc3QgaT1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMucHJvZ3Jlc3Npb25PcmRlcjtzd2l0Y2goaSl7Y2FzZSAwOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMTpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUmVzb2x1dGlvbkxheWVyQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDI6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAzOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBQb3NpdGlvbkNvbXBvbmVudFJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgNDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgQ29tcG9uZW50UG9zaXRpb25SZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKcHhFcnJvcihgVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgJHtpfWApfX1mdW5jdGlvbiBwYXJzZVRpbGVQYWNrZXRzKGUsdCxhLHIpe2xldCBpLHM9MCxvPTAsYz0hMTtmdW5jdGlvbiByZWFkQml0cyhlKXtmb3IoO288ZTspe2NvbnN0IGU9dFthK3NdO3MrKztpZihjKXtpPWk8PDd8ZTtvKz03O2M9ITF9ZWxzZXtpPWk8PDh8ZTtvKz04fTI1NT09PWUmJihjPSEwKX1vLT1lO3JldHVybiBpPj4+byYoMTw8ZSktMX1mdW5jdGlvbiBza2lwTWFya2VySWZFcXVhbChlKXtpZigyNTU9PT10W2Ercy0xXSYmdFthK3NdPT09ZSl7c2tpcEJ5dGVzKDEpO3JldHVybiEwfWlmKDI1NT09PXRbYStzXSYmdFthK3MrMV09PT1lKXtza2lwQnl0ZXMoMik7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gc2tpcEJ5dGVzKGUpe3MrPWV9ZnVuY3Rpb24gYWxpZ25Ub0J5dGUoKXtvPTA7aWYoYyl7cysrO2M9ITF9fWZ1bmN0aW9uIHJlYWRDb2RpbmdwYXNzZXMoKXtpZigwPT09cmVhZEJpdHMoMSkpcmV0dXJuIDE7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAyO2xldCBlPXJlYWRCaXRzKDIpO2lmKGU8MylyZXR1cm4gZSszO2U9cmVhZEJpdHMoNSk7aWYoZTwzMSlyZXR1cm4gZSs2O2U9cmVhZEJpdHMoNyk7cmV0dXJuIGUrMzd9Y29uc3QgbD1lLmN1cnJlbnRUaWxlLmluZGV4LGg9ZS50aWxlc1tsXSx1PWUuQ09ELnNvcE1hcmtlclVzZWQsZD1lLkNPRC5lcGhNYXJrZXJVc2VkLGY9aC5wYWNrZXRzSXRlcmF0b3I7Zm9yKDtzPHI7KXthbGlnblRvQnl0ZSgpO3UmJnNraXBNYXJrZXJJZkVxdWFsKDE0NSkmJnNraXBCeXRlcyg0KTtjb25zdCBlPWYubmV4dFBhY2tldCgpO2lmKCFyZWFkQml0cygxKSljb250aW51ZTtjb25zdCByPWUubGF5ZXJOdW1iZXIsaT1bXTtsZXQgbztmb3IobGV0IHQ9MCxhPWUuY29kZWJsb2Nrcy5sZW5ndGg7dDxhO3QrKyl7bz1lLmNvZGVibG9ja3NbdF07bGV0IGE9by5wcmVjaW5jdDtjb25zdCBzPW8uY2J4LWEuY2J4TWluLGM9by5jYnktYS5jYnlNaW47bGV0IGwsaCx1PSExLGQ9ITE7aWYodm9pZCAwIT09by5pbmNsdWRlZCl1PSEhcmVhZEJpdHMoMSk7ZWxzZXthPW8ucHJlY2luY3Q7bGV0IGU7aWYodm9pZCAwIT09YS5pbmNsdXNpb25UcmVlKWU9YS5pbmNsdXNpb25UcmVlO2Vsc2V7Y29uc3QgdD1hLmNieE1heC1hLmNieE1pbisxLG49YS5jYnlNYXgtYS5jYnlNaW4rMTtlPW5ldyBJbmNsdXNpb25UcmVlKHQsbixyKTtoPW5ldyBUYWdUcmVlKHQsbik7YS5pbmNsdXNpb25UcmVlPWU7YS56ZXJvQml0UGxhbmVzVHJlZT1oO2ZvcihsZXQgZT0wO2U8cjtlKyspaWYoMCE9PXJlYWRCaXRzKDEpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCB0YWcgdHJlZSIpfWlmKGUucmVzZXQocyxjLHIpKWZvcig7Oyl7aWYoIXJlYWRCaXRzKDEpKXtlLmluY3JlbWVudFZhbHVlKHIpO2JyZWFrfWw9IWUubmV4dExldmVsKCk7aWYobCl7by5pbmNsdWRlZD0hMDt1PWQ9ITA7YnJlYWt9fX1pZighdSljb250aW51ZTtpZihkKXtoPWEuemVyb0JpdFBsYW5lc1RyZWU7aC5yZXNldChzLGMpO2Zvcig7OylpZihyZWFkQml0cygxKSl7bD0haC5uZXh0TGV2ZWwoKTtpZihsKWJyZWFrfWVsc2UgaC5pbmNyZW1lbnRWYWx1ZSgpO28uemVyb0JpdFBsYW5lcz1oLnZhbHVlfWNvbnN0IGY9cmVhZENvZGluZ3Bhc3NlcygpO2Zvcig7cmVhZEJpdHMoMSk7KW8uTGJsb2NrKys7Y29uc3QgZz0oMCxuLmxvZzIpKGYpLHA9cmVhZEJpdHMoKGY8MTw8Zz9nLTE6Zykrby5MYmxvY2spO2kucHVzaCh7Y29kZWJsb2NrOm8sY29kaW5ncGFzc2VzOmYsZGF0YUxlbmd0aDpwfSl9YWxpZ25Ub0J5dGUoKTtkJiZza2lwTWFya2VySWZFcXVhbCgxNDYpO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5zaGlmdCgpO289ZS5jb2RlYmxvY2s7dm9pZCAwPT09by5kYXRhJiYoby5kYXRhPVtdKTtvLmRhdGEucHVzaCh7ZGF0YTp0LHN0YXJ0OmErcyxlbmQ6YStzK2UuZGF0YUxlbmd0aCxjb2RpbmdwYXNzZXM6ZS5jb2RpbmdwYXNzZXN9KTtzKz1lLmRhdGFMZW5ndGh9fXJldHVybiBzfWZ1bmN0aW9uIGNvcHlDb2VmZmljaWVudHMoZSx0LGEscixuLHMsYyxsLGgpe2NvbnN0IHU9ci50YngwLGQ9ci50YnkwLGY9ci50YngxLXIudGJ4MCxnPXIuY29kZWJsb2NrcyxwPSJIIj09PXIudHlwZS5jaGFyQXQoMCk/MTowLG09IkgiPT09ci50eXBlLmNoYXJBdCgxKT90OjA7Zm9yKGxldCBhPTAsYj1nLmxlbmd0aDthPGI7KythKXtjb25zdCBiPWdbYV0seT1iLnRieDFfLWIudGJ4MF8sdz1iLnRieTFfLWIudGJ5MF87aWYoMD09PXl8fDA9PT13KWNvbnRpbnVlO2lmKHZvaWQgMD09PWIuZGF0YSljb250aW51ZTtjb25zdCBTPW5ldyBvKHksdyxiLnN1YmJhbmRUeXBlLGIuemVyb0JpdFBsYW5lcyxzKTtsZXQgeD0yO2NvbnN0IGs9Yi5kYXRhO2xldCBDLHYsRixPPTAsVD0wO2ZvcihDPTAsdj1rLmxlbmd0aDtDPHY7QysrKXtGPWtbQ107Tys9Ri5lbmQtRi5zdGFydDtUKz1GLmNvZGluZ3Bhc3Nlc31jb25zdCBNPW5ldyBVaW50OEFycmF5KE8pO2xldCBFPTA7Zm9yKEM9MCx2PWsubGVuZ3RoO0M8djtDKyspe0Y9a1tDXTtjb25zdCBlPUYuZGF0YS5zdWJhcnJheShGLnN0YXJ0LEYuZW5kKTtNLnNldChlLEUpO0UrPWUubGVuZ3RofWNvbnN0IEQ9bmV3IGkuQXJpdGhtZXRpY0RlY29kZXIoTSwwLE8pO1Muc2V0RGVjb2RlcihEKTtmb3IoQz0wO0M8VDtDKyspe3N3aXRjaCh4KXtjYXNlIDA6Uy5ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKTticmVhaztjYXNlIDE6Uy5ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpO2JyZWFrO2Nhc2UgMjpTLnJ1bkNsZWFudXBQYXNzKCk7bCYmUy5jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpfWgmJlMucmVzZXQoKTt4PSh4KzEpJTN9bGV0IE49Yi50YngwXy11KyhiLnRieTBfLWQpKmY7Y29uc3QgUj1TLmNvZWZmaWNlbnRzU2lnbixMPVMuY29lZmZpY2VudHNNYWduaXR1ZGUsaj1TLmJpdHNEZWNvZGVkLCQ9Yz8wOi41O2xldCBfLFUsWDtFPTA7Y29uc3QgSD0iTEwiIT09ci50eXBlO2ZvcihDPTA7Qzx3O0MrKyl7Y29uc3QgYT0yKihOL2Z8MCkqKHQtZikrcCttO2ZvcihfPTA7Xzx5O18rKyl7VT1MW0VdO2lmKDAhPT1VKXtVPShVKyQpKm47MCE9PVJbRV0mJihVPS1VKTtYPWpbRV07Y29uc3QgdD1IP2ErKE48PDEpOk47ZVt0XT1jJiZYPj1zP1U6VSooMTw8cy1YKX1OKys7RSsrfU4rPWYteX19fWZ1bmN0aW9uIHRyYW5zZm9ybVRpbGUoZSx0LGEpe2NvbnN0IHI9dC5jb21wb25lbnRzW2FdLG49ci5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsaT1yLnF1YW50aXphdGlvblBhcmFtZXRlcnMsbz1uLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxjPWkuU1BxY2RzLGw9aS5zY2FsYXJFeHBvdW5kZWQsaD1pLmd1YXJkQml0cyx1PW4uc2VnbWVudGF0aW9uU3ltYm9sVXNlZCxkPW4ucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyxmPWUuY29tcG9uZW50c1thXS5wcmVjaXNpb24sZz1uLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbixwPWc/bmV3IFJldmVyc2libGVUcmFuc2Zvcm06bmV3IElycmV2ZXJzaWJsZVRyYW5zZm9ybSxtPVtdO2xldCBiPTA7Zm9yKGxldCBlPTA7ZTw9bztlKyspe2NvbnN0IHQ9ci5yZXNvbHV0aW9uc1tlXSxhPXQudHJ4MS10LnRyeDAsbj10LnRyeTEtdC50cnkwLGk9bmV3IEZsb2F0MzJBcnJheShhKm4pO2ZvcihsZXQgcj0wLG49dC5zdWJiYW5kcy5sZW5ndGg7cjxuO3IrKyl7bGV0IG4sbztpZihsKXtuPWNbYl0ubXU7bz1jW2JdLmVwc2lsb247YisrfWVsc2V7bj1jWzBdLm11O289Y1swXS5lcHNpbG9uKyhlPjA/MS1lOjApfWNvbnN0IHA9dC5zdWJiYW5kc1tyXSxtPXNbcC50eXBlXTtjb3B5Q29lZmZpY2llbnRzKGksYSwwLHAsZz8xOjIqKihmK20tbykqKDErbi8yMDQ4KSxoK28tMSxnLHUsZCl9bS5wdXNoKHt3aWR0aDphLGhlaWdodDpuLGl0ZW1zOml9KX1jb25zdCB5PXAuY2FsY3VsYXRlKG0sci50Y3gwLHIudGN5MCk7cmV0dXJue2xlZnQ6ci50Y3gwLHRvcDpyLnRjeTAsd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHQsaXRlbXM6eS5pdGVtc319ZnVuY3Rpb24gaW5pdGlhbGl6ZVRpbGUoZSx0KXtjb25zdCBhPWUuU0laLkNzaXoscj1lLnRpbGVzW3RdO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9ci5jb21wb25lbnRzW3RdLG49dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5RQ0NbdF0/ZS5jdXJyZW50VGlsZS5RQ0NbdF06ZS5jdXJyZW50VGlsZS5RQ0Q7YS5xdWFudGl6YXRpb25QYXJhbWV0ZXJzPW47Y29uc3QgaT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLkNPQ1t0XT9lLmN1cnJlbnRUaWxlLkNPQ1t0XTplLmN1cnJlbnRUaWxlLkNPRDthLmNvZGluZ1N0eWxlUGFyYW1ldGVycz1pfXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycz1lLmN1cnJlbnRUaWxlLkNPRH1jbGFzcyBUYWdUcmVle2NvbnN0cnVjdG9yKGUsdCl7Y29uc3QgYT0oMCxuLmxvZzIpKE1hdGgubWF4KGUsdCkpKzE7dGhpcy5sZXZlbHM9W107Zm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgYT17d2lkdGg6ZSxoZWlnaHQ6dCxpdGVtczpbXX07dGhpcy5sZXZlbHMucHVzaChhKTtlPU1hdGguY2VpbChlLzIpO3Q9TWF0aC5jZWlsKHQvMil9fXJlc2V0KGUsdCl7bGV0IGEscj0wLG49MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7YT10aGlzLmxldmVsc1tyXTtjb25zdCBpPWUrdCphLndpZHRoO2lmKHZvaWQgMCE9PWEuaXRlbXNbaV0pe249YS5pdGVtc1tpXTticmVha31hLmluZGV4PWk7ZT4+PTE7dD4+PTE7cisrfXItLTthPXRoaXMubGV2ZWxzW3JdO2EuaXRlbXNbYS5pbmRleF09bjt0aGlzLmN1cnJlbnRMZXZlbD1yO2RlbGV0ZSB0aGlzLnZhbHVlfWluY3JlbWVudFZhbHVlKCl7Y29uc3QgZT10aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07ZS5pdGVtc1tlLmluZGV4XSsrfW5leHRMZXZlbCgpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO2UtLTtpZihlPDApe3RoaXMudmFsdWU9YTtyZXR1cm4hMX10aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jbGFzcyBJbmNsdXNpb25UcmVle2NvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCByPSgwLG4ubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXJbZV09YTtjb25zdCBuPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOnJ9O3RoaXMubGV2ZWxzLnB1c2gobik7ZT1NYXRoLmNlaWwoZS8yKTt0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQsYSl7bGV0IHI9MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmxldmVsc1tyXSxpPWUrdCpuLndpZHRoO24uaW5kZXg9aTtjb25zdCBzPW4uaXRlbXNbaV07aWYoMjU1PT09cylicmVhaztpZihzPmEpe3RoaXMuY3VycmVudExldmVsPXI7dGhpcy5wcm9wYWdhdGVWYWx1ZXMoKTtyZXR1cm4hMX1lPj49MTt0Pj49MTtyKyt9dGhpcy5jdXJyZW50TGV2ZWw9ci0xO3JldHVybiEwfWluY3JlbWVudFZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdO3QuaXRlbXNbdC5pbmRleF09ZSsxO3RoaXMucHJvcGFnYXRlVmFsdWVzKCl9cHJvcGFnYXRlVmFsdWVzKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07Zm9yKDstLWU+PTA7KXt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YX19bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07dC5pdGVtc1t0LmluZGV4XT0yNTU7ZS0tO2lmKGU8MClyZXR1cm4hMTt0aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jb25zdCBvPWZ1bmN0aW9uIEJpdE1vZGVsQ2xvc3VyZSgpe2NvbnN0IGU9MTcsdD1uZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKSxhPW5ldyBVaW50OEFycmF5KFswLDMsNCwwLDUsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDEsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMSwyLDAsMSwyLDIsMCwyLDIsMiwwLDAsMCwwLDAsMyw0LDUsMCw0LDUsNSwwLDUsNSw1LDAsMCwwLDAsMCw2LDcsNywwLDcsNyw3LDAsNyw3LDcsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOCwwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4XSk7cmV0dXJuIGNsYXNzIEJpdE1vZGVse2NvbnN0cnVjdG9yKGUsbixpLHMsbyl7dGhpcy53aWR0aD1lO3RoaXMuaGVpZ2h0PW47bGV0IGM7Yz0iSEgiPT09aT9yOiJITCI9PT1pP2E6dDt0aGlzLmNvbnRleHRMYWJlbFRhYmxlPWM7Y29uc3QgbD1lKm47dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkobCk7dGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGg7aD1vPjE0P25ldyBVaW50MzJBcnJheShsKTpvPjY/bmV3IFVpbnQxNkFycmF5KGwpOm5ldyBVaW50OEFycmF5KGwpO3RoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9aDt0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShsKTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGwpO2lmKDAhPT1zKWZvcihsZXQgZT0wO2U8bDtlKyspdVtlXT1zO3RoaXMuYml0c0RlY29kZWQ9dTt0aGlzLnJlc2V0KCl9c2V0RGVjb2RlcihlKXt0aGlzLmRlY29kZXI9ZX1yZXNldCgpe3RoaXMuY29udGV4dHM9bmV3IEludDhBcnJheSgxOSk7dGhpcy5jb250ZXh0c1swXT04O3RoaXMuY29udGV4dHNbMTddPTkyO3RoaXMuY29udGV4dHNbMThdPTZ9c2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGUsdCxhKXtjb25zdCByPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG49dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LHM9dD4wLG89dCsxPG47bGV0IGM7aWYoZT4wKXtjPWEtbjtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9aWYoZSsxPGkpe2M9YStuO3MmJihyW2MtMV0rPTE2KTtvJiYocltjKzFdKz0xNik7cltjXSs9NH1zJiYoclthLTFdKz0xKTtvJiYoclthKzFdKz0xKTtyW2FdfD0xMjh9cnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24saT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxzPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLG89dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsbD10aGlzLmJpdHNEZWNvZGVkO2ZvcihsZXQgaD0wO2g8YTtoKz00KWZvcihsZXQgdT0wO3U8dDt1Kyspe2xldCBkPWgqdCt1O2ZvcihsZXQgZj0wO2Y8NDtmKyssZCs9dCl7Y29uc3QgdD1oK2Y7aWYodD49YSlicmVhaztzW2RdJj0tMjtpZihyW2RdfHwhaVtkXSljb250aW51ZTtjb25zdCBnPWNbaVtkXV07aWYoZS5yZWFkQml0KG8sZykpe2NvbnN0IGU9dGhpcy5kZWNvZGVTaWduQml0KHQsdSxkKTtuW2RdPWU7cltkXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHQsdSxkKTtzW2RdfD0yfWxbZF0rKztzW2RdfD0xfX19ZGVjb2RlU2lnbkJpdChlLHQsYSl7Y29uc3Qgcj10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLHM9dGhpcy5jb2VmZmljZW50c1NpZ247bGV0IG8sYyxsLGgsdSxkO2g9dD4wJiYwIT09aVthLTFdO2lmKHQrMTxyJiYwIT09aVthKzFdKXtsPXNbYSsxXTtpZihoKXtjPXNbYS0xXTtvPTEtbC1jfWVsc2Ugbz0xLWwtbH1lbHNlIGlmKGgpe2M9c1thLTFdO289MS1jLWN9ZWxzZSBvPTA7Y29uc3QgZj0zKm87aD1lPjAmJjAhPT1pW2Etcl07aWYoZSsxPG4mJjAhPT1pW2Ercl0pe2w9c1thK3JdO2lmKGgpe2M9c1thLXJdO289MS1sLWMrZn1lbHNlIG89MS1sLWwrZn1lbHNlIGlmKGgpe2M9c1thLXJdO289MS1jLWMrZn1lbHNlIG89ZjtpZihvPj0wKXt1PTkrbztkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9ZWxzZXt1PTktbztkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KX1yZXR1cm4gZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxuPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqYSxsPTQqdDtmb3IobGV0IGEsaD0wO2g8YztoPWEpe2E9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPGE7bCs9dCl7aWYoIXJbbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2O2lmKDAhPSgyJm9bbF0pKXtvW2xdXj0yO3Q9MD09PSgxMjcmbltsXSk/MTU6MTR9Y29uc3QgYT1lLnJlYWRCaXQoaSx0KTtyW2xdPXJbbF08PDF8YTtzW2xdKys7b1tsXXw9MX19fXJ1bkNsZWFudXBQYXNzKCl7Y29uc3QgdD10aGlzLmRlY29kZXIsYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsbj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxpPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUscz10aGlzLmNvZWZmaWNlbnRzU2lnbixvPXRoaXMuY29udGV4dHMsYz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGw9dGhpcy5iaXRzRGVjb2RlZCxoPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLHU9YSxkPTIqYSxmPTMqYTtsZXQgZztmb3IobGV0IHA9MDtwPHI7cD1nKXtnPU1hdGgubWluKHArNCxyKTtjb25zdCBtPXAqYSxiPXArMzxyO2ZvcihsZXQgcj0wO3I8YTtyKyspe2NvbnN0IHk9bStyO2xldCB3LFM9MCx4PXksaz1wO2lmKGImJjA9PT1oW3ldJiYwPT09aFt5K3VdJiYwPT09aFt5K2RdJiYwPT09aFt5K2ZdJiYwPT09blt5XSYmMD09PW5beSt1XSYmMD09PW5beStkXSYmMD09PW5beStmXSl7aWYoIXQucmVhZEJpdChvLDE4KSl7bFt5XSsrO2xbeSt1XSsrO2xbeStkXSsrO2xbeStmXSsrO2NvbnRpbnVlfVM9dC5yZWFkQml0KG8sZSk8PDF8dC5yZWFkQml0KG8sZSk7aWYoMCE9PVMpe2s9cCtTO3grPVMqYX13PXRoaXMuZGVjb2RlU2lnbkJpdChrLHIseCk7c1t4XT13O2lbeF09MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShrLHIseCk7aFt4XXw9Mjt4PXk7Zm9yKGxldCBlPXA7ZTw9aztlKysseCs9YSlsW3hdKys7UysrfWZvcihrPXArUztrPGc7aysrLHgrPWEpe2lmKGlbeF18fDAhPSgxJmhbeF0pKWNvbnRpbnVlO2NvbnN0IGU9Y1tuW3hdXTtpZigxPT09dC5yZWFkQml0KG8sZSkpe3c9dGhpcy5kZWNvZGVTaWduQml0KGsscix4KTtzW3hdPXc7aVt4XT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGsscix4KTtoW3hdfD0yfWxbeF0rK319fX1jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpe2NvbnN0IHQ9dGhpcy5kZWNvZGVyLGE9dGhpcy5jb250ZXh0cztpZigxMCE9PSh0LnJlYWRCaXQoYSxlKTw8M3x0LnJlYWRCaXQoYSxlKTw8Mnx0LnJlYWRCaXQoYSxlKTw8MXx0LnJlYWRCaXQoYSxlKSkpdGhyb3cgbmV3IEpweEVycm9yKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKX19fSgpO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1UcmFuc2Zvcm0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj1lWzBdO2ZvcihsZXQgbj0xLGk9ZS5sZW5ndGg7bjxpO24rKylyPXRoaXMuaXRlcmF0ZShyLGVbbl0sdCxhKTtyZXR1cm4gcn1leHRlbmQoZSx0LGEpe2xldCByPXQtMSxuPXQrMSxpPXQrYS0yLHM9dCthO2Vbci0tXT1lW24rK107ZVtzKytdPWVbaS0tXTtlW3ItLV09ZVtuKytdO2VbcysrXT1lW2ktLV07ZVtyLS1dPWVbbisrXTtlW3MrK109ZVtpLS1dO2Vbcl09ZVtuXTtlW3NdPWVbaV19ZmlsdGVyKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LGEscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8aTtoKyspe2Y9MipoKm87Zm9yKHU9MDt1PG47dSsrLGQrKyxmKz0yKWxbZl09c1tkXX1zPWUuaXRlbXM9bnVsbDtjb25zdCBtPW5ldyBGbG9hdDMyQXJyYXkobys4KTtpZigxPT09byl7aWYoMCE9KDEmYSkpZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKWxbZF0qPS41fWVsc2UgZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKXttLnNldChsLnN1YmFycmF5KGQsZCtvKSw0KTt0aGlzLmV4dGVuZChtLDQsbyk7dGhpcy5maWx0ZXIobSw0LG8pO2wuc2V0KG0uc3ViYXJyYXkoNCw0K28pLGQpfWxldCBiPTE2O2NvbnN0IHk9W107Zm9yKGg9MDtoPGI7aCsrKXkucHVzaChuZXcgRmxvYXQzMkFycmF5KGMrOCkpO2xldCB3LFM9MDtlPTQrYztpZigxPT09Yyl7aWYoMCE9KDEmcikpZm9yKGc9MDtnPG87ZysrKWxbZ10qPS41fWVsc2UgZm9yKGc9MDtnPG87ZysrKXtpZigwPT09Uyl7Yj1NYXRoLm1pbihvLWcsYik7Zm9yKGQ9ZyxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKyl5W3ddW2ZdPWxbZCt3XTtTPWJ9Uy0tO2NvbnN0IHQ9eVtTXTt0aGlzLmV4dGVuZCh0LDQsYyk7dGhpcy5maWx0ZXIodCw0LGMpO2lmKDA9PT1TKXtkPWctYisxO2ZvcihmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX19cmV0dXJue3dpZHRoOm8saGVpZ2h0OmMsaXRlbXM6bH19fWNsYXNzIElycmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgbixpLHMsbztjb25zdCBjPS0xLjU4NjEzNDM0MjA1OTkyNCxsPS0uMDUyOTgwMTE4NTcyOTYxLGg9Ljg4MjkxMTA3NTUzMDkzNCx1PS40NDM1MDY4NTIwNDM5NzEsZD0xLjIzMDE3NDEwNDkxNDAwMTtuPSh0fD0wKS0zO2ZvcihpPXIrNDtpLS07bis9MillW25dKj0uODEyODkzMDY2MTE1OTYwOTtuPXQtMjtzPXUqZVtuLTFdO2ZvcihpPXIrMztpLS07bis9Mil7bz11KmVbbisxXTtlW25dPWQqZVtuXS1zLW87aWYoIWktLSlicmVhaztuKz0yO3M9dSplW24rMV07ZVtuXT1kKmVbbl0tcy1vfW49dC0xO3M9aCplW24tMV07Zm9yKGk9cisyO2ktLTtuKz0yKXtvPWgqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1oKmVbbisxXTtlW25dLT1zK299bj10O3M9bCplW24tMV07Zm9yKGk9cisxO2ktLTtuKz0yKXtvPWwqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1sKmVbbisxXTtlW25dLT1zK299aWYoMCE9PXIpe249dCsxO3M9YyplW24tMV07Zm9yKGk9cjtpLS07bis9Mil7bz1jKmVbbisxXTtlW25dLT1zK287aWYoIWktLSlicmVhaztuKz0yO3M9YyplW24rMV07ZVtuXS09cytvfX19fWNsYXNzIFJldmVyc2libGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm17ZmlsdGVyKGUsdCxhKXtjb25zdCByPWE+PjE7bGV0IG4saTtmb3Iobj10fD0wLGk9cisxO2ktLTtuKz0yKWVbbl0tPWVbbi0xXStlW24rMV0rMj4+Mjtmb3Iobj10KzEsaT1yO2ktLTtuKz0yKWVbbl0rPWVbbi0xXStlW24rMV0+PjF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsbj17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtuLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtuLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1ufXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3Qgbj10aGlzLmx6d1N0YXRlO2lmKCFuKXJldHVybjtjb25zdCBpPW4uZWFybHlDaGFuZ2U7bGV0IHM9bi5uZXh0Q29kZTtjb25zdCBvPW4uZGljdGlvbmFyeVZhbHVlcyxjPW4uZGljdGlvbmFyeUxlbmd0aHMsbD1uLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9bi5jb2RlTGVuZ3RoLHU9bi5wcmV2Q29kZTtjb25zdCBkPW4uY3VycmVudFNlcXVlbmNlO2xldCBmPW4uY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxuPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKG4pe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytpJnMraS0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK2kpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19bi5uZXh0Q29kZT1zO24uY29kZUxlbmd0aD1oO24ucHJldkNvZGU9dTtuLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fXQuTFpXU3RyZWFtPUxaV1N0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyKTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsbj10aGlzLmNvbG9ycyxpPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFpLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PW4pZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1pW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8bjsrK3MpYVt1KytdPWlbc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1uXStpW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MipuO2ZvcihzPTA7czx0OysrcylhW3UrK109aVtzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jmlbc10pPDw4KSsoMjU1JmlbcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4rMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxuOysrdCl7aWYobDxyKXtvPW88PDh8MjU1JmlbZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2xldCBvPXMuc3ViYXJyYXkobi1lLG4pOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PW47c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0sbj1hK2wtZTtsZXQgaT1uLWE7aTwwJiYoaT0taSk7bGV0IGQ9bi1sO2Q8MCYmKGQ9LWQpO2xldCBmPW4tZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPWk8PWQmJmk8PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUnVuTGVuZ3RoU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KTtjbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjtjb25zdCBuPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl0W2ErK109bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX10LlJ1bkxlbmd0aFN0cmVhbT1SdW5MZW5ndGhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDt2YXIgcj1hKDIpLG49YSgzMyksaT1hKDM2KSxzPWEoMzgpLG89YSgzNyksYz1hKDM1KSxsPWEoMzkpLGg9YSg0MCksdT1hKDQxKSxkPWEoNDIpLGY9YSg0MyksZz1hKDQ0KSxwPWEoMTQpLG09YSg0NSksYj1hKDQpLHk9YSg4KSx3PWEoNDYpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLGs9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImZvbnRUeXBlIiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwidHlwZSIsInZlcnRpY2FsIl0sQz1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLG8sYyxsKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPW47dGhpcy52bWV0cmljPWk7dGhpcy5vcGVyYXRvckxpc3RJZD1vO3RoaXMuaXNTcGFjZT1jO3RoaXMuaXNJbkZvbnQ9bDtjb25zdCBoPSgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkoYSk7dGhpcy5pc1doaXRlc3BhY2U9aC5pc1doaXRlc3BhY2U7dGhpcy5pc1plcm9XaWR0aERpYWNyaXRpYz1oLmlzWmVyb1dpZHRoRGlhY3JpdGljO3RoaXMuaXNJbnZpc2libGVGb3JtYXRNYXJrPWguaXNJbnZpc2libGVGb3JtYXRNYXJrfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGEpe2VbdCsxXT1hO2VbdF09YT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBhPShlPDw4KSt0O3JldHVybiAzMjc2OCZhP2EtNjU1MzY6YX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuInR0Y2YiPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6bn0pe2xldCBpLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT0oMCxiLnJlYWRVaW50MzIpKHQsMCl8fCJ0cnVlIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpaT1uPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiJPVFRPIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpKWk9bj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlpPW4/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihuKXtpPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7aT0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXsoMCxyLndhcm4pKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2k9dDtzPWF9cmV0dXJuW2ksc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IG47Zm9yKGxldCBhPTAsaT1lLmxlbmd0aDthPGk7YSsrKXtuPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlW2FdLHQpOy0xIT09biYmKHJbYV09bil9Zm9yKGNvbnN0IGUgaW4gYSl7bj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYVtlXSx0KTstMSE9PW4mJihyWytlXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxhPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBuPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihuKTsoMCxyLndhcm4pKG4pO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEsbil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxvPVtdLGM9bmV3IFNldDtsZXQgbD0wO2NvbnN0IGg9U1tsXVswXTtsZXQgdT1oLGQ9U1tsXVsxXTtmb3IobGV0IGYgaW4gZSl7Znw9MDtsZXQgZz1lW2ZdO2lmKCF0KGcpKWNvbnRpbnVlO2lmKHU+ZCl7bCsrO2lmKGw+PVMubGVuZ3RoKXsoMCxyLndhcm4pKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha311PVNbbF1bMF07ZD1TW2xdWzFdfWNvbnN0IHA9dSsrOzA9PT1nJiYoZz1hKTtsZXQgbT1uLmdldChmKTsic3RyaW5nIj09dHlwZW9mIG0mJihtPW0uY29kZVBvaW50QXQoMCkpO2lmKG0mJm08aCYmIWMuaGFzKGcpKXtzLnNldChtLGcpO2MuYWRkKGcpfWlbcF09ZztvW2ZdPXB9cmV0dXJue3RvRm9udENoYXI6byxjaGFyQ29kZVRvR2x5cGhJZDppLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTp1fX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCByPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usbl1vZiB0KW4+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpufSk7MD09PXIubGVuZ3RoJiZyLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO3Iuc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgbj1bXSxpPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8aTspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8aSYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31uLnB1c2goW3QscyxhXSl9cmV0dXJuIG59KGUsdCxhKSxpPW4uYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxvLGMsbCxoPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIisoMCxyLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wJiYhKG5bc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO25bc11bMF08NjU1MzUmJjY1NTM1PT09bltzXVsxXSYmKG5bc11bMV09NjU1MzQpO2NvbnN0IGQ9bltzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsUz0iIix4PSIiLGs9IiIsQz0iIix2PSIiLEY9MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPW5bc107Yj1wWzBdO3k9cFsxXTtTKz1zdHJpbmcxNihiKTt4Kz1zdHJpbmcxNih5KTt3PXBbMl07bGV0IGU9ITA7Zm9yKGM9MSxsPXcubGVuZ3RoO2M8bDsrK2MpaWYod1tjXSE9PXdbYy0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe2srPXN0cmluZzE2KHdbMF0tYiY2NTUzNSk7Qys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGYtcykrMipGO0YrPXktYisxO2srPXN0cmluZzE2KDApO0MrPXN0cmluZzE2KGUpO2ZvcihjPTAsbD13Lmxlbmd0aDtjPGw7KytjKXYrPXN0cmluZzE2KHdbY10pfX1pZihkPjApe3grPSLDv8O/IjtTKz0iw7/DvyI7ays9IlwwASI7Qys9IlwwXDAifWNvbnN0IE89IlwwXDAiK3N0cmluZzE2KDIqZikrc3RyaW5nMTYoZy5yYW5nZSkrc3RyaW5nMTYoZy5lbnRyeSkrc3RyaW5nMTYoZy5yYW5nZVNoaWZ0KSt4KyJcMFwwIitTK2srQyt2O2xldCBUPSIiLE09IiI7aWYoaT4xKXtoKz0iXDADXDBcbiIrKDAsci5zdHJpbmczMikoNCs4KmkrNCtPLmxlbmd0aCk7VD0iIjtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl7cD1uW3NdO2I9cFswXTt3PXBbMl07bGV0IGU9d1swXTtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe3k9cFswXStjLTE7VCs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikoeSkrKDAsci5zdHJpbmczMikoZSk7Yj15KzE7ZT13W2NdfVQrPSgwLHIuc3RyaW5nMzIpKGIpKygwLHIuc3RyaW5nMzIpKHBbMV0pKygwLHIuc3RyaW5nMzIpKGUpfU09IlwwXGZcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aCsxNikrIlwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aC8xMil9cmV0dXJuIGgrIlwwBCIrc3RyaW5nMTYoTy5sZW5ndGgrNCkrTytNK1R9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2E9YXx8e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IG49MCxpPTAsbz0wLGM9MCxsPW51bGwsaD0wO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhsPmV8fCFsKSYmKGw9ZSk7aDxlJiYoaD1lKTtjb25zdCB0PSgwLHMuZ2V0VW5pY29kZVJhbmdlRm9yKShlKTtpZih0PDMyKW58PTE8PHQ7ZWxzZSBpZih0PDY0KWl8PTE8PHQtMzI7ZWxzZSBpZih0PDk2KW98PTE8PHQtNjQ7ZWxzZXtpZighKHQ8MTIzKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7Y3w9MTw8dC05Nn19aD42NTUzNSYmKGg9NjU1MzUpfWVsc2V7bD0wO2g9MjU1fWNvbnN0IHU9ZS5iYm94fHxbMCwwLDAsMF0sZD1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZj1lLmFzY2VudFNjYWxlZD8xOmQveCxnPWEuYXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuYXNjZW50fHx1WzNdKSk7bGV0IHA9YS5kZXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuZGVzY2VudHx8dVsxXSkpO3A+MCYmZS5kZXNjZW50PjAmJnVbMV08MCYmKHA9LXApO2NvbnN0IG09YS55TWF4fHxnLGI9LWEueU1pbnx8LXA7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsci5zdHJpbmczMikobikrKDAsci5zdHJpbmczMikoaSkrKDAsci5zdHJpbmczMikobykrKDAsci5zdHJpbmczMikoYykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihsfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoaHx8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoZykrc3RyaW5nMTYocCkrIlwwZCIrc3RyaW5nMTYobSkrc3RyaW5nMTYoYikrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1NYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpO3JldHVybiJcMANcMFwwIisoMCxyLnN0cmluZzMyKSh0KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgbixpLHMsbyxjO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXtjPXRbMV1bbl18fGFbbl07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3Iobj0wLGk9aC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgZT1sW25dO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtuXSt1W25dK2Rbbl0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9dC5Gb250PWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSExO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ISEoYS5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIW4mJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLGE9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihhW2VdKXtuPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PW47dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0IHM9YS50eXBlLG89YS5zdWJ0eXBlO3RoaXMudHlwZT1zO3RoaXMuc3VidHlwZT1vO2xldCBjLGg9InNhbnMtc2VyaWYiO3RoaXMuaXNNb25vc3BhY2U/aD0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250JiYoaD0ic2VyaWYiKTt0aGlzLmZhbGxiYWNrTmFtZT1oO3RoaXMuZGlmZmVyZW5jZXM9YS5kaWZmZXJlbmNlczt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZTt0aGlzLmNNYXA9YS5jTWFwO3RoaXMuY2FwSGVpZ2h0PWEuY2FwSGVpZ2h0L3g7dGhpcy5hc2NlbnQ9YS5hc2NlbnQveDt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3g7dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudDt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMuYmJveD1hLmJib3g7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9YS5kZWZhdWx0RW5jb2Rpbmc7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy50b0ZvbnRDaGFyPVtdO2lmKCJUeXBlMyIhPT1hLnR5cGUpe3RoaXMuY2lkRW5jb2Rpbmc9YS5jaWRFbmNvZGluZ3x8IiI7dGhpcy52ZXJ0aWNhbD0hIWEudmVydGljYWw7aWYodGhpcy52ZXJ0aWNhbCl7dGhpcy52bWV0cmljcz1hLnZtZXRyaWNzO3RoaXMuZGVmYXVsdFZNZXRyaWNzPWEuZGVmYXVsdFZNZXRyaWNzfWlmKHQmJiF0LmlzRW1wdHkpe1tzLG9dPWdldEZvbnRGaWxlVHlwZSh0LGEpO3M9PT10aGlzLnR5cGUmJm89PT10aGlzLnN1YnR5cGV8fCgwLHIuaW5mbykoYEluY29uc2lzdGVudCBmb250IGZpbGUgVHlwZS9TdWJUeXBlLCBleHBlY3RlZDogJHt0aGlzLnR5cGV9LyR7dGhpcy5zdWJ0eXBlfSBidXQgZm91bmQ6ICR7c30vJHtvfS5gKTt0cnl7c3dpdGNoKHMpe2Nhc2UiTU1UeXBlMSI6KDAsci5pbmZvKSgiTU1UeXBlMSBmb250ICgiK2UrIiksIGZhbGxpbmcgYmFjayB0byBUeXBlMS4iKTtjYXNlIlR5cGUxIjpjYXNlIkNJREZvbnRUeXBlMCI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Y29uc3Qgbj0iVHlwZTFDIj09PW98fCJDSURGb250VHlwZTBDIj09PW8/bmV3IHUuQ0ZGRm9udCh0LGEpOm5ldyB3LlR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUsbixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhhKTtzPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgRm9udCAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7KDAsci53YXJuKShlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMuZm9udFR5cGU9KDAsaS5nZXRGb250VHlwZSkocyxvLGEuaXNTdGFuZGFyZEZvbnQpO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1lbHNle3QmJigwLHIud2FybikoJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJytlKyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSl9fWVsc2V7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTt0aGlzLmZvbnRUeXBlPXIuRm9udFR5cGUuVFlQRTN9fWdldCByZW5kZXJlcigpe2NvbnN0IGU9ZC5Gb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmVuZGVyZXIiLGUpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5rLC4uLkNdOmssYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLG47Zm9yKHIgb2YgdCl7bj10aGlzW3JdO3ZvaWQgMCE9PW4mJihhW3JdPW4pfXJldHVybiBhfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3QgdD10aGlzLm5hbWUsYT10aGlzLnR5cGUsbj10aGlzLnN1YnR5cGU7bGV0IHU9KDAsaS5ub3JtYWxpemVGb250TmFtZSkodCk7Y29uc3QgZD0oMCxsLmdldFN0ZEZvbnRNYXApKCksZz0oMCxsLmdldE5vblN0ZEZvbnRNYXApKCkscD0hIWRbdV0sbT0hKCFnW3VdfHwhZFtnW3VdXSk7dT1kW3VdfHxnW3VdfHx1O2NvbnN0IGI9KDAsZi5nZXRGb250QmFzaWNNZXRyaWNzKSgpW3VdO2lmKGIpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWIuYXNjZW50L3gpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Yi5kZXNjZW50L3gpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWIuY2FwSGVpZ2h0L3gpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHUpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHUpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCB5PS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghcHx8eSkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigocHx8bSkmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzKSgpKTsvQXJpYWwtP0JsYWNrL2kudGVzdCh0KT9hcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKHIsKDAsbC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2spKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpKSgpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1yW2VdO3ZvaWQgMD09PWFbbl0mJihyWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7clsrZV09dH0pKTt0aGlzLnRvRm9udENoYXI9cjt0aGlzLnRvVW5pY29kZT1uZXcgaC5Ub1VuaWNvZGVNYXAocil9ZWxzZSBpZigvU3ltYm9sL2kudGVzdCh1KSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuU3ltYm9sU2V0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdCh1KSl7L1dpbmdkaW5ncy9pLnRlc3QodCkmJigwLHIud2FybikoIk5vbi1lbWJlZGRlZCBXaW5nZGluZ3MgZm9udCwgZmFsbGluZyBiYWNrIHRvIFphcGZEaW5nYmF0cy4iKTt0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuWmFwZkRpbmdiYXRzRW5jb2RpbmcsKDAsby5nZXREaW5nYmF0c0dseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyl9ZWxzZSBpZihwKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZywoMCxvLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZVsrdF09YX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLGE9W107dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoKHQscik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9dGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sbj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYSxlKTstMSE9PW4mJihyPW4pfWFbK3RdPXJ9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcCYmL1ZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsKDAsbC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHMpKCkpO3RoaXMudG9Gb250Q2hhcj1hfWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPXUuc3BsaXQoIi0iKVswXTt0aGlzLmZvbnRUeXBlPSgwLGkuZ2V0Rm9udFR5cGUpKGEsbixlLmlzU3RhbmRhcmRGb250KX1jaGVja0FuZFJlcGFpcihlLHQsYSl7Y29uc3Qgcz1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthWyJPUy8yIl09bnVsbDthLmNtYXA9bnVsbDthLmhlYWQ9bnVsbDthLmhoZWE9bnVsbDthLmhtdHg9bnVsbDthLm1heHA9bnVsbDthLm5hbWU9bnVsbDthLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO3MuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoYVt0LnRhZ109dCkpfXJldHVybiBhfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsaT1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChyKTtjb25zdCBzPWUuZ2V0Qnl0ZXMobik7ZS5wb3M9aTtpZigiaGVhZCI9PT10KXtzWzhdPXNbOV09c1sxMF09c1sxMV09MDtzWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmEsbGVuZ3RoOm4sb2Zmc2V0OnIsZGF0YTpzfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxhLHIsbixpKXtjb25zdCBzPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYoYS10PD0xMilyZXR1cm4gcztjb25zdCBvPWUuc3ViYXJyYXkodCxhKTtsZXQgYz1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGM8MCl7Yz0tMTt3cml0ZVNpZ25lZEludDE2KG8sMCxjKTtyLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBsLGg9MTAsdT0wO2ZvcihsPTA7bDxjO2wrKyl7dT0ob1toXTw8OHxvW2grMV0pKzE7aCs9Mn1jb25zdCBkPWgsZj1vW2hdPDw4fG9baCsxXTtzLnNpemVPZkluc3RydWN0aW9ucz1mO2grPTIrZjtjb25zdCBnPWg7bGV0IHA9MDtmb3IobD0wO2w8dTtsKyspe2NvbnN0IGU9b1toKytdOzE5MiZlJiYob1toLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7cCs9cjtpZig4JmUpe2NvbnN0IGU9b1toKytdO2wrPWU7cCs9ZSpyfX1pZigwPT09cClyZXR1cm4gcztsZXQgbT1oK3A7aWYobT5vLmxlbmd0aClyZXR1cm4gcztpZighaSYmZj4wKXtyLnNldChvLnN1YmFycmF5KDAsZCksbik7ci5zZXQoWzAsMF0sbitkKTtyLnNldChvLnN1YmFycmF5KGcsbSksbitkKzIpO20tPWY7by5sZW5ndGgtbT4zJiYobT1tKzMmLTQpO3MubGVuZ3RoPW07cmV0dXJuIHN9aWYoby5sZW5ndGgtbT4zKXttPW0rMyYtNDtyLnNldChvLnN1YmFycmF5KDAsbSksbik7cy5sZW5ndGg9bTtyZXR1cm4gc31yLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0sbj1lLmxlbmd0aCxpPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybiByO2NvbnN0IHM9dC5nZXRVaW50MTYoKSxvPXQuZ2V0VWludDE2KCksYz1bXTtsZXQgbCxoO2ZvcihsPTA7bDxzJiZ0LnBvcysxMjw9aTtsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V8fDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2UpJiZjLnB1c2goZSl9Zm9yKGw9MCxoPWMubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9Y1tsXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBuPWErbytlLm9mZnNldDtpZihuK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9bjtjb25zdCBzPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgYT0iIjtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7clsxXVtzXT1hfWVsc2UgclswXVtzXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuIHJ9Y29uc3QgbD1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGEsbixpLHMsbyxjPWUuZGF0YSxoPTAsdT0wLGQ9MDtjb25zdCBmPVtdLGc9W10scD1bXTtsZXQgbT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxiPSExLHk9MCx3PTA7Zm9yKGxldCBlPWMubGVuZ3RoO2g8ZTspe2NvbnN0IGU9Y1toKytdO2lmKDY0PT09ZSl7bj1jW2grK107aWYoYnx8dyloKz1uO2Vsc2UgZm9yKGE9MDthPG47YSsrKWYucHVzaChjW2grK10pfWVsc2UgaWYoNjU9PT1lKXtuPWNbaCsrXTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe249ZS0xNzYrMTtpZihifHx3KWgrPW47ZWxzZSBmb3IoYT0wO2E8bjthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe249ZS0xODQrMTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZig0MyE9PWV8fG0paWYoNDQhPT1lfHxtKXtpZig0NT09PWUpaWYoYil7Yj0hMTt1PWh9ZWxzZXtvPWcucG9wKCk7aWYoIW8peygwLHIud2FybikoIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59cz1wLnBvcCgpO2M9by5kYXRhO2g9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbc109Zi5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1ofWVsc2UgaWYoODg9PT1lKSsreTtlbHNlIGlmKDI3PT09ZSl3PXk7ZWxzZSBpZig4OT09PWUpe3c9PT15JiYodz0wKTstLXl9ZWxzZSBpZigyOD09PWUmJiFiJiYhdyl7Y29uc3QgZT1mLmF0KC0xKTtlPjAmJihoKz1lLTEpfX1lbHNle2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1oO3M9Zi5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmh9fWVsc2UgaWYoIWImJiF3KXtzPWYuYXQoLTEpO2lmKGlzTmFOKHMpKSgwLHIuaW5mbykoIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtzXT0hMDtpZihzIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9Zi5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXTtpZihlPDApeygwLHIud2FybikoIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Zi5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhzKSl7Zy5wdXNoKHtkYXRhOmMsaTpoLHN0YWNrVG9wOmYubGVuZ3RoLTF9KTtwLnB1c2gocyk7bz10LmZ1bmN0aW9uc0RlZmluZWRbc107aWYoIW8peygwLHIud2FybikoIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Yz1vLmRhdGE7aD1vLml9fX1pZighYiYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9bFtlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPWYucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZmLmxlbmd0aD4wOyl7Zi5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtmLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1tO2NvbnN0IFM9W2NdO2g+Yy5sZW5ndGgmJlMucHVzaChuZXcgVWludDhBcnJheShoLWMubGVuZ3RoKSk7aWYoZD51KXsoMCxyLndhcm4pKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO1MucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEscixuPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspbis9dFthXS5sZW5ndGg7bj1uKzMmLTQ7Y29uc3QgaT1uZXcgVWludDhBcnJheShuKTtsZXQgcz0wO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtpLnNldCh0W2FdLHMpO3MrPXRbYV0ubGVuZ3RofWUuZGF0YT1pO2UubGVuZ3RoPW59fShlLFMpfWxldCBkLGYsYix3O2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyB5LlN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTsoMCxyLmFzc2VydCkoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLGk9ZS5nZXRJbnQzMigpPj4+MCxzPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspcy5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IG89e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6c307c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gbztjYXNlIDI6by5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIG99dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7YX0uYCl9KGUpLGk9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbz0wO288YTtvKyspe2UucG9zPShlLnN0YXJ0fHwwKStuW29dO2NvbnN0IGE9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLGM9cmVhZFRhYmxlcyhlLGEubnVtVGFibGVzKTtpZighYy5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0IGw9cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxuPWxbZV0ubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49bFtlXVtyXSYmbFtlXVtyXS5yZXBsYWNlKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOmN9O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6YSx0YWJsZXM6Y30pfX19aWYocyl7KDAsci53YXJuKShgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7ZD1lLmhlYWRlcjtmPWUudGFibGVzfWVsc2V7ZD1yZWFkT3BlblR5cGVIZWFkZXIodCk7Zj1yZWFkVGFibGVzKHQsZC5udW1UYWJsZXMpfWNvbnN0IFM9IWZbIkNGRiAiXTtpZihTKXtpZighZi5sb2NhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWYuZ2x5Zil7KDAsci53YXJuKSgnUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtmLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1hLmNvbXBvc2l0ZSYmKChhLmNpZFRvR2lkTWFwfHxbXSkubGVuZ3RoPjB8fCEoYS5jTWFwIGluc3RhbmNlb2YgcC5JZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1kLnZlcnNpb24mJiF0fHwhZi5oZWFkfHwhZi5oaGVhfHwhZi5tYXhwfHwhZi5wb3N0KXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgdS5DRkZGb250KHcsYSk7YWRqdXN0V2lkdGhzKGEpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxiLGEpfWRlbGV0ZSBmLmdseWY7ZGVsZXRlIGYubG9jYTtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWYubWF4cCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO3QucG9zPSh0LnN0YXJ0fHwwKStmLm1heHAub2Zmc2V0O2NvbnN0IHg9dC5nZXRJbnQzMigpLGs9dC5nZXRVaW50MTYoKTtpZihhLnNjYWxlRmFjdG9ycyYmYS5zY2FsZUZhY3RvcnMubGVuZ3RoPT09ayYmUyl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWEsdD1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSxyPW5ldyBnLkdseWZUYWJsZSh7Z2x5ZlRhYmxlOmYuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmYubG9jYS5kYXRhLG51bUdseXBoczprfSk7ci5zY2FsZShlKTtjb25zdHtnbHlmOm4sbG9jYTppLGlzTG9jYXRpb25Mb25nOnN9PXIud3JpdGUoKTtmLmdseWYuZGF0YT1uO2YubG9jYS5kYXRhPWk7aWYocyE9PSEhdCl7Zi5oZWFkLmRhdGFbNTBdPTA7Zi5oZWFkLmRhdGFbNTFdPXM/MTowfWNvbnN0IG89Zi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgYT00KnQscj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPXI+PjgmMjU1O29bYSsxXT0yNTUmcjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgQz1rKzEsdj0hMDtpZihDPjY1NTM1KXt2PSExO0M9azsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRj0wLE89MDtpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7Zi5tYXhwLmRhdGFbMTRdPTA7Zi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7Rj10LmdldFVpbnQxNigpO3QucG9zKz00O089dC5nZXRVaW50MTYoKX1mLm1heHAuZGF0YVs0XT1DPj44O2YubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IFQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLG4pe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxpKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LGkpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpeygwLHIud2FybikoIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxuPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxuO2ErKyl7aWYoYT50KXsoMCxyLndhcm4pKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7KDAsci53YXJuKSgiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KGksbik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KGYuZnBnbSxmLnByZXAsZlsiY3Z0ICJdLEYpO2lmKCFUKXtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLG4saSxzKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG89ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgYz1lLmdldFVpbnQxNigpO2lmKDAhPT1vKXtpZighKDImaW50MTYobi5kYXRhWzQ0XSxuLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKGM+aSl7KDAsci5pbmZvKShgVGhlIG51bU9mTWV0cmljcyAoJHtjfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtpfSkuYCk7Yz1pO3QuZGF0YVszNF09KDY1MjgwJmMpPj44O3QuZGF0YVszNV09MjU1JmN9Y29uc3QgbD1pLWMtKGEubGVuZ3RoLTQqYz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqbCk7ZS5zZXQoYS5kYXRhKTtpZihzKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LGYuaGhlYSxmLmhtdHgsZi5oZWFkLEMsdik7aWYoIWYuaGVhZCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGEpe2NvbnN0IG49ZS5kYXRhLGk9ZnVuY3Rpb24gaW50MzIoZSx0LGEscil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhhPDw4KStyfShuWzBdLG5bMV0sblsyXSxuWzNdKTtpZihpPj4xNiE9MSl7KDAsci5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSk7blswXT0wO25bMV09MTtuWzJdPTA7blszXT0wfWNvbnN0IHM9aW50MTYobls1MF0sbls1MV0pO2lmKHM8MHx8cz4xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIitzKTtjb25zdCBlPXQrMTtpZihhPT09ZTw8MSl7bls1MF09MDtuWzUxXT0wfWVsc2V7aWYoYSE9PWU8PDIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTtuWzUwXT0wO25bNTFdPTF9fX0oZi5oZWFkLGssUz9mLmxvY2EubGVuZ3RoOjApO2xldCBNPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUyl7Y29uc3QgZT1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEscixuLGkscyl7bGV0IG8sYyxsO2lmKHIpe289NDtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtsPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgaD1pP2ErMTphLHU9byooMStoKSxkPW5ldyBVaW50OEFycmF5KHUpO2Quc2V0KGUuZGF0YS5zdWJhcnJheSgwLHUpKTtlLmRhdGE9ZDtjb25zdCBmPXQuZGF0YSxnPWYubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IG0sYjtjb25zdCB5PVtdO2ZvcihtPTAsYj0wO208YSsxO20rKyxiKz1vKXtsZXQgZT1jKGQsYik7ZT5nJiYoZT1nKTt5LnB1c2goe2luZGV4Om0sb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX15LnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpO2ZvcihtPTA7bTxhO20rKyl5W21dLmVuZE9mZnNldD15W20rMV0ub2Zmc2V0O3kuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpO2ZvcihtPTA7bTxhO20rKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXlbbV07aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGE9eVttKzFdLm9mZnNldDtpZigwIT09YSl7eVttXS5lbmRPZmZzZXQ9YTticmVha319Y29uc3Qgdz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsbiksdD1lLmxlbmd0aDswPT09dCYmKHdbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihpKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6dyxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KGYubG9jYSxmLmdseWYsayxlLFQsdixPKTtNPXQubWlzc2luZ0dseXBocztpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe2YubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtmLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighZi5oaGVhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWYuaGhlYS5kYXRhWzEwXSYmMD09PWYuaGhlYS5kYXRhWzExXSl7Zi5oaGVhLmRhdGFbMTBdPTI1NTtmLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IEU9e3VuaXRzUGVyRW06aW50MTYoZi5oZWFkLmRhdGFbMThdLGYuaGVhZC5kYXRhWzE5XSkseU1heDppbnQxNihmLmhlYWQuZGF0YVs0Ml0sZi5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzM4XSxmLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs0XSxmLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs2XSxmLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs4XSxmLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PUUuYXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9RS5kZXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9RS5saW5lR2FwL0UudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvJiZ0aGlzLmNzc0ZvbnRJbmZvLmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLG4pe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9aS5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1uKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLGspO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgRD1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hTVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoYSxuLCEwKSk7aWYobj42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1uOnZvaWQgMCE9PWVbbl0mJihpPWVbbl0pO2k+PTAmJmk8ayYmaGFzR2x5cGgoaSkmJihEW2FdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLG4pe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoIWN8fGMucGxhdGZvcm1JZCE9PXJ8fGMuZW5jb2RpbmdJZCE9PWkpe2lmKDAhPT1yfHwwIT09aSYmMSE9PWkmJjMhPT1pKWlmKDE9PT1yJiYwPT09aSloPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1pfHwhbiYmYyl7aWYoYSYmMz09PXImJjA9PT1pKXtoPSEwO2xldCBhPSEwO2lmKGU8by0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGE9ITEpfWEmJihsPSEwKX19ZWxzZXtoPSEwO2F8fChsPSEwKX1lbHNlIGg9ITA7aCYmKGM9e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOmksb2Zmc2V0OnN9KTtpZihsKWJyZWFrfX1jJiYodC5wb3M9cytjLm9mZnNldCk7aWYoIWN8fC0xPT09dC5wZWVrQnl0ZSgpKXsoMCxyLndhcm4pKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBoPXQuZ2V0VWludDE2KCk7bGV0IHU9ITE7Y29uc3QgZD1bXTtsZXQgZixnO2lmKDA9PT1oKXt0LnNraXAoNCk7Zm9yKGY9MDtmPDI1NjtmKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmZC5wdXNoKHtjaGFyQ29kZTpmLGdseXBoSWQ6ZX0pfXU9ITB9ZWxzZSBpZigyPT09aCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2c9dC5nZXRVaW50MTYoKTtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9ZWxzZXtjb25zdCBuPXJbZVthXV07Zm9yKGY9MDtmPG4uZW50cnlDb3VudDtmKyspe2NvbnN0IGU9KGE8PDgpK2Yrbi5maXJzdENvZGU7dC5wb3M9bi5pZFJhbmdlUG9zKzIqZjtnPXQuZ2V0VWludDE2KCk7MCE9PWcmJihnPShnK24uaWREZWx0YSklNjU1MzYpO2QucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmd9KX19fWVsc2UgaWYoND09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGY9MDtmPG87ZisrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtzPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7bj1pLm9mZnNldEluZGV4O2ZvcihmPXM7Zjw9ZTtmKyspaWYoNjU1MzUhPT1mKXtnPW48MD9mOmNbbitmLXNdO2c9Zyt0JjY1NTM1O2QucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmd9KX19fWVsc2UgaWYoNj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihmPTA7ZjxhO2YrKyl7Zz10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStmO2QucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmd9KX19ZWxzZXtpZigxMiE9PWgpeygwLHIud2FybikoImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitoKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihmPTA7ZjxlO2YrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKWQucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19ZC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxkLmxlbmd0aDtlKyspaWYoZFtlLTFdLmNoYXJDb2RlPT09ZFtlXS5jaGFyQ29kZSl7ZC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6Yy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6Yy5lbmNvZGluZ0lkLG1hcHBpbmdzOmQsaGFzU2hvcnRDbWFwOnV9fShmLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLG49ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLGw9ZS5tYXBwaW5ncztsZXQgdT1bXSxkPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwodT0oMCxjLmdldEVuY29kaW5nKShhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1uJiYxPT09c3x8MT09PW4mJjA9PT1zKSl7Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcjtyPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTp1Lmxlbmd0aCYmIiIhPT11W3RdP3VbdF06Yy5TdGFuZGFyZEVuY29kaW5nW3RdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IG89KDAsaS5yZWNvdmVyR2x5cGhOYW1lKShyLGUpO2xldCBkOzM9PT1uJiYxPT09cz9kPWVbb106MT09PW4mJjA9PT1zJiYoZD1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihvKSk7aWYodm9pZCAwPT09ZCl7aWYoIWEuZ2x5cGhOYW1lcyYmYS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1kKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIGwpaWYoZS5jaGFyQ29kZT09PWQpe0RbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09bil7Zm9yKGNvbnN0IGUgb2YgbClEW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtkPSEwfWVsc2UgZm9yKGNvbnN0IGUgb2YgbCl7bGV0IHQ9ZS5jaGFyQ29kZTszPT09biYmdD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtEW3RdPWUuZ2x5cGhJZH1pZihhLmdseXBoTmFtZXMmJih1Lmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWQmJnZvaWQgMCE9PURbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx1W2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9YS5nbHlwaE5hbWVzLmluZGV4T2YodCk7cj4wJiZoYXNHbHlwaChyKSYmKERbZV09cil9fTA9PT1ELmxlbmd0aCYmKERbMF09MCk7bGV0IE49Qy0xO3Z8fChOPTApO2lmKCFhLmNzc0ZvbnRJbmZvKXtjb25zdCBlPWFkanVzdE1hcHBpbmcoRCxoYXNHbHlwaCxOLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZS50b0ZvbnRDaGFyO2YuY21hcD17dGFnOiJjbWFwIixkYXRhOmNyZWF0ZUNtYXBUYWJsZShlLmNoYXJDb2RlVG9HbHlwaElkLGUudG9Vbmljb2RlRXh0cmFNYXAsQyl9O2ZbIk9TLzIiXSYmZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCBhPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYoYTw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oZlsiT1MvMiJdLHQpfHwoZlsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUoYSxlLmNoYXJDb2RlVG9HbHlwaElkLEUpfSl9aWYoIVMpdHJ5e3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyBuLkNGRlBhcnNlcih3LGEsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpLnBhcnNlKCk7Yi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgbi5DRkZDb21waWxlcihiKTtmWyJDRkYgIl0uZGF0YT1lLmNvbXBpbGUoKX1jYXRjaChlKXsoMCxyLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZihmLm5hbWUpe2NvbnN0IHQ9cmVhZE5hbWVUYWJsZShmLm5hbWUpO2YubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGx9ZWxzZSBmLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgUj1uZXcgbS5PcGVuVHlwZUZpbGVCdWlsZGVyKGQudmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gZilSLmFkZFRhYmxlKGUsZltlXS5kYXRhKTtyZXR1cm4gUi50b0FycmF5KCl9Y29udmVydChlLHQsYSl7YS5maXhlZFBpdGNoPSExO2EuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoMD09PWUuZGlmZmVyZW5jZXMubGVuZ3RofHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW25dKSljb250aW51ZTtjb25zdCBpPXRbbl0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxyKTstMSE9PW8mJihhW25dPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgbj0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihuPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxuLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpaWYodD09PWVbcl0pe2F8fChhPVtdKTthLnB1c2goMHxyKX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJmkuU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiJiZiLmxlbmd0aCl7Y29uc3QgZT1hLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsbj10LmdldENoYXJzZXQoKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIGIpe3R8PTA7Y29uc3QgYT1iW3RdLHI9Yy5TdGFuZGFyZEVuY29kaW5nW2FbMl1dLHM9Yy5TdGFuZGFyZEVuY29kaW5nW2FbM11dLG89bi5pbmRleE9mKHIpLGg9bi5pbmRleE9mKHMpO2lmKG88MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6YVswXSplWzBdK2FbMV0qZVsyXStlWzRdLHk6YVswXSplWzFdK2FbMV0qZVszXStlWzVdfSxmPWdldENoYXJDb2RlcyhsLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1kLmNoYXJDb2RlVG9HbHlwaElkLGE9Y3JlYXRlQ2hhckNvZGUodCxvKSxyPWNyZWF0ZUNoYXJDb2RlKHQsaCk7aVtlXT17YmFzZUZvbnRDaGFyQ29kZTphLGFjY2VudEZvbnRDaGFyQ29kZTpyLGFjY2VudE9mZnNldDp1fX19YS5zZWFjTWFwPWl9Y29uc3QgeT0xLyhhLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgpWzBdLHc9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3cuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoYSxmKSk7dy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKGYsZyxwKSk7dy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNih5KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihhLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc3RyaW5nMTYoYS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTt3LmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGEuYXNjZW50KStzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihhLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGEuaXRhbGljQW5nbGUpKmEueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGE9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IHI9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxuPXA7dDxuO3QrKyl7bGV0IG49MDtpZihlKXtjb25zdCBhPWVbdC0xXTtuPSJ3aWR0aCJpbiBhP2Eud2lkdGg6MH1lbHNlIGEmJihuPU1hdGguY2VpbChhW3RdfHwwKSk7cis9c3RyaW5nMTYobikrc3RyaW5nMTYoMCl9cmV0dXJuIHJ9KCkpO3cuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihwKSk7dy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTt3LmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoYSkpO3JldHVybiB3LnRvQXJyYXkoKX1nZXQgc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpW2FdO2xldCByPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7cj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgciYmKHI9Y29udmVydENpZFN0cmluZyhlLHIpKX0hciYmdGhpcy50b1VuaWNvZGUmJihyPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO3I8PTAmJihyPWUpO3Q9dGhpcy53aWR0aHNbcl07aWYodClicmVha310PXR8fHRoaXMuZGVmYXVsdFdpZHRoO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzcGFjZVdpZHRoIix0KX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxuLGksbz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG8mJm8uaXNTcGFjZT09PXQpcmV0dXJuIG87bGV0IGM9ZTtpZih0aGlzLmNNYXAmJnRoaXMuY01hcC5jb250YWlucyhlKSl7Yz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Y29udmVydENpZFN0cmluZyhlLGMpKX1uPXRoaXMud2lkdGhzW2NdOyJudW1iZXIiIT10eXBlb2YgbiYmKG49dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IGw9dGhpcy52bWV0cmljcyYmdGhpcy52bWV0cmljc1tjXTtsZXQgaD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBoJiYoaD1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpKTtsZXQgdT12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07YT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT10JiYiIiE9PXR8fCJUeXBlMSIhPT10aGlzLnR5cGV8fChhPTMyKTthPSgwLHMubWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMpKGEpfXRoaXMuaXNUeXBlM0ZvbnQmJihpPWEpO2xldCBkPW51bGw7aWYodGhpcy5zZWFjTWFwJiZ0aGlzLnNlYWNNYXBbZV0pe3U9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07YT10LmJhc2VGb250Q2hhckNvZGU7ZD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGY9IiI7Im51bWJlciI9PXR5cGVvZiBhJiYoYTw9MTExNDExMT9mPVN0cmluZy5mcm9tQ29kZVBvaW50KGEpOigwLHIud2FybikoYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7YX1gKSk7bz1uZXcgR2x5cGgoZSxmLGgsZCxuLGwsaSx0LHUpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW99Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsbixhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDppfT1hO24rPWk7Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1pJiYzMj09PWUuY2hhckNvZGVBdChuLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxuPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2gobil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBuPWEubGVuZ3RoO3QucHVzaChbcixyK25dKTtyKz1ufX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdChuKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJm4rKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1yKGkpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWEucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChpKSl9dC5wdXNoKGEuam9pbigiIikpO3JldHVybiB0fX07dC5FcnJvckZvbnQ9Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKGU9ITEpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0ZGVG9wRGljdD10LkNGRlN0cmluZ3M9dC5DRkZTdGFuZGFyZFN0cmluZ3M9dC5DRkZQcml2YXRlRGljdD10LkNGRlBhcnNlcj10LkNGRkluZGV4PXQuQ0ZGSGVhZGVyPXQuQ0ZGRkRTZWxlY3Q9dC5DRkZDb21waWxlcj10LkNGRkNoYXJzZXQ9dC5DRkY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDM0KSxpPWEoMzUpO2NvbnN0IHM9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl07dC5DRkZTdGFuZGFyZFN0cmluZ3M9cztjb25zdCBvPTM5MSxjPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGw9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07dC5DRkZQYXJzZXI9Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qobi5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoaS5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmosdT1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO3UmJihlLmZvbnRNYXRyaXg9dSk7Y29uc3QgZD1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihkKXtlLmFzY2VudD1NYXRoLm1heChkWzNdLGRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihkWzFdLGRbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBmLGc7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKSxuPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KHIpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KG4pO3QuZmRBcnJheS5wdXNoKG4pfWc9bnVsbDtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChjLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxoLmNvdW50KX1lbHNle2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITEpO2c9dGhpcy5wYXJzZUVuY29kaW5nKGMuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGYuY2hhcnNldCl9dC5jaGFyc2V0PWY7dC5lbmNvZGluZz1nO2NvbnN0IHA9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpoLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6cy5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz1wLmNoYXJTdHJpbmdzO3Quc2VhY3M9cC5zZWFjczt0LndpZHRocz1wLndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1hKXsoMCxyLmluZm8pKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGEpO3RoaXMuYnl0ZXM9ZX1jb25zdCBuPWVbMF0saT1lWzFdLHM9ZVsyXSxvPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKG4saSxzLG8pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgYT1lW3QrK107aWYoMzA9PT1hKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBhPSIiO2NvbnN0IHI9MTUsbj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0saT1lLmxlbmd0aDtmb3IoO3Q8aTspe2NvbnN0IGk9ZVt0KytdLHM9aT4+NCxvPTE1Jmk7aWYocz09PXIpYnJlYWs7YSs9bltzXTtpZihvPT09cilicmVhazthKz1uW29dfXJldHVybiBwYXJzZUZsb2F0KGEpfSgpO2lmKDI4PT09YSl7YT1lW3QrK107YT0oYTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBhfWlmKDI5PT09YSl7YT1lW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbdCsrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbdCsrXS0xMDg7KDAsci53YXJuKSgnQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicrYSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgYT1bXTtjb25zdCBuPVtdO3Q9MDtjb25zdCBpPWUubGVuZ3RoO2Zvcig7dDxpOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7bi5wdXNoKFtyLGFdKTthPVtdOysrdH1lbHNlIGEucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIG59cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMscj1hW2UrK108PDh8YVtlKytdLG49W107bGV0IGkscyxvPWU7aWYoMCE9PXIpe2NvbnN0IHQ9YVtlKytdLGM9ZSsocisxKSp0LTE7Zm9yKGk9MCxzPXIrMTtpPHM7KytpKXtsZXQgcj0wO2ZvcihsZXQgbj0wO248dDsrK24pe3I8PD04O3IrPWFbZSsrXX1uLnB1c2goYytyKX1vPW5bcl19Zm9yKGk9MCxzPW4ubGVuZ3RoLTE7aTxzOysraSl7Y29uc3QgZT1uW2ldLHI9bltpKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxyKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QucHVzaCgoMCxyLmJ5dGVzVG9TdHJpbmcpKG4pKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSk7dC5hZGQoKDAsci5ieXRlc1RvU3RyaW5nKShuKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgcj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpci5zZXRCeUtleShlLGEpO3JldHVybiByfXBhcnNlQ2hhclN0cmluZyhlLHQsYSxuKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrLG89dC5sZW5ndGg7Zm9yKGxldCBoPTA7aDxvOyl7Y29uc3Qgbz10W2grK107bGV0IHU9bnVsbDtpZigxMj09PW8pe2NvbnN0IGU9dFtoKytdO2lmKDA9PT1lKXt0W2gtMl09MTM5O3RbaC0xXT0yMjtpPTB9ZWxzZSB1PWxbZV19ZWxzZSBpZigyOD09PW8pe3NbaV09KHRbaF08PDI0fHRbaCsxXTw8MTYpPj4xNjtoKz0yO2krK31lbHNlIGlmKDE0PT09byl7aWYoaT49NCl7aS09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKGksaSs0KTtyZXR1cm4hMX19dT1jW29dfWVsc2UgaWYobz49MzImJm88PTI0Nil7c1tpXT1vLTEzOTtpKyt9ZWxzZSBpZihvPj0yNDcmJm88PTI1NCl7c1tpXT1vPDI1MT8oby0yNDc8PDgpK3RbaF0rMTA4Oi0oby0yNTE8PDgpLXRbaF0tMTA4O2grKztpKyt9ZWxzZSBpZigyNTU9PT1vKXtzW2ldPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2O2grPTQ7aSsrfWVsc2UgaWYoMTk9PT1vfHwyMD09PW8pe2UuaGludHMrPWk+PjE7aCs9ZS5oaW50cys3Pj4zO2klPTI7dT1jW29dfWVsc2V7aWYoMTA9PT1vfHwyOT09PW8pe2xldCB0O3Q9MTA9PT1vP2E6bjtpZighdCl7dT1jW29dOygwLHIud2FybikoIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIit1LmlkKTtyZXR1cm4hMX1sZXQgbD0zMjc2ODt0LmNvdW50PDEyNDA/bD0xMDc6dC5jb3VudDwzMzkwMCYmKGw9MTEzMSk7Y29uc3QgaD1zWy0taV0rbDtpZihoPDB8fGg+PXQuY291bnR8fGlzTmFOKGgpKXt1PWNbb107KDAsci53YXJuKSgiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrdS5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KGgpLGEsbikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09byl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09byYmaD09PXQubGVuZ3RoKXt0W2gtMV09MTQ7dT1jWzE0XX1lbHNlIHU9Y1tvXX1pZih1KXtpZih1LnN0ZW0pe2UuaGludHMrPWk+PjE7aWYoMz09PW98fDIzPT09byllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PW98fDE4PT09bykpeygwLHIud2FybikoIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbaC0xXT0xPT09bz8zOjIzfX1pZigibWluImluIHUmJiFlLnVuZGVmU3RhY2smJmk8dS5taW4peygwLHIud2FybikoIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIit1LmlkKyI7IGFjdHVhbDogIitpKyIsIGV4cGVjdGVkOiAiK3UubWluKTtpZigwPT09aSl7dFtoLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZ1LnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO2ktPXUubWluO2k+PTImJnUuc3RlbT9pJT0yOmk+MSYmKDAsci53YXJuKSgiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO2k+MCYmKGUud2lkdGg9c1tpLTFdKX1pZigic3RhY2tEZWx0YSJpbiB1KXsic3RhY2tGbiJpbiB1JiZ1LnN0YWNrRm4ocyxpKTtpKz11LnN0YWNrRGVsdGF9ZWxzZSBpZih1LnN0YWNrQ2xlYXJpbmcpaT0wO2Vsc2UgaWYodS5yZXNldFN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYodS51bmRlZlN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6bixmZEFycmF5OmkscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG89W10sYz1bXSxsPWUuY291bnQ7Zm9yKGxldCBoPTA7aDxsO2grKyl7Y29uc3QgbD1lLmdldChoKSx1PXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGQ9ITAsZj1udWxsLGc9cztpZihuJiZpLmxlbmd0aCl7Y29uc3QgZT1uLmdldEZESW5kZXgoaCk7aWYoLTE9PT1lKXsoMCxyLndhcm4pKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2Q9ITF9aWYoZT49aS5sZW5ndGgpeygwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2Q9ITF9aWYoZCl7Zz1pW2VdLnByaXZhdGVEaWN0O2Y9Zy5zdWJyc0luZGV4fX1lbHNlIHQmJihmPXQpO2QmJihkPXRoaXMucGFyc2VDaGFyU3RyaW5nKHUsbCxmLGEpKTtpZihudWxsIT09dS53aWR0aCl7Y29uc3QgZT1nLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO2NbaF09ZSt1LndpZHRofWVsc2V7Y29uc3QgZT1nLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO2NbaF09ZX1udWxsIT09dS5zZWFjJiYob1toXT11LnNlYWMpO2R8fGUuc2V0KGgsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm8sd2lkdGhzOmN9fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGE9dFswXSxyPXRbMV07aWYoMD09PWF8fHI+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IG49cithLGk9dGhpcy5ieXRlcy5zdWJhcnJheShyLG4pLHM9dGhpcy5wYXJzZURpY3QoaSksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QscyxlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bztpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLGkpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxuLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULG4uRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxuLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1baT8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2goaT9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChpP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2goaT9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPW4ubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBuPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IGk9ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxpKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLGk9W107bGV0IHM7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO2kucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3Qgbj1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKWkucHVzaChuKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixpKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IG49YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PW5bYV18fDAhPT1uW3NdfHwwIT09bltvXXx8MCE9PW5bY118fDAhPT1uW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtuW2FdPTI5O25bc109aD4+MjQmMjU1O25bb109aD4+MTYmMjU1O25bY109aD4+OCYyNTU7bltsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSk7dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChhKTtjb25zdCBuPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChuKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBhIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTthLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9ci5VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IGk9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO2kmJmkubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHM9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBvPXMudHJhY2tlcnNbMF0sYz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQoYyk7Y29uc3QgbD10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQobCk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW8uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO28uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYSl9Y29uc3QgaD10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7by5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGgpO2NvbnN0IHU9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7by5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZCh1KTtpZihlLmlzQ0lERm9udCl7by5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGEpO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtvLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IHI9cy50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHIsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtvXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgYT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGEpe2NvbnN0IHI9cGFyc2VGbG9hdCgiMWUiKygoYVsyXT8rYVsyXTowKSthWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpyKS9yKS50b1N0cmluZygpfWxldCByLG4saT0iIjtmb3Iocj0wLG49dC5sZW5ndGg7cjxuOysrcil7Y29uc3QgZT10W3JdO2krPSJlIj09PWU/Ii0iPT09dFsrK3JdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1pKz0xJmkubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iocj0wLG49aS5sZW5ndGg7cjxuO3IrPTIpcy5wdXNoKHBhcnNlSW50KGkuc3Vic3RyaW5nKHIscisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihhLmxlbmd0aCwxMjcpO2xldCBuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1hW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO25bdF09ZX1uPW4uam9pbigiIik7IiI9PT1uJiYobj0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykobikpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGEpe2NvbnN0IHI9W107bGV0IG49bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2lmKGEpe2kucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO2kucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtpLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtpLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtpLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIscz10aGlzLmNvbXBpbGVEaWN0KGksZSk7ci5wdXNoKGUpO24uYWRkKHMpO2Uub2Zmc2V0KHQpfW49dGhpcy5jb21waWxlSW5kZXgobixyKTtyZXR1cm57dHJhY2tlcnM6cixvdXRwdXQ6bn19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsYSl7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7KytuKXtjb25zdCBpPWVbbl0scz1pLnByaXZhdGVEaWN0O2lmKCFzfHwhaS5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbz1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixjPXRoaXMuY29tcGlsZURpY3QocyxvKTtsZXQgbD1hLmxlbmd0aDtvLm9mZnNldChsKTtjLmxlbmd0aHx8KGw9MCk7dFtuXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbYy5sZW5ndGgsbF0sYSk7YS5hZGQoYyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtvLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbYy5sZW5ndGhdLGEpO2EuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCBuIG9mIGUub3JkZXIpe2lmKCEobiBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IGk9ZS52YWx1ZXNbbl0scz1lLnR5cGVzW25dO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpZigwIT09aS5sZW5ndGgpe2ZvcihsZXQgbz0wLGM9cy5sZW5ndGg7bzxjOysrbyl7Y29uc3QgYz1zW29dLGw9aVtvXTtzd2l0Y2goYyl7Y2FzZSJudW0iOmNhc2Uic2lkIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW25dO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTtmb3IobGV0IGU9MSx0PWkubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGlbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke2N9YCl9fWEucHVzaCguLi5lLm9wY29kZXNbbl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZCgoMCxyLnN0cmluZ1RvQnl0ZXMpKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUdsb2JhbFN1YnJJbmRleCgpe2NvbnN0IGU9dGhpcy5jZmYuZ2xvYmFsU3VickluZGV4O3RoaXMub3V0LndyaXRlQnl0ZUFycmF5KHRoaXMuY29tcGlsZUluZGV4KGUpKX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IGk7Y29uc3Qgcz10LTE7aWYobilpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyk7aVswXT0wO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChuKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbc109Yz4+OCYyNTU7aVtzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBuPTA7bGV0IGk9ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxuPj44JjI1NSwyNTUmbixpXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PWkpe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtpPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0W2FdPWVbYV07cmV0dXJuIHR9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMscj1hLmxlbmd0aDtpZigwPT09cilyZXR1cm5bMCwwXTtjb25zdCBuPVtyPj44JjI1NSwyNTUmcl07bGV0IGkscyxvPTE7Zm9yKGk9MDtpPHI7KytpKW8rPWFbaV0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7bi5wdXNoKHMpO2xldCBjPTE7Zm9yKGk9MDtpPHIrMTtpKyspezE9PT1zP24ucHVzaCgyNTUmYyk6Mj09PXM/bi5wdXNoKGM+PjgmMjU1LDI1NSZjKTozPT09cz9uLnB1c2goYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTpuLnB1c2goYz4+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpO2FbaV0mJihjKz1hW2ldLmxlbmd0aCl9Zm9yKGk9MDtpPHI7aSsrKXt0W2ldJiZ0W2ldLm9mZnNldChuLmxlbmd0aCk7bi5wdXNoKC4uLmFbaV0pfXJldHVybiBufX10LkNGRkNvbXBpbGVyPUNGRkNvbXBpbGVyfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklTT0Fkb2JlQ2hhcnNldD10LkV4cGVydFN1YnNldENoYXJzZXQ9dC5FeHBlcnRDaGFyc2V0PXZvaWQgMDt0LklTT0Fkb2JlQ2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdO3QuRXhwZXJ0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydFN1YnNldENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwO3QuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPWE7Y29uc3Qgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9bjtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD10Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz10LkZvbnRGbGFncz12b2lkIDA7dC5nZXRGb250VHlwZT1mdW5jdGlvbiBnZXRGb250VHlwZShlLHQsYT0hMSl7c3dpdGNoKGUpe2Nhc2UiVHlwZTEiOnJldHVybiBhP3IuRm9udFR5cGUuVFlQRTFTVEFOREFSRDoiVHlwZTFDIj09PXQ/ci5Gb250VHlwZS5UWVBFMUM6ci5Gb250VHlwZS5UWVBFMTtjYXNlIkNJREZvbnRUeXBlMCI6cmV0dXJuIkNJREZvbnRUeXBlMEMiPT09dD9yLkZvbnRUeXBlLkNJREZPTlRUWVBFMEM6ci5Gb250VHlwZS5DSURGT05UVFlQRTA7Y2FzZSJPcGVuVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuT1BFTlRZUEU7Y2FzZSJUcnVlVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuVFJVRVRZUEU7Y2FzZSJDSURGb250VHlwZTIiOnJldHVybiByLkZvbnRUeXBlLkNJREZPTlRUWVBFMjtjYXNlIk1NVHlwZTEiOnJldHVybiByLkZvbnRUeXBlLk1NVFlQRTE7Y2FzZSJUeXBlMCI6cmV0dXJuIHIuRm9udFR5cGUuVFlQRTA7ZGVmYXVsdDpyZXR1cm4gci5Gb250VHlwZS5VTktOT1dOfX07dC5ub3JtYWxpemVGb250TmFtZT1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5yZXBsYWNlKC9ccy9nLCIiKX07dC5yZWNvdmVyR2x5cGhOYW1lPXJlY292ZXJHbHlwaE5hbWU7dC50eXBlMUZvbnRHbHlwaE1hcHBpbmc9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMsYyxsO2NvbnN0IGg9ISEoZS5mbGFncyZvLlN5bWJvbGljKTtpZihlLmlzSW50ZXJuYWxGb250KXtsPXQ7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7cltjXT1zPj0wP3M6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe2w9KDAsbi5nZXRFbmNvZGluZykoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1lbHNlIGlmKGgpZm9yKGMgaW4gdClyW2NdPXRbY107ZWxzZXtsPW4uU3RhbmRhcmRFbmNvZGluZztmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1jb25zdCB1PWUuZGlmZmVyZW5jZXM7bGV0IGQ7aWYodSlmb3IoYyBpbiB1KXtjb25zdCBlPXVbY107cz1hLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtkfHwoZD0oMCxpLmdldEdseXBoc1VuaWNvZGUpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGQpO3QhPT1lJiYocz1hLmluZGV4T2YodCkpfXJbY109cz49MD9zOjB9cmV0dXJuIHJ9O3ZhciByPWEoMiksbj1hKDM1KSxpPWEoMzcpLHM9YSgzOCk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7Y29uc3Qgbz17Rml4ZWRQaXRjaDoxLFNlcmlmOjIsU3ltYm9saWM6NCxTY3JpcHQ6OCxOb25zeW1ib2xpYzozMixJdGFsaWM6NjQsQWxsQ2FwOjY1NTM2LFNtYWxsQ2FwOjEzMTA3MixGb3JjZUJvbGQ6MjYyMTQ0fTt0LkZvbnRGbGFncz1vO3QuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlOygwLHIuaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9fSwoZSx0LGEpPT57YS5yKHQpO2EuZCh0LHtnZXREaW5nYmF0c0dseXBoc1VuaWNvZGU6KCk9PmksZ2V0R2x5cGhzVW5pY29kZTooKT0+bn0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIkEiLDY1LCJBRSIsMTk4LCJBRWFjdXRlIiw1MDgsIkFFbWFjcm9uIiw0ODIsIkFFc21hbGwiLDYzNDYyLCJBYWN1dGUiLDE5MywiQWFjdXRlc21hbGwiLDYzNDU3LCJBYnJldmUiLDI1OCwiQWJyZXZlYWN1dGUiLDc4NTQsIkFicmV2ZWN5cmlsbGljIiwxMjMyLCJBYnJldmVkb3RiZWxvdyIsNzg2MiwiQWJyZXZlZ3JhdmUiLDc4NTYsIkFicmV2ZWhvb2thYm92ZSIsNzg1OCwiQWJyZXZldGlsZGUiLDc4NjAsIkFjYXJvbiIsNDYxLCJBY2lyY2xlIiw5Mzk4LCJBY2lyY3VtZmxleCIsMTk0LCJBY2lyY3VtZmxleGFjdXRlIiw3ODQ0LCJBY2lyY3VtZmxleGRvdGJlbG93Iiw3ODUyLCJBY2lyY3VtZmxleGdyYXZlIiw3ODQ2LCJBY2lyY3VtZmxleGhvb2thYm92ZSIsNzg0OCwiQWNpcmN1bWZsZXhzbWFsbCIsNjM0NTgsIkFjaXJjdW1mbGV4dGlsZGUiLDc4NTAsIkFjdXRlIiw2MzE3NywiQWN1dGVzbWFsbCIsNjM0MTIsIkFjeXJpbGxpYyIsMTA0MCwiQWRibGdyYXZlIiw1MTIsIkFkaWVyZXNpcyIsMTk2LCJBZGllcmVzaXNjeXJpbGxpYyIsMTIzNCwiQWRpZXJlc2lzbWFjcm9uIiw0NzgsIkFkaWVyZXNpc3NtYWxsIiw2MzQ2MCwiQWRvdGJlbG93Iiw3ODQwLCJBZG90bWFjcm9uIiw0ODAsIkFncmF2ZSIsMTkyLCJBZ3JhdmVzbWFsbCIsNjM0NTYsIkFob29rYWJvdmUiLDc4NDIsIkFpZWN5cmlsbGljIiwxMjM2LCJBaW52ZXJ0ZWRicmV2ZSIsNTE0LCJBbHBoYSIsOTEzLCJBbHBoYXRvbm9zIiw5MDIsIkFtYWNyb24iLDI1NiwiQW1vbm9zcGFjZSIsNjUzMTMsIkFvZ29uZWsiLDI2MCwiQXJpbmciLDE5NywiQXJpbmdhY3V0ZSIsNTA2LCJBcmluZ2JlbG93Iiw3NjgwLCJBcmluZ3NtYWxsIiw2MzQ2MSwiQXNtYWxsIiw2MzMyOSwiQXRpbGRlIiwxOTUsIkF0aWxkZXNtYWxsIiw2MzQ1OSwiQXliYXJtZW5pYW4iLDEzMjksIkIiLDY2LCJCY2lyY2xlIiw5Mzk5LCJCZG90YWNjZW50Iiw3NjgyLCJCZG90YmVsb3ciLDc2ODQsIkJlY3lyaWxsaWMiLDEwNDEsIkJlbmFybWVuaWFuIiwxMzMwLCJCZXRhIiw5MTQsIkJob29rIiwzODUsIkJsaW5lYmVsb3ciLDc2ODYsIkJtb25vc3BhY2UiLDY1MzE0LCJCcmV2ZXNtYWxsIiw2MzIyMCwiQnNtYWxsIiw2MzMzMCwiQnRvcGJhciIsMzg2LCJDIiw2NywiQ2Fhcm1lbmlhbiIsMTM0MiwiQ2FjdXRlIiwyNjIsIkNhcm9uIiw2MzE3OCwiQ2Fyb25zbWFsbCIsNjMyMjEsIkNjYXJvbiIsMjY4LCJDY2VkaWxsYSIsMTk5LCJDY2VkaWxsYWFjdXRlIiw3Njg4LCJDY2VkaWxsYXNtYWxsIiw2MzQ2MywiQ2NpcmNsZSIsOTQwMCwiQ2NpcmN1bWZsZXgiLDI2NCwiQ2RvdCIsMjY2LCJDZG90YWNjZW50IiwyNjYsIkNlZGlsbGFzbWFsbCIsNjM0MTYsIkNoYWFybWVuaWFuIiwxMzUzLCJDaGVhYmtoYXNpYW5jeXJpbGxpYyIsMTIxMiwiQ2hlY3lyaWxsaWMiLDEwNjMsIkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljIiwxMjE0LCJDaGVkZXNjZW5kZXJjeXJpbGxpYyIsMTIwNiwiQ2hlZGllcmVzaXNjeXJpbGxpYyIsMTI2OCwiQ2hlaGFybWVuaWFuIiwxMzQ3LCJDaGVraGFrYXNzaWFuY3lyaWxsaWMiLDEyMjcsIkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMiLDEyMDgsIkNoaSIsOTM1LCJDaG9vayIsMzkxLCJDaXJjdW1mbGV4c21hbGwiLDYzMjIyLCJDbW9ub3NwYWNlIiw2NTMxNSwiQ29hcm1lbmlhbiIsMTM2MSwiQ3NtYWxsIiw2MzMzMSwiRCIsNjgsIkRaIiw0OTcsIkRaY2Fyb24iLDQ1MiwiRGFhcm1lbmlhbiIsMTMzMiwiRGFmcmljYW4iLDM5MywiRGNhcm9uIiwyNzAsIkRjZWRpbGxhIiw3Njk2LCJEY2lyY2xlIiw5NDAxLCJEY2lyY3VtZmxleGJlbG93Iiw3Njk4LCJEY3JvYXQiLDI3MiwiRGRvdGFjY2VudCIsNzY5MCwiRGRvdGJlbG93Iiw3NjkyLCJEZWN5cmlsbGljIiwxMDQ0LCJEZWljb3B0aWMiLDEwMDYsIkRlbHRhIiw4NzEwLCJEZWx0YWdyZWVrIiw5MTYsIkRob29rIiwzOTQsIkRpZXJlc2lzIiw2MzE3OSwiRGllcmVzaXNBY3V0ZSIsNjMxODAsIkRpZXJlc2lzR3JhdmUiLDYzMTgxLCJEaWVyZXNpc3NtYWxsIiw2MzQwMCwiRGlnYW1tYWdyZWVrIiw5ODgsIkRqZWN5cmlsbGljIiwxMDI2LCJEbGluZWJlbG93Iiw3Njk0LCJEbW9ub3NwYWNlIiw2NTMxNiwiRG90YWNjZW50c21hbGwiLDYzMjIzLCJEc2xhc2giLDI3MiwiRHNtYWxsIiw2MzMzMiwiRHRvcGJhciIsMzk1LCJEeiIsNDk4LCJEemNhcm9uIiw0NTMsIkR6ZWFia2hhc2lhbmN5cmlsbGljIiwxMjQ4LCJEemVjeXJpbGxpYyIsMTAyOSwiRHpoZWN5cmlsbGljIiwxMDM5LCJFIiw2OSwiRWFjdXRlIiwyMDEsIkVhY3V0ZXNtYWxsIiw2MzQ2NSwiRWJyZXZlIiwyNzYsIkVjYXJvbiIsMjgyLCJFY2VkaWxsYWJyZXZlIiw3NzA4LCJFY2hhcm1lbmlhbiIsMTMzMywiRWNpcmNsZSIsOTQwMiwiRWNpcmN1bWZsZXgiLDIwMiwiRWNpcmN1bWZsZXhhY3V0ZSIsNzg3MCwiRWNpcmN1bWZsZXhiZWxvdyIsNzcwNCwiRWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg3OCwiRWNpcmN1bWZsZXhncmF2ZSIsNzg3MiwiRWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NzQsIkVjaXJjdW1mbGV4c21hbGwiLDYzNDY2LCJFY2lyY3VtZmxleHRpbGRlIiw3ODc2LCJFY3lyaWxsaWMiLDEwMjgsIkVkYmxncmF2ZSIsNTE2LCJFZGllcmVzaXMiLDIwMywiRWRpZXJlc2lzc21hbGwiLDYzNDY3LCJFZG90IiwyNzgsIkVkb3RhY2NlbnQiLDI3OCwiRWRvdGJlbG93Iiw3ODY0LCJFZmN5cmlsbGljIiwxMDYwLCJFZ3JhdmUiLDIwMCwiRWdyYXZlc21hbGwiLDYzNDY0LCJFaGFybWVuaWFuIiwxMzM1LCJFaG9va2Fib3ZlIiw3ODY2LCJFaWdodHJvbWFuIiw4NTUxLCJFaW52ZXJ0ZWRicmV2ZSIsNTE4LCJFaW90aWZpZWRjeXJpbGxpYyIsMTEyNCwiRWxjeXJpbGxpYyIsMTA1MSwiRWxldmVucm9tYW4iLDg1NTQsIkVtYWNyb24iLDI3NCwiRW1hY3JvbmFjdXRlIiw3NzAyLCJFbWFjcm9uZ3JhdmUiLDc3MDAsIkVtY3lyaWxsaWMiLDEwNTIsIkVtb25vc3BhY2UiLDY1MzE3LCJFbmN5cmlsbGljIiwxMDUzLCJFbmRlc2NlbmRlcmN5cmlsbGljIiwxMTg2LCJFbmciLDMzMCwiRW5naGVjeXJpbGxpYyIsMTE4OCwiRW5ob29rY3lyaWxsaWMiLDEyMjMsIkVvZ29uZWsiLDI4MCwiRW9wZW4iLDQwMCwiRXBzaWxvbiIsOTE3LCJFcHNpbG9udG9ub3MiLDkwNCwiRXJjeXJpbGxpYyIsMTA1NiwiRXJldmVyc2VkIiwzOTgsIkVyZXZlcnNlZGN5cmlsbGljIiwxMDY5LCJFc2N5cmlsbGljIiwxMDU3LCJFc2Rlc2NlbmRlcmN5cmlsbGljIiwxMTk0LCJFc2giLDQyNSwiRXNtYWxsIiw2MzMzMywiRXRhIiw5MTksIkV0YXJtZW5pYW4iLDEzMzYsIkV0YXRvbm9zIiw5MDUsIkV0aCIsMjA4LCJFdGhzbWFsbCIsNjM0NzIsIkV0aWxkZSIsNzg2OCwiRXRpbGRlYmVsb3ciLDc3MDYsIkV1cm8iLDgzNjQsIkV6aCIsNDM5LCJFemhjYXJvbiIsNDk0LCJFemhyZXZlcnNlZCIsNDQwLCJGIiw3MCwiRmNpcmNsZSIsOTQwMywiRmRvdGFjY2VudCIsNzcxMCwiRmVoYXJtZW5pYW4iLDEzNjYsIkZlaWNvcHRpYyIsOTk2LCJGaG9vayIsNDAxLCJGaXRhY3lyaWxsaWMiLDExMzgsIkZpdmVyb21hbiIsODU0OCwiRm1vbm9zcGFjZSIsNjUzMTgsIkZvdXJyb21hbiIsODU0NywiRnNtYWxsIiw2MzMzNCwiRyIsNzEsIkdCc3F1YXJlIiwxMzE5MSwiR2FjdXRlIiw1MDAsIkdhbW1hIiw5MTUsIkdhbW1hYWZyaWNhbiIsNDA0LCJHYW5naWFjb3B0aWMiLDEwMDIsIkdicmV2ZSIsMjg2LCJHY2Fyb24iLDQ4NiwiR2NlZGlsbGEiLDI5MCwiR2NpcmNsZSIsOTQwNCwiR2NpcmN1bWZsZXgiLDI4NCwiR2NvbW1hYWNjZW50IiwyOTAsIkdkb3QiLDI4OCwiR2RvdGFjY2VudCIsMjg4LCJHZWN5cmlsbGljIiwxMDQzLCJHaGFkYXJtZW5pYW4iLDEzNDYsIkdoZW1pZGRsZWhvb2tjeXJpbGxpYyIsMTE3MiwiR2hlc3Ryb2tlY3lyaWxsaWMiLDExNzAsIkdoZXVwdHVybmN5cmlsbGljIiwxMTY4LCJHaG9vayIsNDAzLCJHaW1hcm1lbmlhbiIsMTMzMSwiR2plY3lyaWxsaWMiLDEwMjcsIkdtYWNyb24iLDc3MTIsIkdtb25vc3BhY2UiLDY1MzE5LCJHcmF2ZSIsNjMxODIsIkdyYXZlc21hbGwiLDYzMzI4LCJHc21hbGwiLDYzMzM1LCJHc21hbGxob29rIiw2NjcsIkdzdHJva2UiLDQ4NCwiSCIsNzIsIkgxODUzMyIsOTY3OSwiSDE4NTQzIiw5NjQyLCJIMTg1NTEiLDk2NDMsIkgyMjA3MyIsOTYzMywiSFBzcXVhcmUiLDEzMjU5LCJIYWFia2hhc2lhbmN5cmlsbGljIiwxMTkyLCJIYWRlc2NlbmRlcmN5cmlsbGljIiwxMjAyLCJIYXJkc2lnbmN5cmlsbGljIiwxMDY2LCJIYmFyIiwyOTQsIkhicmV2ZWJlbG93Iiw3NzIyLCJIY2VkaWxsYSIsNzcyMCwiSGNpcmNsZSIsOTQwNSwiSGNpcmN1bWZsZXgiLDI5MiwiSGRpZXJlc2lzIiw3NzE4LCJIZG90YWNjZW50Iiw3NzE0LCJIZG90YmVsb3ciLDc3MTYsIkhtb25vc3BhY2UiLDY1MzIwLCJIb2FybWVuaWFuIiwxMzQ0LCJIb3JpY29wdGljIiwxZTMsIkhzbWFsbCIsNjMzMzYsIkh1bmdhcnVtbGF1dCIsNjMxODMsIkh1bmdhcnVtbGF1dHNtYWxsIiw2MzIyNCwiSHpzcXVhcmUiLDEzMjAwLCJJIiw3MywiSUFjeXJpbGxpYyIsMTA3MSwiSUoiLDMwNiwiSVVjeXJpbGxpYyIsMTA3MCwiSWFjdXRlIiwyMDUsIklhY3V0ZXNtYWxsIiw2MzQ2OSwiSWJyZXZlIiwzMDAsIkljYXJvbiIsNDYzLCJJY2lyY2xlIiw5NDA2LCJJY2lyY3VtZmxleCIsMjA2LCJJY2lyY3VtZmxleHNtYWxsIiw2MzQ3MCwiSWN5cmlsbGljIiwxMDMwLCJJZGJsZ3JhdmUiLDUyMCwiSWRpZXJlc2lzIiwyMDcsIklkaWVyZXNpc2FjdXRlIiw3NzI2LCJJZGllcmVzaXNjeXJpbGxpYyIsMTI1MiwiSWRpZXJlc2lzc21hbGwiLDYzNDcxLCJJZG90IiwzMDQsIklkb3RhY2NlbnQiLDMwNCwiSWRvdGJlbG93Iiw3ODgyLCJJZWJyZXZlY3lyaWxsaWMiLDEyMzgsIkllY3lyaWxsaWMiLDEwNDUsIklmcmFrdHVyIiw4NDY1LCJJZ3JhdmUiLDIwNCwiSWdyYXZlc21hbGwiLDYzNDY4LCJJaG9va2Fib3ZlIiw3ODgwLCJJaWN5cmlsbGljIiwxMDQ4LCJJaW52ZXJ0ZWRicmV2ZSIsNTIyLCJJaXNob3J0Y3lyaWxsaWMiLDEwNDksIkltYWNyb24iLDI5OCwiSW1hY3JvbmN5cmlsbGljIiwxMjUwLCJJbW9ub3NwYWNlIiw2NTMyMSwiSW5pYXJtZW5pYW4iLDEzMzksIklvY3lyaWxsaWMiLDEwMjUsIklvZ29uZWsiLDMwMiwiSW90YSIsOTIxLCJJb3RhYWZyaWNhbiIsNDA2LCJJb3RhZGllcmVzaXMiLDkzOCwiSW90YXRvbm9zIiw5MDYsIklzbWFsbCIsNjMzMzcsIklzdHJva2UiLDQwNywiSXRpbGRlIiwyOTYsIkl0aWxkZWJlbG93Iiw3NzI0LCJJemhpdHNhY3lyaWxsaWMiLDExNDAsIkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljIiwxMTQyLCJKIiw3NCwiSmFhcm1lbmlhbiIsMTM0NSwiSmNpcmNsZSIsOTQwNywiSmNpcmN1bWZsZXgiLDMwOCwiSmVjeXJpbGxpYyIsMTAzMiwiSmhlaGFybWVuaWFuIiwxMzU1LCJKbW9ub3NwYWNlIiw2NTMyMiwiSnNtYWxsIiw2MzMzOCwiSyIsNzUsIktCc3F1YXJlIiwxMzE4OSwiS0tzcXVhcmUiLDEzMjYxLCJLYWJhc2hraXJjeXJpbGxpYyIsMTE4NCwiS2FjdXRlIiw3NzI4LCJLYWN5cmlsbGljIiwxMDUwLCJLYWRlc2NlbmRlcmN5cmlsbGljIiwxMTc4LCJLYWhvb2tjeXJpbGxpYyIsMTIxOSwiS2FwcGEiLDkyMiwiS2FzdHJva2VjeXJpbGxpYyIsMTE4MiwiS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMTgwLCJLY2Fyb24iLDQ4OCwiS2NlZGlsbGEiLDMxMCwiS2NpcmNsZSIsOTQwOCwiS2NvbW1hYWNjZW50IiwzMTAsIktkb3RiZWxvdyIsNzczMCwiS2VoYXJtZW5pYW4iLDEzNjQsIktlbmFybWVuaWFuIiwxMzQzLCJLaGFjeXJpbGxpYyIsMTA2MSwiS2hlaWNvcHRpYyIsOTk4LCJLaG9vayIsNDA4LCJLamVjeXJpbGxpYyIsMTAzNiwiS2xpbmViZWxvdyIsNzczMiwiS21vbm9zcGFjZSIsNjUzMjMsIktvcHBhY3lyaWxsaWMiLDExNTIsIktvcHBhZ3JlZWsiLDk5MCwiS3NpY3lyaWxsaWMiLDExMzQsIktzbWFsbCIsNjMzMzksIkwiLDc2LCJMSiIsNDU1LCJMTCIsNjMxNjcsIkxhY3V0ZSIsMzEzLCJMYW1iZGEiLDkyMywiTGNhcm9uIiwzMTcsIkxjZWRpbGxhIiwzMTUsIkxjaXJjbGUiLDk0MDksIkxjaXJjdW1mbGV4YmVsb3ciLDc3NDAsIkxjb21tYWFjY2VudCIsMzE1LCJMZG90IiwzMTksIkxkb3RhY2NlbnQiLDMxOSwiTGRvdGJlbG93Iiw3NzM0LCJMZG90YmVsb3dtYWNyb24iLDc3MzYsIkxpd25hcm1lbmlhbiIsMTM0MCwiTGoiLDQ1NiwiTGplY3lyaWxsaWMiLDEwMzMsIkxsaW5lYmVsb3ciLDc3MzgsIkxtb25vc3BhY2UiLDY1MzI0LCJMc2xhc2giLDMyMSwiTHNsYXNoc21hbGwiLDYzMjI1LCJMc21hbGwiLDYzMzQwLCJNIiw3NywiTUJzcXVhcmUiLDEzMTkwLCJNYWNyb24iLDYzMTg0LCJNYWNyb25zbWFsbCIsNjM0MDcsIk1hY3V0ZSIsNzc0MiwiTWNpcmNsZSIsOTQxMCwiTWRvdGFjY2VudCIsNzc0NCwiTWRvdGJlbG93Iiw3NzQ2LCJNZW5hcm1lbmlhbiIsMTM0OCwiTW1vbm9zcGFjZSIsNjUzMjUsIk1zbWFsbCIsNjMzNDEsIk10dXJuZWQiLDQxMiwiTXUiLDkyNCwiTiIsNzgsIk5KIiw0NTgsIk5hY3V0ZSIsMzIzLCJOY2Fyb24iLDMyNywiTmNlZGlsbGEiLDMyNSwiTmNpcmNsZSIsOTQxMSwiTmNpcmN1bWZsZXhiZWxvdyIsNzc1NCwiTmNvbW1hYWNjZW50IiwzMjUsIk5kb3RhY2NlbnQiLDc3NDgsIk5kb3RiZWxvdyIsNzc1MCwiTmhvb2tsZWZ0Iiw0MTMsIk5pbmVyb21hbiIsODU1MiwiTmoiLDQ1OSwiTmplY3lyaWxsaWMiLDEwMzQsIk5saW5lYmVsb3ciLDc3NTIsIk5tb25vc3BhY2UiLDY1MzI2LCJOb3dhcm1lbmlhbiIsMTM1MCwiTnNtYWxsIiw2MzM0MiwiTnRpbGRlIiwyMDksIk50aWxkZXNtYWxsIiw2MzQ3MywiTnUiLDkyNSwiTyIsNzksIk9FIiwzMzgsIk9Fc21hbGwiLDYzMjI2LCJPYWN1dGUiLDIxMSwiT2FjdXRlc21hbGwiLDYzNDc1LCJPYmFycmVkY3lyaWxsaWMiLDEyNTYsIk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljIiwxMjU4LCJPYnJldmUiLDMzNCwiT2Nhcm9uIiw0NjUsIk9jZW50ZXJlZHRpbGRlIiw0MTUsIk9jaXJjbGUiLDk0MTIsIk9jaXJjdW1mbGV4IiwyMTIsIk9jaXJjdW1mbGV4YWN1dGUiLDc4ODgsIk9jaXJjdW1mbGV4ZG90YmVsb3ciLDc4OTYsIk9jaXJjdW1mbGV4Z3JhdmUiLDc4OTAsIk9jaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODkyLCJPY2lyY3VtZmxleHNtYWxsIiw2MzQ3NiwiT2NpcmN1bWZsZXh0aWxkZSIsNzg5NCwiT2N5cmlsbGljIiwxMDU0LCJPZGJsYWN1dGUiLDMzNiwiT2RibGdyYXZlIiw1MjQsIk9kaWVyZXNpcyIsMjE0LCJPZGllcmVzaXNjeXJpbGxpYyIsMTI1NCwiT2RpZXJlc2lzc21hbGwiLDYzNDc4LCJPZG90YmVsb3ciLDc4ODQsIk9nb25la3NtYWxsIiw2MzIyNywiT2dyYXZlIiwyMTAsIk9ncmF2ZXNtYWxsIiw2MzQ3NCwiT2hhcm1lbmlhbiIsMTM2NSwiT2htIiw4NDg2LCJPaG9va2Fib3ZlIiw3ODg2LCJPaG9ybiIsNDE2LCJPaG9ybmFjdXRlIiw3ODk4LCJPaG9ybmRvdGJlbG93Iiw3OTA2LCJPaG9ybmdyYXZlIiw3OTAwLCJPaG9ybmhvb2thYm92ZSIsNzkwMiwiT2hvcm50aWxkZSIsNzkwNCwiT2h1bmdhcnVtbGF1dCIsMzM2LCJPaSIsNDE4LCJPaW52ZXJ0ZWRicmV2ZSIsNTI2LCJPbWFjcm9uIiwzMzIsIk9tYWNyb25hY3V0ZSIsNzc2MiwiT21hY3JvbmdyYXZlIiw3NzYwLCJPbWVnYSIsODQ4NiwiT21lZ2FjeXJpbGxpYyIsMTEyMCwiT21lZ2FncmVlayIsOTM3LCJPbWVnYXJvdW5kY3lyaWxsaWMiLDExNDYsIk9tZWdhdGl0bG9jeXJpbGxpYyIsMTE0OCwiT21lZ2F0b25vcyIsOTExLCJPbWljcm9uIiw5MjcsIk9taWNyb250b25vcyIsOTA4LCJPbW9ub3NwYWNlIiw2NTMyNywiT25lcm9tYW4iLDg1NDQsIk9vZ29uZWsiLDQ5MCwiT29nb25la21hY3JvbiIsNDkyLCJPb3BlbiIsMzkwLCJPc2xhc2giLDIxNiwiT3NsYXNoYWN1dGUiLDUxMCwiT3NsYXNoc21hbGwiLDYzNDgwLCJPc21hbGwiLDYzMzQzLCJPc3Ryb2tlYWN1dGUiLDUxMCwiT3RjeXJpbGxpYyIsMTE1MCwiT3RpbGRlIiwyMTMsIk90aWxkZWFjdXRlIiw3NzU2LCJPdGlsZGVkaWVyZXNpcyIsNzc1OCwiT3RpbGRlc21hbGwiLDYzNDc3LCJQIiw4MCwiUGFjdXRlIiw3NzY0LCJQY2lyY2xlIiw5NDEzLCJQZG90YWNjZW50Iiw3NzY2LCJQZWN5cmlsbGljIiwxMDU1LCJQZWhhcm1lbmlhbiIsMTM1NCwiUGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTAsIlBoaSIsOTM0LCJQaG9vayIsNDIwLCJQaSIsOTI4LCJQaXdyYXJtZW5pYW4iLDEzNjMsIlBtb25vc3BhY2UiLDY1MzI4LCJQc2kiLDkzNiwiUHNpY3lyaWxsaWMiLDExMzYsIlBzbWFsbCIsNjMzNDQsIlEiLDgxLCJRY2lyY2xlIiw5NDE0LCJRbW9ub3NwYWNlIiw2NTMyOSwiUXNtYWxsIiw2MzM0NSwiUiIsODIsIlJhYXJtZW5pYW4iLDEzNTYsIlJhY3V0ZSIsMzQwLCJSY2Fyb24iLDM0NCwiUmNlZGlsbGEiLDM0MiwiUmNpcmNsZSIsOTQxNSwiUmNvbW1hYWNjZW50IiwzNDIsIlJkYmxncmF2ZSIsNTI4LCJSZG90YWNjZW50Iiw3NzY4LCJSZG90YmVsb3ciLDc3NzAsIlJkb3RiZWxvd21hY3JvbiIsNzc3MiwiUmVoYXJtZW5pYW4iLDEzNjAsIlJmcmFrdHVyIiw4NDc2LCJSaG8iLDkyOSwiUmluZ3NtYWxsIiw2MzIyOCwiUmludmVydGVkYnJldmUiLDUzMCwiUmxpbmViZWxvdyIsNzc3NCwiUm1vbm9zcGFjZSIsNjUzMzAsIlJzbWFsbCIsNjMzNDYsIlJzbWFsbGludmVydGVkIiw2NDEsIlJzbWFsbGludmVydGVkc3VwZXJpb3IiLDY5NCwiUyIsODMsIlNGMDEwMDAwIiw5NDg0LCJTRjAyMDAwMCIsOTQ5MiwiU0YwMzAwMDAiLDk0ODgsIlNGMDQwMDAwIiw5NDk2LCJTRjA1MDAwMCIsOTUzMiwiU0YwNjAwMDAiLDk1MTYsIlNGMDcwMDAwIiw5NTI0LCJTRjA4MDAwMCIsOTUwMCwiU0YwOTAwMDAiLDk1MDgsIlNGMTAwMDAwIiw5NDcyLCJTRjExMDAwMCIsOTQ3NCwiU0YxOTAwMDAiLDk1NjksIlNGMjAwMDAwIiw5NTcwLCJTRjIxMDAwMCIsOTU1OCwiU0YyMjAwMDAiLDk1NTcsIlNGMjMwMDAwIiw5NTcxLCJTRjI0MDAwMCIsOTU1MywiU0YyNTAwMDAiLDk1NTksIlNGMjYwMDAwIiw5NTY1LCJTRjI3MDAwMCIsOTU2NCwiU0YyODAwMDAiLDk1NjMsIlNGMzYwMDAwIiw5NTY2LCJTRjM3MDAwMCIsOTU2NywiU0YzODAwMDAiLDk1NjIsIlNGMzkwMDAwIiw5NTU2LCJTRjQwMDAwMCIsOTU3NywiU0Y0MTAwMDAiLDk1NzQsIlNGNDIwMDAwIiw5NTY4LCJTRjQzMDAwMCIsOTU1MiwiU0Y0NDAwMDAiLDk1ODAsIlNGNDUwMDAwIiw5NTc1LCJTRjQ2MDAwMCIsOTU3NiwiU0Y0NzAwMDAiLDk1NzIsIlNGNDgwMDAwIiw5NTczLCJTRjQ5MDAwMCIsOTU2MSwiU0Y1MDAwMDAiLDk1NjAsIlNGNTEwMDAwIiw5NTU0LCJTRjUyMDAwMCIsOTU1NSwiU0Y1MzAwMDAiLDk1NzksIlNGNTQwMDAwIiw5NTc4LCJTYWN1dGUiLDM0NiwiU2FjdXRlZG90YWNjZW50Iiw3NzgwLCJTYW1waWdyZWVrIiw5OTIsIlNjYXJvbiIsMzUyLCJTY2Fyb25kb3RhY2NlbnQiLDc3ODIsIlNjYXJvbnNtYWxsIiw2MzIyOSwiU2NlZGlsbGEiLDM1MCwiU2Nod2EiLDM5OSwiU2Nod2FjeXJpbGxpYyIsMTI0MCwiU2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQyLCJTY2lyY2xlIiw5NDE2LCJTY2lyY3VtZmxleCIsMzQ4LCJTY29tbWFhY2NlbnQiLDUzNiwiU2RvdGFjY2VudCIsNzc3NiwiU2RvdGJlbG93Iiw3Nzc4LCJTZG90YmVsb3dkb3RhY2NlbnQiLDc3ODQsIlNlaGFybWVuaWFuIiwxMzU3LCJTZXZlbnJvbWFuIiw4NTUwLCJTaGFhcm1lbmlhbiIsMTM1MSwiU2hhY3lyaWxsaWMiLDEwNjQsIlNoY2hhY3lyaWxsaWMiLDEwNjUsIlNoZWljb3B0aWMiLDk5NCwiU2hoYWN5cmlsbGljIiwxMjEwLCJTaGltYWNvcHRpYyIsMTAwNCwiU2lnbWEiLDkzMSwiU2l4cm9tYW4iLDg1NDksIlNtb25vc3BhY2UiLDY1MzMxLCJTb2Z0c2lnbmN5cmlsbGljIiwxMDY4LCJTc21hbGwiLDYzMzQ3LCJTdGlnbWFncmVlayIsOTg2LCJUIiw4NCwiVGF1Iiw5MzIsIlRiYXIiLDM1OCwiVGNhcm9uIiwzNTYsIlRjZWRpbGxhIiwzNTQsIlRjaXJjbGUiLDk0MTcsIlRjaXJjdW1mbGV4YmVsb3ciLDc3OTIsIlRjb21tYWFjY2VudCIsMzU0LCJUZG90YWNjZW50Iiw3Nzg2LCJUZG90YmVsb3ciLDc3ODgsIlRlY3lyaWxsaWMiLDEwNTgsIlRlZGVzY2VuZGVyY3lyaWxsaWMiLDExOTYsIlRlbnJvbWFuIiw4NTUzLCJUZXRzZWN5cmlsbGljIiwxMjA0LCJUaGV0YSIsOTIwLCJUaG9vayIsNDI4LCJUaG9ybiIsMjIyLCJUaG9ybnNtYWxsIiw2MzQ4NiwiVGhyZWVyb21hbiIsODU0NiwiVGlsZGVzbWFsbCIsNjMyMzAsIlRpd25hcm1lbmlhbiIsMTM1OSwiVGxpbmViZWxvdyIsNzc5MCwiVG1vbm9zcGFjZSIsNjUzMzIsIlRvYXJtZW5pYW4iLDEzMzcsIlRvbmVmaXZlIiw0NDQsIlRvbmVzaXgiLDM4OCwiVG9uZXR3byIsNDIzLCJUcmV0cm9mbGV4aG9vayIsNDMwLCJUc2VjeXJpbGxpYyIsMTA2MiwiVHNoZWN5cmlsbGljIiwxMDM1LCJUc21hbGwiLDYzMzQ4LCJUd2VsdmVyb21hbiIsODU1NSwiVHdvcm9tYW4iLDg1NDUsIlUiLDg1LCJVYWN1dGUiLDIxOCwiVWFjdXRlc21hbGwiLDYzNDgyLCJVYnJldmUiLDM2NCwiVWNhcm9uIiw0NjcsIlVjaXJjbGUiLDk0MTgsIlVjaXJjdW1mbGV4IiwyMTksIlVjaXJjdW1mbGV4YmVsb3ciLDc3OTgsIlVjaXJjdW1mbGV4c21hbGwiLDYzNDgzLCJVY3lyaWxsaWMiLDEwNTksIlVkYmxhY3V0ZSIsMzY4LCJVZGJsZ3JhdmUiLDUzMiwiVWRpZXJlc2lzIiwyMjAsIlVkaWVyZXNpc2FjdXRlIiw0NzEsIlVkaWVyZXNpc2JlbG93Iiw3Nzk0LCJVZGllcmVzaXNjYXJvbiIsNDczLCJVZGllcmVzaXNjeXJpbGxpYyIsMTI2NCwiVWRpZXJlc2lzZ3JhdmUiLDQ3NSwiVWRpZXJlc2lzbWFjcm9uIiw0NjksIlVkaWVyZXNpc3NtYWxsIiw2MzQ4NCwiVWRvdGJlbG93Iiw3OTA4LCJVZ3JhdmUiLDIxNywiVWdyYXZlc21hbGwiLDYzNDgxLCJVaG9va2Fib3ZlIiw3OTEwLCJVaG9ybiIsNDMxLCJVaG9ybmFjdXRlIiw3OTEyLCJVaG9ybmRvdGJlbG93Iiw3OTIwLCJVaG9ybmdyYXZlIiw3OTE0LCJVaG9ybmhvb2thYm92ZSIsNzkxNiwiVWhvcm50aWxkZSIsNzkxOCwiVWh1bmdhcnVtbGF1dCIsMzY4LCJVaHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjYsIlVpbnZlcnRlZGJyZXZlIiw1MzQsIlVrY3lyaWxsaWMiLDExNDQsIlVtYWNyb24iLDM2MiwiVW1hY3JvbmN5cmlsbGljIiwxMjYyLCJVbWFjcm9uZGllcmVzaXMiLDc4MDIsIlVtb25vc3BhY2UiLDY1MzMzLCJVb2dvbmVrIiwzNzAsIlVwc2lsb24iLDkzMywiVXBzaWxvbjEiLDk3OCwiVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrIiw5NzksIlVwc2lsb25hZnJpY2FuIiw0MzMsIlVwc2lsb25kaWVyZXNpcyIsOTM5LCJVcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWsiLDk4MCwiVXBzaWxvbmhvb2tzeW1ib2wiLDk3OCwiVXBzaWxvbnRvbm9zIiw5MTAsIlVyaW5nIiwzNjYsIlVzaG9ydGN5cmlsbGljIiwxMDM4LCJVc21hbGwiLDYzMzQ5LCJVc3RyYWlnaHRjeXJpbGxpYyIsMTE5OCwiVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMiLDEyMDAsIlV0aWxkZSIsMzYwLCJVdGlsZGVhY3V0ZSIsNzgwMCwiVXRpbGRlYmVsb3ciLDc3OTYsIlYiLDg2LCJWY2lyY2xlIiw5NDE5LCJWZG90YmVsb3ciLDc4MDYsIlZlY3lyaWxsaWMiLDEwNDIsIlZld2FybWVuaWFuIiwxMzU4LCJWaG9vayIsNDM0LCJWbW9ub3NwYWNlIiw2NTMzNCwiVm9hcm1lbmlhbiIsMTM1MiwiVnNtYWxsIiw2MzM1MCwiVnRpbGRlIiw3ODA0LCJXIiw4NywiV2FjdXRlIiw3ODEwLCJXY2lyY2xlIiw5NDIwLCJXY2lyY3VtZmxleCIsMzcyLCJXZGllcmVzaXMiLDc4MTIsIldkb3RhY2NlbnQiLDc4MTQsIldkb3RiZWxvdyIsNzgxNiwiV2dyYXZlIiw3ODA4LCJXbW9ub3NwYWNlIiw2NTMzNSwiV3NtYWxsIiw2MzM1MSwiWCIsODgsIlhjaXJjbGUiLDk0MjEsIlhkaWVyZXNpcyIsNzgyMCwiWGRvdGFjY2VudCIsNzgxOCwiWGVoYXJtZW5pYW4iLDEzNDEsIlhpIiw5MjYsIlhtb25vc3BhY2UiLDY1MzM2LCJYc21hbGwiLDYzMzUyLCJZIiw4OSwiWWFjdXRlIiwyMjEsIllhY3V0ZXNtYWxsIiw2MzQ4NSwiWWF0Y3lyaWxsaWMiLDExMjIsIlljaXJjbGUiLDk0MjIsIlljaXJjdW1mbGV4IiwzNzQsIllkaWVyZXNpcyIsMzc2LCJZZGllcmVzaXNzbWFsbCIsNjM0ODcsIllkb3RhY2NlbnQiLDc4MjIsIllkb3RiZWxvdyIsNzkyNCwiWWVyaWN5cmlsbGljIiwxMDY3LCJZZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MiwiWWdyYXZlIiw3OTIyLCJZaG9vayIsNDM1LCJZaG9va2Fib3ZlIiw3OTI2LCJZaWFybWVuaWFuIiwxMzQ5LCJZaWN5cmlsbGljIiwxMDMxLCJZaXduYXJtZW5pYW4iLDEzNjIsIlltb25vc3BhY2UiLDY1MzM3LCJZc21hbGwiLDYzMzUzLCJZdGlsZGUiLDc5MjgsIll1c2JpZ2N5cmlsbGljIiwxMTMwLCJZdXNiaWdpb3RpZmllZGN5cmlsbGljIiwxMTMyLCJZdXNsaXR0bGVjeXJpbGxpYyIsMTEyNiwiWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYyIsMTEyOCwiWiIsOTAsIlphYXJtZW5pYW4iLDEzMzQsIlphY3V0ZSIsMzc3LCJaY2Fyb24iLDM4MSwiWmNhcm9uc21hbGwiLDYzMjMxLCJaY2lyY2xlIiw5NDIzLCJaY2lyY3VtZmxleCIsNzgyNCwiWmRvdCIsMzc5LCJaZG90YWNjZW50IiwzNzksIlpkb3RiZWxvdyIsNzgyNiwiWmVjeXJpbGxpYyIsMTA0NywiWmVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NiwiWmVkaWVyZXNpc2N5cmlsbGljIiwxMjQ2LCJaZXRhIiw5MTgsIlpoZWFybWVuaWFuIiwxMzM4LCJaaGVicmV2ZWN5cmlsbGljIiwxMjE3LCJaaGVjeXJpbGxpYyIsMTA0NiwiWmhlZGVzY2VuZGVyY3lyaWxsaWMiLDExNzQsIlpoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDQsIlpsaW5lYmVsb3ciLDc4MjgsIlptb25vc3BhY2UiLDY1MzM4LCJac21hbGwiLDYzMzU0LCJac3Ryb2tlIiw0MzcsImEiLDk3LCJhYWJlbmdhbGkiLDI0MzgsImFhY3V0ZSIsMjI1LCJhYWRldmEiLDIzMTAsImFhZ3VqYXJhdGkiLDI2OTQsImFhZ3VybXVraGkiLDI1NjYsImFhbWF0cmFndXJtdWtoaSIsMjYyMiwiYWFydXNxdWFyZSIsMTMwNTksImFhdm93ZWxzaWduYmVuZ2FsaSIsMjQ5NCwiYWF2b3dlbHNpZ25kZXZhIiwyMzY2LCJhYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzUwLCJhYmJyZXZpYXRpb25tYXJrYXJtZW5pYW4iLDEzNzUsImFiYnJldmlhdGlvbnNpZ25kZXZhIiwyNDE2LCJhYmVuZ2FsaSIsMjQzNywiYWJvcG9tb2ZvIiwxMjU3MCwiYWJyZXZlIiwyNTksImFicmV2ZWFjdXRlIiw3ODU1LCJhYnJldmVjeXJpbGxpYyIsMTIzMywiYWJyZXZlZG90YmVsb3ciLDc4NjMsImFicmV2ZWdyYXZlIiw3ODU3LCJhYnJldmVob29rYWJvdmUiLDc4NTksImFicmV2ZXRpbGRlIiw3ODYxLCJhY2Fyb24iLDQ2MiwiYWNpcmNsZSIsOTQyNCwiYWNpcmN1bWZsZXgiLDIyNiwiYWNpcmN1bWZsZXhhY3V0ZSIsNzg0NSwiYWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg1MywiYWNpcmN1bWZsZXhncmF2ZSIsNzg0NywiYWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NDksImFjaXJjdW1mbGV4dGlsZGUiLDc4NTEsImFjdXRlIiwxODAsImFjdXRlYmVsb3djbWIiLDc5MSwiYWN1dGVjbWIiLDc2OSwiYWN1dGVjb21iIiw3NjksImFjdXRlZGV2YSIsMjM4OCwiYWN1dGVsb3dtb2QiLDcxOSwiYWN1dGV0b25lY21iIiw4MzMsImFjeXJpbGxpYyIsMTA3MiwiYWRibGdyYXZlIiw1MTMsImFkZGFrZ3VybXVraGkiLDI2NzMsImFkZXZhIiwyMzA5LCJhZGllcmVzaXMiLDIyOCwiYWRpZXJlc2lzY3lyaWxsaWMiLDEyMzUsImFkaWVyZXNpc21hY3JvbiIsNDc5LCJhZG90YmVsb3ciLDc4NDEsImFkb3RtYWNyb24iLDQ4MSwiYWUiLDIzMCwiYWVhY3V0ZSIsNTA5LCJhZWtvcmVhbiIsMTI2MjQsImFlbWFjcm9uIiw0ODMsImFmaWkwMDIwOCIsODIxMywiYWZpaTA4OTQxIiw4MzU2LCJhZmlpMTAwMTciLDEwNDAsImFmaWkxMDAxOCIsMTA0MSwiYWZpaTEwMDE5IiwxMDQyLCJhZmlpMTAwMjAiLDEwNDMsImFmaWkxMDAyMSIsMTA0NCwiYWZpaTEwMDIyIiwxMDQ1LCJhZmlpMTAwMjMiLDEwMjUsImFmaWkxMDAyNCIsMTA0NiwiYWZpaTEwMDI1IiwxMDQ3LCJhZmlpMTAwMjYiLDEwNDgsImFmaWkxMDAyNyIsMTA0OSwiYWZpaTEwMDI4IiwxMDUwLCJhZmlpMTAwMjkiLDEwNTEsImFmaWkxMDAzMCIsMTA1MiwiYWZpaTEwMDMxIiwxMDUzLCJhZmlpMTAwMzIiLDEwNTQsImFmaWkxMDAzMyIsMTA1NSwiYWZpaTEwMDM0IiwxMDU2LCJhZmlpMTAwMzUiLDEwNTcsImFmaWkxMDAzNiIsMTA1OCwiYWZpaTEwMDM3IiwxMDU5LCJhZmlpMTAwMzgiLDEwNjAsImFmaWkxMDAzOSIsMTA2MSwiYWZpaTEwMDQwIiwxMDYyLCJhZmlpMTAwNDEiLDEwNjMsImFmaWkxMDA0MiIsMTA2NCwiYWZpaTEwMDQzIiwxMDY1LCJhZmlpMTAwNDQiLDEwNjYsImFmaWkxMDA0NSIsMTA2NywiYWZpaTEwMDQ2IiwxMDY4LCJhZmlpMTAwNDciLDEwNjksImFmaWkxMDA0OCIsMTA3MCwiYWZpaTEwMDQ5IiwxMDcxLCJhZmlpMTAwNTAiLDExNjgsImFmaWkxMDA1MSIsMTAyNiwiYWZpaTEwMDUyIiwxMDI3LCJhZmlpMTAwNTMiLDEwMjgsImFmaWkxMDA1NCIsMTAyOSwiYWZpaTEwMDU1IiwxMDMwLCJhZmlpMTAwNTYiLDEwMzEsImFmaWkxMDA1NyIsMTAzMiwiYWZpaTEwMDU4IiwxMDMzLCJhZmlpMTAwNTkiLDEwMzQsImFmaWkxMDA2MCIsMTAzNSwiYWZpaTEwMDYxIiwxMDM2LCJhZmlpMTAwNjIiLDEwMzgsImFmaWkxMDA2MyIsNjMxNzIsImFmaWkxMDA2NCIsNjMxNzMsImFmaWkxMDA2NSIsMTA3MiwiYWZpaTEwMDY2IiwxMDczLCJhZmlpMTAwNjciLDEwNzQsImFmaWkxMDA2OCIsMTA3NSwiYWZpaTEwMDY5IiwxMDc2LCJhZmlpMTAwNzAiLDEwNzcsImFmaWkxMDA3MSIsMTEwNSwiYWZpaTEwMDcyIiwxMDc4LCJhZmlpMTAwNzMiLDEwNzksImFmaWkxMDA3NCIsMTA4MCwiYWZpaTEwMDc1IiwxMDgxLCJhZmlpMTAwNzYiLDEwODIsImFmaWkxMDA3NyIsMTA4MywiYWZpaTEwMDc4IiwxMDg0LCJhZmlpMTAwNzkiLDEwODUsImFmaWkxMDA4MCIsMTA4NiwiYWZpaTEwMDgxIiwxMDg3LCJhZmlpMTAwODIiLDEwODgsImFmaWkxMDA4MyIsMTA4OSwiYWZpaTEwMDg0IiwxMDkwLCJhZmlpMTAwODUiLDEwOTEsImFmaWkxMDA4NiIsMTA5MiwiYWZpaTEwMDg3IiwxMDkzLCJhZmlpMTAwODgiLDEwOTQsImFmaWkxMDA4OSIsMTA5NSwiYWZpaTEwMDkwIiwxMDk2LCJhZmlpMTAwOTEiLDEwOTcsImFmaWkxMDA5MiIsMTA5OCwiYWZpaTEwMDkzIiwxMDk5LCJhZmlpMTAwOTQiLDExMDAsImFmaWkxMDA5NSIsMTEwMSwiYWZpaTEwMDk2IiwxMTAyLCJhZmlpMTAwOTciLDExMDMsImFmaWkxMDA5OCIsMTE2OSwiYWZpaTEwMDk5IiwxMTA2LCJhZmlpMTAxMDAiLDExMDcsImFmaWkxMDEwMSIsMTEwOCwiYWZpaTEwMTAyIiwxMTA5LCJhZmlpMTAxMDMiLDExMTAsImFmaWkxMDEwNCIsMTExMSwiYWZpaTEwMTA1IiwxMTEyLCJhZmlpMTAxMDYiLDExMTMsImFmaWkxMDEwNyIsMTExNCwiYWZpaTEwMTA4IiwxMTE1LCJhZmlpMTAxMDkiLDExMTYsImFmaWkxMDExMCIsMTExOCwiYWZpaTEwMTQ1IiwxMDM5LCJhZmlpMTAxNDYiLDExMjIsImFmaWkxMDE0NyIsMTEzOCwiYWZpaTEwMTQ4IiwxMTQwLCJhZmlpMTAxOTIiLDYzMTc0LCJhZmlpMTAxOTMiLDExMTksImFmaWkxMDE5NCIsMTEyMywiYWZpaTEwMTk1IiwxMTM5LCJhZmlpMTAxOTYiLDExNDEsImFmaWkxMDgzMSIsNjMxNzUsImFmaWkxMDgzMiIsNjMxNzYsImFmaWkxMDg0NiIsMTI0MSwiYWZpaTI5OSIsODIwNiwiYWZpaTMwMCIsODIwNywiYWZpaTMwMSIsODIwNSwiYWZpaTU3MzgxIiwxNjQyLCJhZmlpNTczODgiLDE1NDgsImFmaWk1NzM5MiIsMTYzMiwiYWZpaTU3MzkzIiwxNjMzLCJhZmlpNTczOTQiLDE2MzQsImFmaWk1NzM5NSIsMTYzNSwiYWZpaTU3Mzk2IiwxNjM2LCJhZmlpNTczOTciLDE2MzcsImFmaWk1NzM5OCIsMTYzOCwiYWZpaTU3Mzk5IiwxNjM5LCJhZmlpNTc0MDAiLDE2NDAsImFmaWk1NzQwMSIsMTY0MSwiYWZpaTU3NDAzIiwxNTYzLCJhZmlpNTc0MDciLDE1NjcsImFmaWk1NzQwOSIsMTU2OSwiYWZpaTU3NDEwIiwxNTcwLCJhZmlpNTc0MTEiLDE1NzEsImFmaWk1NzQxMiIsMTU3MiwiYWZpaTU3NDEzIiwxNTczLCJhZmlpNTc0MTQiLDE1NzQsImFmaWk1NzQxNSIsMTU3NSwiYWZpaTU3NDE2IiwxNTc2LCJhZmlpNTc0MTciLDE1NzcsImFmaWk1NzQxOCIsMTU3OCwiYWZpaTU3NDE5IiwxNTc5LCJhZmlpNTc0MjAiLDE1ODAsImFmaWk1NzQyMSIsMTU4MSwiYWZpaTU3NDIyIiwxNTgyLCJhZmlpNTc0MjMiLDE1ODMsImFmaWk1NzQyNCIsMTU4NCwiYWZpaTU3NDI1IiwxNTg1LCJhZmlpNTc0MjYiLDE1ODYsImFmaWk1NzQyNyIsMTU4NywiYWZpaTU3NDI4IiwxNTg4LCJhZmlpNTc0MjkiLDE1ODksImFmaWk1NzQzMCIsMTU5MCwiYWZpaTU3NDMxIiwxNTkxLCJhZmlpNTc0MzIiLDE1OTIsImFmaWk1NzQzMyIsMTU5MywiYWZpaTU3NDM0IiwxNTk0LCJhZmlpNTc0NDAiLDE2MDAsImFmaWk1NzQ0MSIsMTYwMSwiYWZpaTU3NDQyIiwxNjAyLCJhZmlpNTc0NDMiLDE2MDMsImFmaWk1NzQ0NCIsMTYwNCwiYWZpaTU3NDQ1IiwxNjA1LCJhZmlpNTc0NDYiLDE2MDYsImFmaWk1NzQ0OCIsMTYwOCwiYWZpaTU3NDQ5IiwxNjA5LCJhZmlpNTc0NTAiLDE2MTAsImFmaWk1NzQ1MSIsMTYxMSwiYWZpaTU3NDUyIiwxNjEyLCJhZmlpNTc0NTMiLDE2MTMsImFmaWk1NzQ1NCIsMTYxNCwiYWZpaTU3NDU1IiwxNjE1LCJhZmlpNTc0NTYiLDE2MTYsImFmaWk1NzQ1NyIsMTYxNywiYWZpaTU3NDU4IiwxNjE4LCJhZmlpNTc0NzAiLDE2MDcsImFmaWk1NzUwNSIsMTcwMCwiYWZpaTU3NTA2IiwxNjYyLCJhZmlpNTc1MDciLDE2NzAsImFmaWk1NzUwOCIsMTY4OCwiYWZpaTU3NTA5IiwxNzExLCJhZmlpNTc1MTEiLDE2NTcsImFmaWk1NzUxMiIsMTY3MiwiYWZpaTU3NTEzIiwxNjgxLCJhZmlpNTc1MTQiLDE3MjIsImFmaWk1NzUxOSIsMTc0NiwiYWZpaTU3NTM0IiwxNzQ5LCJhZmlpNTc2MzYiLDgzNjIsImFmaWk1NzY0NSIsMTQ3MCwiYWZpaTU3NjU4IiwxNDc1LCJhZmlpNTc2NjQiLDE0ODgsImFmaWk1NzY2NSIsMTQ4OSwiYWZpaTU3NjY2IiwxNDkwLCJhZmlpNTc2NjciLDE0OTEsImFmaWk1NzY2OCIsMTQ5MiwiYWZpaTU3NjY5IiwxNDkzLCJhZmlpNTc2NzAiLDE0OTQsImFmaWk1NzY3MSIsMTQ5NSwiYWZpaTU3NjcyIiwxNDk2LCJhZmlpNTc2NzMiLDE0OTcsImFmaWk1NzY3NCIsMTQ5OCwiYWZpaTU3Njc1IiwxNDk5LCJhZmlpNTc2NzYiLDE1MDAsImFmaWk1NzY3NyIsMTUwMSwiYWZpaTU3Njc4IiwxNTAyLCJhZmlpNTc2NzkiLDE1MDMsImFmaWk1NzY4MCIsMTUwNCwiYWZpaTU3NjgxIiwxNTA1LCJhZmlpNTc2ODIiLDE1MDYsImFmaWk1NzY4MyIsMTUwNywiYWZpaTU3Njg0IiwxNTA4LCJhZmlpNTc2ODUiLDE1MDksImFmaWk1NzY4NiIsMTUxMCwiYWZpaTU3Njg3IiwxNTExLCJhZmlpNTc2ODgiLDE1MTIsImFmaWk1NzY4OSIsMTUxMywiYWZpaTU3NjkwIiwxNTE0LCJhZmlpNTc2OTQiLDY0Mjk4LCJhZmlpNTc2OTUiLDY0Mjk5LCJhZmlpNTc3MDAiLDY0MzMxLCJhZmlpNTc3MDUiLDY0Mjg3LCJhZmlpNTc3MTYiLDE1MjAsImFmaWk1NzcxNyIsMTUyMSwiYWZpaTU3NzE4IiwxNTIyLCJhZmlpNTc3MjMiLDY0MzA5LCJhZmlpNTc3OTMiLDE0NjAsImFmaWk1Nzc5NCIsMTQ2MSwiYWZpaTU3Nzk1IiwxNDYyLCJhZmlpNTc3OTYiLDE0NjcsImFmaWk1Nzc5NyIsMTQ2NCwiYWZpaTU3Nzk4IiwxNDYzLCJhZmlpNTc3OTkiLDE0NTYsImFmaWk1NzgwMCIsMTQ1OCwiYWZpaTU3ODAxIiwxNDU3LCJhZmlpNTc4MDIiLDE0NTksImFmaWk1NzgwMyIsMTQ3NCwiYWZpaTU3ODA0IiwxNDczLCJhZmlpNTc4MDYiLDE0NjUsImFmaWk1NzgwNyIsMTQ2OCwiYWZpaTU3ODM5IiwxNDY5LCJhZmlpNTc4NDEiLDE0NzEsImFmaWk1Nzg0MiIsMTQ3MiwiYWZpaTU3OTI5Iiw3MDAsImFmaWk2MTI0OCIsODQ1MywiYWZpaTYxMjg5Iiw4NDY3LCJhZmlpNjEzNTIiLDg0NzAsImFmaWk2MTU3MyIsODIzNiwiYWZpaTYxNTc0Iiw4MjM3LCJhZmlpNjE1NzUiLDgyMzgsImFmaWk2MTY2NCIsODIwNCwiYWZpaTYzMTY3IiwxNjQ1LCJhZmlpNjQ5MzciLDcwMSwiYWdyYXZlIiwyMjQsImFndWphcmF0aSIsMjY5MywiYWd1cm11a2hpIiwyNTY1LCJhaGlyYWdhbmEiLDEyMzU0LCJhaG9va2Fib3ZlIiw3ODQzLCJhaWJlbmdhbGkiLDI0NDgsImFpYm9wb21vZm8iLDEyNTc0LCJhaWRldmEiLDIzMjAsImFpZWN5cmlsbGljIiwxMjM3LCJhaWd1amFyYXRpIiwyNzA0LCJhaWd1cm11a2hpIiwyNTc2LCJhaW1hdHJhZ3VybXVraGkiLDI2MzIsImFpbmFyYWJpYyIsMTU5MywiYWluZmluYWxhcmFiaWMiLDY1MjI2LCJhaW5pbml0aWFsYXJhYmljIiw2NTIyNywiYWlubWVkaWFsYXJhYmljIiw2NTIyOCwiYWludmVydGVkYnJldmUiLDUxNSwiYWl2b3dlbHNpZ25iZW5nYWxpIiwyNTA0LCJhaXZvd2Vsc2lnbmRldmEiLDIzNzYsImFpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjAsImFrYXRha2FuYSIsMTI0NTAsImFrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTMsImFrb3JlYW4iLDEyNjIzLCJhbGVmIiwxNDg4LCJhbGVmYXJhYmljIiwxNTc1LCJhbGVmZGFnZXNoaGVicmV3Iiw2NDMwNCwiYWxlZmZpbmFsYXJhYmljIiw2NTE2NiwiYWxlZmhhbXphYWJvdmVhcmFiaWMiLDE1NzEsImFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU2LCJhbGVmaGFtemFiZWxvd2FyYWJpYyIsMTU3MywiYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUxNjAsImFsZWZoZWJyZXciLDE0ODgsImFsZWZsYW1lZGhlYnJldyIsNjQzMzUsImFsZWZtYWRkYWFib3ZlYXJhYmljIiwxNTcwLCJhbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTE1NCwiYWxlZm1ha3N1cmFhcmFiaWMiLDE2MDksImFsZWZtYWtzdXJhZmluYWxhcmFiaWMiLDY1MjY0LCJhbGVmbWFrc3VyYWluaXRpYWxhcmFiaWMiLDY1MjY3LCJhbGVmbWFrc3VyYW1lZGlhbGFyYWJpYyIsNjUyNjgsImFsZWZwYXRhaGhlYnJldyIsNjQzMDIsImFsZWZxYW1hdHNoZWJyZXciLDY0MzAzLCJhbGVwaCIsODUwMSwiYWxsZXF1YWwiLDg3ODAsImFscGhhIiw5NDUsImFscGhhdG9ub3MiLDk0MCwiYW1hY3JvbiIsMjU3LCJhbW9ub3NwYWNlIiw2NTM0NSwiYW1wZXJzYW5kIiwzOCwiYW1wZXJzYW5kbW9ub3NwYWNlIiw2NTI4NiwiYW1wZXJzYW5kc21hbGwiLDYzMjcwLCJhbXNxdWFyZSIsMTMyNTAsImFuYm9wb21vZm8iLDEyNTc4LCJhbmdib3BvbW9mbyIsMTI1ODAsImFuZ2JyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nYnJhY2tldHJpZ2h0IiwxMjI5NywiYW5na2hhbmtodXRoYWkiLDM2NzQsImFuZ2xlIiw4NzM2LCJhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NywiYW5nbGVicmFja2V0cmlnaHQiLDEyMjk3LCJhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4OCwiYW5nbGVsZWZ0Iiw5MDAxLCJhbmdsZXJpZ2h0Iiw5MDAyLCJhbmdzdHJvbSIsODQ5MSwiYW5vdGVsZWlhIiw5MDMsImFudWRhdHRhZGV2YSIsMjM4NiwiYW51c3ZhcmFiZW5nYWxpIiwyNDM0LCJhbnVzdmFyYWRldmEiLDIzMDYsImFudXN2YXJhZ3VqYXJhdGkiLDI2OTAsImFvZ29uZWsiLDI2MSwiYXBhYXRvc3F1YXJlIiwxMzA1NiwiYXBhcmVuIiw5MzcyLCJhcG9zdHJvcGhlYXJtZW5pYW4iLDEzNzAsImFwb3N0cm9waGVtb2QiLDcwMCwiYXBwbGUiLDYzNzQzLCJhcHByb2FjaGVzIiw4Nzg0LCJhcHByb3hlcXVhbCIsODc3NiwiYXBwcm94ZXF1YWxvcmltYWdlIiw4Nzg2LCJhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3NzMsImFyYWVhZWtvcmVhbiIsMTI2ODYsImFyYWVha29yZWFuIiwxMjY4NSwiYXJjIiw4OTc4LCJhcmlnaHRoYWxmcmluZyIsNzgzNCwiYXJpbmciLDIyOSwiYXJpbmdhY3V0ZSIsNTA3LCJhcmluZ2JlbG93Iiw3NjgxLCJhcnJvd2JvdGgiLDg1OTYsImFycm93ZGFzaGRvd24iLDg2NzUsImFycm93ZGFzaGxlZnQiLDg2NzIsImFycm93ZGFzaHJpZ2h0Iiw4Njc0LCJhcnJvd2Rhc2h1cCIsODY3MywiYXJyb3dkYmxib3RoIiw4NjYwLCJhcnJvd2RibGRvd24iLDg2NTksImFycm93ZGJsbGVmdCIsODY1NiwiYXJyb3dkYmxyaWdodCIsODY1OCwiYXJyb3dkYmx1cCIsODY1NywiYXJyb3dkb3duIiw4NTk1LCJhcnJvd2Rvd25sZWZ0Iiw4NjAxLCJhcnJvd2Rvd25yaWdodCIsODYwMCwiYXJyb3dkb3dud2hpdGUiLDg2ODEsImFycm93aGVhZGRvd25tb2QiLDcwOSwiYXJyb3doZWFkbGVmdG1vZCIsNzA2LCJhcnJvd2hlYWRyaWdodG1vZCIsNzA3LCJhcnJvd2hlYWR1cG1vZCIsNzA4LCJhcnJvd2hvcml6ZXgiLDYzNzE5LCJhcnJvd2xlZnQiLDg1OTIsImFycm93bGVmdGRibCIsODY1NiwiYXJyb3dsZWZ0ZGJsc3Ryb2tlIiw4NjUzLCJhcnJvd2xlZnRvdmVycmlnaHQiLDg2NDYsImFycm93bGVmdHdoaXRlIiw4Njc4LCJhcnJvd3JpZ2h0Iiw4NTk0LCJhcnJvd3JpZ2h0ZGJsc3Ryb2tlIiw4NjU1LCJhcnJvd3JpZ2h0aGVhdnkiLDEwMTQyLCJhcnJvd3JpZ2h0b3ZlcmxlZnQiLDg2NDQsImFycm93cmlnaHR3aGl0ZSIsODY4MCwiYXJyb3d0YWJsZWZ0Iiw4Njc2LCJhcnJvd3RhYnJpZ2h0Iiw4Njc3LCJhcnJvd3VwIiw4NTkzLCJhcnJvd3VwZG4iLDg1OTcsImFycm93dXBkbmJzZSIsODYxNiwiYXJyb3d1cGRvd25iYXNlIiw4NjE2LCJhcnJvd3VwbGVmdCIsODU5OCwiYXJyb3d1cGxlZnRvZmRvd24iLDg2NDUsImFycm93dXByaWdodCIsODU5OSwiYXJyb3d1cHdoaXRlIiw4Njc5LCJhcnJvd3ZlcnRleCIsNjM3MTgsImFzY2lpY2lyY3VtIiw5NCwiYXNjaWljaXJjdW1tb25vc3BhY2UiLDY1MzQyLCJhc2NpaXRpbGRlIiwxMjYsImFzY2lpdGlsZGVtb25vc3BhY2UiLDY1Mzc0LCJhc2NyaXB0Iiw1OTMsImFzY3JpcHR0dXJuZWQiLDU5NCwiYXNtYWxsaGlyYWdhbmEiLDEyMzUzLCJhc21hbGxrYXRha2FuYSIsMTI0NDksImFzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4MywiYXN0ZXJpc2siLDQyLCJhc3Rlcmlza2FsdG9uZWFyYWJpYyIsMTY0NSwiYXN0ZXJpc2thcmFiaWMiLDE2NDUsImFzdGVyaXNrbWF0aCIsODcyNywiYXN0ZXJpc2ttb25vc3BhY2UiLDY1MjkwLCJhc3Rlcmlza3NtYWxsIiw2NTEyMSwiYXN0ZXJpc20iLDgyNTgsImFzdXBlcmlvciIsNjMyMDksImFzeW1wdG90aWNhbGx5ZXF1YWwiLDg3NzEsImF0Iiw2NCwiYXRpbGRlIiwyMjcsImF0bW9ub3NwYWNlIiw2NTMxMiwiYXRzbWFsbCIsNjUxMzEsImF0dXJuZWQiLDU5MiwiYXViZW5nYWxpIiwyNDUyLCJhdWJvcG9tb2ZvIiwxMjU3NiwiYXVkZXZhIiwyMzI0LCJhdWd1amFyYXRpIiwyNzA4LCJhdWd1cm11a2hpIiwyNTgwLCJhdWxlbmd0aG1hcmtiZW5nYWxpIiwyNTE5LCJhdW1hdHJhZ3VybXVraGkiLDI2MzYsImF1dm93ZWxzaWduYmVuZ2FsaSIsMjUwOCwiYXV2b3dlbHNpZ25kZXZhIiwyMzgwLCJhdXZvd2Vsc2lnbmd1amFyYXRpIiwyNzY0LCJhdmFncmFoYWRldmEiLDIzNjUsImF5YmFybWVuaWFuIiwxMzc3LCJheWluIiwxNTA2LCJheWluYWx0b25laGVicmV3Iiw2NDI4OCwiYXlpbmhlYnJldyIsMTUwNiwiYiIsOTgsImJhYmVuZ2FsaSIsMjQ3NiwiYmFja3NsYXNoIiw5MiwiYmFja3NsYXNobW9ub3NwYWNlIiw2NTM0MCwiYmFkZXZhIiwyMzQ4LCJiYWd1amFyYXRpIiwyNzMyLCJiYWd1cm11a2hpIiwyNjA0LCJiYWhpcmFnYW5hIiwxMjQwMCwiYmFodHRoYWkiLDM2NDcsImJha2F0YWthbmEiLDEyNDk2LCJiYXIiLDEyNCwiYmFybW9ub3NwYWNlIiw2NTM3MiwiYmJvcG9tb2ZvIiwxMjU0OSwiYmNpcmNsZSIsOTQyNSwiYmRvdGFjY2VudCIsNzY4MywiYmRvdGJlbG93Iiw3Njg1LCJiZWFtZWRzaXh0ZWVudGhub3RlcyIsOTgzNiwiYmVjYXVzZSIsODc1NywiYmVjeXJpbGxpYyIsMTA3MywiYmVoYXJhYmljIiwxNTc2LCJiZWhmaW5hbGFyYWJpYyIsNjUxNjgsImJlaGluaXRpYWxhcmFiaWMiLDY1MTY5LCJiZWhpcmFnYW5hIiwxMjQwOSwiYmVobWVkaWFsYXJhYmljIiw2NTE3MCwiYmVobWVlbWluaXRpYWxhcmFiaWMiLDY0NjcxLCJiZWhtZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIwLCJiZWhub29uZmluYWxhcmFiaWMiLDY0NjIxLCJiZWthdGFrYW5hIiwxMjUwNSwiYmVuYXJtZW5pYW4iLDEzNzgsImJldCIsMTQ4OSwiYmV0YSIsOTQ2LCJiZXRhc3ltYm9sZ3JlZWsiLDk3NiwiYmV0ZGFnZXNoIiw2NDMwNSwiYmV0ZGFnZXNoaGVicmV3Iiw2NDMwNSwiYmV0aGVicmV3IiwxNDg5LCJiZXRyYWZlaGVicmV3Iiw2NDMzMiwiYmhhYmVuZ2FsaSIsMjQ3NywiYmhhZGV2YSIsMjM0OSwiYmhhZ3VqYXJhdGkiLDI3MzMsImJoYWd1cm11a2hpIiwyNjA1LCJiaG9vayIsNTk1LCJiaWhpcmFnYW5hIiwxMjQwMywiYmlrYXRha2FuYSIsMTI0OTksImJpbGFiaWFsY2xpY2siLDY2NCwiYmluZGlndXJtdWtoaSIsMjU2MiwiYmlydXNxdWFyZSIsMTMxMDUsImJsYWNrY2lyY2xlIiw5Njc5LCJibGFja2RpYW1vbmQiLDk2NzAsImJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGUiLDk2NjAsImJsYWNrbGVmdHBvaW50aW5ncG9pbnRlciIsOTY2OCwiYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZSIsOTY2NCwiYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQiLDEyMzA0LCJibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4MywiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMwNSwiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDg0LCJibGFja2xvd2VybGVmdHRyaWFuZ2xlIiw5Njk5LCJibGFja2xvd2VycmlnaHR0cmlhbmdsZSIsOTY5OCwiYmxhY2tyZWN0YW5nbGUiLDk2NDQsImJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXIiLDk2NTgsImJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlIiw5NjU0LCJibGFja3NtYWxsc3F1YXJlIiw5NjQyLCJibGFja3NtaWxpbmdmYWNlIiw5Nzg3LCJibGFja3NxdWFyZSIsOTYzMiwiYmxhY2tzdGFyIiw5NzMzLCJibGFja3VwcGVybGVmdHRyaWFuZ2xlIiw5NzAwLCJibGFja3VwcGVycmlnaHR0cmlhbmdsZSIsOTcwMSwiYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1MiwiYmxhY2t1cHBvaW50aW5ndHJpYW5nbGUiLDk2NTAsImJsYW5rIiw5MjUxLCJibGluZWJlbG93Iiw3Njg3LCJibG9jayIsOTYwOCwiYm1vbm9zcGFjZSIsNjUzNDYsImJvYmFpbWFpdGhhaSIsMzYxMCwiYm9oaXJhZ2FuYSIsMTI0MTIsImJva2F0YWthbmEiLDEyNTA4LCJicGFyZW4iLDkzNzMsImJxc3F1YXJlIiwxMzI1MSwiYnJhY2VleCIsNjM3MzIsImJyYWNlbGVmdCIsMTIzLCJicmFjZWxlZnRidCIsNjM3MzEsImJyYWNlbGVmdG1pZCIsNjM3MzAsImJyYWNlbGVmdG1vbm9zcGFjZSIsNjUzNzEsImJyYWNlbGVmdHNtYWxsIiw2NTExNSwiYnJhY2VsZWZ0dHAiLDYzNzI5LCJicmFjZWxlZnR2ZXJ0aWNhbCIsNjUwNzksImJyYWNlcmlnaHQiLDEyNSwiYnJhY2VyaWdodGJ0Iiw2Mzc0MiwiYnJhY2VyaWdodG1pZCIsNjM3NDEsImJyYWNlcmlnaHRtb25vc3BhY2UiLDY1MzczLCJicmFjZXJpZ2h0c21hbGwiLDY1MTE2LCJicmFjZXJpZ2h0dHAiLDYzNzQwLCJicmFjZXJpZ2h0dmVydGljYWwiLDY1MDgwLCJicmFja2V0bGVmdCIsOTEsImJyYWNrZXRsZWZ0YnQiLDYzNzI4LCJicmFja2V0bGVmdGV4Iiw2MzcyNywiYnJhY2tldGxlZnRtb25vc3BhY2UiLDY1MzM5LCJicmFja2V0bGVmdHRwIiw2MzcyNiwiYnJhY2tldHJpZ2h0Iiw5MywiYnJhY2tldHJpZ2h0YnQiLDYzNzM5LCJicmFja2V0cmlnaHRleCIsNjM3MzgsImJyYWNrZXRyaWdodG1vbm9zcGFjZSIsNjUzNDEsImJyYWNrZXRyaWdodHRwIiw2MzczNywiYnJldmUiLDcyOCwiYnJldmViZWxvd2NtYiIsODE0LCJicmV2ZWNtYiIsNzc0LCJicmV2ZWludmVydGVkYmVsb3djbWIiLDgxNSwiYnJldmVpbnZlcnRlZGNtYiIsNzg1LCJicmV2ZWludmVydGVkZG91YmxlY21iIiw4NjUsImJyaWRnZWJlbG93Y21iIiw4MTAsImJyaWRnZWludmVydGVkYmVsb3djbWIiLDgyNiwiYnJva2VuYmFyIiwxNjYsImJzdHJva2UiLDM4NCwiYnN1cGVyaW9yIiw2MzIxMCwiYnRvcGJhciIsMzg3LCJidWhpcmFnYW5hIiwxMjQwNiwiYnVrYXRha2FuYSIsMTI1MDIsImJ1bGxldCIsODIyNiwiYnVsbGV0aW52ZXJzZSIsOTY4OCwiYnVsbGV0b3BlcmF0b3IiLDg3MjksImJ1bGxzZXllIiw5Njc4LCJjIiw5OSwiY2Fhcm1lbmlhbiIsMTM5MCwiY2FiZW5nYWxpIiwyNDU4LCJjYWN1dGUiLDI2MywiY2FkZXZhIiwyMzMwLCJjYWd1amFyYXRpIiwyNzE0LCJjYWd1cm11a2hpIiwyNTg2LCJjYWxzcXVhcmUiLDEzMTkyLCJjYW5kcmFiaW5kdWJlbmdhbGkiLDI0MzMsImNhbmRyYWJpbmR1Y21iIiw3ODQsImNhbmRyYWJpbmR1ZGV2YSIsMjMwNSwiY2FuZHJhYmluZHVndWphcmF0aSIsMjY4OSwiY2Fwc2xvY2siLDg2ODIsImNhcmVvZiIsODQ1MywiY2Fyb24iLDcxMSwiY2Fyb25iZWxvd2NtYiIsODEyLCJjYXJvbmNtYiIsNzgwLCJjYXJyaWFnZXJldHVybiIsODYyOSwiY2JvcG9tb2ZvIiwxMjU2OCwiY2Nhcm9uIiwyNjksImNjZWRpbGxhIiwyMzEsImNjZWRpbGxhYWN1dGUiLDc2ODksImNjaXJjbGUiLDk0MjYsImNjaXJjdW1mbGV4IiwyNjUsImNjdXJsIiw1OTcsImNkb3QiLDI2NywiY2RvdGFjY2VudCIsMjY3LCJjZHNxdWFyZSIsMTMyNTMsImNlZGlsbGEiLDE4NCwiY2VkaWxsYWNtYiIsODA3LCJjZW50IiwxNjIsImNlbnRpZ3JhZGUiLDg0NTEsImNlbnRpbmZlcmlvciIsNjMxOTksImNlbnRtb25vc3BhY2UiLDY1NTA0LCJjZW50b2xkc3R5bGUiLDYzMzk0LCJjZW50c3VwZXJpb3IiLDYzMjAwLCJjaGFhcm1lbmlhbiIsMTQwMSwiY2hhYmVuZ2FsaSIsMjQ1OSwiY2hhZGV2YSIsMjMzMSwiY2hhZ3VqYXJhdGkiLDI3MTUsImNoYWd1cm11a2hpIiwyNTg3LCJjaGJvcG9tb2ZvIiwxMjU2NCwiY2hlYWJraGFzaWFuY3lyaWxsaWMiLDEyMTMsImNoZWNrbWFyayIsMTAwMDMsImNoZWN5cmlsbGljIiwxMDk1LCJjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYyIsMTIxNSwiY2hlZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDcsImNoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNjksImNoZWhhcm1lbmlhbiIsMTM5NSwiY2hla2hha2Fzc2lhbmN5cmlsbGljIiwxMjI4LCJjaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMjA5LCJjaGkiLDk2NywiY2hpZXVjaGFjaXJjbGVrb3JlYW4iLDEyOTE5LCJjaGlldWNoYXBhcmVua29yZWFuIiwxMjgyMywiY2hpZXVjaGNpcmNsZWtvcmVhbiIsMTI5MDUsImNoaWV1Y2hrb3JlYW4iLDEyNjE4LCJjaGlldWNocGFyZW5rb3JlYW4iLDEyODA5LCJjaG9jaGFuZ3RoYWkiLDM1OTQsImNob2NoYW50aGFpIiwzNTkyLCJjaG9jaGluZ3RoYWkiLDM1OTMsImNob2Nob2V0aGFpIiwzNTk2LCJjaG9vayIsMzkyLCJjaWV1Y2FjaXJjbGVrb3JlYW4iLDEyOTE4LCJjaWV1Y2FwYXJlbmtvcmVhbiIsMTI4MjIsImNpZXVjY2lyY2xla29yZWFuIiwxMjkwNCwiY2lldWNrb3JlYW4iLDEyNjE2LCJjaWV1Y3BhcmVua29yZWFuIiwxMjgwOCwiY2lldWN1cGFyZW5rb3JlYW4iLDEyODI4LCJjaXJjbGUiLDk2NzUsImNpcmNsZWNvcHlydCIsMTY5LCJjaXJjbGVtdWx0aXBseSIsODg1NSwiY2lyY2xlb3QiLDg4NTcsImNpcmNsZXBsdXMiLDg4NTMsImNpcmNsZXBvc3RhbG1hcmsiLDEyMzQyLCJjaXJjbGV3aXRobGVmdGhhbGZibGFjayIsOTY4MCwiY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrIiw5NjgxLCJjaXJjdW1mbGV4Iiw3MTAsImNpcmN1bWZsZXhiZWxvd2NtYiIsODEzLCJjaXJjdW1mbGV4Y21iIiw3NzAsImNsZWFyIiw4OTk5LCJjbGlja2FsdmVvbGFyIiw0NTAsImNsaWNrZGVudGFsIiw0NDgsImNsaWNrbGF0ZXJhbCIsNDQ5LCJjbGlja3JldHJvZmxleCIsNDUxLCJjbHViIiw5ODI3LCJjbHVic3VpdGJsYWNrIiw5ODI3LCJjbHVic3VpdHdoaXRlIiw5ODMxLCJjbWN1YmVkc3F1YXJlIiwxMzIyMCwiY21vbm9zcGFjZSIsNjUzNDcsImNtc3F1YXJlZHNxdWFyZSIsMTMyMTYsImNvYXJtZW5pYW4iLDE0MDksImNvbG9uIiw1OCwiY29sb25tb25ldGFyeSIsODM1MywiY29sb25tb25vc3BhY2UiLDY1MzA2LCJjb2xvbnNpZ24iLDgzNTMsImNvbG9uc21hbGwiLDY1MTA5LCJjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kIiw3MjEsImNvbG9udHJpYW5ndWxhcm1vZCIsNzIwLCJjb21tYSIsNDQsImNvbW1hYWJvdmVjbWIiLDc4NywiY29tbWFhYm92ZXJpZ2h0Y21iIiw3ODksImNvbW1hYWNjZW50Iiw2MzE3MSwiY29tbWFhcmFiaWMiLDE1NDgsImNvbW1hYXJtZW5pYW4iLDEzNzMsImNvbW1haW5mZXJpb3IiLDYzMjAxLCJjb21tYW1vbm9zcGFjZSIsNjUyOTIsImNvbW1hcmV2ZXJzZWRhYm92ZWNtYiIsNzg4LCJjb21tYXJldmVyc2VkbW9kIiw3MDEsImNvbW1hc21hbGwiLDY1MTA0LCJjb21tYXN1cGVyaW9yIiw2MzIwMiwiY29tbWF0dXJuZWRhYm92ZWNtYiIsNzg2LCJjb21tYXR1cm5lZG1vZCIsNjk5LCJjb21wYXNzIiw5Nzg4LCJjb25ncnVlbnQiLDg3NzMsImNvbnRvdXJpbnRlZ3JhbCIsODc1MCwiY29udHJvbCIsODk2MywiY29udHJvbEFDSyIsNiwiY29udHJvbEJFTCIsNywiY29udHJvbEJTIiw4LCJjb250cm9sQ0FOIiwyNCwiY29udHJvbENSIiwxMywiY29udHJvbERDMSIsMTcsImNvbnRyb2xEQzIiLDE4LCJjb250cm9sREMzIiwxOSwiY29udHJvbERDNCIsMjAsImNvbnRyb2xERUwiLDEyNywiY29udHJvbERMRSIsMTYsImNvbnRyb2xFTSIsMjUsImNvbnRyb2xFTlEiLDUsImNvbnRyb2xFT1QiLDQsImNvbnRyb2xFU0MiLDI3LCJjb250cm9sRVRCIiwyMywiY29udHJvbEVUWCIsMywiY29udHJvbEZGIiwxMiwiY29udHJvbEZTIiwyOCwiY29udHJvbEdTIiwyOSwiY29udHJvbEhUIiw5LCJjb250cm9sTEYiLDEwLCJjb250cm9sTkFLIiwyMSwiY29udHJvbE5VTEwiLDAsImNvbnRyb2xSUyIsMzAsImNvbnRyb2xTSSIsMTUsImNvbnRyb2xTTyIsMTQsImNvbnRyb2xTT1QiLDIsImNvbnRyb2xTVFgiLDEsImNvbnRyb2xTVUIiLDI2LCJjb250cm9sU1lOIiwyMiwiY29udHJvbFVTIiwzMSwiY29udHJvbFZUIiwxMSwiY29weXJpZ2h0IiwxNjksImNvcHlyaWdodHNhbnMiLDYzNzIxLCJjb3B5cmlnaHRzZXJpZiIsNjMxOTMsImNvcm5lcmJyYWNrZXRsZWZ0IiwxMjMwMCwiY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGgiLDY1Mzc4LCJjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4OSwiY29ybmVyYnJhY2tldHJpZ2h0IiwxMjMwMSwiY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoIiw2NTM3OSwiY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkwLCJjb3Jwb3JhdGlvbnNxdWFyZSIsMTMxODMsImNvc3F1YXJlIiwxMzI1NSwiY292ZXJrZ3NxdWFyZSIsMTMyNTQsImNwYXJlbiIsOTM3NCwiY3J1emVpcm8iLDgzNTQsImNzdHJldGNoZWQiLDY2MywiY3VybHlhbmQiLDg5MTEsImN1cmx5b3IiLDg5MTAsImN1cnJlbmN5IiwxNjQsImN5ckJyZXZlIiw2MzE4NSwiY3lyRmxleCIsNjMxODYsImN5cmJyZXZlIiw2MzE4OCwiY3lyZmxleCIsNjMxODksImQiLDEwMCwiZGFhcm1lbmlhbiIsMTM4MCwiZGFiZW5nYWxpIiwyNDcwLCJkYWRhcmFiaWMiLDE1OTAsImRhZGV2YSIsMjM0MiwiZGFkZmluYWxhcmFiaWMiLDY1MjE0LCJkYWRpbml0aWFsYXJhYmljIiw2NTIxNSwiZGFkbWVkaWFsYXJhYmljIiw2NTIxNiwiZGFnZXNoIiwxNDY4LCJkYWdlc2hoZWJyZXciLDE0NjgsImRhZ2dlciIsODIyNCwiZGFnZ2VyZGJsIiw4MjI1LCJkYWd1amFyYXRpIiwyNzI2LCJkYWd1cm11a2hpIiwyNTk4LCJkYWhpcmFnYW5hIiwxMjM4NCwiZGFrYXRha2FuYSIsMTI0ODAsImRhbGFyYWJpYyIsMTU4MywiZGFsZXQiLDE0OTEsImRhbGV0ZGFnZXNoIiw2NDMwNywiZGFsZXRkYWdlc2hoZWJyZXciLDY0MzA3LCJkYWxldGhlYnJldyIsMTQ5MSwiZGFsZmluYWxhcmFiaWMiLDY1MTk0LCJkYW1tYWFyYWJpYyIsMTYxNSwiZGFtbWFsb3dhcmFiaWMiLDE2MTUsImRhbW1hdGFuYWx0b25lYXJhYmljIiwxNjEyLCJkYW1tYXRhbmFyYWJpYyIsMTYxMiwiZGFuZGEiLDI0MDQsImRhcmdhaGVicmV3IiwxNDQ3LCJkYXJnYWxlZnRoZWJyZXciLDE0NDcsImRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1NywiZGJsR3JhdmUiLDYzMTg3LCJkYmxhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5OCwiZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NSwiZGJsYW5nbGVicmFja2V0cmlnaHQiLDEyMjk5LCJkYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4NiwiZGJsYXJjaGludmVydGVkYmVsb3djbWIiLDgxMSwiZGJsYXJyb3dsZWZ0Iiw4NjYwLCJkYmxhcnJvd3JpZ2h0Iiw4NjU4LCJkYmxkYW5kYSIsMjQwNSwiZGJsZ3JhdmUiLDYzMTkwLCJkYmxncmF2ZWNtYiIsNzgzLCJkYmxpbnRlZ3JhbCIsODc0OCwiZGJsbG93bGluZSIsODIxNSwiZGJsbG93bGluZWNtYiIsODE5LCJkYmxvdmVybGluZWNtYiIsODMxLCJkYmxwcmltZW1vZCIsNjk4LCJkYmx2ZXJ0aWNhbGJhciIsODIxNCwiZGJsdmVydGljYWxsaW5lYWJvdmVjbWIiLDc4MiwiZGJvcG9tb2ZvIiwxMjU1MywiZGJzcXVhcmUiLDEzMjU2LCJkY2Fyb24iLDI3MSwiZGNlZGlsbGEiLDc2OTcsImRjaXJjbGUiLDk0MjcsImRjaXJjdW1mbGV4YmVsb3ciLDc2OTksImRjcm9hdCIsMjczLCJkZGFiZW5nYWxpIiwyNDY1LCJkZGFkZXZhIiwyMzM3LCJkZGFndWphcmF0aSIsMjcyMSwiZGRhZ3VybXVraGkiLDI1OTMsImRkYWxhcmFiaWMiLDE2NzIsImRkYWxmaW5hbGFyYWJpYyIsNjQzOTMsImRkZGhhZGV2YSIsMjM5NiwiZGRoYWJlbmdhbGkiLDI0NjYsImRkaGFkZXZhIiwyMzM4LCJkZGhhZ3VqYXJhdGkiLDI3MjIsImRkaGFndXJtdWtoaSIsMjU5NCwiZGRvdGFjY2VudCIsNzY5MSwiZGRvdGJlbG93Iiw3NjkzLCJkZWNpbWFsc2VwYXJhdG9yYXJhYmljIiwxNjQzLCJkZWNpbWFsc2VwYXJhdG9ycGVyc2lhbiIsMTY0MywiZGVjeXJpbGxpYyIsMTA3NiwiZGVncmVlIiwxNzYsImRlaGloZWJyZXciLDE0NTMsImRlaGlyYWdhbmEiLDEyMzkxLCJkZWljb3B0aWMiLDEwMDcsImRla2F0YWthbmEiLDEyNDg3LCJkZWxldGVsZWZ0Iiw5MDAzLCJkZWxldGVyaWdodCIsODk5OCwiZGVsdGEiLDk0OCwiZGVsdGF0dXJuZWQiLDM5NywiZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGkiLDI1NTIsImRlemgiLDY3NiwiZGhhYmVuZ2FsaSIsMjQ3MSwiZGhhZGV2YSIsMjM0MywiZGhhZ3VqYXJhdGkiLDI3MjcsImRoYWd1cm11a2hpIiwyNTk5LCJkaG9vayIsNTk5LCJkaWFseXRpa2F0b25vcyIsOTAxLCJkaWFseXRpa2F0b25vc2NtYiIsODM2LCJkaWFtb25kIiw5ODMwLCJkaWFtb25kc3VpdHdoaXRlIiw5ODI2LCJkaWVyZXNpcyIsMTY4LCJkaWVyZXNpc2FjdXRlIiw2MzE5MSwiZGllcmVzaXNiZWxvd2NtYiIsODA0LCJkaWVyZXNpc2NtYiIsNzc2LCJkaWVyZXNpc2dyYXZlIiw2MzE5MiwiZGllcmVzaXN0b25vcyIsOTAxLCJkaWhpcmFnYW5hIiwxMjM4NiwiZGlrYXRha2FuYSIsMTI0ODIsImRpdHRvbWFyayIsMTIyOTEsImRpdmlkZSIsMjQ3LCJkaXZpZGVzIiw4NzM5LCJkaXZpc2lvbnNsYXNoIiw4NzI1LCJkamVjeXJpbGxpYyIsMTEwNiwiZGtzaGFkZSIsOTYxOSwiZGxpbmViZWxvdyIsNzY5NSwiZGxzcXVhcmUiLDEzMjA3LCJkbWFjcm9uIiwyNzMsImRtb25vc3BhY2UiLDY1MzQ4LCJkbmJsb2NrIiw5NjA0LCJkb2NoYWRhdGhhaSIsMzU5OCwiZG9kZWt0aGFpIiwzNjA0LCJkb2hpcmFnYW5hIiwxMjM5MywiZG9rYXRha2FuYSIsMTI0ODksImRvbGxhciIsMzYsImRvbGxhcmluZmVyaW9yIiw2MzIwMywiZG9sbGFybW9ub3NwYWNlIiw2NTI4NCwiZG9sbGFyb2xkc3R5bGUiLDYzMjY4LCJkb2xsYXJzbWFsbCIsNjUxMjksImRvbGxhcnN1cGVyaW9yIiw2MzIwNCwiZG9uZyIsODM2MywiZG9ydXNxdWFyZSIsMTMwOTQsImRvdGFjY2VudCIsNzI5LCJkb3RhY2NlbnRjbWIiLDc3NSwiZG90YmVsb3djbWIiLDgwMywiZG90YmVsb3djb21iIiw4MDMsImRvdGthdGFrYW5hIiwxMjUzOSwiZG90bGVzc2kiLDMwNSwiZG90bGVzc2oiLDYzMTY2LCJkb3RsZXNzanN0cm9rZWhvb2siLDY0NCwiZG90bWF0aCIsODkwMSwiZG90dGVkY2lyY2xlIiw5Njc2LCJkb3VibGV5b2RwYXRhaCIsNjQyODcsImRvdWJsZXlvZHBhdGFoaGVicmV3Iiw2NDI4NywiZG93bnRhY2tiZWxvd2NtYiIsNzk4LCJkb3dudGFja21vZCIsNzI1LCJkcGFyZW4iLDkzNzUsImRzdXBlcmlvciIsNjMyMTEsImR0YWlsIiw1OTgsImR0b3BiYXIiLDM5NiwiZHVoaXJhZ2FuYSIsMTIzODksImR1a2F0YWthbmEiLDEyNDg1LCJkeiIsNDk5LCJkemFsdG9uZSIsNjc1LCJkemNhcm9uIiw0NTQsImR6Y3VybCIsNjc3LCJkemVhYmtoYXNpYW5jeXJpbGxpYyIsMTI0OSwiZHplY3lyaWxsaWMiLDExMDksImR6aGVjeXJpbGxpYyIsMTExOSwiZSIsMTAxLCJlYWN1dGUiLDIzMywiZWFydGgiLDk3OTMsImViZW5nYWxpIiwyNDQ3LCJlYm9wb21vZm8iLDEyNTcyLCJlYnJldmUiLDI3NywiZWNhbmRyYWRldmEiLDIzMTcsImVjYW5kcmFndWphcmF0aSIsMjcwMSwiZWNhbmRyYXZvd2Vsc2lnbmRldmEiLDIzNzMsImVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aSIsMjc1NywiZWNhcm9uIiwyODMsImVjZWRpbGxhYnJldmUiLDc3MDksImVjaGFybWVuaWFuIiwxMzgxLCJlY2h5aXduYXJtZW5pYW4iLDE0MTUsImVjaXJjbGUiLDk0MjgsImVjaXJjdW1mbGV4IiwyMzQsImVjaXJjdW1mbGV4YWN1dGUiLDc4NzEsImVjaXJjdW1mbGV4YmVsb3ciLDc3MDUsImVjaXJjdW1mbGV4ZG90YmVsb3ciLDc4NzksImVjaXJjdW1mbGV4Z3JhdmUiLDc4NzMsImVjaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODc1LCJlY2lyY3VtZmxleHRpbGRlIiw3ODc3LCJlY3lyaWxsaWMiLDExMDgsImVkYmxncmF2ZSIsNTE3LCJlZGV2YSIsMjMxOSwiZWRpZXJlc2lzIiwyMzUsImVkb3QiLDI3OSwiZWRvdGFjY2VudCIsMjc5LCJlZG90YmVsb3ciLDc4NjUsImVlZ3VybXVraGkiLDI1NzUsImVlbWF0cmFndXJtdWtoaSIsMjYzMSwiZWZjeXJpbGxpYyIsMTA5MiwiZWdyYXZlIiwyMzIsImVndWphcmF0aSIsMjcwMywiZWhhcm1lbmlhbiIsMTM4MywiZWhib3BvbW9mbyIsMTI1NzMsImVoaXJhZ2FuYSIsMTIzNjAsImVob29rYWJvdmUiLDc4NjcsImVpYm9wb21vZm8iLDEyNTc1LCJlaWdodCIsNTYsImVpZ2h0YXJhYmljIiwxNjQwLCJlaWdodGJlbmdhbGkiLDI1NDIsImVpZ2h0Y2lyY2xlIiw5MzE5LCJlaWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI5LCJlaWdodGRldmEiLDI0MTQsImVpZ2h0ZWVuY2lyY2xlIiw5MzI5LCJlaWdodGVlbnBhcmVuIiw5MzQ5LCJlaWdodGVlbnBlcmlvZCIsOTM2OSwiZWlnaHRndWphcmF0aSIsMjc5OCwiZWlnaHRndXJtdWtoaSIsMjY3MCwiZWlnaHRoYWNrYXJhYmljIiwxNjQwLCJlaWdodGhhbmd6aG91IiwxMjMyOCwiZWlnaHRobm90ZWJlYW1lZCIsOTgzNSwiZWlnaHRpZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOSwiZWlnaHRpbmZlcmlvciIsODMyOCwiZWlnaHRtb25vc3BhY2UiLDY1MzA0LCJlaWdodG9sZHN0eWxlIiw2MzI4OCwiZWlnaHRwYXJlbiIsOTMzOSwiZWlnaHRwZXJpb2QiLDkzNTksImVpZ2h0cGVyc2lhbiIsMTc4NCwiZWlnaHRyb21hbiIsODU2NywiZWlnaHRzdXBlcmlvciIsODMxMiwiZWlnaHR0aGFpIiwzNjcyLCJlaW52ZXJ0ZWRicmV2ZSIsNTE5LCJlaW90aWZpZWRjeXJpbGxpYyIsMTEyNSwiZWthdGFrYW5hIiwxMjQ1NiwiZWthdGFrYW5haGFsZndpZHRoIiw2NTM5NiwiZWtvbmthcmd1cm11a2hpIiwyNjc2LCJla29yZWFuIiwxMjYyOCwiZWxjeXJpbGxpYyIsMTA4MywiZWxlbWVudCIsODcxMiwiZWxldmVuY2lyY2xlIiw5MzIyLCJlbGV2ZW5wYXJlbiIsOTM0MiwiZWxldmVucGVyaW9kIiw5MzYyLCJlbGV2ZW5yb21hbiIsODU3MCwiZWxsaXBzaXMiLDgyMzAsImVsbGlwc2lzdmVydGljYWwiLDg5NDIsImVtYWNyb24iLDI3NSwiZW1hY3JvbmFjdXRlIiw3NzAzLCJlbWFjcm9uZ3JhdmUiLDc3MDEsImVtY3lyaWxsaWMiLDEwODQsImVtZGFzaCIsODIxMiwiZW1kYXNodmVydGljYWwiLDY1MDczLCJlbW9ub3NwYWNlIiw2NTM0OSwiZW1waGFzaXNtYXJrYXJtZW5pYW4iLDEzNzEsImVtcHR5c2V0Iiw4NzA5LCJlbmJvcG9tb2ZvIiwxMjU3OSwiZW5jeXJpbGxpYyIsMTA4NSwiZW5kYXNoIiw4MjExLCJlbmRhc2h2ZXJ0aWNhbCIsNjUwNzQsImVuZGVzY2VuZGVyY3lyaWxsaWMiLDExODcsImVuZyIsMzMxLCJlbmdib3BvbW9mbyIsMTI1ODEsImVuZ2hlY3lyaWxsaWMiLDExODksImVuaG9va2N5cmlsbGljIiwxMjI0LCJlbnNwYWNlIiw4MTk0LCJlb2dvbmVrIiwyODEsImVva29yZWFuIiwxMjYyNywiZW9wZW4iLDYwMywiZW9wZW5jbG9zZWQiLDY2NiwiZW9wZW5yZXZlcnNlZCIsNjA0LCJlb3BlbnJldmVyc2VkY2xvc2VkIiw2MDYsImVvcGVucmV2ZXJzZWRob29rIiw2MDUsImVwYXJlbiIsOTM3NiwiZXBzaWxvbiIsOTQ5LCJlcHNpbG9udG9ub3MiLDk0MSwiZXF1YWwiLDYxLCJlcXVhbG1vbm9zcGFjZSIsNjUzMDksImVxdWFsc21hbGwiLDY1MTI2LCJlcXVhbHN1cGVyaW9yIiw4MzE2LCJlcXVpdmFsZW5jZSIsODgwMSwiZXJib3BvbW9mbyIsMTI1ODIsImVyY3lyaWxsaWMiLDEwODgsImVyZXZlcnNlZCIsNjAwLCJlcmV2ZXJzZWRjeXJpbGxpYyIsMTEwMSwiZXNjeXJpbGxpYyIsMTA4OSwiZXNkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NSwiZXNoIiw2NDMsImVzaGN1cmwiLDY0NiwiZXNob3J0ZGV2YSIsMjMxOCwiZXNob3J0dm93ZWxzaWduZGV2YSIsMjM3NCwiZXNocmV2ZXJzZWRsb29wIiw0MjYsImVzaHNxdWF0cmV2ZXJzZWQiLDY0NSwiZXNtYWxsaGlyYWdhbmEiLDEyMzU5LCJlc21hbGxrYXRha2FuYSIsMTI0NTUsImVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NiwiZXN0aW1hdGVkIiw4NDk0LCJlc3VwZXJpb3IiLDYzMjEyLCJldGEiLDk1MSwiZXRhcm1lbmlhbiIsMTM4NCwiZXRhdG9ub3MiLDk0MiwiZXRoIiwyNDAsImV0aWxkZSIsNzg2OSwiZXRpbGRlYmVsb3ciLDc3MDcsImV0bmFodGFmb3VraGhlYnJldyIsMTQyNSwiZXRuYWh0YWZvdWtobGVmdGhlYnJldyIsMTQyNSwiZXRuYWh0YWhlYnJldyIsMTQyNSwiZXRuYWh0YWxlZnRoZWJyZXciLDE0MjUsImV0dXJuZWQiLDQ3NywiZXVrb3JlYW4iLDEyNjQxLCJldXJvIiw4MzY0LCJldm93ZWxzaWduYmVuZ2FsaSIsMjUwMywiZXZvd2Vsc2lnbmRldmEiLDIzNzUsImV2b3dlbHNpZ25ndWphcmF0aSIsMjc1OSwiZXhjbGFtIiwzMywiZXhjbGFtYXJtZW5pYW4iLDEzNzIsImV4Y2xhbWRibCIsODI1MiwiZXhjbGFtZG93biIsMTYxLCJleGNsYW1kb3duc21hbGwiLDYzMzkzLCJleGNsYW1tb25vc3BhY2UiLDY1MjgxLCJleGNsYW1zbWFsbCIsNjMyNjUsImV4aXN0ZW50aWFsIiw4NzA3LCJlemgiLDY1OCwiZXpoY2Fyb24iLDQ5NSwiZXpoY3VybCIsNjU5LCJlemhyZXZlcnNlZCIsNDQxLCJlemh0YWlsIiw0NDIsImYiLDEwMiwiZmFkZXZhIiwyMzk4LCJmYWd1cm11a2hpIiwyNjU0LCJmYWhyZW5oZWl0Iiw4NDU3LCJmYXRoYWFyYWJpYyIsMTYxNCwiZmF0aGFsb3dhcmFiaWMiLDE2MTQsImZhdGhhdGFuYXJhYmljIiwxNjExLCJmYm9wb21vZm8iLDEyNTUyLCJmY2lyY2xlIiw5NDI5LCJmZG90YWNjZW50Iiw3NzExLCJmZWhhcmFiaWMiLDE2MDEsImZlaGFybWVuaWFuIiwxNDE0LCJmZWhmaW5hbGFyYWJpYyIsNjUyMzQsImZlaGluaXRpYWxhcmFiaWMiLDY1MjM1LCJmZWhtZWRpYWxhcmFiaWMiLDY1MjM2LCJmZWljb3B0aWMiLDk5NywiZmVtYWxlIiw5NzkyLCJmZiIsNjQyNTYsImZfZiIsNjQyNTYsImZmaSIsNjQyNTksImZfZl9pIiw2NDI1OSwiZmZsIiw2NDI2MCwiZl9mX2wiLDY0MjYwLCJmaSIsNjQyNTcsImZfaSIsNjQyNTcsImZpZnRlZW5jaXJjbGUiLDkzMjYsImZpZnRlZW5wYXJlbiIsOTM0NiwiZmlmdGVlbnBlcmlvZCIsOTM2NiwiZmlndXJlZGFzaCIsODIxMCwiZmlsbGVkYm94Iiw5NjMyLCJmaWxsZWRyZWN0Iiw5NjQ0LCJmaW5hbGthZiIsMTQ5OCwiZmluYWxrYWZkYWdlc2giLDY0MzE0LCJmaW5hbGthZmRhZ2VzaGhlYnJldyIsNjQzMTQsImZpbmFsa2FmaGVicmV3IiwxNDk4LCJmaW5hbG1lbSIsMTUwMSwiZmluYWxtZW1oZWJyZXciLDE1MDEsImZpbmFsbnVuIiwxNTAzLCJmaW5hbG51bmhlYnJldyIsMTUwMywiZmluYWxwZSIsMTUwNywiZmluYWxwZWhlYnJldyIsMTUwNywiZmluYWx0c2FkaSIsMTUwOSwiZmluYWx0c2FkaWhlYnJldyIsMTUwOSwiZmlyc3R0b25lY2hpbmVzZSIsNzEzLCJmaXNoZXllIiw5NjczLCJmaXRhY3lyaWxsaWMiLDExMzksImZpdmUiLDUzLCJmaXZlYXJhYmljIiwxNjM3LCJmaXZlYmVuZ2FsaSIsMjUzOSwiZml2ZWNpcmNsZSIsOTMxNiwiZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI2LCJmaXZlZGV2YSIsMjQxMSwiZml2ZWVpZ2h0aHMiLDg1NDEsImZpdmVndWphcmF0aSIsMjc5NSwiZml2ZWd1cm11a2hpIiwyNjY3LCJmaXZlaGFja2FyYWJpYyIsMTYzNywiZml2ZWhhbmd6aG91IiwxMjMyNSwiZml2ZWlkZW9ncmFwaGljcGFyZW4iLDEyODM2LCJmaXZlaW5mZXJpb3IiLDgzMjUsImZpdmVtb25vc3BhY2UiLDY1MzAxLCJmaXZlb2xkc3R5bGUiLDYzMjg1LCJmaXZlcGFyZW4iLDkzMzYsImZpdmVwZXJpb2QiLDkzNTYsImZpdmVwZXJzaWFuIiwxNzgxLCJmaXZlcm9tYW4iLDg1NjQsImZpdmVzdXBlcmlvciIsODMwOSwiZml2ZXRoYWkiLDM2NjksImZsIiw2NDI1OCwiZl9sIiw2NDI1OCwiZmxvcmluIiw0MDIsImZtb25vc3BhY2UiLDY1MzUwLCJmbXNxdWFyZSIsMTMyMDksImZvZmFudGhhaSIsMzYxNSwiZm9mYXRoYWkiLDM2MTMsImZvbmdtYW50aGFpIiwzNjYzLCJmb3JhbGwiLDg3MDQsImZvdXIiLDUyLCJmb3VyYXJhYmljIiwxNjM2LCJmb3VyYmVuZ2FsaSIsMjUzOCwiZm91cmNpcmNsZSIsOTMxNSwiZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI1LCJmb3VyZGV2YSIsMjQxMCwiZm91cmd1amFyYXRpIiwyNzk0LCJmb3VyZ3VybXVraGkiLDI2NjYsImZvdXJoYWNrYXJhYmljIiwxNjM2LCJmb3VyaGFuZ3pob3UiLDEyMzI0LCJmb3VyaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzUsImZvdXJpbmZlcmlvciIsODMyNCwiZm91cm1vbm9zcGFjZSIsNjUzMDAsImZvdXJudW1lcmF0b3JiZW5nYWxpIiwyNTUxLCJmb3Vyb2xkc3R5bGUiLDYzMjg0LCJmb3VycGFyZW4iLDkzMzUsImZvdXJwZXJpb2QiLDkzNTUsImZvdXJwZXJzaWFuIiwxNzgwLCJmb3Vycm9tYW4iLDg1NjMsImZvdXJzdXBlcmlvciIsODMwOCwiZm91cnRlZW5jaXJjbGUiLDkzMjUsImZvdXJ0ZWVucGFyZW4iLDkzNDUsImZvdXJ0ZWVucGVyaW9kIiw5MzY1LCJmb3VydGhhaSIsMzY2OCwiZm91cnRodG9uZWNoaW5lc2UiLDcxNSwiZnBhcmVuIiw5Mzc3LCJmcmFjdGlvbiIsODI2MCwiZnJhbmMiLDgzNTUsImciLDEwMywiZ2FiZW5nYWxpIiwyNDU1LCJnYWN1dGUiLDUwMSwiZ2FkZXZhIiwyMzI3LCJnYWZhcmFiaWMiLDE3MTEsImdhZmZpbmFsYXJhYmljIiw2NDQwMywiZ2FmaW5pdGlhbGFyYWJpYyIsNjQ0MDQsImdhZm1lZGlhbGFyYWJpYyIsNjQ0MDUsImdhZ3VqYXJhdGkiLDI3MTEsImdhZ3VybXVraGkiLDI1ODMsImdhaGlyYWdhbmEiLDEyMzY0LCJnYWthdGFrYW5hIiwxMjQ2MCwiZ2FtbWEiLDk0NywiZ2FtbWFsYXRpbnNtYWxsIiw2MTEsImdhbW1hc3VwZXJpb3IiLDczNiwiZ2FuZ2lhY29wdGljIiwxMDAzLCJnYm9wb21vZm8iLDEyNTU3LCJnYnJldmUiLDI4NywiZ2Nhcm9uIiw0ODcsImdjZWRpbGxhIiwyOTEsImdjaXJjbGUiLDk0MzAsImdjaXJjdW1mbGV4IiwyODUsImdjb21tYWFjY2VudCIsMjkxLCJnZG90IiwyODksImdkb3RhY2NlbnQiLDI4OSwiZ2VjeXJpbGxpYyIsMTA3NSwiZ2VoaXJhZ2FuYSIsMTIzNzAsImdla2F0YWthbmEiLDEyNDY2LCJnZW9tZXRyaWNhbGx5ZXF1YWwiLDg3ODUsImdlcmVzaGFjY2VudGhlYnJldyIsMTQzNiwiZ2VyZXNoaGVicmV3IiwxNTIzLCJnZXJlc2htdXFkYW1oZWJyZXciLDE0MzcsImdlcm1hbmRibHMiLDIyMywiZ2Vyc2hheWltYWNjZW50aGVicmV3IiwxNDM4LCJnZXJzaGF5aW1oZWJyZXciLDE1MjQsImdldGFtYXJrIiwxMjMwNywiZ2hhYmVuZ2FsaSIsMjQ1NiwiZ2hhZGFybWVuaWFuIiwxMzk0LCJnaGFkZXZhIiwyMzI4LCJnaGFndWphcmF0aSIsMjcxMiwiZ2hhZ3VybXVraGkiLDI1ODQsImdoYWluYXJhYmljIiwxNTk0LCJnaGFpbmZpbmFsYXJhYmljIiw2NTIzMCwiZ2hhaW5pbml0aWFsYXJhYmljIiw2NTIzMSwiZ2hhaW5tZWRpYWxhcmFiaWMiLDY1MjMyLCJnaGVtaWRkbGVob29rY3lyaWxsaWMiLDExNzMsImdoZXN0cm9rZWN5cmlsbGljIiwxMTcxLCJnaGV1cHR1cm5jeXJpbGxpYyIsMTE2OSwiZ2hoYWRldmEiLDIzOTQsImdoaGFndXJtdWtoaSIsMjY1MCwiZ2hvb2siLDYwOCwiZ2h6c3F1YXJlIiwxMzIwMywiZ2loaXJhZ2FuYSIsMTIzNjYsImdpa2F0YWthbmEiLDEyNDYyLCJnaW1hcm1lbmlhbiIsMTM3OSwiZ2ltZWwiLDE0OTAsImdpbWVsZGFnZXNoIiw2NDMwNiwiZ2ltZWxkYWdlc2hoZWJyZXciLDY0MzA2LCJnaW1lbGhlYnJldyIsMTQ5MCwiZ2plY3lyaWxsaWMiLDExMDcsImdsb3R0YWxpbnZlcnRlZHN0cm9rZSIsNDQ2LCJnbG90dGFsc3RvcCIsNjYwLCJnbG90dGFsc3RvcGludmVydGVkIiw2NjIsImdsb3R0YWxzdG9wbW9kIiw3MDQsImdsb3R0YWxzdG9wcmV2ZXJzZWQiLDY2MSwiZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZCIsNzA1LCJnbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3IiLDc0MCwiZ2xvdHRhbHN0b3BzdHJva2UiLDY3MywiZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZCIsNjc0LCJnbWFjcm9uIiw3NzEzLCJnbW9ub3NwYWNlIiw2NTM1MSwiZ29oaXJhZ2FuYSIsMTIzNzIsImdva2F0YWthbmEiLDEyNDY4LCJncGFyZW4iLDkzNzgsImdwYXNxdWFyZSIsMTMyMjgsImdyYWRpZW50Iiw4NzExLCJncmF2ZSIsOTYsImdyYXZlYmVsb3djbWIiLDc5MCwiZ3JhdmVjbWIiLDc2OCwiZ3JhdmVjb21iIiw3NjgsImdyYXZlZGV2YSIsMjM4NywiZ3JhdmVsb3dtb2QiLDcxOCwiZ3JhdmVtb25vc3BhY2UiLDY1MzQ0LCJncmF2ZXRvbmVjbWIiLDgzMiwiZ3JlYXRlciIsNjIsImdyZWF0ZXJlcXVhbCIsODgwNSwiZ3JlYXRlcmVxdWFsb3JsZXNzIiw4OTIzLCJncmVhdGVybW9ub3NwYWNlIiw2NTMxMCwiZ3JlYXRlcm9yZXF1aXZhbGVudCIsODgxOSwiZ3JlYXRlcm9ybGVzcyIsODgyMywiZ3JlYXRlcm92ZXJlcXVhbCIsODgwNywiZ3JlYXRlcnNtYWxsIiw2NTEyNSwiZ3NjcmlwdCIsNjA5LCJnc3Ryb2tlIiw0ODUsImd1aGlyYWdhbmEiLDEyMzY4LCJndWlsbGVtb3RsZWZ0IiwxNzEsImd1aWxsZW1vdHJpZ2h0IiwxODcsImd1aWxzaW5nbGxlZnQiLDgyNDksImd1aWxzaW5nbHJpZ2h0Iiw4MjUwLCJndWthdGFrYW5hIiwxMjQ2NCwiZ3VyYW11c3F1YXJlIiwxMzA4MCwiZ3lzcXVhcmUiLDEzMjU3LCJoIiwxMDQsImhhYWJraGFzaWFuY3lyaWxsaWMiLDExOTMsImhhYWx0b25lYXJhYmljIiwxNzI5LCJoYWJlbmdhbGkiLDI0ODksImhhZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDMsImhhZGV2YSIsMjM2MSwiaGFndWphcmF0aSIsMjc0NSwiaGFndXJtdWtoaSIsMjYxNywiaGFoYXJhYmljIiwxNTgxLCJoYWhmaW5hbGFyYWJpYyIsNjUxODYsImhhaGluaXRpYWxhcmFiaWMiLDY1MTg3LCJoYWhpcmFnYW5hIiwxMjM5OSwiaGFobWVkaWFsYXJhYmljIiw2NTE4OCwiaGFpdHVzcXVhcmUiLDEzMDk4LCJoYWthdGFrYW5hIiwxMjQ5NSwiaGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTgsImhhbGFudGd1cm11a2hpIiwyNjM3LCJoYW16YWFyYWJpYyIsMTU2OSwiaGFtemFsb3dhcmFiaWMiLDE1NjksImhhbmd1bGZpbGxlciIsMTI2NDQsImhhcmRzaWduY3lyaWxsaWMiLDEwOTgsImhhcnBvb25sZWZ0YmFyYnVwIiw4NjM2LCJoYXJwb29ucmlnaHRiYXJidXAiLDg2NDAsImhhc3F1YXJlIiwxMzI1OCwiaGF0YWZwYXRhaCIsMTQ1OCwiaGF0YWZwYXRhaDE2IiwxNDU4LCJoYXRhZnBhdGFoMjMiLDE0NTgsImhhdGFmcGF0YWgyZiIsMTQ1OCwiaGF0YWZwYXRhaGhlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaG5hcnJvd2hlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NTgsImhhdGFmcGF0YWh3aWRlaGVicmV3IiwxNDU4LCJoYXRhZnFhbWF0cyIsMTQ1OSwiaGF0YWZxYW1hdHMxYiIsMTQ1OSwiaGF0YWZxYW1hdHMyOCIsMTQ1OSwiaGF0YWZxYW1hdHMzNCIsMTQ1OSwiaGF0YWZxYW1hdHNoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzbmFycm93aGVicmV3IiwxNDU5LCJoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzd2lkZWhlYnJldyIsMTQ1OSwiaGF0YWZzZWdvbCIsMTQ1NywiaGF0YWZzZWdvbDE3IiwxNDU3LCJoYXRhZnNlZ29sMjQiLDE0NTcsImhhdGFmc2Vnb2wzMCIsMTQ1NywiaGF0YWZzZWdvbGhlYnJldyIsMTQ1NywiaGF0YWZzZWdvbG5hcnJvd2hlYnJldyIsMTQ1NywiaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXciLDE0NTcsImhhdGFmc2Vnb2x3aWRlaGVicmV3IiwxNDU3LCJoYmFyIiwyOTUsImhib3BvbW9mbyIsMTI1NTksImhicmV2ZWJlbG93Iiw3NzIzLCJoY2VkaWxsYSIsNzcyMSwiaGNpcmNsZSIsOTQzMSwiaGNpcmN1bWZsZXgiLDI5MywiaGRpZXJlc2lzIiw3NzE5LCJoZG90YWNjZW50Iiw3NzE1LCJoZG90YmVsb3ciLDc3MTcsImhlIiwxNDkyLCJoZWFydCIsOTgyOSwiaGVhcnRzdWl0YmxhY2siLDk4MjksImhlYXJ0c3VpdHdoaXRlIiw5ODI1LCJoZWRhZ2VzaCIsNjQzMDgsImhlZGFnZXNoaGVicmV3Iiw2NDMwOCwiaGVoYWx0b25lYXJhYmljIiwxNzI5LCJoZWhhcmFiaWMiLDE2MDcsImhlaGVicmV3IiwxNDkyLCJoZWhmaW5hbGFsdG9uZWFyYWJpYyIsNjQ0MjMsImhlaGZpbmFsYWx0dHdvYXJhYmljIiw2NTI1OCwiaGVoZmluYWxhcmFiaWMiLDY1MjU4LCJoZWhoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY0NDIxLCJoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWMiLDY0NDIwLCJoZWhpbml0aWFsYWx0b25lYXJhYmljIiw2NDQyNCwiaGVoaW5pdGlhbGFyYWJpYyIsNjUyNTksImhlaGlyYWdhbmEiLDEyNDA4LCJoZWhtZWRpYWxhbHRvbmVhcmFiaWMiLDY0NDI1LCJoZWhtZWRpYWxhcmFiaWMiLDY1MjYwLCJoZWlzZWllcmFzcXVhcmUiLDEzMTc5LCJoZWthdGFrYW5hIiwxMjUwNCwiaGVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjEsImhla3V0YWFydXNxdWFyZSIsMTMxMTAsImhlbmdob29rIiw2MTUsImhlcnV0dXNxdWFyZSIsMTMxMTMsImhldCIsMTQ5NSwiaGV0aGVicmV3IiwxNDk1LCJoaG9vayIsNjE0LCJoaG9va3N1cGVyaW9yIiw2ODksImhpZXVoYWNpcmNsZWtvcmVhbiIsMTI5MjMsImhpZXVoYXBhcmVua29yZWFuIiwxMjgyNywiaGlldWhjaXJjbGVrb3JlYW4iLDEyOTA5LCJoaWV1aGtvcmVhbiIsMTI2MjIsImhpZXVocGFyZW5rb3JlYW4iLDEyODEzLCJoaWhpcmFnYW5hIiwxMjQwMiwiaGlrYXRha2FuYSIsMTI0OTgsImhpa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE5LCJoaXJpcSIsMTQ2MCwiaGlyaXExNCIsMTQ2MCwiaGlyaXEyMSIsMTQ2MCwiaGlyaXEyZCIsMTQ2MCwiaGlyaXFoZWJyZXciLDE0NjAsImhpcmlxbmFycm93aGVicmV3IiwxNDYwLCJoaXJpcXF1YXJ0ZXJoZWJyZXciLDE0NjAsImhpcmlxd2lkZWhlYnJldyIsMTQ2MCwiaGxpbmViZWxvdyIsNzgzMCwiaG1vbm9zcGFjZSIsNjUzNTIsImhvYXJtZW5pYW4iLDEzOTIsImhvaGlwdGhhaSIsMzYyNywiaG9oaXJhZ2FuYSIsMTI0MTEsImhva2F0YWthbmEiLDEyNTA3LCJob2thdGFrYW5haGFsZndpZHRoIiw2NTQyMiwiaG9sYW0iLDE0NjUsImhvbGFtMTkiLDE0NjUsImhvbGFtMjYiLDE0NjUsImhvbGFtMzIiLDE0NjUsImhvbGFtaGVicmV3IiwxNDY1LCJob2xhbW5hcnJvd2hlYnJldyIsMTQ2NSwiaG9sYW1xdWFydGVyaGVicmV3IiwxNDY1LCJob2xhbXdpZGVoZWJyZXciLDE0NjUsImhvbm9raHVrdGhhaSIsMzYzMCwiaG9va2Fib3ZlY29tYiIsNzc3LCJob29rY21iIiw3NzcsImhvb2twYWxhdGFsaXplZGJlbG93Y21iIiw4MDEsImhvb2tyZXRyb2ZsZXhiZWxvd2NtYiIsODAyLCJob29uc3F1YXJlIiwxMzEyMiwiaG9yaWNvcHRpYyIsMTAwMSwiaG9yaXpvbnRhbGJhciIsODIxMywiaG9ybmNtYiIsNzk1LCJob3RzcHJpbmdzIiw5ODMyLCJob3VzZSIsODk2MiwiaHBhcmVuIiw5Mzc5LCJoc3VwZXJpb3IiLDY4OCwiaHR1cm5lZCIsNjEzLCJodWhpcmFnYW5hIiwxMjQwNSwiaHVpaXRvc3F1YXJlIiwxMzEwNywiaHVrYXRha2FuYSIsMTI1MDEsImh1a2F0YWthbmFoYWxmd2lkdGgiLDY1NDIwLCJodW5nYXJ1bWxhdXQiLDczMywiaHVuZ2FydW1sYXV0Y21iIiw3NzksImh2Iiw0MDUsImh5cGhlbiIsNDUsImh5cGhlbmluZmVyaW9yIiw2MzIwNSwiaHlwaGVubW9ub3NwYWNlIiw2NTI5MywiaHlwaGVuc21hbGwiLDY1MTIzLCJoeXBoZW5zdXBlcmlvciIsNjMyMDYsImh5cGhlbnR3byIsODIwOCwiaSIsMTA1LCJpYWN1dGUiLDIzNywiaWFjeXJpbGxpYyIsMTEwMywiaWJlbmdhbGkiLDI0MzksImlib3BvbW9mbyIsMTI1ODMsImlicmV2ZSIsMzAxLCJpY2Fyb24iLDQ2NCwiaWNpcmNsZSIsOTQzMiwiaWNpcmN1bWZsZXgiLDIzOCwiaWN5cmlsbGljIiwxMTEwLCJpZGJsZ3JhdmUiLDUyMSwiaWRlb2dyYXBoZWFydGhjaXJjbGUiLDEyOTQzLCJpZGVvZ3JhcGhmaXJlY2lyY2xlIiwxMjkzOSwiaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuIiwxMjg2MywiaWRlb2dyYXBoaWNjYWxscGFyZW4iLDEyODU4LCJpZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZSIsMTI5NjUsImlkZW9ncmFwaGljY2xvc2UiLDEyMjk0LCJpZGVvZ3JhcGhpY2NvbW1hIiwxMjI4OSwiaWRlb2dyYXBoaWNjb21tYWxlZnQiLDY1MzgwLCJpZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW4iLDEyODU1LCJpZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGUiLDEyOTYzLCJpZGVvZ3JhcGhpY2VhcnRocGFyZW4iLDEyODQ3LCJpZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbiIsMTI4NjEsImlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlIiwxMjk1NywiaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuIiwxMjg2NCwiaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGUiLDEyOTUwLCJpZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuIiwxMjg1NCwiaWRlb2dyYXBoaWNmaXJlcGFyZW4iLDEyODQzLCJpZGVvZ3JhcGhpY2hhdmVwYXJlbiIsMTI4NTAsImlkZW9ncmFwaGljaGlnaGNpcmNsZSIsMTI5NjQsImlkZW9ncmFwaGljaXRlcmF0aW9ubWFyayIsMTIyOTMsImlkZW9ncmFwaGljbGFib3JjaXJjbGUiLDEyOTUyLCJpZGVvZ3JhcGhpY2xhYm9ycGFyZW4iLDEyODU2LCJpZGVvZ3JhcGhpY2xlZnRjaXJjbGUiLDEyOTY3LCJpZGVvZ3JhcGhpY2xvd2NpcmNsZSIsMTI5NjYsImlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGUiLDEyOTY5LCJpZGVvZ3JhcGhpY21ldGFscGFyZW4iLDEyODQ2LCJpZGVvZ3JhcGhpY21vb25wYXJlbiIsMTI4NDIsImlkZW9ncmFwaGljbmFtZXBhcmVuIiwxMjg1MiwiaWRlb2dyYXBoaWNwZXJpb2QiLDEyMjkwLCJpZGVvZ3JhcGhpY3ByaW50Y2lyY2xlIiwxMjk1OCwiaWRlb2dyYXBoaWNyZWFjaHBhcmVuIiwxMjg2NywiaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbiIsMTI4NTcsImlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbiIsMTI4NjIsImlkZW9ncmFwaGljcmlnaHRjaXJjbGUiLDEyOTY4LCJpZGVvZ3JhcGhpY3NlY3JldGNpcmNsZSIsMTI5NTMsImlkZW9ncmFwaGljc2VsZnBhcmVuIiwxMjg2NiwiaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW4iLDEyODUxLCJpZGVvZ3JhcGhpY3NwYWNlIiwxMjI4OCwiaWRlb2dyYXBoaWNzcGVjaWFscGFyZW4iLDEyODUzLCJpZGVvZ3JhcGhpY3N0b2NrcGFyZW4iLDEyODQ5LCJpZGVvZ3JhcGhpY3N0dWR5cGFyZW4iLDEyODU5LCJpZGVvZ3JhcGhpY3N1bnBhcmVuIiwxMjg0OCwiaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbiIsMTI4NjAsImlkZW9ncmFwaGljd2F0ZXJwYXJlbiIsMTI4NDQsImlkZW9ncmFwaGljd29vZHBhcmVuIiwxMjg0NSwiaWRlb2dyYXBoaWN6ZXJvIiwxMjI5NSwiaWRlb2dyYXBobWV0YWxjaXJjbGUiLDEyOTQyLCJpZGVvZ3JhcGhtb29uY2lyY2xlIiwxMjkzOCwiaWRlb2dyYXBobmFtZWNpcmNsZSIsMTI5NDgsImlkZW9ncmFwaHN1bmNpcmNsZSIsMTI5NDQsImlkZW9ncmFwaHdhdGVyY2lyY2xlIiwxMjk0MCwiaWRlb2dyYXBod29vZGNpcmNsZSIsMTI5NDEsImlkZXZhIiwyMzExLCJpZGllcmVzaXMiLDIzOSwiaWRpZXJlc2lzYWN1dGUiLDc3MjcsImlkaWVyZXNpc2N5cmlsbGljIiwxMjUzLCJpZG90YmVsb3ciLDc4ODMsImllYnJldmVjeXJpbGxpYyIsMTIzOSwiaWVjeXJpbGxpYyIsMTA3NywiaWV1bmdhY2lyY2xla29yZWFuIiwxMjkxNywiaWV1bmdhcGFyZW5rb3JlYW4iLDEyODIxLCJpZXVuZ2NpcmNsZWtvcmVhbiIsMTI5MDMsImlldW5na29yZWFuIiwxMjYxNSwiaWV1bmdwYXJlbmtvcmVhbiIsMTI4MDcsImlncmF2ZSIsMjM2LCJpZ3VqYXJhdGkiLDI2OTUsImlndXJtdWtoaSIsMjU2NywiaWhpcmFnYW5hIiwxMjM1NiwiaWhvb2thYm92ZSIsNzg4MSwiaWliZW5nYWxpIiwyNDQwLCJpaWN5cmlsbGljIiwxMDgwLCJpaWRldmEiLDIzMTIsImlpZ3VqYXJhdGkiLDI2OTYsImlpZ3VybXVraGkiLDI1NjgsImlpbWF0cmFndXJtdWtoaSIsMjYyNCwiaWludmVydGVkYnJldmUiLDUyMywiaWlzaG9ydGN5cmlsbGljIiwxMDgxLCJpaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTYsImlpdm93ZWxzaWduZGV2YSIsMjM2OCwiaWl2b3dlbHNpZ25ndWphcmF0aSIsMjc1MiwiaWoiLDMwNywiaWthdGFrYW5hIiwxMjQ1MiwiaWthdGFrYW5haGFsZndpZHRoIiw2NTM5NCwiaWtvcmVhbiIsMTI2NDMsImlsZGUiLDczMiwiaWx1eWhlYnJldyIsMTQ1MiwiaW1hY3JvbiIsMjk5LCJpbWFjcm9uY3lyaWxsaWMiLDEyNTEsImltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3ODcsImltYXRyYWd1cm11a2hpIiwyNjIzLCJpbW9ub3NwYWNlIiw2NTM1MywiaW5jcmVtZW50Iiw4NzEwLCJpbmZpbml0eSIsODczNCwiaW5pYXJtZW5pYW4iLDEzODcsImludGVncmFsIiw4NzQ3LCJpbnRlZ3JhbGJvdHRvbSIsODk5MywiaW50ZWdyYWxidCIsODk5MywiaW50ZWdyYWxleCIsNjM3MzMsImludGVncmFsdG9wIiw4OTkyLCJpbnRlZ3JhbHRwIiw4OTkyLCJpbnRlcnNlY3Rpb24iLDg3NDUsImludGlzcXVhcmUiLDEzMDYxLCJpbnZidWxsZXQiLDk2ODgsImludmNpcmNsZSIsOTY4OSwiaW52c21pbGVmYWNlIiw5Nzg3LCJpb2N5cmlsbGljIiwxMTA1LCJpb2dvbmVrIiwzMDMsImlvdGEiLDk1MywiaW90YWRpZXJlc2lzIiw5NzAsImlvdGFkaWVyZXNpc3Rvbm9zIiw5MTIsImlvdGFsYXRpbiIsNjE3LCJpb3RhdG9ub3MiLDk0MywiaXBhcmVuIiw5MzgwLCJpcmlndXJtdWtoaSIsMjY3NCwiaXNtYWxsaGlyYWdhbmEiLDEyMzU1LCJpc21hbGxrYXRha2FuYSIsMTI0NTEsImlzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NCwiaXNzaGFyYmVuZ2FsaSIsMjU1NCwiaXN0cm9rZSIsNjE2LCJpc3VwZXJpb3IiLDYzMjEzLCJpdGVyYXRpb25oaXJhZ2FuYSIsMTI0NDUsIml0ZXJhdGlvbmthdGFrYW5hIiwxMjU0MSwiaXRpbGRlIiwyOTcsIml0aWxkZWJlbG93Iiw3NzI1LCJpdWJvcG9tb2ZvIiwxMjU4NSwiaXVjeXJpbGxpYyIsMTEwMiwiaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTUsIml2b3dlbHNpZ25kZXZhIiwyMzY3LCJpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTEsIml6aGl0c2FjeXJpbGxpYyIsMTE0MSwiaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMiLDExNDMsImoiLDEwNiwiamFhcm1lbmlhbiIsMTM5MywiamFiZW5nYWxpIiwyNDYwLCJqYWRldmEiLDIzMzIsImphZ3VqYXJhdGkiLDI3MTYsImphZ3VybXVraGkiLDI1ODgsImpib3BvbW9mbyIsMTI1NjAsImpjYXJvbiIsNDk2LCJqY2lyY2xlIiw5NDMzLCJqY2lyY3VtZmxleCIsMzA5LCJqY3Jvc3NlZHRhaWwiLDY2OSwiamRvdGxlc3NzdHJva2UiLDYwNywiamVjeXJpbGxpYyIsMTExMiwiamVlbWFyYWJpYyIsMTU4MCwiamVlbWZpbmFsYXJhYmljIiw2NTE4MiwiamVlbWluaXRpYWxhcmFiaWMiLDY1MTgzLCJqZWVtbWVkaWFsYXJhYmljIiw2NTE4NCwiamVoYXJhYmljIiwxNjg4LCJqZWhmaW5hbGFyYWJpYyIsNjQzOTUsImpoYWJlbmdhbGkiLDI0NjEsImpoYWRldmEiLDIzMzMsImpoYWd1amFyYXRpIiwyNzE3LCJqaGFndXJtdWtoaSIsMjU4OSwiamhlaGFybWVuaWFuIiwxNDAzLCJqaXMiLDEyMjkyLCJqbW9ub3NwYWNlIiw2NTM1NCwianBhcmVuIiw5MzgxLCJqc3VwZXJpb3IiLDY5MCwiayIsMTA3LCJrYWJhc2hraXJjeXJpbGxpYyIsMTE4NSwia2FiZW5nYWxpIiwyNDUzLCJrYWN1dGUiLDc3MjksImthY3lyaWxsaWMiLDEwODIsImthZGVzY2VuZGVyY3lyaWxsaWMiLDExNzksImthZGV2YSIsMjMyNSwia2FmIiwxNDk5LCJrYWZhcmFiaWMiLDE2MDMsImthZmRhZ2VzaCIsNjQzMTUsImthZmRhZ2VzaGhlYnJldyIsNjQzMTUsImthZmZpbmFsYXJhYmljIiw2NTI0Miwia2FmaGVicmV3IiwxNDk5LCJrYWZpbml0aWFsYXJhYmljIiw2NTI0Mywia2FmbWVkaWFsYXJhYmljIiw2NTI0NCwia2FmcmFmZWhlYnJldyIsNjQzMzMsImthZ3VqYXJhdGkiLDI3MDksImthZ3VybXVraGkiLDI1ODEsImthaGlyYWdhbmEiLDEyMzYzLCJrYWhvb2tjeXJpbGxpYyIsMTIyMCwia2FrYXRha2FuYSIsMTI0NTksImtha2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk4LCJrYXBwYSIsOTU0LCJrYXBwYXN5bWJvbGdyZWVrIiwxMDA4LCJrYXB5ZW91bm1pZXVta29yZWFuIiwxMjY1Nywia2FweWVvdW5waGlldXBoa29yZWFuIiwxMjY3Niwia2FweWVvdW5waWV1cGtvcmVhbiIsMTI2NjQsImthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbiIsMTI2NjUsImthcm9yaWlzcXVhcmUiLDEzMDY5LCJrYXNoaWRhYXV0b2FyYWJpYyIsMTYwMCwia2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljIiwxNjAwLCJrYXNtYWxsa2F0YWthbmEiLDEyNTMzLCJrYXNxdWFyZSIsMTMxODgsImthc3JhYXJhYmljIiwxNjE2LCJrYXNyYXRhbmFyYWJpYyIsMTYxMywia2FzdHJva2VjeXJpbGxpYyIsMTE4Mywia2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aCIsNjUzOTIsImthdmVydGljYWxzdHJva2VjeXJpbGxpYyIsMTE4MSwia2JvcG9tb2ZvIiwxMjU1OCwia2NhbHNxdWFyZSIsMTMxOTMsImtjYXJvbiIsNDg5LCJrY2VkaWxsYSIsMzExLCJrY2lyY2xlIiw5NDM0LCJrY29tbWFhY2NlbnQiLDMxMSwia2RvdGJlbG93Iiw3NzMxLCJrZWhhcm1lbmlhbiIsMTQxMiwia2VoaXJhZ2FuYSIsMTIzNjksImtla2F0YWthbmEiLDEyNDY1LCJrZWthdGFrYW5haGFsZndpZHRoIiw2NTQwMSwia2VuYXJtZW5pYW4iLDEzOTEsImtlc21hbGxrYXRha2FuYSIsMTI1MzQsImtncmVlbmxhbmRpYyIsMzEyLCJraGFiZW5nYWxpIiwyNDU0LCJraGFjeXJpbGxpYyIsMTA5Mywia2hhZGV2YSIsMjMyNiwia2hhZ3VqYXJhdGkiLDI3MTAsImtoYWd1cm11a2hpIiwyNTgyLCJraGFoYXJhYmljIiwxNTgyLCJraGFoZmluYWxhcmFiaWMiLDY1MTkwLCJraGFoaW5pdGlhbGFyYWJpYyIsNjUxOTEsImtoYWhtZWRpYWxhcmFiaWMiLDY1MTkyLCJraGVpY29wdGljIiw5OTksImtoaGFkZXZhIiwyMzkzLCJraGhhZ3VybXVraGkiLDI2NDksImtoaWV1a2hhY2lyY2xla29yZWFuIiwxMjkyMCwia2hpZXVraGFwYXJlbmtvcmVhbiIsMTI4MjQsImtoaWV1a2hjaXJjbGVrb3JlYW4iLDEyOTA2LCJraGlldWtoa29yZWFuIiwxMjYxOSwia2hpZXVraHBhcmVua29yZWFuIiwxMjgxMCwia2hva2hhaXRoYWkiLDM1ODYsImtob2tob250aGFpIiwzNTg5LCJraG9raHVhdHRoYWkiLDM1ODcsImtob2tod2FpdGhhaSIsMzU4OCwia2hvbXV0dGhhaSIsMzY3NSwia2hvb2siLDQwOSwia2hvcmFraGFuZ3RoYWkiLDM1OTAsImtoenNxdWFyZSIsMTMyMDEsImtpaGlyYWdhbmEiLDEyMzY1LCJraWthdGFrYW5hIiwxMjQ2MSwia2lrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTksImtpcm9ndXJhbXVzcXVhcmUiLDEzMDc3LCJraXJvbWVldG9ydXNxdWFyZSIsMTMwNzgsImtpcm9zcXVhcmUiLDEzMDc2LCJraXllb2thY2lyY2xla29yZWFuIiwxMjkxMCwia2l5ZW9rYXBhcmVua29yZWFuIiwxMjgxNCwia2l5ZW9rY2lyY2xla29yZWFuIiwxMjg5Niwia2l5ZW9ra29yZWFuIiwxMjU5Mywia2l5ZW9rcGFyZW5rb3JlYW4iLDEyODAwLCJraXllb2tzaW9za29yZWFuIiwxMjU5NSwia2plY3lyaWxsaWMiLDExMTYsImtsaW5lYmVsb3ciLDc3MzMsImtsc3F1YXJlIiwxMzIwOCwia21jdWJlZHNxdWFyZSIsMTMyMjIsImttb25vc3BhY2UiLDY1MzU1LCJrbXNxdWFyZWRzcXVhcmUiLDEzMjE4LCJrb2hpcmFnYW5hIiwxMjM3MSwia29obXNxdWFyZSIsMTMyNDgsImtva2FpdGhhaSIsMzU4NSwia29rYXRha2FuYSIsMTI0NjcsImtva2F0YWthbmFoYWxmd2lkdGgiLDY1NDAyLCJrb29wb3NxdWFyZSIsMTMwODYsImtvcHBhY3lyaWxsaWMiLDExNTMsImtvcmVhbnN0YW5kYXJkc3ltYm9sIiwxMjkyNywia29yb25pc2NtYiIsODM1LCJrcGFyZW4iLDkzODIsImtwYXNxdWFyZSIsMTMyMjYsImtzaWN5cmlsbGljIiwxMTM1LCJrdHNxdWFyZSIsMTMyNjMsImt0dXJuZWQiLDY3MCwia3VoaXJhZ2FuYSIsMTIzNjcsImt1a2F0YWthbmEiLDEyNDYzLCJrdWthdGFrYW5haGFsZndpZHRoIiw2NTQwMCwia3ZzcXVhcmUiLDEzMjQwLCJrd3NxdWFyZSIsMTMyNDYsImwiLDEwOCwibGFiZW5nYWxpIiwyNDgyLCJsYWN1dGUiLDMxNCwibGFkZXZhIiwyMzU0LCJsYWd1amFyYXRpIiwyNzM4LCJsYWd1cm11a2hpIiwyNjEwLCJsYWtraGFuZ3lhb3RoYWkiLDM2NTMsImxhbWFsZWZmaW5hbGFyYWJpYyIsNjUyNzYsImxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MjcyLCJsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljIiw2NTI3MSwibGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUyNzQsImxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWMiLDY1MjczLCJsYW1hbGVmaXNvbGF0ZWRhcmFiaWMiLDY1Mjc1LCJsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTI3MCwibGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYyIsNjUyNjksImxhbWFyYWJpYyIsMTYwNCwibGFtYmRhIiw5NTUsImxhbWJkYXN0cm9rZSIsNDExLCJsYW1lZCIsMTUwMCwibGFtZWRkYWdlc2giLDY0MzE2LCJsYW1lZGRhZ2VzaGhlYnJldyIsNjQzMTYsImxhbWVkaGVicmV3IiwxNTAwLCJsYW1maW5hbGFyYWJpYyIsNjUyNDYsImxhbWhhaGluaXRpYWxhcmFiaWMiLDY0NzE0LCJsYW1pbml0aWFsYXJhYmljIiw2NTI0NywibGFtamVlbWluaXRpYWxhcmFiaWMiLDY0NzEzLCJsYW1raGFoaW5pdGlhbGFyYWJpYyIsNjQ3MTUsImxhbWxhbWhlaGlzb2xhdGVkYXJhYmljIiw2NTAxMCwibGFtbWVkaWFsYXJhYmljIiw2NTI0OCwibGFtbWVlbWhhaGluaXRpYWxhcmFiaWMiLDY0OTA0LCJsYW1tZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MTYsImxhcmdlY2lyY2xlIiw5NzExLCJsYmFyIiw0MTAsImxiZWx0Iiw2MjAsImxib3BvbW9mbyIsMTI1NTYsImxjYXJvbiIsMzE4LCJsY2VkaWxsYSIsMzE2LCJsY2lyY2xlIiw5NDM1LCJsY2lyY3VtZmxleGJlbG93Iiw3NzQxLCJsY29tbWFhY2NlbnQiLDMxNiwibGRvdCIsMzIwLCJsZG90YWNjZW50IiwzMjAsImxkb3RiZWxvdyIsNzczNSwibGRvdGJlbG93bWFjcm9uIiw3NzM3LCJsZWZ0YW5nbGVhYm92ZWNtYiIsNzk0LCJsZWZ0dGFja2JlbG93Y21iIiw3OTIsImxlc3MiLDYwLCJsZXNzZXF1YWwiLDg4MDQsImxlc3NlcXVhbG9yZ3JlYXRlciIsODkyMiwibGVzc21vbm9zcGFjZSIsNjUzMDgsImxlc3NvcmVxdWl2YWxlbnQiLDg4MTgsImxlc3NvcmdyZWF0ZXIiLDg4MjIsImxlc3NvdmVyZXF1YWwiLDg4MDYsImxlc3NzbWFsbCIsNjUxMjQsImxlemgiLDYyMiwibGZibG9jayIsOTYxMiwibGhvb2tyZXRyb2ZsZXgiLDYyMSwibGlyYSIsODM1NiwibGl3bmFybWVuaWFuIiwxMzg4LCJsaiIsNDU3LCJsamVjeXJpbGxpYyIsMTExMywibGwiLDYzMTY4LCJsbGFkZXZhIiwyMzU1LCJsbGFndWphcmF0aSIsMjczOSwibGxpbmViZWxvdyIsNzczOSwibGxsYWRldmEiLDIzNTYsImxsdm9jYWxpY2JlbmdhbGkiLDI1MjksImxsdm9jYWxpY2RldmEiLDI0MDEsImxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzEsImxsdm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDI0MDMsImxtaWRkbGV0aWxkZSIsNjE5LCJsbW9ub3NwYWNlIiw2NTM1NiwibG1zcXVhcmUiLDEzMjY0LCJsb2NodWxhdGhhaSIsMzYyOCwibG9naWNhbGFuZCIsODc0MywibG9naWNhbG5vdCIsMTcyLCJsb2dpY2Fsbm90cmV2ZXJzZWQiLDg5NzYsImxvZ2ljYWxvciIsODc0NCwibG9saW5ndGhhaSIsMzYyMSwibG9uZ3MiLDM4MywibG93bGluZWNlbnRlcmxpbmUiLDY1MTAyLCJsb3dsaW5lY21iIiw4MTgsImxvd2xpbmVkYXNoZWQiLDY1MTAxLCJsb3plbmdlIiw5Njc0LCJscGFyZW4iLDkzODMsImxzbGFzaCIsMzIyLCJsc3F1YXJlIiw4NDY3LCJsc3VwZXJpb3IiLDYzMjE0LCJsdHNoYWRlIiw5NjE3LCJsdXRoYWkiLDM2MjIsImx2b2NhbGljYmVuZ2FsaSIsMjQ0NCwibHZvY2FsaWNkZXZhIiwyMzE2LCJsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzAsImx2b2NhbGljdm93ZWxzaWduZGV2YSIsMjQwMiwibHhzcXVhcmUiLDEzMjY3LCJtIiwxMDksIm1hYmVuZ2FsaSIsMjQ3OCwibWFjcm9uIiwxNzUsIm1hY3JvbmJlbG93Y21iIiw4MTcsIm1hY3JvbmNtYiIsNzcyLCJtYWNyb25sb3dtb2QiLDcxNywibWFjcm9ubW9ub3NwYWNlIiw2NTUwNywibWFjdXRlIiw3NzQzLCJtYWRldmEiLDIzNTAsIm1hZ3VqYXJhdGkiLDI3MzQsIm1hZ3VybXVraGkiLDI2MDYsIm1haGFwYWtoaGVicmV3IiwxNDQ0LCJtYWhhcGFraGxlZnRoZWJyZXciLDE0NDQsIm1haGlyYWdhbmEiLDEyNDE0LCJtYWljaGF0dGF3YWxvd2xlZnR0aGFpIiw2MzYzNywibWFpY2hhdHRhd2Fsb3dyaWdodHRoYWkiLDYzNjM2LCJtYWljaGF0dGF3YXRoYWkiLDM2NTksIm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaSIsNjM2MzUsIm1haWVrbG93bGVmdHRoYWkiLDYzNjI4LCJtYWlla2xvd3JpZ2h0dGhhaSIsNjM2MjcsIm1haWVrdGhhaSIsMzY1NiwibWFpZWt1cHBlcmxlZnR0aGFpIiw2MzYyNiwibWFpaGFuYWthdGxlZnR0aGFpIiw2MzYyMCwibWFpaGFuYWthdHRoYWkiLDM2MzMsIm1haXRhaWtodWxlZnR0aGFpIiw2MzYyNSwibWFpdGFpa2h1dGhhaSIsMzY1NSwibWFpdGhvbG93bGVmdHRoYWkiLDYzNjMxLCJtYWl0aG9sb3dyaWdodHRoYWkiLDYzNjMwLCJtYWl0aG90aGFpIiwzNjU3LCJtYWl0aG91cHBlcmxlZnR0aGFpIiw2MzYyOSwibWFpdHJpbG93bGVmdHRoYWkiLDYzNjM0LCJtYWl0cmlsb3dyaWdodHRoYWkiLDYzNjMzLCJtYWl0cml0aGFpIiwzNjU4LCJtYWl0cml1cHBlcmxlZnR0aGFpIiw2MzYzMiwibWFpeWFtb2t0aGFpIiwzNjU0LCJtYWthdGFrYW5hIiwxMjUxMCwibWFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjMsIm1hbGUiLDk3OTQsIm1hbnN5b25zcXVhcmUiLDEzMTI3LCJtYXFhZmhlYnJldyIsMTQ3MCwibWFycyIsOTc5NCwibWFzb3JhY2lyY2xlaGVicmV3IiwxNDU1LCJtYXNxdWFyZSIsMTMxODcsIm1ib3BvbW9mbyIsMTI1NTEsIm1ic3F1YXJlIiwxMzI2OCwibWNpcmNsZSIsOTQzNiwibWN1YmVkc3F1YXJlIiwxMzIyMSwibWRvdGFjY2VudCIsNzc0NSwibWRvdGJlbG93Iiw3NzQ3LCJtZWVtYXJhYmljIiwxNjA1LCJtZWVtZmluYWxhcmFiaWMiLDY1MjUwLCJtZWVtaW5pdGlhbGFyYWJpYyIsNjUyNTEsIm1lZW1tZWRpYWxhcmFiaWMiLDY1MjUyLCJtZWVtbWVlbWluaXRpYWxhcmFiaWMiLDY0NzIxLCJtZWVtbWVlbWlzb2xhdGVkYXJhYmljIiw2NDU4NCwibWVldG9ydXNxdWFyZSIsMTMxMzMsIm1laGlyYWdhbmEiLDEyNDE3LCJtZWl6aWVyYXNxdWFyZSIsMTMxODIsIm1la2F0YWthbmEiLDEyNTEzLCJtZWthdGFrYW5haGFsZndpZHRoIiw2NTQyNiwibWVtIiwxNTAyLCJtZW1kYWdlc2giLDY0MzE4LCJtZW1kYWdlc2hoZWJyZXciLDY0MzE4LCJtZW1oZWJyZXciLDE1MDIsIm1lbmFybWVuaWFuIiwxMzk2LCJtZXJraGFoZWJyZXciLDE0NDUsIm1lcmtoYWtlZnVsYWhlYnJldyIsMTQ0NiwibWVya2hha2VmdWxhbGVmdGhlYnJldyIsMTQ0NiwibWVya2hhbGVmdGhlYnJldyIsMTQ0NSwibWhvb2siLDYyNSwibWh6c3F1YXJlIiwxMzIwMiwibWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGgiLDY1MzgxLCJtaWRkb3QiLDE4MywibWlldW1hY2lyY2xla29yZWFuIiwxMjkxNCwibWlldW1hcGFyZW5rb3JlYW4iLDEyODE4LCJtaWV1bWNpcmNsZWtvcmVhbiIsMTI5MDAsIm1pZXVta29yZWFuIiwxMjYwOSwibWlldW1wYW5zaW9za29yZWFuIiwxMjY1NiwibWlldW1wYXJlbmtvcmVhbiIsMTI4MDQsIm1pZXVtcGlldXBrb3JlYW4iLDEyNjU0LCJtaWV1bXNpb3Nrb3JlYW4iLDEyNjU1LCJtaWhpcmFnYW5hIiwxMjQxNSwibWlrYXRha2FuYSIsMTI1MTEsIm1pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDI0LCJtaW51cyIsODcyMiwibWludXNiZWxvd2NtYiIsODAwLCJtaW51c2NpcmNsZSIsODg1NCwibWludXNtb2QiLDcyNywibWludXNwbHVzIiw4NzIzLCJtaW51dGUiLDgyNDIsIm1pcmliYWFydXNxdWFyZSIsMTMxMzAsIm1pcmlzcXVhcmUiLDEzMTI5LCJtbG9uZ2xlZ3R1cm5lZCIsNjI0LCJtbHNxdWFyZSIsMTMyMDYsIm1tY3ViZWRzcXVhcmUiLDEzMjE5LCJtbW9ub3NwYWNlIiw2NTM1NywibW1zcXVhcmVkc3F1YXJlIiwxMzIxNSwibW9oaXJhZ2FuYSIsMTI0MTgsIm1vaG1zcXVhcmUiLDEzMjQ5LCJtb2thdGFrYW5hIiwxMjUxNCwibW9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjcsIm1vbHNxdWFyZSIsMTMyNzAsIm1vbWF0aGFpIiwzNjE3LCJtb3ZlcnNzcXVhcmUiLDEzMjIzLCJtb3ZlcnNzcXVhcmVkc3F1YXJlIiwxMzIyNCwibXBhcmVuIiw5Mzg0LCJtcGFzcXVhcmUiLDEzMjI3LCJtc3NxdWFyZSIsMTMyMzUsIm1zdXBlcmlvciIsNjMyMTUsIm10dXJuZWQiLDYyMywibXUiLDE4MSwibXUxIiwxODEsIm11YXNxdWFyZSIsMTMxODYsIm11Y2hncmVhdGVyIiw4ODExLCJtdWNobGVzcyIsODgxMCwibXVmc3F1YXJlIiwxMzE5NiwibXVncmVlayIsOTU2LCJtdWdzcXVhcmUiLDEzMTk3LCJtdWhpcmFnYW5hIiwxMjQxNiwibXVrYXRha2FuYSIsMTI1MTIsIm11a2F0YWthbmFoYWxmd2lkdGgiLDY1NDI1LCJtdWxzcXVhcmUiLDEzMjA1LCJtdWx0aXBseSIsMjE1LCJtdW1zcXVhcmUiLDEzMjExLCJtdW5haGhlYnJldyIsMTQ0MywibXVuYWhsZWZ0aGVicmV3IiwxNDQzLCJtdXNpY2Fsbm90ZSIsOTgzNCwibXVzaWNhbG5vdGVkYmwiLDk4MzUsIm11c2ljZmxhdHNpZ24iLDk4MzcsIm11c2ljc2hhcnBzaWduIiw5ODM5LCJtdXNzcXVhcmUiLDEzMjM0LCJtdXZzcXVhcmUiLDEzMjM4LCJtdXdzcXVhcmUiLDEzMjQ0LCJtdm1lZ2FzcXVhcmUiLDEzMjQxLCJtdnNxdWFyZSIsMTMyMzksIm13bWVnYXNxdWFyZSIsMTMyNDcsIm13c3F1YXJlIiwxMzI0NSwibiIsMTEwLCJuYWJlbmdhbGkiLDI0NzIsIm5hYmxhIiw4NzExLCJuYWN1dGUiLDMyNCwibmFkZXZhIiwyMzQ0LCJuYWd1amFyYXRpIiwyNzI4LCJuYWd1cm11a2hpIiwyNjAwLCJuYWhpcmFnYW5hIiwxMjM5NCwibmFrYXRha2FuYSIsMTI0OTAsIm5ha2F0YWthbmFoYWxmd2lkdGgiLDY1NDEzLCJuYXBvc3Ryb3BoZSIsMzI5LCJuYXNxdWFyZSIsMTMxODUsIm5ib3BvbW9mbyIsMTI1NTUsIm5ic3BhY2UiLDE2MCwibmNhcm9uIiwzMjgsIm5jZWRpbGxhIiwzMjYsIm5jaXJjbGUiLDk0MzcsIm5jaXJjdW1mbGV4YmVsb3ciLDc3NTUsIm5jb21tYWFjY2VudCIsMzI2LCJuZG90YWNjZW50Iiw3NzQ5LCJuZG90YmVsb3ciLDc3NTEsIm5laGlyYWdhbmEiLDEyMzk3LCJuZWthdGFrYW5hIiwxMjQ5MywibmVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTYsIm5ld3NoZXFlbHNpZ24iLDgzNjIsIm5mc3F1YXJlIiwxMzE5NSwibmdhYmVuZ2FsaSIsMjQ1NywibmdhZGV2YSIsMjMyOSwibmdhZ3VqYXJhdGkiLDI3MTMsIm5nYWd1cm11a2hpIiwyNTg1LCJuZ29uZ3V0aGFpIiwzNTkxLCJuaGlyYWdhbmEiLDEyNDM1LCJuaG9va2xlZnQiLDYyNiwibmhvb2tyZXRyb2ZsZXgiLDYyNywibmlldW5hY2lyY2xla29yZWFuIiwxMjkxMSwibmlldW5hcGFyZW5rb3JlYW4iLDEyODE1LCJuaWV1bmNpZXVja29yZWFuIiwxMjU5NywibmlldW5jaXJjbGVrb3JlYW4iLDEyODk3LCJuaWV1bmhpZXVoa29yZWFuIiwxMjU5OCwibmlldW5rb3JlYW4iLDEyNTk2LCJuaWV1bnBhbnNpb3Nrb3JlYW4iLDEyNjQ4LCJuaWV1bnBhcmVua29yZWFuIiwxMjgwMSwibmlldW5zaW9za29yZWFuIiwxMjY0NywibmlldW50aWtldXRrb3JlYW4iLDEyNjQ2LCJuaWhpcmFnYW5hIiwxMjM5NSwibmlrYXRha2FuYSIsMTI0OTEsIm5pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE0LCJuaWtoYWhpdGxlZnR0aGFpIiw2MzY0MSwibmlraGFoaXR0aGFpIiwzNjYxLCJuaW5lIiw1NywibmluZWFyYWJpYyIsMTY0MSwibmluZWJlbmdhbGkiLDI1NDMsIm5pbmVjaXJjbGUiLDkzMjAsIm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEzMCwibmluZWRldmEiLDI0MTUsIm5pbmVndWphcmF0aSIsMjc5OSwibmluZWd1cm11a2hpIiwyNjcxLCJuaW5laGFja2FyYWJpYyIsMTY0MSwibmluZWhhbmd6aG91IiwxMjMyOSwibmluZWlkZW9ncmFwaGljcGFyZW4iLDEyODQwLCJuaW5laW5mZXJpb3IiLDgzMjksIm5pbmVtb25vc3BhY2UiLDY1MzA1LCJuaW5lb2xkc3R5bGUiLDYzMjg5LCJuaW5lcGFyZW4iLDkzNDAsIm5pbmVwZXJpb2QiLDkzNjAsIm5pbmVwZXJzaWFuIiwxNzg1LCJuaW5lcm9tYW4iLDg1NjgsIm5pbmVzdXBlcmlvciIsODMxMywibmluZXRlZW5jaXJjbGUiLDkzMzAsIm5pbmV0ZWVucGFyZW4iLDkzNTAsIm5pbmV0ZWVucGVyaW9kIiw5MzcwLCJuaW5ldGhhaSIsMzY3MywibmoiLDQ2MCwibmplY3lyaWxsaWMiLDExMTQsIm5rYXRha2FuYSIsMTI1MzEsIm5rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzcsIm5sZWdyaWdodGxvbmciLDQxNCwibmxpbmViZWxvdyIsNzc1Mywibm1vbm9zcGFjZSIsNjUzNTgsIm5tc3F1YXJlIiwxMzIxMCwibm5hYmVuZ2FsaSIsMjQ2Nywibm5hZGV2YSIsMjMzOSwibm5hZ3VqYXJhdGkiLDI3MjMsIm5uYWd1cm11a2hpIiwyNTk1LCJubm5hZGV2YSIsMjM0NSwibm9oaXJhZ2FuYSIsMTIzOTgsIm5va2F0YWthbmEiLDEyNDk0LCJub2thdGFrYW5haGFsZndpZHRoIiw2NTQxNywibm9uYnJlYWtpbmdzcGFjZSIsMTYwLCJub25lbnRoYWkiLDM2MDMsIm5vbnV0aGFpIiwzNjA5LCJub29uYXJhYmljIiwxNjA2LCJub29uZmluYWxhcmFiaWMiLDY1MjU0LCJub29uZ2h1bm5hYXJhYmljIiwxNzIyLCJub29uZ2h1bm5hZmluYWxhcmFiaWMiLDY0NDE1LCJub29uaW5pdGlhbGFyYWJpYyIsNjUyNTUsIm5vb25qZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MjIsIm5vb25qZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTg3LCJub29ubWVkaWFsYXJhYmljIiw2NTI1Niwibm9vbm1lZW1pbml0aWFsYXJhYmljIiw2NDcyNSwibm9vbm1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1OTAsIm5vb25ub29uZmluYWxhcmFiaWMiLDY0NjUzLCJub3Rjb250YWlucyIsODcxNiwibm90ZWxlbWVudCIsODcxMywibm90ZWxlbWVudG9mIiw4NzEzLCJub3RlcXVhbCIsODgwMCwibm90Z3JlYXRlciIsODgxNSwibm90Z3JlYXRlcm5vcmVxdWFsIiw4ODE3LCJub3RncmVhdGVybm9ybGVzcyIsODgyNSwibm90aWRlbnRpY2FsIiw4ODAyLCJub3RsZXNzIiw4ODE0LCJub3RsZXNzbm9yZXF1YWwiLDg4MTYsIm5vdHBhcmFsbGVsIiw4NzQyLCJub3RwcmVjZWRlcyIsODgzMiwibm90c3Vic2V0Iiw4ODM2LCJub3RzdWNjZWVkcyIsODgzMywibm90c3VwZXJzZXQiLDg4MzcsIm5vd2FybWVuaWFuIiwxMzk4LCJucGFyZW4iLDkzODUsIm5zc3F1YXJlIiwxMzIzMywibnN1cGVyaW9yIiw4MzE5LCJudGlsZGUiLDI0MSwibnUiLDk1NywibnVoaXJhZ2FuYSIsMTIzOTYsIm51a2F0YWthbmEiLDEyNDkyLCJudWthdGFrYW5haGFsZndpZHRoIiw2NTQxNSwibnVrdGFiZW5nYWxpIiwyNDkyLCJudWt0YWRldmEiLDIzNjQsIm51a3RhZ3VqYXJhdGkiLDI3NDgsIm51a3RhZ3VybXVraGkiLDI2MjAsIm51bWJlcnNpZ24iLDM1LCJudW1iZXJzaWdubW9ub3NwYWNlIiw2NTI4MywibnVtYmVyc2lnbnNtYWxsIiw2NTExOSwibnVtZXJhbHNpZ25ncmVlayIsODg0LCJudW1lcmFsc2lnbmxvd2VyZ3JlZWsiLDg4NSwibnVtZXJvIiw4NDcwLCJudW4iLDE1MDQsIm51bmRhZ2VzaCIsNjQzMjAsIm51bmRhZ2VzaGhlYnJldyIsNjQzMjAsIm51bmhlYnJldyIsMTUwNCwibnZzcXVhcmUiLDEzMjM3LCJud3NxdWFyZSIsMTMyNDMsIm55YWJlbmdhbGkiLDI0NjIsIm55YWRldmEiLDIzMzQsIm55YWd1amFyYXRpIiwyNzE4LCJueWFndXJtdWtoaSIsMjU5MCwibyIsMTExLCJvYWN1dGUiLDI0Mywib2FuZ3RoYWkiLDM2MjksIm9iYXJyZWQiLDYyOSwib2JhcnJlZGN5cmlsbGljIiwxMjU3LCJvYmFycmVkZGllcmVzaXNjeXJpbGxpYyIsMTI1OSwib2JlbmdhbGkiLDI0NTEsIm9ib3BvbW9mbyIsMTI1NzEsIm9icmV2ZSIsMzM1LCJvY2FuZHJhZGV2YSIsMjMyMSwib2NhbmRyYWd1amFyYXRpIiwyNzA1LCJvY2FuZHJhdm93ZWxzaWduZGV2YSIsMjM3Nywib2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzYxLCJvY2Fyb24iLDQ2Niwib2NpcmNsZSIsOTQzOCwib2NpcmN1bWZsZXgiLDI0NCwib2NpcmN1bWZsZXhhY3V0ZSIsNzg4OSwib2NpcmN1bWZsZXhkb3RiZWxvdyIsNzg5Nywib2NpcmN1bWZsZXhncmF2ZSIsNzg5MSwib2NpcmN1bWZsZXhob29rYWJvdmUiLDc4OTMsIm9jaXJjdW1mbGV4dGlsZGUiLDc4OTUsIm9jeXJpbGxpYyIsMTA4Niwib2RibGFjdXRlIiwzMzcsIm9kYmxncmF2ZSIsNTI1LCJvZGV2YSIsMjMyMywib2RpZXJlc2lzIiwyNDYsIm9kaWVyZXNpc2N5cmlsbGljIiwxMjU1LCJvZG90YmVsb3ciLDc4ODUsIm9lIiwzMzksIm9la29yZWFuIiwxMjYzNCwib2dvbmVrIiw3MzEsIm9nb25la2NtYiIsODA4LCJvZ3JhdmUiLDI0Miwib2d1amFyYXRpIiwyNzA3LCJvaGFybWVuaWFuIiwxNDEzLCJvaGlyYWdhbmEiLDEyMzYyLCJvaG9va2Fib3ZlIiw3ODg3LCJvaG9ybiIsNDE3LCJvaG9ybmFjdXRlIiw3ODk5LCJvaG9ybmRvdGJlbG93Iiw3OTA3LCJvaG9ybmdyYXZlIiw3OTAxLCJvaG9ybmhvb2thYm92ZSIsNzkwMywib2hvcm50aWxkZSIsNzkwNSwib2h1bmdhcnVtbGF1dCIsMzM3LCJvaSIsNDE5LCJvaW52ZXJ0ZWRicmV2ZSIsNTI3LCJva2F0YWthbmEiLDEyNDU4LCJva2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk3LCJva29yZWFuIiwxMjYzMSwib2xlaGVicmV3IiwxNDUxLCJvbWFjcm9uIiwzMzMsIm9tYWNyb25hY3V0ZSIsNzc2Mywib21hY3JvbmdyYXZlIiw3NzYxLCJvbWRldmEiLDIzODQsIm9tZWdhIiw5NjksIm9tZWdhMSIsOTgyLCJvbWVnYWN5cmlsbGljIiwxMTIxLCJvbWVnYWxhdGluY2xvc2VkIiw2MzEsIm9tZWdhcm91bmRjeXJpbGxpYyIsMTE0Nywib21lZ2F0aXRsb2N5cmlsbGljIiwxMTQ5LCJvbWVnYXRvbm9zIiw5NzQsIm9tZ3VqYXJhdGkiLDI3NjgsIm9taWNyb24iLDk1OSwib21pY3JvbnRvbm9zIiw5NzIsIm9tb25vc3BhY2UiLDY1MzU5LCJvbmUiLDQ5LCJvbmVhcmFiaWMiLDE2MzMsIm9uZWJlbmdhbGkiLDI1MzUsIm9uZWNpcmNsZSIsOTMxMiwib25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZiIsMTAxMjIsIm9uZWRldmEiLDI0MDcsIm9uZWRvdGVubGVhZGVyIiw4MjI4LCJvbmVlaWdodGgiLDg1MzksIm9uZWZpdHRlZCIsNjMxOTYsIm9uZWd1amFyYXRpIiwyNzkxLCJvbmVndXJtdWtoaSIsMjY2Mywib25laGFja2FyYWJpYyIsMTYzMywib25laGFsZiIsMTg5LCJvbmVoYW5nemhvdSIsMTIzMjEsIm9uZWlkZW9ncmFwaGljcGFyZW4iLDEyODMyLCJvbmVpbmZlcmlvciIsODMyMSwib25lbW9ub3NwYWNlIiw2NTI5Nywib25lbnVtZXJhdG9yYmVuZ2FsaSIsMjU0OCwib25lb2xkc3R5bGUiLDYzMjgxLCJvbmVwYXJlbiIsOTMzMiwib25lcGVyaW9kIiw5MzUyLCJvbmVwZXJzaWFuIiwxNzc3LCJvbmVxdWFydGVyIiwxODgsIm9uZXJvbWFuIiw4NTYwLCJvbmVzdXBlcmlvciIsMTg1LCJvbmV0aGFpIiwzNjY1LCJvbmV0aGlyZCIsODUzMSwib29nb25layIsNDkxLCJvb2dvbmVrbWFjcm9uIiw0OTMsIm9vZ3VybXVraGkiLDI1NzksIm9vbWF0cmFndXJtdWtoaSIsMjYzNSwib29wZW4iLDU5Niwib3BhcmVuIiw5Mzg2LCJvcGVuYnVsbGV0Iiw5NzAyLCJvcHRpb24iLDg5OTcsIm9yZGZlbWluaW5lIiwxNzAsIm9yZG1hc2N1bGluZSIsMTg2LCJvcnRob2dvbmFsIiw4NzM1LCJvc2hvcnRkZXZhIiwyMzIyLCJvc2hvcnR2b3dlbHNpZ25kZXZhIiwyMzc4LCJvc2xhc2giLDI0OCwib3NsYXNoYWN1dGUiLDUxMSwib3NtYWxsaGlyYWdhbmEiLDEyMzYxLCJvc21hbGxrYXRha2FuYSIsMTI0NTcsIm9zbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4Nywib3N0cm9rZWFjdXRlIiw1MTEsIm9zdXBlcmlvciIsNjMyMTYsIm90Y3lyaWxsaWMiLDExNTEsIm90aWxkZSIsMjQ1LCJvdGlsZGVhY3V0ZSIsNzc1Nywib3RpbGRlZGllcmVzaXMiLDc3NTksIm91Ym9wb21vZm8iLDEyNTc3LCJvdmVybGluZSIsODI1NCwib3ZlcmxpbmVjZW50ZXJsaW5lIiw2NTA5OCwib3ZlcmxpbmVjbWIiLDc3Mywib3ZlcmxpbmVkYXNoZWQiLDY1MDk3LCJvdmVybGluZWRibHdhdnkiLDY1MTAwLCJvdmVybGluZXdhdnkiLDY1MDk5LCJvdmVyc2NvcmUiLDE3NSwib3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MDcsIm92b3dlbHNpZ25kZXZhIiwyMzc5LCJvdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjMsInAiLDExMiwicGFhbXBzc3F1YXJlIiwxMzE4NCwicGFhc2VudG9zcXVhcmUiLDEzMDk5LCJwYWJlbmdhbGkiLDI0NzQsInBhY3V0ZSIsNzc2NSwicGFkZXZhIiwyMzQ2LCJwYWdlZG93biIsODY3MSwicGFnZXVwIiw4NjcwLCJwYWd1amFyYXRpIiwyNzMwLCJwYWd1cm11a2hpIiwyNjAyLCJwYWhpcmFnYW5hIiwxMjQwMSwicGFpeWFubm9pdGhhaSIsMzYzMSwicGFrYXRha2FuYSIsMTI0OTcsInBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWIiLDExNTYsInBhbG9jaGthY3lyaWxsaWMiLDEyMTYsInBhbnNpb3Nrb3JlYW4iLDEyNjcxLCJwYXJhZ3JhcGgiLDE4MiwicGFyYWxsZWwiLDg3NDEsInBhcmVubGVmdCIsNDAsInBhcmVubGVmdGFsdG9uZWFyYWJpYyIsNjQ4MzAsInBhcmVubGVmdGJ0Iiw2MzcyNSwicGFyZW5sZWZ0ZXgiLDYzNzI0LCJwYXJlbmxlZnRpbmZlcmlvciIsODMzMywicGFyZW5sZWZ0bW9ub3NwYWNlIiw2NTI4OCwicGFyZW5sZWZ0c21hbGwiLDY1MTEzLCJwYXJlbmxlZnRzdXBlcmlvciIsODMxNywicGFyZW5sZWZ0dHAiLDYzNzIzLCJwYXJlbmxlZnR2ZXJ0aWNhbCIsNjUwNzcsInBhcmVucmlnaHQiLDQxLCJwYXJlbnJpZ2h0YWx0b25lYXJhYmljIiw2NDgzMSwicGFyZW5yaWdodGJ0Iiw2MzczNiwicGFyZW5yaWdodGV4Iiw2MzczNSwicGFyZW5yaWdodGluZmVyaW9yIiw4MzM0LCJwYXJlbnJpZ2h0bW9ub3NwYWNlIiw2NTI4OSwicGFyZW5yaWdodHNtYWxsIiw2NTExNCwicGFyZW5yaWdodHN1cGVyaW9yIiw4MzE4LCJwYXJlbnJpZ2h0dHAiLDYzNzM0LCJwYXJlbnJpZ2h0dmVydGljYWwiLDY1MDc4LCJwYXJ0aWFsZGlmZiIsODcwNiwicGFzZXFoZWJyZXciLDE0NzIsInBhc2h0YWhlYnJldyIsMTQzMywicGFzcXVhcmUiLDEzMjI1LCJwYXRhaCIsMTQ2MywicGF0YWgxMSIsMTQ2MywicGF0YWgxZCIsMTQ2MywicGF0YWgyYSIsMTQ2MywicGF0YWhoZWJyZXciLDE0NjMsInBhdGFobmFycm93aGVicmV3IiwxNDYzLCJwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NjMsInBhdGFod2lkZWhlYnJldyIsMTQ2MywicGF6ZXJoZWJyZXciLDE0NDEsInBib3BvbW9mbyIsMTI1NTAsInBjaXJjbGUiLDk0MzksInBkb3RhY2NlbnQiLDc3NjcsInBlIiwxNTA4LCJwZWN5cmlsbGljIiwxMDg3LCJwZWRhZ2VzaCIsNjQzMjQsInBlZGFnZXNoaGVicmV3Iiw2NDMyNCwicGVlemlzcXVhcmUiLDEzMTE1LCJwZWZpbmFsZGFnZXNoaGVicmV3Iiw2NDMyMywicGVoYXJhYmljIiwxNjYyLCJwZWhhcm1lbmlhbiIsMTQwMiwicGVoZWJyZXciLDE1MDgsInBlaGZpbmFsYXJhYmljIiw2NDM0MywicGVoaW5pdGlhbGFyYWJpYyIsNjQzNDQsInBlaGlyYWdhbmEiLDEyNDEwLCJwZWhtZWRpYWxhcmFiaWMiLDY0MzQ1LCJwZWthdGFrYW5hIiwxMjUwNiwicGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTEsInBlcmFmZWhlYnJldyIsNjQzMzQsInBlcmNlbnQiLDM3LCJwZXJjZW50YXJhYmljIiwxNjQyLCJwZXJjZW50bW9ub3NwYWNlIiw2NTI4NSwicGVyY2VudHNtYWxsIiw2NTEzMCwicGVyaW9kIiw0NiwicGVyaW9kYXJtZW5pYW4iLDE0MTcsInBlcmlvZGNlbnRlcmVkIiwxODMsInBlcmlvZGhhbGZ3aWR0aCIsNjUzNzcsInBlcmlvZGluZmVyaW9yIiw2MzIwNywicGVyaW9kbW9ub3NwYWNlIiw2NTI5NCwicGVyaW9kc21hbGwiLDY1MTA2LCJwZXJpb2RzdXBlcmlvciIsNjMyMDgsInBlcmlzcG9tZW5pZ3JlZWtjbWIiLDgzNCwicGVycGVuZGljdWxhciIsODg2OSwicGVydGhvdXNhbmQiLDgyNDAsInBlc2V0YSIsODM1OSwicGZzcXVhcmUiLDEzMTk0LCJwaGFiZW5nYWxpIiwyNDc1LCJwaGFkZXZhIiwyMzQ3LCJwaGFndWphcmF0aSIsMjczMSwicGhhZ3VybXVraGkiLDI2MDMsInBoaSIsOTY2LCJwaGkxIiw5ODEsInBoaWV1cGhhY2lyY2xla29yZWFuIiwxMjkyMiwicGhpZXVwaGFwYXJlbmtvcmVhbiIsMTI4MjYsInBoaWV1cGhjaXJjbGVrb3JlYW4iLDEyOTA4LCJwaGlldXBoa29yZWFuIiwxMjYyMSwicGhpZXVwaHBhcmVua29yZWFuIiwxMjgxMiwicGhpbGF0aW4iLDYzMiwicGhpbnRodXRoYWkiLDM2NDIsInBoaXN5bWJvbGdyZWVrIiw5ODEsInBob29rIiw0MjEsInBob3BoYW50aGFpIiwzNjE0LCJwaG9waHVuZ3RoYWkiLDM2MTIsInBob3NhbXBoYW90aGFpIiwzNjE2LCJwaSIsOTYwLCJwaWV1cGFjaXJjbGVrb3JlYW4iLDEyOTE1LCJwaWV1cGFwYXJlbmtvcmVhbiIsMTI4MTksInBpZXVwY2lldWNrb3JlYW4iLDEyNjYyLCJwaWV1cGNpcmNsZWtvcmVhbiIsMTI5MDEsInBpZXVwa2l5ZW9ra29yZWFuIiwxMjY1OCwicGlldXBrb3JlYW4iLDEyNjEwLCJwaWV1cHBhcmVua29yZWFuIiwxMjgwNSwicGlldXBzaW9za2l5ZW9ra29yZWFuIiwxMjY2MCwicGlldXBzaW9za29yZWFuIiwxMjYxMiwicGlldXBzaW9zdGlrZXV0a29yZWFuIiwxMjY2MSwicGlldXB0aGlldXRoa29yZWFuIiwxMjY2MywicGlldXB0aWtldXRrb3JlYW4iLDEyNjU5LCJwaWhpcmFnYW5hIiwxMjQwNCwicGlrYXRha2FuYSIsMTI1MDAsInBpc3ltYm9sZ3JlZWsiLDk4MiwicGl3cmFybWVuaWFuIiwxNDExLCJwbHVzIiw0MywicGx1c2JlbG93Y21iIiw3OTksInBsdXNjaXJjbGUiLDg4NTMsInBsdXNtaW51cyIsMTc3LCJwbHVzbW9kIiw3MjYsInBsdXNtb25vc3BhY2UiLDY1MjkxLCJwbHVzc21hbGwiLDY1MTIyLCJwbHVzc3VwZXJpb3IiLDgzMTQsInBtb25vc3BhY2UiLDY1MzYwLCJwbXNxdWFyZSIsMTMyNzIsInBvaGlyYWdhbmEiLDEyNDEzLCJwb2ludGluZ2luZGV4ZG93bndoaXRlIiw5NzU5LCJwb2ludGluZ2luZGV4bGVmdHdoaXRlIiw5NzU2LCJwb2ludGluZ2luZGV4cmlnaHR3aGl0ZSIsOTc1OCwicG9pbnRpbmdpbmRleHVwd2hpdGUiLDk3NTcsInBva2F0YWthbmEiLDEyNTA5LCJwb3BsYXRoYWkiLDM2MTEsInBvc3RhbG1hcmsiLDEyMzA2LCJwb3N0YWxtYXJrZmFjZSIsMTIzMjAsInBwYXJlbiIsOTM4NywicHJlY2VkZXMiLDg4MjYsInByZXNjcmlwdGlvbiIsODQ3OCwicHJpbWVtb2QiLDY5NywicHJpbWVyZXZlcnNlZCIsODI0NSwicHJvZHVjdCIsODcxOSwicHJvamVjdGl2ZSIsODk2NSwicHJvbG9uZ2Vka2FuYSIsMTI1NDAsInByb3BlbGxvciIsODk4NCwicHJvcGVyc3Vic2V0Iiw4ODM0LCJwcm9wZXJzdXBlcnNldCIsODgzNSwicHJvcG9ydGlvbiIsODc1OSwicHJvcG9ydGlvbmFsIiw4NzMzLCJwc2kiLDk2OCwicHNpY3lyaWxsaWMiLDExMzcsInBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1OCwicHNzcXVhcmUiLDEzMjMyLCJwdWhpcmFnYW5hIiwxMjQwNywicHVrYXRha2FuYSIsMTI1MDMsInB2c3F1YXJlIiwxMzIzNiwicHdzcXVhcmUiLDEzMjQyLCJxIiwxMTMsInFhZGV2YSIsMjM5MiwicWFkbWFoZWJyZXciLDE0NDgsInFhZmFyYWJpYyIsMTYwMiwicWFmZmluYWxhcmFiaWMiLDY1MjM4LCJxYWZpbml0aWFsYXJhYmljIiw2NTIzOSwicWFmbWVkaWFsYXJhYmljIiw2NTI0MCwicWFtYXRzIiwxNDY0LCJxYW1hdHMxMCIsMTQ2NCwicWFtYXRzMWEiLDE0NjQsInFhbWF0czFjIiwxNDY0LCJxYW1hdHMyNyIsMTQ2NCwicWFtYXRzMjkiLDE0NjQsInFhbWF0czMzIiwxNDY0LCJxYW1hdHNkZSIsMTQ2NCwicWFtYXRzaGVicmV3IiwxNDY0LCJxYW1hdHNuYXJyb3doZWJyZXciLDE0NjQsInFhbWF0c3FhdGFuaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbm5hcnJvd2hlYnJldyIsMTQ2NCwicWFtYXRzcWF0YW5xdWFydGVyaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbndpZGVoZWJyZXciLDE0NjQsInFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NjQsInFhbWF0c3dpZGVoZWJyZXciLDE0NjQsInFhcm5leXBhcmFoZWJyZXciLDE0MzksInFib3BvbW9mbyIsMTI1NjEsInFjaXJjbGUiLDk0NDAsInFob29rIiw2NzIsInFtb25vc3BhY2UiLDY1MzYxLCJxb2YiLDE1MTEsInFvZmRhZ2VzaCIsNjQzMjcsInFvZmRhZ2VzaGhlYnJldyIsNjQzMjcsInFvZmhlYnJldyIsMTUxMSwicXBhcmVuIiw5Mzg4LCJxdWFydGVybm90ZSIsOTgzMywicXVidXRzIiwxNDY3LCJxdWJ1dHMxOCIsMTQ2NywicXVidXRzMjUiLDE0NjcsInF1YnV0czMxIiwxNDY3LCJxdWJ1dHNoZWJyZXciLDE0NjcsInF1YnV0c25hcnJvd2hlYnJldyIsMTQ2NywicXVidXRzcXVhcnRlcmhlYnJldyIsMTQ2NywicXVidXRzd2lkZWhlYnJldyIsMTQ2NywicXVlc3Rpb24iLDYzLCJxdWVzdGlvbmFyYWJpYyIsMTU2NywicXVlc3Rpb25hcm1lbmlhbiIsMTM3NCwicXVlc3Rpb25kb3duIiwxOTEsInF1ZXN0aW9uZG93bnNtYWxsIiw2MzQyMywicXVlc3Rpb25ncmVlayIsODk0LCJxdWVzdGlvbm1vbm9zcGFjZSIsNjUzMTEsInF1ZXN0aW9uc21hbGwiLDYzMjk1LCJxdW90ZWRibCIsMzQsInF1b3RlZGJsYmFzZSIsODIyMiwicXVvdGVkYmxsZWZ0Iiw4MjIwLCJxdW90ZWRibG1vbm9zcGFjZSIsNjUyODIsInF1b3RlZGJscHJpbWUiLDEyMzE4LCJxdW90ZWRibHByaW1lcmV2ZXJzZWQiLDEyMzE3LCJxdW90ZWRibHJpZ2h0Iiw4MjIxLCJxdW90ZWxlZnQiLDgyMTYsInF1b3RlbGVmdHJldmVyc2VkIiw4MjE5LCJxdW90ZXJldmVyc2VkIiw4MjE5LCJxdW90ZXJpZ2h0Iiw4MjE3LCJxdW90ZXJpZ2h0biIsMzI5LCJxdW90ZXNpbmdsYmFzZSIsODIxOCwicXVvdGVzaW5nbGUiLDM5LCJxdW90ZXNpbmdsZW1vbm9zcGFjZSIsNjUyODcsInIiLDExNCwicmFhcm1lbmlhbiIsMTQwNCwicmFiZW5nYWxpIiwyNDgwLCJyYWN1dGUiLDM0MSwicmFkZXZhIiwyMzUyLCJyYWRpY2FsIiw4NzMwLCJyYWRpY2FsZXgiLDYzNzE3LCJyYWRvdmVyc3NxdWFyZSIsMTMyMzAsInJhZG92ZXJzc3F1YXJlZHNxdWFyZSIsMTMyMzEsInJhZHNxdWFyZSIsMTMyMjksInJhZmUiLDE0NzEsInJhZmVoZWJyZXciLDE0NzEsInJhZ3VqYXJhdGkiLDI3MzYsInJhZ3VybXVraGkiLDI2MDgsInJhaGlyYWdhbmEiLDEyNDI1LCJyYWthdGFrYW5hIiwxMjUyMSwicmFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzEsInJhbG93ZXJkaWFnb25hbGJlbmdhbGkiLDI1NDUsInJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpIiwyNTQ0LCJyYW1zaG9ybiIsNjEyLCJyYXRpbyIsODc1OCwicmJvcG9tb2ZvIiwxMjU2NiwicmNhcm9uIiwzNDUsInJjZWRpbGxhIiwzNDMsInJjaXJjbGUiLDk0NDEsInJjb21tYWFjY2VudCIsMzQzLCJyZGJsZ3JhdmUiLDUyOSwicmRvdGFjY2VudCIsNzc2OSwicmRvdGJlbG93Iiw3NzcxLCJyZG90YmVsb3dtYWNyb24iLDc3NzMsInJlZmVyZW5jZW1hcmsiLDgyNTEsInJlZmxleHN1YnNldCIsODgzOCwicmVmbGV4c3VwZXJzZXQiLDg4MzksInJlZ2lzdGVyZWQiLDE3NCwicmVnaXN0ZXJzYW5zIiw2MzcyMCwicmVnaXN0ZXJzZXJpZiIsNjMxOTQsInJlaGFyYWJpYyIsMTU4NSwicmVoYXJtZW5pYW4iLDE0MDgsInJlaGZpbmFsYXJhYmljIiw2NTE5OCwicmVoaXJhZ2FuYSIsMTI0MjgsInJla2F0YWthbmEiLDEyNTI0LCJyZWthdGFrYW5haGFsZndpZHRoIiw2NTQzNCwicmVzaCIsMTUxMiwicmVzaGRhZ2VzaGhlYnJldyIsNjQzMjgsInJlc2hoZWJyZXciLDE1MTIsInJldmVyc2VkdGlsZGUiLDg3NjUsInJldmlhaGVicmV3IiwxNDMxLCJyZXZpYW11Z3Jhc2hoZWJyZXciLDE0MzEsInJldmxvZ2ljYWxub3QiLDg5NzYsInJmaXNoaG9vayIsNjM4LCJyZmlzaGhvb2tyZXZlcnNlZCIsNjM5LCJyaGFiZW5nYWxpIiwyNTI1LCJyaGFkZXZhIiwyMzk3LCJyaG8iLDk2MSwicmhvb2siLDYzNywicmhvb2t0dXJuZWQiLDYzNSwicmhvb2t0dXJuZWRzdXBlcmlvciIsNjkzLCJyaG9zeW1ib2xncmVlayIsMTAwOSwicmhvdGljaG9va21vZCIsNzM0LCJyaWV1bGFjaXJjbGVrb3JlYW4iLDEyOTEzLCJyaWV1bGFwYXJlbmtvcmVhbiIsMTI4MTcsInJpZXVsY2lyY2xla29yZWFuIiwxMjg5OSwicmlldWxoaWV1aGtvcmVhbiIsMTI2MDgsInJpZXVsa2l5ZW9ra29yZWFuIiwxMjYwMiwicmlldWxraXllb2tzaW9za29yZWFuIiwxMjY0OSwicmlldWxrb3JlYW4iLDEyNjAxLCJyaWV1bG1pZXVta29yZWFuIiwxMjYwMywicmlldWxwYW5zaW9za29yZWFuIiwxMjY1MiwicmlldWxwYXJlbmtvcmVhbiIsMTI4MDMsInJpZXVscGhpZXVwaGtvcmVhbiIsMTI2MDcsInJpZXVscGlldXBrb3JlYW4iLDEyNjA0LCJyaWV1bHBpZXVwc2lvc2tvcmVhbiIsMTI2NTEsInJpZXVsc2lvc2tvcmVhbiIsMTI2MDUsInJpZXVsdGhpZXV0aGtvcmVhbiIsMTI2MDYsInJpZXVsdGlrZXV0a29yZWFuIiwxMjY1MCwicmlldWx5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NTMsInJpZ2h0YW5nbGUiLDg3MzUsInJpZ2h0dGFja2JlbG93Y21iIiw3OTMsInJpZ2h0dHJpYW5nbGUiLDg4OTUsInJpaGlyYWdhbmEiLDEyNDI2LCJyaWthdGFrYW5hIiwxMjUyMiwicmlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzIsInJpbmciLDczMCwicmluZ2JlbG93Y21iIiw4MDUsInJpbmdjbWIiLDc3OCwicmluZ2hhbGZsZWZ0Iiw3MDMsInJpbmdoYWxmbGVmdGFybWVuaWFuIiwxMzY5LCJyaW5naGFsZmxlZnRiZWxvd2NtYiIsNzk2LCJyaW5naGFsZmxlZnRjZW50ZXJlZCIsNzIzLCJyaW5naGFsZnJpZ2h0Iiw3MDIsInJpbmdoYWxmcmlnaHRiZWxvd2NtYiIsODI1LCJyaW5naGFsZnJpZ2h0Y2VudGVyZWQiLDcyMiwicmludmVydGVkYnJldmUiLDUzMSwicml0dG9ydXNxdWFyZSIsMTMxMzcsInJsaW5lYmVsb3ciLDc3NzUsInJsb25nbGVnIiw2MzYsInJsb25nbGVndHVybmVkIiw2MzQsInJtb25vc3BhY2UiLDY1MzYyLCJyb2hpcmFnYW5hIiwxMjQyOSwicm9rYXRha2FuYSIsMTI1MjUsInJva2F0YWthbmFoYWxmd2lkdGgiLDY1NDM1LCJyb3J1YXRoYWkiLDM2MTksInJwYXJlbiIsOTM4OSwicnJhYmVuZ2FsaSIsMjUyNCwicnJhZGV2YSIsMjM1MywicnJhZ3VybXVraGkiLDI2NTIsInJyZWhhcmFiaWMiLDE2ODEsInJyZWhmaW5hbGFyYWJpYyIsNjQzOTcsInJydm9jYWxpY2JlbmdhbGkiLDI1MjgsInJydm9jYWxpY2RldmEiLDI0MDAsInJydm9jYWxpY2d1amFyYXRpIiwyNzg0LCJycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNTAwLCJycnZvY2FsaWN2b3dlbHNpZ25kZXZhIiwyMzcyLCJycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aSIsMjc1NiwicnN1cGVyaW9yIiw2MzIxNywicnRibG9jayIsOTYxNiwicnR1cm5lZCIsNjMzLCJydHVybmVkc3VwZXJpb3IiLDY5MiwicnVoaXJhZ2FuYSIsMTI0MjcsInJ1a2F0YWthbmEiLDEyNTIzLCJydWthdGFrYW5haGFsZndpZHRoIiw2NTQzMywicnVwZWVtYXJrYmVuZ2FsaSIsMjU0NiwicnVwZWVzaWduYmVuZ2FsaSIsMjU0NywicnVwaWFoIiw2MzE5NywicnV0aGFpIiwzNjIwLCJydm9jYWxpY2JlbmdhbGkiLDI0NDMsInJ2b2NhbGljZGV2YSIsMjMxNSwicnZvY2FsaWNndWphcmF0aSIsMjY5OSwicnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNDk5LCJydm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDIzNzEsInJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTUsInMiLDExNSwic2FiZW5nYWxpIiwyNDg4LCJzYWN1dGUiLDM0Nywic2FjdXRlZG90YWNjZW50Iiw3NzgxLCJzYWRhcmFiaWMiLDE1ODksInNhZGV2YSIsMjM2MCwic2FkZmluYWxhcmFiaWMiLDY1MjEwLCJzYWRpbml0aWFsYXJhYmljIiw2NTIxMSwic2FkbWVkaWFsYXJhYmljIiw2NTIxMiwic2FndWphcmF0aSIsMjc0NCwic2FndXJtdWtoaSIsMjYxNiwic2FoaXJhZ2FuYSIsMTIzNzMsInNha2F0YWthbmEiLDEyNDY5LCJzYWthdGFrYW5haGFsZndpZHRoIiw2NTQwMywic2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYyIsNjUwMTgsInNhbWVraCIsMTUwNSwic2FtZWtoZGFnZXNoIiw2NDMyMSwic2FtZWtoZGFnZXNoaGVicmV3Iiw2NDMyMSwic2FtZWtoaGVicmV3IiwxNTA1LCJzYXJhYWF0aGFpIiwzNjM0LCJzYXJhYWV0aGFpIiwzNjQ5LCJzYXJhYWltYWltYWxhaXRoYWkiLDM2NTIsInNhcmFhaW1haW11YW50aGFpIiwzNjUxLCJzYXJhYW10aGFpIiwzNjM1LCJzYXJhYXRoYWkiLDM2MzIsInNhcmFldGhhaSIsMzY0OCwic2FyYWlpbGVmdHRoYWkiLDYzNjIyLCJzYXJhaWl0aGFpIiwzNjM3LCJzYXJhaWxlZnR0aGFpIiw2MzYyMSwic2FyYWl0aGFpIiwzNjM2LCJzYXJhb3RoYWkiLDM2NTAsInNhcmF1ZWVsZWZ0dGhhaSIsNjM2MjQsInNhcmF1ZWV0aGFpIiwzNjM5LCJzYXJhdWVsZWZ0dGhhaSIsNjM2MjMsInNhcmF1ZXRoYWkiLDM2MzgsInNhcmF1dGhhaSIsMzY0MCwic2FyYXV1dGhhaSIsMzY0MSwic2JvcG9tb2ZvIiwxMjU2OSwic2Nhcm9uIiwzNTMsInNjYXJvbmRvdGFjY2VudCIsNzc4Mywic2NlZGlsbGEiLDM1MSwic2Nod2EiLDYwMSwic2Nod2FjeXJpbGxpYyIsMTI0MSwic2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQzLCJzY2h3YWhvb2siLDYwMiwic2NpcmNsZSIsOTQ0Miwic2NpcmN1bWZsZXgiLDM0OSwic2NvbW1hYWNjZW50Iiw1MzcsInNkb3RhY2NlbnQiLDc3NzcsInNkb3RiZWxvdyIsNzc3OSwic2RvdGJlbG93ZG90YWNjZW50Iiw3Nzg1LCJzZWFndWxsYmVsb3djbWIiLDgyOCwic2Vjb25kIiw4MjQzLCJzZWNvbmR0b25lY2hpbmVzZSIsNzE0LCJzZWN0aW9uIiwxNjcsInNlZW5hcmFiaWMiLDE1ODcsInNlZW5maW5hbGFyYWJpYyIsNjUyMDIsInNlZW5pbml0aWFsYXJhYmljIiw2NTIwMywic2Vlbm1lZGlhbGFyYWJpYyIsNjUyMDQsInNlZ29sIiwxNDYyLCJzZWdvbDEzIiwxNDYyLCJzZWdvbDFmIiwxNDYyLCJzZWdvbDJjIiwxNDYyLCJzZWdvbGhlYnJldyIsMTQ2Miwic2Vnb2xuYXJyb3doZWJyZXciLDE0NjIsInNlZ29scXVhcnRlcmhlYnJldyIsMTQ2Miwic2Vnb2x0YWhlYnJldyIsMTQyNiwic2Vnb2x3aWRlaGVicmV3IiwxNDYyLCJzZWhhcm1lbmlhbiIsMTQwNSwic2VoaXJhZ2FuYSIsMTIzNzksInNla2F0YWthbmEiLDEyNDc1LCJzZWthdGFrYW5haGFsZndpZHRoIiw2NTQwNiwic2VtaWNvbG9uIiw1OSwic2VtaWNvbG9uYXJhYmljIiwxNTYzLCJzZW1pY29sb25tb25vc3BhY2UiLDY1MzA3LCJzZW1pY29sb25zbWFsbCIsNjUxMDgsInNlbWl2b2ljZWRtYXJra2FuYSIsMTI0NDQsInNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aCIsNjU0MzksInNlbnRpc3F1YXJlIiwxMzA5MCwic2VudG9zcXVhcmUiLDEzMDkxLCJzZXZlbiIsNTUsInNldmVuYXJhYmljIiwxNjM5LCJzZXZlbmJlbmdhbGkiLDI1NDEsInNldmVuY2lyY2xlIiw5MzE4LCJzZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI4LCJzZXZlbmRldmEiLDI0MTMsInNldmVuZWlnaHRocyIsODU0Miwic2V2ZW5ndWphcmF0aSIsMjc5Nywic2V2ZW5ndXJtdWtoaSIsMjY2OSwic2V2ZW5oYWNrYXJhYmljIiwxNjM5LCJzZXZlbmhhbmd6aG91IiwxMjMyNywic2V2ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOCwic2V2ZW5pbmZlcmlvciIsODMyNywic2V2ZW5tb25vc3BhY2UiLDY1MzAzLCJzZXZlbm9sZHN0eWxlIiw2MzI4Nywic2V2ZW5wYXJlbiIsOTMzOCwic2V2ZW5wZXJpb2QiLDkzNTgsInNldmVucGVyc2lhbiIsMTc4Mywic2V2ZW5yb21hbiIsODU2Niwic2V2ZW5zdXBlcmlvciIsODMxMSwic2V2ZW50ZWVuY2lyY2xlIiw5MzI4LCJzZXZlbnRlZW5wYXJlbiIsOTM0OCwic2V2ZW50ZWVucGVyaW9kIiw5MzY4LCJzZXZlbnRoYWkiLDM2NzEsInNmdGh5cGhlbiIsMTczLCJzaGFhcm1lbmlhbiIsMTM5OSwic2hhYmVuZ2FsaSIsMjQ4Niwic2hhY3lyaWxsaWMiLDEwOTYsInNoYWRkYWFyYWJpYyIsMTYxNywic2hhZGRhZGFtbWFhcmFiaWMiLDY0NjA5LCJzaGFkZGFkYW1tYXRhbmFyYWJpYyIsNjQ2MDYsInNoYWRkYWZhdGhhYXJhYmljIiw2NDYwOCwic2hhZGRha2FzcmFhcmFiaWMiLDY0NjEwLCJzaGFkZGFrYXNyYXRhbmFyYWJpYyIsNjQ2MDcsInNoYWRlIiw5NjE4LCJzaGFkZWRhcmsiLDk2MTksInNoYWRlbGlnaHQiLDk2MTcsInNoYWRlbWVkaXVtIiw5NjE4LCJzaGFkZXZhIiwyMzU4LCJzaGFndWphcmF0aSIsMjc0Miwic2hhZ3VybXVraGkiLDI2MTQsInNoYWxzaGVsZXRoZWJyZXciLDE0MjcsInNoYm9wb21vZm8iLDEyNTY1LCJzaGNoYWN5cmlsbGljIiwxMDk3LCJzaGVlbmFyYWJpYyIsMTU4OCwic2hlZW5maW5hbGFyYWJpYyIsNjUyMDYsInNoZWVuaW5pdGlhbGFyYWJpYyIsNjUyMDcsInNoZWVubWVkaWFsYXJhYmljIiw2NTIwOCwic2hlaWNvcHRpYyIsOTk1LCJzaGVxZWwiLDgzNjIsInNoZXFlbGhlYnJldyIsODM2Miwic2hldmEiLDE0NTYsInNoZXZhMTE1IiwxNDU2LCJzaGV2YTE1IiwxNDU2LCJzaGV2YTIyIiwxNDU2LCJzaGV2YTJlIiwxNDU2LCJzaGV2YWhlYnJldyIsMTQ1Niwic2hldmFuYXJyb3doZWJyZXciLDE0NTYsInNoZXZhcXVhcnRlcmhlYnJldyIsMTQ1Niwic2hldmF3aWRlaGVicmV3IiwxNDU2LCJzaGhhY3lyaWxsaWMiLDEyMTEsInNoaW1hY29wdGljIiwxMDA1LCJzaGluIiwxNTEzLCJzaGluZGFnZXNoIiw2NDMyOSwic2hpbmRhZ2VzaGhlYnJldyIsNjQzMjksInNoaW5kYWdlc2hzaGluZG90Iiw2NDMwMCwic2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXciLDY0MzAwLCJzaGluZGFnZXNoc2luZG90Iiw2NDMwMSwic2hpbmRhZ2VzaHNpbmRvdGhlYnJldyIsNjQzMDEsInNoaW5kb3RoZWJyZXciLDE0NzMsInNoaW5oZWJyZXciLDE1MTMsInNoaW5zaGluZG90Iiw2NDI5OCwic2hpbnNoaW5kb3RoZWJyZXciLDY0Mjk4LCJzaGluc2luZG90Iiw2NDI5OSwic2hpbnNpbmRvdGhlYnJldyIsNjQyOTksInNob29rIiw2NDIsInNpZ21hIiw5NjMsInNpZ21hMSIsOTYyLCJzaWdtYWZpbmFsIiw5NjIsInNpZ21hbHVuYXRlc3ltYm9sZ3JlZWsiLDEwMTAsInNpaGlyYWdhbmEiLDEyMzc1LCJzaWthdGFrYW5hIiwxMjQ3MSwic2lrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDQsInNpbHVxaGVicmV3IiwxNDY5LCJzaWx1cWxlZnRoZWJyZXciLDE0NjksInNpbWlsYXIiLDg3NjQsInNpbmRvdGhlYnJldyIsMTQ3NCwic2lvc2FjaXJjbGVrb3JlYW4iLDEyOTE2LCJzaW9zYXBhcmVua29yZWFuIiwxMjgyMCwic2lvc2NpZXVja29yZWFuIiwxMjY3MCwic2lvc2NpcmNsZWtvcmVhbiIsMTI5MDIsInNpb3NraXllb2trb3JlYW4iLDEyNjY2LCJzaW9za29yZWFuIiwxMjYxMywic2lvc25pZXVua29yZWFuIiwxMjY2Nywic2lvc3BhcmVua29yZWFuIiwxMjgwNiwic2lvc3BpZXVwa29yZWFuIiwxMjY2OSwic2lvc3Rpa2V1dGtvcmVhbiIsMTI2NjgsInNpeCIsNTQsInNpeGFyYWJpYyIsMTYzOCwic2l4YmVuZ2FsaSIsMjU0MCwic2l4Y2lyY2xlIiw5MzE3LCJzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNywic2l4ZGV2YSIsMjQxMiwic2l4Z3VqYXJhdGkiLDI3OTYsInNpeGd1cm11a2hpIiwyNjY4LCJzaXhoYWNrYXJhYmljIiwxNjM4LCJzaXhoYW5nemhvdSIsMTIzMjYsInNpeGlkZW9ncmFwaGljcGFyZW4iLDEyODM3LCJzaXhpbmZlcmlvciIsODMyNiwic2l4bW9ub3NwYWNlIiw2NTMwMiwic2l4b2xkc3R5bGUiLDYzMjg2LCJzaXhwYXJlbiIsOTMzNywic2l4cGVyaW9kIiw5MzU3LCJzaXhwZXJzaWFuIiwxNzgyLCJzaXhyb21hbiIsODU2NSwic2l4c3VwZXJpb3IiLDgzMTAsInNpeHRlZW5jaXJjbGUiLDkzMjcsInNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaSIsMjU1Mywic2l4dGVlbnBhcmVuIiw5MzQ3LCJzaXh0ZWVucGVyaW9kIiw5MzY3LCJzaXh0aGFpIiwzNjcwLCJzbGFzaCIsNDcsInNsYXNobW9ub3NwYWNlIiw2NTI5NSwic2xvbmciLDM4Mywic2xvbmdkb3RhY2NlbnQiLDc4MzUsInNtaWxlZmFjZSIsOTc4Niwic21vbm9zcGFjZSIsNjUzNjMsInNvZnBhc3VxaGVicmV3IiwxNDc1LCJzb2Z0aHlwaGVuIiwxNzMsInNvZnRzaWduY3lyaWxsaWMiLDExMDAsInNvaGlyYWdhbmEiLDEyMzgxLCJzb2thdGFrYW5hIiwxMjQ3Nywic29rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDcsInNvbGlkdXNsb25nb3ZlcmxheWNtYiIsODI0LCJzb2xpZHVzc2hvcnRvdmVybGF5Y21iIiw4MjMsInNvcnVzaXRoYWkiLDM2MjUsInNvc2FsYXRoYWkiLDM2MjQsInNvc290aGFpIiwzNTk1LCJzb3N1YXRoYWkiLDM2MjYsInNwYWNlIiwzMiwic3BhY2VoYWNrYXJhYmljIiwzMiwic3BhZGUiLDk4MjQsInNwYWRlc3VpdGJsYWNrIiw5ODI0LCJzcGFkZXN1aXR3aGl0ZSIsOTgyOCwic3BhcmVuIiw5MzkwLCJzcXVhcmViZWxvd2NtYiIsODI3LCJzcXVhcmVjYyIsMTMyNTIsInNxdWFyZWNtIiwxMzIxMywic3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTY0MSwic3F1YXJlaG9yaXpvbnRhbGZpbGwiLDk2MzYsInNxdWFyZWtnIiwxMzE5OSwic3F1YXJla20iLDEzMjE0LCJzcXVhcmVrbWNhcGl0YWwiLDEzMjYyLCJzcXVhcmVsbiIsMTMyNjUsInNxdWFyZWxvZyIsMTMyNjYsInNxdWFyZW1nIiwxMzE5OCwic3F1YXJlbWlsIiwxMzI2OSwic3F1YXJlbW0iLDEzMjEyLCJzcXVhcmVtc3F1YXJlZCIsMTMyMTcsInNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTYzOCwic3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbCIsOTYzOSwic3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbCIsOTY0MCwic3F1YXJldmVydGljYWxmaWxsIiw5NjM3LCJzcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrIiw5NjM1LCJzcnNxdWFyZSIsMTMyNzUsInNzYWJlbmdhbGkiLDI0ODcsInNzYWRldmEiLDIzNTksInNzYWd1amFyYXRpIiwyNzQzLCJzc2FuZ2NpZXVja29yZWFuIiwxMjYxNywic3NhbmdoaWV1aGtvcmVhbiIsMTI2NzcsInNzYW5naWV1bmdrb3JlYW4iLDEyNjcyLCJzc2FuZ2tpeWVva2tvcmVhbiIsMTI1OTQsInNzYW5nbmlldW5rb3JlYW4iLDEyNjQ1LCJzc2FuZ3BpZXVwa29yZWFuIiwxMjYxMSwic3NhbmdzaW9za29yZWFuIiwxMjYxNCwic3Nhbmd0aWtldXRrb3JlYW4iLDEyNjAwLCJzc3VwZXJpb3IiLDYzMjE4LCJzdGVybGluZyIsMTYzLCJzdGVybGluZ21vbm9zcGFjZSIsNjU1MDUsInN0cm9rZWxvbmdvdmVybGF5Y21iIiw4MjIsInN0cm9rZXNob3J0b3ZlcmxheWNtYiIsODIxLCJzdWJzZXQiLDg4MzQsInN1YnNldG5vdGVxdWFsIiw4ODQyLCJzdWJzZXRvcmVxdWFsIiw4ODM4LCJzdWNjZWVkcyIsODgyNywic3VjaHRoYXQiLDg3MTUsInN1aGlyYWdhbmEiLDEyMzc3LCJzdWthdGFrYW5hIiwxMjQ3Mywic3VrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDUsInN1a3VuYXJhYmljIiwxNjE4LCJzdW1tYXRpb24iLDg3MjEsInN1biIsOTc4OCwic3VwZXJzZXQiLDg4MzUsInN1cGVyc2V0bm90ZXF1YWwiLDg4NDMsInN1cGVyc2V0b3JlcXVhbCIsODgzOSwic3ZzcXVhcmUiLDEzMjc2LCJzeW91d2FlcmFzcXVhcmUiLDEzMTgwLCJ0IiwxMTYsInRhYmVuZ2FsaSIsMjQ2OCwidGFja2Rvd24iLDg4NjgsInRhY2tsZWZ0Iiw4ODY3LCJ0YWRldmEiLDIzNDAsInRhZ3VqYXJhdGkiLDI3MjQsInRhZ3VybXVraGkiLDI1OTYsInRhaGFyYWJpYyIsMTU5MSwidGFoZmluYWxhcmFiaWMiLDY1MjE4LCJ0YWhpbml0aWFsYXJhYmljIiw2NTIxOSwidGFoaXJhZ2FuYSIsMTIzODMsInRhaG1lZGlhbGFyYWJpYyIsNjUyMjAsInRhaXN5b3VlcmFzcXVhcmUiLDEzMTgxLCJ0YWthdGFrYW5hIiwxMjQ3OSwidGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDgsInRhdHdlZWxhcmFiaWMiLDE2MDAsInRhdSIsOTY0LCJ0YXYiLDE1MTQsInRhdmRhZ2VzIiw2NDMzMCwidGF2ZGFnZXNoIiw2NDMzMCwidGF2ZGFnZXNoaGVicmV3Iiw2NDMzMCwidGF2aGVicmV3IiwxNTE0LCJ0YmFyIiwzNTksInRib3BvbW9mbyIsMTI1NTQsInRjYXJvbiIsMzU3LCJ0Y2N1cmwiLDY4MCwidGNlZGlsbGEiLDM1NSwidGNoZWhhcmFiaWMiLDE2NzAsInRjaGVoZmluYWxhcmFiaWMiLDY0Mzc5LCJ0Y2hlaGluaXRpYWxhcmFiaWMiLDY0MzgwLCJ0Y2hlaG1lZGlhbGFyYWJpYyIsNjQzODEsInRjaXJjbGUiLDk0NDMsInRjaXJjdW1mbGV4YmVsb3ciLDc3OTMsInRjb21tYWFjY2VudCIsMzU1LCJ0ZGllcmVzaXMiLDc4MzEsInRkb3RhY2NlbnQiLDc3ODcsInRkb3RiZWxvdyIsNzc4OSwidGVjeXJpbGxpYyIsMTA5MCwidGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NywidGVoYXJhYmljIiwxNTc4LCJ0ZWhmaW5hbGFyYWJpYyIsNjUxNzQsInRlaGhhaGluaXRpYWxhcmFiaWMiLDY0Njc0LCJ0ZWhoYWhpc29sYXRlZGFyYWJpYyIsNjQ1MjQsInRlaGluaXRpYWxhcmFiaWMiLDY1MTc1LCJ0ZWhpcmFnYW5hIiwxMjM5MCwidGVoamVlbWluaXRpYWxhcmFiaWMiLDY0NjczLCJ0ZWhqZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIzLCJ0ZWhtYXJidXRhYXJhYmljIiwxNTc3LCJ0ZWhtYXJidXRhZmluYWxhcmFiaWMiLDY1MTcyLCJ0ZWhtZWRpYWxhcmFiaWMiLDY1MTc2LCJ0ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ2NzYsInRlaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1MjYsInRlaG5vb25maW5hbGFyYWJpYyIsNjQ2MjcsInRla2F0YWthbmEiLDEyNDg2LCJ0ZWthdGFrYW5haGFsZndpZHRoIiw2NTQxMSwidGVsZXBob25lIiw4NDgxLCJ0ZWxlcGhvbmVibGFjayIsOTc0MiwidGVsaXNoYWdlZG9sYWhlYnJldyIsMTQ0MCwidGVsaXNoYXFldGFuYWhlYnJldyIsMTQ0OSwidGVuY2lyY2xlIiw5MzIxLCJ0ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjg0MSwidGVucGFyZW4iLDkzNDEsInRlbnBlcmlvZCIsOTM2MSwidGVucm9tYW4iLDg1NjksInRlc2giLDY3OSwidGV0IiwxNDk2LCJ0ZXRkYWdlc2giLDY0MzEyLCJ0ZXRkYWdlc2hoZWJyZXciLDY0MzEyLCJ0ZXRoZWJyZXciLDE0OTYsInRldHNlY3lyaWxsaWMiLDEyMDUsInRldmlyaGVicmV3IiwxNDM1LCJ0ZXZpcmxlZnRoZWJyZXciLDE0MzUsInRoYWJlbmdhbGkiLDI0NjksInRoYWRldmEiLDIzNDEsInRoYWd1amFyYXRpIiwyNzI1LCJ0aGFndXJtdWtoaSIsMjU5NywidGhhbGFyYWJpYyIsMTU4NCwidGhhbGZpbmFsYXJhYmljIiw2NTE5NiwidGhhbnRoYWtoYXRsb3dsZWZ0dGhhaSIsNjM2NDAsInRoYW50aGFraGF0bG93cmlnaHR0aGFpIiw2MzYzOSwidGhhbnRoYWtoYXR0aGFpIiwzNjYwLCJ0aGFudGhha2hhdHVwcGVybGVmdHRoYWkiLDYzNjM4LCJ0aGVoYXJhYmljIiwxNTc5LCJ0aGVoZmluYWxhcmFiaWMiLDY1MTc4LCJ0aGVoaW5pdGlhbGFyYWJpYyIsNjUxNzksInRoZWhtZWRpYWxhcmFiaWMiLDY1MTgwLCJ0aGVyZWV4aXN0cyIsODcwNywidGhlcmVmb3JlIiw4NzU2LCJ0aGV0YSIsOTUyLCJ0aGV0YTEiLDk3NywidGhldGFzeW1ib2xncmVlayIsOTc3LCJ0aGlldXRoYWNpcmNsZWtvcmVhbiIsMTI5MjEsInRoaWV1dGhhcGFyZW5rb3JlYW4iLDEyODI1LCJ0aGlldXRoY2lyY2xla29yZWFuIiwxMjkwNywidGhpZXV0aGtvcmVhbiIsMTI2MjAsInRoaWV1dGhwYXJlbmtvcmVhbiIsMTI4MTEsInRoaXJ0ZWVuY2lyY2xlIiw5MzI0LCJ0aGlydGVlbnBhcmVuIiw5MzQ0LCJ0aGlydGVlbnBlcmlvZCIsOTM2NCwidGhvbmFuZ21vbnRob3RoYWkiLDM2MDEsInRob29rIiw0MjksInRob3BodXRoYW90aGFpIiwzNjAyLCJ0aG9ybiIsMjU0LCJ0aG90aGFoYW50aGFpIiwzNjA3LCJ0aG90aGFudGhhaSIsMzYwMCwidGhvdGhvbmd0aGFpIiwzNjA4LCJ0aG90aHVuZ3RoYWkiLDM2MDYsInRob3VzYW5kY3lyaWxsaWMiLDExNTQsInRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYyIsMTY0NCwidGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbiIsMTY0NCwidGhyZWUiLDUxLCJ0aHJlZWFyYWJpYyIsMTYzNSwidGhyZWViZW5nYWxpIiwyNTM3LCJ0aHJlZWNpcmNsZSIsOTMxNCwidGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNCwidGhyZWVkZXZhIiwyNDA5LCJ0aHJlZWVpZ2h0aHMiLDg1NDAsInRocmVlZ3VqYXJhdGkiLDI3OTMsInRocmVlZ3VybXVraGkiLDI2NjUsInRocmVlaGFja2FyYWJpYyIsMTYzNSwidGhyZWVoYW5nemhvdSIsMTIzMjMsInRocmVlaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzQsInRocmVlaW5mZXJpb3IiLDgzMjMsInRocmVlbW9ub3NwYWNlIiw2NTI5OSwidGhyZWVudW1lcmF0b3JiZW5nYWxpIiwyNTUwLCJ0aHJlZW9sZHN0eWxlIiw2MzI4MywidGhyZWVwYXJlbiIsOTMzNCwidGhyZWVwZXJpb2QiLDkzNTQsInRocmVlcGVyc2lhbiIsMTc3OSwidGhyZWVxdWFydGVycyIsMTkwLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiw2MzE5OCwidGhyZWVyb21hbiIsODU2MiwidGhyZWVzdXBlcmlvciIsMTc5LCJ0aHJlZXRoYWkiLDM2NjcsInRoenNxdWFyZSIsMTMyMDQsInRpaGlyYWdhbmEiLDEyMzg1LCJ0aWthdGFrYW5hIiwxMjQ4MSwidGlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDksInRpa2V1dGFjaXJjbGVrb3JlYW4iLDEyOTEyLCJ0aWtldXRhcGFyZW5rb3JlYW4iLDEyODE2LCJ0aWtldXRjaXJjbGVrb3JlYW4iLDEyODk4LCJ0aWtldXRrb3JlYW4iLDEyNTk5LCJ0aWtldXRwYXJlbmtvcmVhbiIsMTI4MDIsInRpbGRlIiw3MzIsInRpbGRlYmVsb3djbWIiLDgxNiwidGlsZGVjbWIiLDc3MSwidGlsZGVjb21iIiw3NzEsInRpbGRlZG91YmxlY21iIiw4NjQsInRpbGRlb3BlcmF0b3IiLDg3NjQsInRpbGRlb3ZlcmxheWNtYiIsODIwLCJ0aWxkZXZlcnRpY2FsY21iIiw4MzAsInRpbWVzY2lyY2xlIiw4ODU1LCJ0aXBlaGFoZWJyZXciLDE0MzAsInRpcGVoYWxlZnRoZWJyZXciLDE0MzAsInRpcHBpZ3VybXVraGkiLDI2NzIsInRpdGxvY3lyaWxsaWNjbWIiLDExNTUsInRpd25hcm1lbmlhbiIsMTQwNywidGxpbmViZWxvdyIsNzc5MSwidG1vbm9zcGFjZSIsNjUzNjQsInRvYXJtZW5pYW4iLDEzODUsInRvaGlyYWdhbmEiLDEyMzkyLCJ0b2thdGFrYW5hIiwxMjQ4OCwidG9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTIsInRvbmViYXJleHRyYWhpZ2htb2QiLDc0MSwidG9uZWJhcmV4dHJhbG93bW9kIiw3NDUsInRvbmViYXJoaWdobW9kIiw3NDIsInRvbmViYXJsb3dtb2QiLDc0NCwidG9uZWJhcm1pZG1vZCIsNzQzLCJ0b25lZml2ZSIsNDQ1LCJ0b25lc2l4IiwzODksInRvbmV0d28iLDQyNCwidG9ub3MiLDkwMCwidG9uc3F1YXJlIiwxMzA5NSwidG9wYXRha3RoYWkiLDM1OTksInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMDgsInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsIiw2NTExNywidG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDgxLCJ0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0IiwxMjMwOSwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsIiw2NTExOCwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4MiwidG90YW90aGFpIiwzNjA1LCJ0cGFsYXRhbGhvb2siLDQyNywidHBhcmVuIiw5MzkxLCJ0cmFkZW1hcmsiLDg0ODIsInRyYWRlbWFya3NhbnMiLDYzNzIyLCJ0cmFkZW1hcmtzZXJpZiIsNjMxOTUsInRyZXRyb2ZsZXhob29rIiw2NDgsInRyaWFnZG4iLDk2NjAsInRyaWFnbGYiLDk2NjgsInRyaWFncnQiLDk2NTgsInRyaWFndXAiLDk2NTAsInRzIiw2NzgsInRzYWRpIiwxNTEwLCJ0c2FkaWRhZ2VzaCIsNjQzMjYsInRzYWRpZGFnZXNoaGVicmV3Iiw2NDMyNiwidHNhZGloZWJyZXciLDE1MTAsInRzZWN5cmlsbGljIiwxMDk0LCJ0c2VyZSIsMTQ2MSwidHNlcmUxMiIsMTQ2MSwidHNlcmUxZSIsMTQ2MSwidHNlcmUyYiIsMTQ2MSwidHNlcmVoZWJyZXciLDE0NjEsInRzZXJlbmFycm93aGVicmV3IiwxNDYxLCJ0c2VyZXF1YXJ0ZXJoZWJyZXciLDE0NjEsInRzZXJld2lkZWhlYnJldyIsMTQ2MSwidHNoZWN5cmlsbGljIiwxMTE1LCJ0c3VwZXJpb3IiLDYzMjE5LCJ0dGFiZW5nYWxpIiwyNDYzLCJ0dGFkZXZhIiwyMzM1LCJ0dGFndWphcmF0aSIsMjcxOSwidHRhZ3VybXVraGkiLDI1OTEsInR0ZWhhcmFiaWMiLDE2NTcsInR0ZWhmaW5hbGFyYWJpYyIsNjQzNTksInR0ZWhpbml0aWFsYXJhYmljIiw2NDM2MCwidHRlaG1lZGlhbGFyYWJpYyIsNjQzNjEsInR0aGFiZW5nYWxpIiwyNDY0LCJ0dGhhZGV2YSIsMjMzNiwidHRoYWd1amFyYXRpIiwyNzIwLCJ0dGhhZ3VybXVraGkiLDI1OTIsInR0dXJuZWQiLDY0NywidHVoaXJhZ2FuYSIsMTIzODgsInR1a2F0YWthbmEiLDEyNDg0LCJ0dWthdGFrYW5haGFsZndpZHRoIiw2NTQxMCwidHVzbWFsbGhpcmFnYW5hIiwxMjM4NywidHVzbWFsbGthdGFrYW5hIiwxMjQ4MywidHVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM5MSwidHdlbHZlY2lyY2xlIiw5MzIzLCJ0d2VsdmVwYXJlbiIsOTM0MywidHdlbHZlcGVyaW9kIiw5MzYzLCJ0d2VsdmVyb21hbiIsODU3MSwidHdlbnR5Y2lyY2xlIiw5MzMxLCJ0d2VudHloYW5nemhvdSIsMjEzMTYsInR3ZW50eXBhcmVuIiw5MzUxLCJ0d2VudHlwZXJpb2QiLDkzNzEsInR3byIsNTAsInR3b2FyYWJpYyIsMTYzNCwidHdvYmVuZ2FsaSIsMjUzNiwidHdvY2lyY2xlIiw5MzEzLCJ0d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyMywidHdvZGV2YSIsMjQwOCwidHdvZG90ZW5sZWFkZXIiLDgyMjksInR3b2RvdGxlYWRlciIsODIyOSwidHdvZG90bGVhZGVydmVydGljYWwiLDY1MDcyLCJ0d29ndWphcmF0aSIsMjc5MiwidHdvZ3VybXVraGkiLDI2NjQsInR3b2hhY2thcmFiaWMiLDE2MzQsInR3b2hhbmd6aG91IiwxMjMyMiwidHdvaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzMsInR3b2luZmVyaW9yIiw4MzIyLCJ0d29tb25vc3BhY2UiLDY1Mjk4LCJ0d29udW1lcmF0b3JiZW5nYWxpIiwyNTQ5LCJ0d29vbGRzdHlsZSIsNjMyODIsInR3b3BhcmVuIiw5MzMzLCJ0d29wZXJpb2QiLDkzNTMsInR3b3BlcnNpYW4iLDE3NzgsInR3b3JvbWFuIiw4NTYxLCJ0d29zdHJva2UiLDQ0MywidHdvc3VwZXJpb3IiLDE3OCwidHdvdGhhaSIsMzY2NiwidHdvdGhpcmRzIiw4NTMyLCJ1IiwxMTcsInVhY3V0ZSIsMjUwLCJ1YmFyIiw2NDksInViZW5nYWxpIiwyNDQxLCJ1Ym9wb21vZm8iLDEyNTg0LCJ1YnJldmUiLDM2NSwidWNhcm9uIiw0NjgsInVjaXJjbGUiLDk0NDQsInVjaXJjdW1mbGV4IiwyNTEsInVjaXJjdW1mbGV4YmVsb3ciLDc3OTksInVjeXJpbGxpYyIsMTA5MSwidWRhdHRhZGV2YSIsMjM4NSwidWRibGFjdXRlIiwzNjksInVkYmxncmF2ZSIsNTMzLCJ1ZGV2YSIsMjMxMywidWRpZXJlc2lzIiwyNTIsInVkaWVyZXNpc2FjdXRlIiw0NzIsInVkaWVyZXNpc2JlbG93Iiw3Nzk1LCJ1ZGllcmVzaXNjYXJvbiIsNDc0LCJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI2NSwidWRpZXJlc2lzZ3JhdmUiLDQ3NiwidWRpZXJlc2lzbWFjcm9uIiw0NzAsInVkb3RiZWxvdyIsNzkwOSwidWdyYXZlIiwyNDksInVndWphcmF0aSIsMjY5NywidWd1cm11a2hpIiwyNTY5LCJ1aGlyYWdhbmEiLDEyMzU4LCJ1aG9va2Fib3ZlIiw3OTExLCJ1aG9ybiIsNDMyLCJ1aG9ybmFjdXRlIiw3OTEzLCJ1aG9ybmRvdGJlbG93Iiw3OTIxLCJ1aG9ybmdyYXZlIiw3OTE1LCJ1aG9ybmhvb2thYm92ZSIsNzkxNywidWhvcm50aWxkZSIsNzkxOSwidWh1bmdhcnVtbGF1dCIsMzY5LCJ1aHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjcsInVpbnZlcnRlZGJyZXZlIiw1MzUsInVrYXRha2FuYSIsMTI0NTQsInVrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTUsInVrY3lyaWxsaWMiLDExNDUsInVrb3JlYW4iLDEyNjM2LCJ1bWFjcm9uIiwzNjMsInVtYWNyb25jeXJpbGxpYyIsMTI2MywidW1hY3JvbmRpZXJlc2lzIiw3ODAzLCJ1bWF0cmFndXJtdWtoaSIsMjYyNSwidW1vbm9zcGFjZSIsNjUzNjUsInVuZGVyc2NvcmUiLDk1LCJ1bmRlcnNjb3JlZGJsIiw4MjE1LCJ1bmRlcnNjb3JlbW9ub3NwYWNlIiw2NTM0MywidW5kZXJzY29yZXZlcnRpY2FsIiw2NTA3NSwidW5kZXJzY29yZXdhdnkiLDY1MTAzLCJ1bmlvbiIsODc0NiwidW5pdmVyc2FsIiw4NzA0LCJ1b2dvbmVrIiwzNzEsInVwYXJlbiIsOTM5MiwidXBibG9jayIsOTYwMCwidXBwZXJkb3RoZWJyZXciLDE0NzYsInVwc2lsb24iLDk2NSwidXBzaWxvbmRpZXJlc2lzIiw5NzEsInVwc2lsb25kaWVyZXNpc3Rvbm9zIiw5NDQsInVwc2lsb25sYXRpbiIsNjUwLCJ1cHNpbG9udG9ub3MiLDk3MywidXB0YWNrYmVsb3djbWIiLDc5NywidXB0YWNrbW9kIiw3MjQsInVyYWd1cm11a2hpIiwyNjc1LCJ1cmluZyIsMzY3LCJ1c2hvcnRjeXJpbGxpYyIsMTExOCwidXNtYWxsaGlyYWdhbmEiLDEyMzU3LCJ1c21hbGxrYXRha2FuYSIsMTI0NTMsInVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NSwidXN0cmFpZ2h0Y3lyaWxsaWMiLDExOTksInVzdHJhaWdodHN0cm9rZWN5cmlsbGljIiwxMjAxLCJ1dGlsZGUiLDM2MSwidXRpbGRlYWN1dGUiLDc4MDEsInV0aWxkZWJlbG93Iiw3Nzk3LCJ1dWJlbmdhbGkiLDI0NDIsInV1ZGV2YSIsMjMxNCwidXVndWphcmF0aSIsMjY5OCwidXVndXJtdWtoaSIsMjU3MCwidXVtYXRyYWd1cm11a2hpIiwyNjI2LCJ1dXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTgsInV1dm93ZWxzaWduZGV2YSIsMjM3MCwidXV2b3dlbHNpZ25ndWphcmF0aSIsMjc1NCwidXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTcsInV2b3dlbHNpZ25kZXZhIiwyMzY5LCJ1dm93ZWxzaWduZ3VqYXJhdGkiLDI3NTMsInYiLDExOCwidmFkZXZhIiwyMzU3LCJ2YWd1amFyYXRpIiwyNzQxLCJ2YWd1cm11a2hpIiwyNjEzLCJ2YWthdGFrYW5hIiwxMjUzNSwidmF2IiwxNDkzLCJ2YXZkYWdlc2giLDY0MzA5LCJ2YXZkYWdlc2g2NSIsNjQzMDksInZhdmRhZ2VzaGhlYnJldyIsNjQzMDksInZhdmhlYnJldyIsMTQ5MywidmF2aG9sYW0iLDY0MzMxLCJ2YXZob2xhbWhlYnJldyIsNjQzMzEsInZhdnZhdmhlYnJldyIsMTUyMCwidmF2eW9kaGVicmV3IiwxNTIxLCJ2Y2lyY2xlIiw5NDQ1LCJ2ZG90YmVsb3ciLDc4MDcsInZlY3lyaWxsaWMiLDEwNzQsInZlaGFyYWJpYyIsMTcwMCwidmVoZmluYWxhcmFiaWMiLDY0MzYzLCJ2ZWhpbml0aWFsYXJhYmljIiw2NDM2NCwidmVobWVkaWFsYXJhYmljIiw2NDM2NSwidmVrYXRha2FuYSIsMTI1MzcsInZlbnVzIiw5NzkyLCJ2ZXJ0aWNhbGJhciIsMTI0LCJ2ZXJ0aWNhbGxpbmVhYm92ZWNtYiIsNzgxLCJ2ZXJ0aWNhbGxpbmViZWxvd2NtYiIsODA5LCJ2ZXJ0aWNhbGxpbmVsb3dtb2QiLDcxNiwidmVydGljYWxsaW5lbW9kIiw3MTIsInZld2FybWVuaWFuIiwxNDA2LCJ2aG9vayIsNjUxLCJ2aWthdGFrYW5hIiwxMjUzNiwidmlyYW1hYmVuZ2FsaSIsMjUwOSwidmlyYW1hZGV2YSIsMjM4MSwidmlyYW1hZ3VqYXJhdGkiLDI3NjUsInZpc2FyZ2FiZW5nYWxpIiwyNDM1LCJ2aXNhcmdhZGV2YSIsMjMwNywidmlzYXJnYWd1amFyYXRpIiwyNjkxLCJ2bW9ub3NwYWNlIiw2NTM2Niwidm9hcm1lbmlhbiIsMTQwMCwidm9pY2VkaXRlcmF0aW9uaGlyYWdhbmEiLDEyNDQ2LCJ2b2ljZWRpdGVyYXRpb25rYXRha2FuYSIsMTI1NDIsInZvaWNlZG1hcmtrYW5hIiwxMjQ0Mywidm9pY2VkbWFya2thbmFoYWxmd2lkdGgiLDY1NDM4LCJ2b2thdGFrYW5hIiwxMjUzOCwidnBhcmVuIiw5MzkzLCJ2dGlsZGUiLDc4MDUsInZ0dXJuZWQiLDY1MiwidnVoaXJhZ2FuYSIsMTI0MzYsInZ1a2F0YWthbmEiLDEyNTMyLCJ3IiwxMTksIndhY3V0ZSIsNzgxMSwid2Fla29yZWFuIiwxMjYzMywid2FoaXJhZ2FuYSIsMTI0MzEsIndha2F0YWthbmEiLDEyNTI3LCJ3YWthdGFrYW5haGFsZndpZHRoIiw2NTQzNiwid2Frb3JlYW4iLDEyNjMyLCJ3YXNtYWxsaGlyYWdhbmEiLDEyNDMwLCJ3YXNtYWxsa2F0YWthbmEiLDEyNTI2LCJ3YXR0b3NxdWFyZSIsMTMxNDMsIndhdmVkYXNoIiwxMjMxNiwid2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbCIsNjUwNzYsIndhd2FyYWJpYyIsMTYwOCwid2F3ZmluYWxhcmFiaWMiLDY1MjYyLCJ3YXdoYW16YWFib3ZlYXJhYmljIiwxNTcyLCJ3YXdoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU4LCJ3YnNxdWFyZSIsMTMyNzcsIndjaXJjbGUiLDk0NDYsIndjaXJjdW1mbGV4IiwzNzMsIndkaWVyZXNpcyIsNzgxMywid2RvdGFjY2VudCIsNzgxNSwid2RvdGJlbG93Iiw3ODE3LCJ3ZWhpcmFnYW5hIiwxMjQzMywid2VpZXJzdHJhc3MiLDg0NzIsIndla2F0YWthbmEiLDEyNTI5LCJ3ZWtvcmVhbiIsMTI2MzgsIndlb2tvcmVhbiIsMTI2MzcsIndncmF2ZSIsNzgwOSwid2hpdGVidWxsZXQiLDk3MDIsIndoaXRlY2lyY2xlIiw5Njc1LCJ3aGl0ZWNpcmNsZWludmVyc2UiLDk2ODksIndoaXRlY29ybmVyYnJhY2tldGxlZnQiLDEyMzAyLCJ3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDkxLCJ3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodCIsMTIzMDMsIndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkyLCJ3aGl0ZWRpYW1vbmQiLDk2NzEsIndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZCIsOTY3Miwid2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlIiw5NjYzLCJ3aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlIiw5NjYxLCJ3aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NjcsIndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGUiLDk2NjUsIndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0IiwxMjMxMCwid2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMxMSwid2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1Nywid2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGUiLDk2NTUsIndoaXRlc21hbGxzcXVhcmUiLDk2NDMsIndoaXRlc21pbGluZ2ZhY2UiLDk3ODYsIndoaXRlc3F1YXJlIiw5NjMzLCJ3aGl0ZXN0YXIiLDk3MzQsIndoaXRldGVsZXBob25lIiw5NzQzLCJ3aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMTIsIndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodCIsMTIzMTMsIndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NTMsIndoaXRldXBwb2ludGluZ3RyaWFuZ2xlIiw5NjUxLCJ3aWhpcmFnYW5hIiwxMjQzMiwid2lrYXRha2FuYSIsMTI1MjgsIndpa29yZWFuIiwxMjYzOSwid21vbm9zcGFjZSIsNjUzNjcsIndvaGlyYWdhbmEiLDEyNDM0LCJ3b2thdGFrYW5hIiwxMjUzMCwid29rYXRha2FuYWhhbGZ3aWR0aCIsNjUzODIsIndvbiIsODM2MSwid29ubW9ub3NwYWNlIiw2NTUxMCwid293YWVudGhhaSIsMzYyMywid3BhcmVuIiw5Mzk0LCJ3cmluZyIsNzgzMiwid3N1cGVyaW9yIiw2OTUsInd0dXJuZWQiLDY1Mywid3lubiIsNDQ3LCJ4IiwxMjAsInhhYm92ZWNtYiIsODI5LCJ4Ym9wb21vZm8iLDEyNTYyLCJ4Y2lyY2xlIiw5NDQ3LCJ4ZGllcmVzaXMiLDc4MjEsInhkb3RhY2NlbnQiLDc4MTksInhlaGFybWVuaWFuIiwxMzg5LCJ4aSIsOTU4LCJ4bW9ub3NwYWNlIiw2NTM2OCwieHBhcmVuIiw5Mzk1LCJ4c3VwZXJpb3IiLDczOSwieSIsMTIxLCJ5YWFkb3NxdWFyZSIsMTMxMzQsInlhYmVuZ2FsaSIsMjQ3OSwieWFjdXRlIiwyNTMsInlhZGV2YSIsMjM1MSwieWFla29yZWFuIiwxMjYyNiwieWFndWphcmF0aSIsMjczNSwieWFndXJtdWtoaSIsMjYwNywieWFoaXJhZ2FuYSIsMTI0MjAsInlha2F0YWthbmEiLDEyNTE2LCJ5YWthdGFrYW5haGFsZndpZHRoIiw2NTQyOCwieWFrb3JlYW4iLDEyNjI1LCJ5YW1ha2thbnRoYWkiLDM2NjIsInlhc21hbGxoaXJhZ2FuYSIsMTI0MTksInlhc21hbGxrYXRha2FuYSIsMTI1MTUsInlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aCIsNjUzODgsInlhdGN5cmlsbGljIiwxMTIzLCJ5Y2lyY2xlIiw5NDQ4LCJ5Y2lyY3VtZmxleCIsMzc1LCJ5ZGllcmVzaXMiLDI1NSwieWRvdGFjY2VudCIsNzgyMywieWRvdGJlbG93Iiw3OTI1LCJ5ZWhhcmFiaWMiLDE2MTAsInllaGJhcnJlZWFyYWJpYyIsMTc0NiwieWVoYmFycmVlZmluYWxhcmFiaWMiLDY0NDMxLCJ5ZWhmaW5hbGFyYWJpYyIsNjUyNjYsInllaGhhbXphYWJvdmVhcmFiaWMiLDE1NzQsInllaGhhbXphYWJvdmVmaW5hbGFyYWJpYyIsNjUxNjIsInllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljIiw2NTE2MywieWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYyIsNjUxNjQsInllaGluaXRpYWxhcmFiaWMiLDY1MjY3LCJ5ZWhtZWRpYWxhcmFiaWMiLDY1MjY4LCJ5ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MzMsInllaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ2MDAsInllaG5vb25maW5hbGFyYWJpYyIsNjQ2NjAsInllaHRocmVlZG90c2JlbG93YXJhYmljIiwxNzQ1LCJ5ZWtvcmVhbiIsMTI2MzAsInllbiIsMTY1LCJ5ZW5tb25vc3BhY2UiLDY1NTA5LCJ5ZW9rb3JlYW4iLDEyNjI5LCJ5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NzgsInllcmFoYmVueW9tb2hlYnJldyIsMTQ1MCwieWVyYWhiZW55b21vbGVmdGhlYnJldyIsMTQ1MCwieWVyaWN5cmlsbGljIiwxMDk5LCJ5ZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MywieWVzaWV1bmdrb3JlYW4iLDEyNjczLCJ5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW4iLDEyNjc1LCJ5ZXNpZXVuZ3Npb3Nrb3JlYW4iLDEyNjc0LCJ5ZXRpdmhlYnJldyIsMTQzNCwieWdyYXZlIiw3OTIzLCJ5aG9vayIsNDM2LCJ5aG9va2Fib3ZlIiw3OTI3LCJ5aWFybWVuaWFuIiwxMzk3LCJ5aWN5cmlsbGljIiwxMTExLCJ5aWtvcmVhbiIsMTI2NDIsInlpbnlhbmciLDk3NzUsInlpd25hcm1lbmlhbiIsMTQxMCwieW1vbm9zcGFjZSIsNjUzNjksInlvZCIsMTQ5NywieW9kZGFnZXNoIiw2NDMxMywieW9kZGFnZXNoaGVicmV3Iiw2NDMxMywieW9kaGVicmV3IiwxNDk3LCJ5b2R5b2RoZWJyZXciLDE1MjIsInlvZHlvZHBhdGFoaGVicmV3Iiw2NDI4NywieW9oaXJhZ2FuYSIsMTI0MjQsInlvaWtvcmVhbiIsMTI2ODEsInlva2F0YWthbmEiLDEyNTIwLCJ5b2thdGFrYW5haGFsZndpZHRoIiw2NTQzMCwieW9rb3JlYW4iLDEyNjM1LCJ5b3NtYWxsaGlyYWdhbmEiLDEyNDIzLCJ5b3NtYWxsa2F0YWthbmEiLDEyNTE5LCJ5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1MzkwLCJ5b3RncmVlayIsMTAxMSwieW95YWVrb3JlYW4iLDEyNjgwLCJ5b3lha29yZWFuIiwxMjY3OSwieW95YWt0aGFpIiwzNjE4LCJ5b3lpbmd0aGFpIiwzNTk3LCJ5cGFyZW4iLDkzOTYsInlwb2dlZ3JhbW1lbmkiLDg5MCwieXBvZ2VncmFtbWVuaWdyZWVrY21iIiw4MzcsInlyIiw0MjIsInlyaW5nIiw3ODMzLCJ5c3VwZXJpb3IiLDY5NiwieXRpbGRlIiw3OTI5LCJ5dHVybmVkIiw2NTQsInl1aGlyYWdhbmEiLDEyNDIyLCJ5dWlrb3JlYW4iLDEyNjg0LCJ5dWthdGFrYW5hIiwxMjUxOCwieXVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjksInl1a29yZWFuIiwxMjY0MCwieXVzYmlnY3lyaWxsaWMiLDExMzEsInl1c2JpZ2lvdGlmaWVkY3lyaWxsaWMiLDExMzMsInl1c2xpdHRsZWN5cmlsbGljIiwxMTI3LCJ5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljIiwxMTI5LCJ5dXNtYWxsaGlyYWdhbmEiLDEyNDIxLCJ5dXNtYWxsa2F0YWthbmEiLDEyNTE3LCJ5dXNtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1Mzg5LCJ5dXlla29yZWFuIiwxMjY4MywieXV5ZW9rb3JlYW4iLDEyNjgyLCJ5eWFiZW5nYWxpIiwyNTI3LCJ5eWFkZXZhIiwyMzk5LCJ6IiwxMjIsInphYXJtZW5pYW4iLDEzODIsInphY3V0ZSIsMzc4LCJ6YWRldmEiLDIzOTUsInphZ3VybXVraGkiLDI2NTEsInphaGFyYWJpYyIsMTU5MiwiemFoZmluYWxhcmFiaWMiLDY1MjIyLCJ6YWhpbml0aWFsYXJhYmljIiw2NTIyMywiemFoaXJhZ2FuYSIsMTIzNzQsInphaG1lZGlhbGFyYWJpYyIsNjUyMjQsInphaW5hcmFiaWMiLDE1ODYsInphaW5maW5hbGFyYWJpYyIsNjUyMDAsInpha2F0YWthbmEiLDEyNDcwLCJ6YXFlZmdhZG9saGVicmV3IiwxNDI5LCJ6YXFlZnFhdGFuaGVicmV3IiwxNDI4LCJ6YXJxYWhlYnJldyIsMTQzMiwiemF5aW4iLDE0OTQsInpheWluZGFnZXNoIiw2NDMxMCwiemF5aW5kYWdlc2hoZWJyZXciLDY0MzEwLCJ6YXlpbmhlYnJldyIsMTQ5NCwiemJvcG9tb2ZvIiwxMjU2NywiemNhcm9uIiwzODIsInpjaXJjbGUiLDk0NDksInpjaXJjdW1mbGV4Iiw3ODI1LCJ6Y3VybCIsNjU3LCJ6ZG90IiwzODAsInpkb3RhY2NlbnQiLDM4MCwiemRvdGJlbG93Iiw3ODI3LCJ6ZWN5cmlsbGljIiwxMDc5LCJ6ZWRlc2NlbmRlcmN5cmlsbGljIiwxMTc3LCJ6ZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDcsInplaGlyYWdhbmEiLDEyMzgwLCJ6ZWthdGFrYW5hIiwxMjQ3NiwiemVybyIsNDgsInplcm9hcmFiaWMiLDE2MzIsInplcm9iZW5nYWxpIiwyNTM0LCJ6ZXJvZGV2YSIsMjQwNiwiemVyb2d1amFyYXRpIiwyNzkwLCJ6ZXJvZ3VybXVraGkiLDI2NjIsInplcm9oYWNrYXJhYmljIiwxNjMyLCJ6ZXJvaW5mZXJpb3IiLDgzMjAsInplcm9tb25vc3BhY2UiLDY1Mjk2LCJ6ZXJvb2xkc3R5bGUiLDYzMjgwLCJ6ZXJvcGVyc2lhbiIsMTc3NiwiemVyb3N1cGVyaW9yIiw4MzA0LCJ6ZXJvdGhhaSIsMzY2NCwiemVyb3dpZHRoam9pbmVyIiw2NTI3OSwiemVyb3dpZHRobm9uam9pbmVyIiw4MjA0LCJ6ZXJvd2lkdGhzcGFjZSIsODIwMywiemV0YSIsOTUwLCJ6aGJvcG9tb2ZvIiwxMjU2MywiemhlYXJtZW5pYW4iLDEzODYsInpoZWJyZXZlY3lyaWxsaWMiLDEyMTgsInpoZWN5cmlsbGljIiwxMDc4LCJ6aGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NSwiemhlZGllcmVzaXNjeXJpbGxpYyIsMTI0NSwiemloaXJhZ2FuYSIsMTIzNzYsInppa2F0YWthbmEiLDEyNDcyLCJ6aW5vcmhlYnJldyIsMTQ1NCwiemxpbmViZWxvdyIsNzgyOSwiem1vbm9zcGFjZSIsNjUzNzAsInpvaGlyYWdhbmEiLDEyMzgyLCJ6b2thdGFrYW5hIiwxMjQ3OCwienBhcmVuIiw5Mzk3LCJ6cmV0cm9mbGV4aG9vayIsNjU2LCJ6c3Ryb2tlIiw0MzgsInp1aGlyYWdhbmEiLDEyMzc4LCJ6dWthdGFrYW5hIiwxMjQ3NCwiLm5vdGRlZiIsMCwiYW5nYnJhY2tldGxlZnRiaWciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnIiw5MDAxLCJhbmdicmFja2V0bGVmdGJpZ2ciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnZyIsOTAwMSwiYW5nYnJhY2tldHJpZ2h0QmlnIiw5MDAyLCJhbmdicmFja2V0cmlnaHRiaWciLDkwMDIsImFuZ2JyYWNrZXRyaWdodEJpZ2ciLDkwMDIsImFuZ2JyYWNrZXRyaWdodGJpZ2ciLDkwMDIsImFycm93aG9va2xlZnQiLDg2MTgsImFycm93aG9va3JpZ2h0Iiw4NjE3LCJhcnJvd2xlZnR0b3BoYWxmIiw4NjM2LCJhcnJvd2xlZnRib3RoYWxmIiw4NjM3LCJhcnJvd25vcnRoZWFzdCIsODU5OSwiYXJyb3dub3J0aHdlc3QiLDg1OTgsImFycm93cmlnaHR0b3BoYWxmIiw4NjQwLCJhcnJvd3JpZ2h0Ym90aGFsZiIsODY0MSwiYXJyb3dzb3V0aGVhc3QiLDg2MDAsImFycm93c291dGh3ZXN0Iiw4NjAxLCJiYWNrc2xhc2hiaWciLDg3MjYsImJhY2tzbGFzaEJpZyIsODcyNiwiYmFja3NsYXNoQmlnZyIsODcyNiwiYmFja3NsYXNoYmlnZyIsODcyNiwiYmFyZGJsIiw4MjE0LCJicmFjZWh0aXBkb3dubGVmdCIsNjUwNzksImJyYWNlaHRpcGRvd25yaWdodCIsNjUwNzksImJyYWNlaHRpcHVwbGVmdCIsNjUwODAsImJyYWNlaHRpcHVwcmlnaHQiLDY1MDgwLCJicmFjZWxlZnRCaWciLDEyMywiYnJhY2VsZWZ0YmlnIiwxMjMsImJyYWNlbGVmdGJpZ2ciLDEyMywiYnJhY2VsZWZ0QmlnZyIsMTIzLCJicmFjZXJpZ2h0QmlnIiwxMjUsImJyYWNlcmlnaHRiaWciLDEyNSwiYnJhY2VyaWdodGJpZ2ciLDEyNSwiYnJhY2VyaWdodEJpZ2ciLDEyNSwiYnJhY2tldGxlZnRiaWciLDkxLCJicmFja2V0bGVmdEJpZyIsOTEsImJyYWNrZXRsZWZ0YmlnZyIsOTEsImJyYWNrZXRsZWZ0QmlnZyIsOTEsImJyYWNrZXRyaWdodEJpZyIsOTMsImJyYWNrZXRyaWdodGJpZyIsOTMsImJyYWNrZXRyaWdodGJpZ2ciLDkzLCJicmFja2V0cmlnaHRCaWdnIiw5MywiY2VpbGluZ2xlZnRiaWciLDg5NjgsImNlaWxpbmdsZWZ0QmlnIiw4OTY4LCJjZWlsaW5nbGVmdEJpZ2ciLDg5NjgsImNlaWxpbmdsZWZ0YmlnZyIsODk2OCwiY2VpbGluZ3JpZ2h0YmlnIiw4OTY5LCJjZWlsaW5ncmlnaHRCaWciLDg5NjksImNlaWxpbmdyaWdodGJpZ2ciLDg5NjksImNlaWxpbmdyaWdodEJpZ2ciLDg5NjksImNpcmNsZWRvdGRpc3BsYXkiLDg4NTcsImNpcmNsZWRvdHRleHQiLDg4NTcsImNpcmNsZW11bHRpcGx5ZGlzcGxheSIsODg1NSwiY2lyY2xlbXVsdGlwbHl0ZXh0Iiw4ODU1LCJjaXJjbGVwbHVzZGlzcGxheSIsODg1MywiY2lyY2xlcGx1c3RleHQiLDg4NTMsImNvbnRpbnRlZ3JhbGRpc3BsYXkiLDg3NTAsImNvbnRpbnRlZ3JhbHRleHQiLDg3NTAsImNvcHJvZHVjdGRpc3BsYXkiLDg3MjAsImNvcHJvZHVjdHRleHQiLDg3MjAsImZsb29ybGVmdEJpZyIsODk3MCwiZmxvb3JsZWZ0YmlnIiw4OTcwLCJmbG9vcmxlZnRiaWdnIiw4OTcwLCJmbG9vcmxlZnRCaWdnIiw4OTcwLCJmbG9vcnJpZ2h0YmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnZyIsODk3MSwiZmxvb3JyaWdodGJpZ2ciLDg5NzEsImhhdHdpZGUiLDc3MCwiaGF0d2lkZXIiLDc3MCwiaGF0d2lkZXN0Iiw3NzAsImludGVyY2FsIiw3NDg4LCJpbnRlZ3JhbGRpc3BsYXkiLDg3NDcsImludGVncmFsdGV4dCIsODc0NywiaW50ZXJzZWN0aW9uZGlzcGxheSIsODg5OCwiaW50ZXJzZWN0aW9udGV4dCIsODg5OCwibG9naWNhbGFuZGRpc3BsYXkiLDg3NDMsImxvZ2ljYWxhbmR0ZXh0Iiw4NzQzLCJsb2dpY2Fsb3JkaXNwbGF5Iiw4NzQ0LCJsb2dpY2Fsb3J0ZXh0Iiw4NzQ0LCJwYXJlbmxlZnRCaWciLDQwLCJwYXJlbmxlZnRiaWciLDQwLCJwYXJlbmxlZnRCaWdnIiw0MCwicGFyZW5sZWZ0YmlnZyIsNDAsInBhcmVucmlnaHRCaWciLDQxLCJwYXJlbnJpZ2h0YmlnIiw0MSwicGFyZW5yaWdodEJpZ2ciLDQxLCJwYXJlbnJpZ2h0YmlnZyIsNDEsInByaW1lIiw4MjQyLCJwcm9kdWN0ZGlzcGxheSIsODcxOSwicHJvZHVjdHRleHQiLDg3MTksInJhZGljYWxiaWciLDg3MzAsInJhZGljYWxCaWciLDg3MzAsInJhZGljYWxCaWdnIiw4NzMwLCJyYWRpY2FsYmlnZyIsODczMCwicmFkaWNhbGJ0Iiw4NzMwLCJyYWRpY2FsdHAiLDg3MzAsInJhZGljYWx2ZXJ0ZXgiLDg3MzAsInNsYXNoYmlnIiw0Nywic2xhc2hCaWciLDQ3LCJzbGFzaEJpZ2ciLDQ3LCJzbGFzaGJpZ2ciLDQ3LCJzdW1tYXRpb25kaXNwbGF5Iiw4NzIxLCJzdW1tYXRpb250ZXh0Iiw4NzIxLCJ0aWxkZXdpZGUiLDczMiwidGlsZGV3aWRlciIsNzMyLCJ0aWxkZXdpZGVzdCIsNzMyLCJ1bmlvbmRpc3BsYXkiLDg4OTksInVuaW9ubXVsdGlkaXNwbGF5Iiw4ODQ2LCJ1bmlvbm11bHRpdGV4dCIsODg0NiwidW5pb25zcWRpc3BsYXkiLDg4NTIsInVuaW9uc3F0ZXh0Iiw4ODUyLCJ1bmlvbnRleHQiLDg4OTksInZleHRlbmRkb3VibGUiLDg3NDEsInZleHRlbmRzaW5nbGUiLDg3MzldfSkpLGk9KDAsci5nZXRBcnJheUxvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKCl7cmV0dXJuWyJzcGFjZSIsMzIsImExIiw5OTg1LCJhMiIsOTk4NiwiYTIwMiIsOTk4NywiYTMiLDk5ODgsImE0Iiw5NzQyLCJhNSIsOTk5MCwiYTExOSIsOTk5MSwiYTExOCIsOTk5MiwiYTExNyIsOTk5MywiYTExIiw5NzU1LCJhMTIiLDk3NTgsImExMyIsOTk5NiwiYTE0Iiw5OTk3LCJhMTUiLDk5OTgsImExNiIsOTk5OSwiYTEwNSIsMWU0LCJhMTciLDEwMDAxLCJhMTgiLDEwMDAyLCJhMTkiLDEwMDAzLCJhMjAiLDEwMDA0LCJhMjEiLDEwMDA1LCJhMjIiLDEwMDA2LCJhMjMiLDEwMDA3LCJhMjQiLDEwMDA4LCJhMjUiLDEwMDA5LCJhMjYiLDEwMDEwLCJhMjciLDEwMDExLCJhMjgiLDEwMDEyLCJhNiIsMTAwMTMsImE3IiwxMDAxNCwiYTgiLDEwMDE1LCJhOSIsMTAwMTYsImExMCIsMTAwMTcsImEyOSIsMTAwMTgsImEzMCIsMTAwMTksImEzMSIsMTAwMjAsImEzMiIsMTAwMjEsImEzMyIsMTAwMjIsImEzNCIsMTAwMjMsImEzNSIsOTczMywiYTM2IiwxMDAyNSwiYTM3IiwxMDAyNiwiYTM4IiwxMDAyNywiYTM5IiwxMDAyOCwiYTQwIiwxMDAyOSwiYTQxIiwxMDAzMCwiYTQyIiwxMDAzMSwiYTQzIiwxMDAzMiwiYTQ0IiwxMDAzMywiYTQ1IiwxMDAzNCwiYTQ2IiwxMDAzNSwiYTQ3IiwxMDAzNiwiYTQ4IiwxMDAzNywiYTQ5IiwxMDAzOCwiYTUwIiwxMDAzOSwiYTUxIiwxMDA0MCwiYTUyIiwxMDA0MSwiYTUzIiwxMDA0MiwiYTU0IiwxMDA0MywiYTU1IiwxMDA0NCwiYTU2IiwxMDA0NSwiYTU3IiwxMDA0NiwiYTU4IiwxMDA0NywiYTU5IiwxMDA0OCwiYTYwIiwxMDA0OSwiYTYxIiwxMDA1MCwiYTYyIiwxMDA1MSwiYTYzIiwxMDA1MiwiYTY0IiwxMDA1MywiYTY1IiwxMDA1NCwiYTY2IiwxMDA1NSwiYTY3IiwxMDA1NiwiYTY4IiwxMDA1NywiYTY5IiwxMDA1OCwiYTcwIiwxMDA1OSwiYTcxIiw5Njc5LCJhNzIiLDEwMDYxLCJhNzMiLDk2MzIsImE3NCIsMTAwNjMsImEyMDMiLDEwMDY0LCJhNzUiLDEwMDY1LCJhMjA0IiwxMDA2NiwiYTc2Iiw5NjUwLCJhNzciLDk2NjAsImE3OCIsOTY3MCwiYTc5IiwxMDA3MCwiYTgxIiw5Njg3LCJhODIiLDEwMDcyLCJhODMiLDEwMDczLCJhODQiLDEwMDc0LCJhOTciLDEwMDc1LCJhOTgiLDEwMDc2LCJhOTkiLDEwMDc3LCJhMTAwIiwxMDA3OCwiYTEwMSIsMTAwODEsImExMDIiLDEwMDgyLCJhMTAzIiwxMDA4MywiYTEwNCIsMTAwODQsImExMDYiLDEwMDg1LCJhMTA3IiwxMDA4NiwiYTEwOCIsMTAwODcsImExMTIiLDk4MjcsImExMTEiLDk4MzAsImExMTAiLDk4MjksImExMDkiLDk4MjQsImExMjAiLDkzMTIsImExMjEiLDkzMTMsImExMjIiLDkzMTQsImExMjMiLDkzMTUsImExMjQiLDkzMTYsImExMjUiLDkzMTcsImExMjYiLDkzMTgsImExMjciLDkzMTksImExMjgiLDkzMjAsImExMjkiLDkzMjEsImExMzAiLDEwMTAyLCJhMTMxIiwxMDEwMywiYTEzMiIsMTAxMDQsImExMzMiLDEwMTA1LCJhMTM0IiwxMDEwNiwiYTEzNSIsMTAxMDcsImExMzYiLDEwMTA4LCJhMTM3IiwxMDEwOSwiYTEzOCIsMTAxMTAsImExMzkiLDEwMTExLCJhMTQwIiwxMDExMiwiYTE0MSIsMTAxMTMsImExNDIiLDEwMTE0LCJhMTQzIiwxMDExNSwiYTE0NCIsMTAxMTYsImExNDUiLDEwMTE3LCJhMTQ2IiwxMDExOCwiYTE0NyIsMTAxMTksImExNDgiLDEwMTIwLCJhMTQ5IiwxMDEyMSwiYTE1MCIsMTAxMjIsImExNTEiLDEwMTIzLCJhMTUyIiwxMDEyNCwiYTE1MyIsMTAxMjUsImExNTQiLDEwMTI2LCJhMTU1IiwxMDEyNywiYTE1NiIsMTAxMjgsImExNTciLDEwMTI5LCJhMTU4IiwxMDEzMCwiYTE1OSIsMTAxMzEsImExNjAiLDEwMTMyLCJhMTYxIiw4NTk0LCJhMTYzIiw4NTk2LCJhMTY0Iiw4NTk3LCJhMTk2IiwxMDEzNiwiYTE2NSIsMTAxMzcsImExOTIiLDEwMTM4LCJhMTY2IiwxMDEzOSwiYTE2NyIsMTAxNDAsImExNjgiLDEwMTQxLCJhMTY5IiwxMDE0MiwiYTE3MCIsMTAxNDMsImExNzEiLDEwMTQ0LCJhMTcyIiwxMDE0NSwiYTE3MyIsMTAxNDYsImExNjIiLDEwMTQ3LCJhMTc0IiwxMDE0OCwiYTE3NSIsMTAxNDksImExNzYiLDEwMTUwLCJhMTc3IiwxMDE1MSwiYTE3OCIsMTAxNTIsImExNzkiLDEwMTUzLCJhMTkzIiwxMDE1NCwiYTE4MCIsMTAxNTUsImExOTkiLDEwMTU2LCJhMTgxIiwxMDE1NywiYTIwMCIsMTAxNTgsImExODIiLDEwMTU5LCJhMjAxIiwxMDE2MSwiYTE4MyIsMTAxNjIsImExODQiLDEwMTYzLCJhMTk3IiwxMDE2NCwiYTE4NSIsMTAxNjUsImExOTQiLDEwMTY2LCJhMTk4IiwxMDE2NywiYTE4NiIsMTAxNjgsImExOTUiLDEwMTY5LCJhMTg3IiwxMDE3MCwiYTE4OCIsMTAxNzEsImExODkiLDEwMTcyLCJhMTkwIiwxMDE3MywiYTE5MSIsMTAxNzQsImE4OSIsMTAwODgsImE5MCIsMTAwODksImE5MyIsMTAwOTAsImE5NCIsMTAwOTEsImE5MSIsMTAwOTIsImE5MiIsMTAwOTMsImEyMDUiLDEwMDk0LCJhODUiLDEwMDk1LCJhMjA2IiwxMDA5NiwiYTg2IiwxMDA5NywiYTg3IiwxMDA5OCwiYTg4IiwxMDA5OSwiYTk1IiwxMDEwMCwiYTk2IiwxMDEwMSwiLm5vdGRlZiIsMF19KSl9LChlLHQsYSk9PnthLnIodCk7YS5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+Y2xlYXJVbmljb2RlQ2FjaGVzLGdldENoYXJVbmljb2RlQ2F0ZWdvcnk6KCk9PmdldENoYXJVbmljb2RlQ2F0ZWdvcnksZ2V0Tm9ybWFsaXplZFVuaWNvZGVzOigpPT5zLGdldFVuaWNvZGVGb3JHbHlwaDooKT0+Z2V0VW5pY29kZUZvckdseXBoLGdldFVuaWNvZGVSYW5nZUZvcjooKT0+Z2V0VW5pY29kZVJhbmdlRm9yLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5tYXBTcGVjaWFsVW5pY29kZVZhbHVlcyxyZXZlcnNlSWZSdGw6KCk9PnJldmVyc2VJZlJ0bH0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9uKClbZV18fGU6MTczPT09ZT80NTplfWZ1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBpPVt7YmVnaW46MCxlbmQ6MTI3fSx7YmVnaW46MTI4LGVuZDoyNTV9LHtiZWdpbjoyNTYsZW5kOjM4M30se2JlZ2luOjM4NCxlbmQ6NTkxfSx7YmVnaW46NTkyLGVuZDo2ODd9LHtiZWdpbjo2ODgsZW5kOjc2N30se2JlZ2luOjc2OCxlbmQ6ODc5fSx7YmVnaW46ODgwLGVuZDoxMDIzfSx7YmVnaW46MTEzOTIsZW5kOjExNTE5fSx7YmVnaW46MTAyNCxlbmQ6MTI3OX0se2JlZ2luOjEzMjgsZW5kOjE0MjN9LHtiZWdpbjoxNDI0LGVuZDoxNTM1fSx7YmVnaW46NDIyNDAsZW5kOjQyNTU5fSx7YmVnaW46MTUzNixlbmQ6MTc5MX0se2JlZ2luOjE5ODQsZW5kOjIwNDd9LHtiZWdpbjoyMzA0LGVuZDoyNDMxfSx7YmVnaW46MjQzMixlbmQ6MjU1OX0se2JlZ2luOjI1NjAsZW5kOjI2ODd9LHtiZWdpbjoyNjg4LGVuZDoyODE1fSx7YmVnaW46MjgxNixlbmQ6Mjk0M30se2JlZ2luOjI5NDQsZW5kOjMwNzF9LHtiZWdpbjozMDcyLGVuZDozMTk5fSx7YmVnaW46MzIwMCxlbmQ6MzMyN30se2JlZ2luOjMzMjgsZW5kOjM0NTV9LHtiZWdpbjozNTg0LGVuZDozNzExfSx7YmVnaW46MzcxMixlbmQ6MzgzOX0se2JlZ2luOjQyNTYsZW5kOjQzNTF9LHtiZWdpbjo2OTEyLGVuZDo3MDM5fSx7YmVnaW46NDM1MixlbmQ6NDYwN30se2JlZ2luOjc2ODAsZW5kOjc5MzV9LHtiZWdpbjo3OTM2LGVuZDo4MTkxfSx7YmVnaW46ODE5MixlbmQ6ODMwM30se2JlZ2luOjgzMDQsZW5kOjgzNTF9LHtiZWdpbjo4MzUyLGVuZDo4Mzk5fSx7YmVnaW46ODQwMCxlbmQ6ODQ0N30se2JlZ2luOjg0NDgsZW5kOjg1Mjd9LHtiZWdpbjo4NTI4LGVuZDo4NTkxfSx7YmVnaW46ODU5MixlbmQ6ODcwM30se2JlZ2luOjg3MDQsZW5kOjg5NTl9LHtiZWdpbjo4OTYwLGVuZDo5MjE1fSx7YmVnaW46OTIxNixlbmQ6OTI3OX0se2JlZ2luOjkyODAsZW5kOjkzMTF9LHtiZWdpbjo5MzEyLGVuZDo5NDcxfSx7YmVnaW46OTQ3MixlbmQ6OTU5OX0se2JlZ2luOjk2MDAsZW5kOjk2MzF9LHtiZWdpbjo5NjMyLGVuZDo5NzI3fSx7YmVnaW46OTcyOCxlbmQ6OTk4M30se2JlZ2luOjk5ODQsZW5kOjEwMTc1fSx7YmVnaW46MTIyODgsZW5kOjEyMzUxfSx7YmVnaW46MTIzNTIsZW5kOjEyNDQ3fSx7YmVnaW46MTI0NDgsZW5kOjEyNTQzfSx7YmVnaW46MTI1NDQsZW5kOjEyNTkxfSx7YmVnaW46MTI1OTIsZW5kOjEyNjg3fSx7YmVnaW46NDMwNzIsZW5kOjQzMTM1fSx7YmVnaW46MTI4MDAsZW5kOjEzMDU1fSx7YmVnaW46MTMwNTYsZW5kOjEzMzExfSx7YmVnaW46NDQwMzIsZW5kOjU1MjE1fSx7YmVnaW46NTUyOTYsZW5kOjU3MzQzfSx7YmVnaW46Njc4NDAsZW5kOjY3ODcxfSx7YmVnaW46MTk5NjgsZW5kOjQwOTU5fSx7YmVnaW46NTczNDQsZW5kOjYzNzQzfSx7YmVnaW46MTI3MzYsZW5kOjEyNzgzfSx7YmVnaW46NjQyNTYsZW5kOjY0MzM1fSx7YmVnaW46NjQzMzYsZW5kOjY1MDIzfSx7YmVnaW46NjUwNTYsZW5kOjY1MDcxfSx7YmVnaW46NjUwNDAsZW5kOjY1MDU1fSx7YmVnaW46NjUxMDQsZW5kOjY1MTM1fSx7YmVnaW46NjUxMzYsZW5kOjY1Mjc5fSx7YmVnaW46NjUyODAsZW5kOjY1NTE5fSx7YmVnaW46NjU1MjAsZW5kOjY1NTM1fSx7YmVnaW46Mzg0MCxlbmQ6NDA5NX0se2JlZ2luOjE3OTIsZW5kOjE4NzF9LHtiZWdpbjoxOTIwLGVuZDoxOTgzfSx7YmVnaW46MzQ1NixlbmQ6MzU4M30se2JlZ2luOjQwOTYsZW5kOjQyNTV9LHtiZWdpbjo0NjA4LGVuZDo0OTkxfSx7YmVnaW46NTAyNCxlbmQ6NTExOX0se2JlZ2luOjUxMjAsZW5kOjU3NTl9LHtiZWdpbjo1NzYwLGVuZDo1NzkxfSx7YmVnaW46NTc5MixlbmQ6NTg4N30se2JlZ2luOjYwMTYsZW5kOjYxNDN9LHtiZWdpbjo2MTQ0LGVuZDo2MzE5fSx7YmVnaW46MTAyNDAsZW5kOjEwNDk1fSx7YmVnaW46NDA5NjAsZW5kOjQyMTI3fSx7YmVnaW46NTg4OCxlbmQ6NTkxOX0se2JlZ2luOjY2MzA0LGVuZDo2NjM1MX0se2JlZ2luOjY2MzUyLGVuZDo2NjM4M30se2JlZ2luOjY2NTYwLGVuZDo2NjYzOX0se2JlZ2luOjExODc4NCxlbmQ6MTE5MDM5fSx7YmVnaW46MTE5ODA4LGVuZDoxMjA4MzF9LHtiZWdpbjoxMDQ0NDgwLGVuZDoxMDQ4NTczfSx7YmVnaW46NjUwMjQsZW5kOjY1MDM5fSx7YmVnaW46OTE3NTA0LGVuZDo5MTc2MzF9LHtiZWdpbjo2NDAwLGVuZDo2NDc5fSx7YmVnaW46NjQ4MCxlbmQ6NjUyN30se2JlZ2luOjY1MjgsZW5kOjY2MjN9LHtiZWdpbjo2NjU2LGVuZDo2Njg3fSx7YmVnaW46MTEyNjQsZW5kOjExMzU5fSx7YmVnaW46MTE1NjgsZW5kOjExNjQ3fSx7YmVnaW46MTk5MDQsZW5kOjE5OTY3fSx7YmVnaW46NDMwMDgsZW5kOjQzMDU1fSx7YmVnaW46NjU1MzYsZW5kOjY1NjYzfSx7YmVnaW46NjU4NTYsZW5kOjY1OTM1fSx7YmVnaW46NjY0MzIsZW5kOjY2NDYzfSx7YmVnaW46NjY0NjQsZW5kOjY2NTI3fSx7YmVnaW46NjY2NDAsZW5kOjY2Njg3fSx7YmVnaW46NjY2ODgsZW5kOjY2NzM1fSx7YmVnaW46Njc1ODQsZW5kOjY3NjQ3fSx7YmVnaW46NjgwOTYsZW5kOjY4MTkxfSx7YmVnaW46MTE5NTUyLGVuZDoxMTk2NDd9LHtiZWdpbjo3MzcyOCxlbmQ6NzQ3NTF9LHtiZWdpbjoxMTk2NDgsZW5kOjExOTY3OX0se2JlZ2luOjcwNDAsZW5kOjcxMDN9LHtiZWdpbjo3MTY4LGVuZDo3MjQ3fSx7YmVnaW46NzI0OCxlbmQ6NzI5NX0se2JlZ2luOjQzMTM2LGVuZDo0MzIzMX0se2JlZ2luOjQzMjY0LGVuZDo0MzMxMX0se2JlZ2luOjQzMzEyLGVuZDo0MzM1OX0se2JlZ2luOjQzNTIwLGVuZDo0MzYxNX0se2JlZ2luOjY1OTM2LGVuZDo2NTk5OX0se2JlZ2luOjY2ZTMsZW5kOjY2MDQ3fSx7YmVnaW46NjYyMDgsZW5kOjY2MjcxfSx7YmVnaW46MTI3MDI0LGVuZDoxMjcxMzV9XTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSl7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWlbdF07aWYoZT49YS5iZWdpbiYmZTxhLmVuZClyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBzPSgwLHIuZ2V0QXJyYXlMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbigpe3JldHVyblsiwqgiLCIgzIgiLCLCryIsIiDMhCIsIsK0IiwiIMyBIiwiwrUiLCLOvCIsIsK4IiwiIMynIiwixLIiLCJJSiIsIsSzIiwiaWoiLCLEvyIsIkzCtyIsIsWAIiwibMK3IiwixYkiLCLKvG4iLCLFvyIsInMiLCLHhCIsIkTFvSIsIseFIiwiRMW+Iiwix4YiLCJkxb4iLCLHhyIsIkxKIiwix4giLCJMaiIsIseJIiwibGoiLCLHiiIsIk5KIiwix4siLCJOaiIsIseMIiwibmoiLCLHsSIsIkRaIiwix7IiLCJEeiIsIsezIiwiZHoiLCLLmCIsIiDMhiIsIsuZIiwiIMyHIiwiy5oiLCIgzIoiLCLLmyIsIiDMqCIsIsucIiwiIMyDIiwiy50iLCIgzIsiLCLNuiIsIiDNhSIsIs6EIiwiIMyBIiwiz5AiLCLOsiIsIs+RIiwizrgiLCLPkiIsIs6lIiwiz5UiLCLPhiIsIs+WIiwiz4AiLCLPsCIsIs66Iiwiz7EiLCLPgSIsIs+yIiwiz4IiLCLPtCIsIs6YIiwiz7UiLCLOtSIsIs+5IiwizqMiLCLWhyIsItWl1oIiLCLZtSIsItin2bQiLCLZtiIsItmI2bQiLCLZtyIsItuH2bQiLCLZuCIsItmK2bQiLCLguLMiLCLguY3guLIiLCLgurMiLCLgu43gurIiLCLgu5wiLCLguqvgupkiLCLgu50iLCLguqvguqEiLCLgvbciLCLgvrLgvoEiLCLgvbkiLCLgvrPgvoEiLCLhupoiLCJhyr4iLCLhvr0iLCIgzJMiLCLhvr8iLCIgzJMiLCLhv4AiLCIgzYIiLCLhv74iLCIgzJQiLCLigIIiLCIgIiwi4oCDIiwiICIsIuKAhCIsIiAiLCLigIUiLCIgIiwi4oCGIiwiICIsIuKAiCIsIiAiLCLigIkiLCIgIiwi4oCKIiwiICIsIuKAlyIsIiDMsyIsIuKApCIsIi4iLCLigKUiLCIuLiIsIuKApiIsIi4uLiIsIuKAsyIsIuKAsuKAsiIsIuKAtCIsIuKAsuKAsuKAsiIsIuKAtiIsIuKAteKAtSIsIuKAtyIsIuKAteKAteKAtSIsIuKAvCIsIiEhIiwi4oC+IiwiIMyFIiwi4oGHIiwiPz8iLCLigYgiLCI/ISIsIuKBiSIsIiE/Iiwi4oGXIiwi4oCy4oCy4oCy4oCyIiwi4oGfIiwiICIsIuKCqCIsIlJzIiwi4oSAIiwiYS9jIiwi4oSBIiwiYS9zIiwi4oSDIiwiwrBDIiwi4oSFIiwiYy9vIiwi4oSGIiwiYy91Iiwi4oSHIiwixpAiLCLihIkiLCLCsEYiLCLihJYiLCJObyIsIuKEoSIsIlRFTCIsIuKEtSIsIteQIiwi4oS2Iiwi15EiLCLihLciLCLXkiIsIuKEuCIsIteTIiwi4oS7IiwiRkFYIiwi4oWgIiwiSSIsIuKFoSIsIklJIiwi4oWiIiwiSUlJIiwi4oWjIiwiSVYiLCLihaQiLCJWIiwi4oWlIiwiVkkiLCLihaYiLCJWSUkiLCLihaciLCJWSUlJIiwi4oWoIiwiSVgiLCLihakiLCJYIiwi4oWqIiwiWEkiLCLihasiLCJYSUkiLCLihawiLCJMIiwi4oWtIiwiQyIsIuKFriIsIkQiLCLiha8iLCJNIiwi4oWwIiwiaSIsIuKFsSIsImlpIiwi4oWyIiwiaWlpIiwi4oWzIiwiaXYiLCLihbQiLCJ2Iiwi4oW1IiwidmkiLCLihbYiLCJ2aWkiLCLihbciLCJ2aWlpIiwi4oW4IiwiaXgiLCLihbkiLCJ4Iiwi4oW6IiwieGkiLCLihbsiLCJ4aWkiLCLihbwiLCJsIiwi4oW9IiwiYyIsIuKFviIsImQiLCLihb8iLCJtIiwi4oisIiwi4oir4oirIiwi4oitIiwi4oir4oir4oirIiwi4oivIiwi4oiu4oiuIiwi4oiwIiwi4oiu4oiu4oiuIiwi4pG0IiwiKDEpIiwi4pG1IiwiKDIpIiwi4pG2IiwiKDMpIiwi4pG3IiwiKDQpIiwi4pG4IiwiKDUpIiwi4pG5IiwiKDYpIiwi4pG6IiwiKDcpIiwi4pG7IiwiKDgpIiwi4pG8IiwiKDkpIiwi4pG9IiwiKDEwKSIsIuKRviIsIigxMSkiLCLikb8iLCIoMTIpIiwi4pKAIiwiKDEzKSIsIuKSgSIsIigxNCkiLCLikoIiLCIoMTUpIiwi4pKDIiwiKDE2KSIsIuKShCIsIigxNykiLCLikoUiLCIoMTgpIiwi4pKGIiwiKDE5KSIsIuKShyIsIigyMCkiLCLikogiLCIxLiIsIuKSiSIsIjIuIiwi4pKKIiwiMy4iLCLikosiLCI0LiIsIuKSjCIsIjUuIiwi4pKNIiwiNi4iLCLiko4iLCI3LiIsIuKSjyIsIjguIiwi4pKQIiwiOS4iLCLikpEiLCIxMC4iLCLikpIiLCIxMS4iLCLikpMiLCIxMi4iLCLikpQiLCIxMy4iLCLikpUiLCIxNC4iLCLikpYiLCIxNS4iLCLikpciLCIxNi4iLCLikpgiLCIxNy4iLCLikpkiLCIxOC4iLCLikpoiLCIxOS4iLCLikpsiLCIyMC4iLCLikpwiLCIoYSkiLCLikp0iLCIoYikiLCLikp4iLCIoYykiLCLikp8iLCIoZCkiLCLikqAiLCIoZSkiLCLikqEiLCIoZikiLCLikqIiLCIoZykiLCLikqMiLCIoaCkiLCLikqQiLCIoaSkiLCLikqUiLCIoaikiLCLikqYiLCIoaykiLCLikqciLCIobCkiLCLikqgiLCIobSkiLCLikqkiLCIobikiLCLikqoiLCIobykiLCLikqsiLCIocCkiLCLikqwiLCIocSkiLCLikq0iLCIocikiLCLikq4iLCIocykiLCLikq8iLCIodCkiLCLikrAiLCIodSkiLCLikrEiLCIodikiLCLikrIiLCIodykiLCLikrMiLCIoeCkiLCLikrQiLCIoeSkiLCLikrUiLCIoeikiLCLiqIwiLCLiiKviiKviiKviiKsiLCLiqbQiLCI6Oj0iLCLiqbUiLCI9PSIsIuKptiIsIj09PSIsIuK6nyIsIuavjSIsIuK7syIsIum+nyIsIuK8gCIsIuS4gCIsIuK8gSIsIuS4qCIsIuK8giIsIuS4tiIsIuK8gyIsIuS4vyIsIuK8hCIsIuS5mSIsIuK8hSIsIuS6hSIsIuK8hiIsIuS6jCIsIuK8hyIsIuS6oCIsIuK8iCIsIuS6uiIsIuK8iSIsIuWEvyIsIuK8iiIsIuWFpSIsIuK8iyIsIuWFqyIsIuK8jCIsIuWGgiIsIuK8jSIsIuWGliIsIuK8jiIsIuWGqyIsIuK8jyIsIuWHoCIsIuK8kCIsIuWHtSIsIuK8kSIsIuWIgCIsIuK8kiIsIuWKmyIsIuK8kyIsIuWLuSIsIuK8lCIsIuWMlSIsIuK8lSIsIuWMmiIsIuK8liIsIuWMuCIsIuK8lyIsIuWNgSIsIuK8mCIsIuWNnCIsIuK8mSIsIuWNqSIsIuK8miIsIuWOgiIsIuK8myIsIuWOtiIsIuK8nCIsIuWPiCIsIuK8nSIsIuWPoyIsIuK8niIsIuWblyIsIuK8nyIsIuWcnyIsIuK8oCIsIuWjqyIsIuK8oSIsIuWkgiIsIuK8oiIsIuWkiiIsIuK8oyIsIuWklSIsIuK8pCIsIuWkpyIsIuK8pSIsIuWlsyIsIuK8piIsIuWtkCIsIuK8pyIsIuWugCIsIuK8qCIsIuWvuCIsIuK8qSIsIuWwjyIsIuK8qiIsIuWwoiIsIuK8qyIsIuWwuCIsIuK8rCIsIuWxriIsIuK8rSIsIuWxsSIsIuK8riIsIuW3myIsIuK8ryIsIuW3pSIsIuK8sCIsIuW3sSIsIuK8sSIsIuW3viIsIuK8siIsIuW5siIsIuK8syIsIuW5uiIsIuK8tCIsIuW5vyIsIuK8tSIsIuW7tCIsIuK8tiIsIuW7viIsIuK8tyIsIuW8iyIsIuK8uCIsIuW8kyIsIuK8uSIsIuW9kCIsIuK8uiIsIuW9oSIsIuK8uyIsIuW9syIsIuK8vCIsIuW/gyIsIuK8vSIsIuaIiCIsIuK8viIsIuaItiIsIuK8vyIsIuaJiyIsIuK9gCIsIuaUryIsIuK9gSIsIuaUtCIsIuK9giIsIuaWhyIsIuK9gyIsIuaWlyIsIuK9hCIsIuaWpCIsIuK9hSIsIuaWuSIsIuK9hiIsIuaXoCIsIuK9hyIsIuaXpSIsIuK9iCIsIuabsCIsIuK9iSIsIuaciCIsIuK9iiIsIuacqCIsIuK9iyIsIuasoCIsIuK9jCIsIuatoiIsIuK9jSIsIuatuSIsIuK9jiIsIuausyIsIuK9jyIsIuaviyIsIuK9kCIsIuavlCIsIuK9kSIsIuavmyIsIuK9kiIsIuawjyIsIuK9kyIsIuawlCIsIuK9lCIsIuawtCIsIuK9lSIsIueBqyIsIuK9liIsIueIqiIsIuK9lyIsIueItiIsIuK9mCIsIueIuyIsIuK9mSIsIueIvyIsIuK9miIsIueJhyIsIuK9myIsIueJmSIsIuK9nCIsIueJmyIsIuK9nSIsIueKrCIsIuK9niIsIueOhCIsIuK9nyIsIueOiSIsIuK9oCIsIueTnCIsIuK9oSIsIueTpiIsIuK9oiIsIueUmCIsIuK9oyIsIueUnyIsIuK9pCIsIueUqCIsIuK9pSIsIueUsCIsIuK9piIsIueWiyIsIuK9pyIsIueWkiIsIuK9qCIsIueZtiIsIuK9qSIsIueZvSIsIuK9qiIsIueariIsIuK9qyIsIueavyIsIuK9rCIsIuebriIsIuK9rSIsIuefmyIsIuK9riIsIuefoiIsIuK9ryIsIuefsyIsIuK9sCIsIuekuiIsIuK9sSIsIuemuCIsIuK9siIsIuemviIsIuK9syIsIueptCIsIuK9tCIsIueriyIsIuK9tSIsIueruSIsIuK9tiIsIuexsyIsIuK9tyIsIuezuCIsIuK9uCIsIue8tiIsIuK9uSIsIue9kSIsIuK9uiIsIue+iiIsIuK9uyIsIue+vSIsIuK9vCIsIuiAgSIsIuK9vSIsIuiAjCIsIuK9viIsIuiAkiIsIuK9vyIsIuiAsyIsIuK+gCIsIuiBvyIsIuK+gSIsIuiCiSIsIuK+giIsIuiHoyIsIuK+gyIsIuiHqiIsIuK+hCIsIuiHsyIsIuK+hSIsIuiHvCIsIuK+hiIsIuiIjCIsIuK+hyIsIuiImyIsIuK+iCIsIuiInyIsIuK+iSIsIuiJriIsIuK+iiIsIuiJsiIsIuK+iyIsIuiJuCIsIuK+jCIsIuiZjSIsIuK+jSIsIuiZqyIsIuK+jiIsIuihgCIsIuK+jyIsIuihjCIsIuK+kCIsIuihoyIsIuK+kSIsIuilviIsIuK+kiIsIuimiyIsIuK+kyIsIuinkiIsIuK+lCIsIuiogCIsIuK+lSIsIuiwtyIsIuK+liIsIuixhiIsIuK+lyIsIuixlSIsIuK+mCIsIuixuCIsIuK+mSIsIuiynSIsIuK+miIsIui1pCIsIuK+myIsIui1sCIsIuK+nCIsIui2syIsIuK+nSIsIui6qyIsIuK+niIsIui7iiIsIuK+nyIsIui+myIsIuK+oCIsIui+sCIsIuK+oSIsIui+tSIsIuK+oiIsIumCkSIsIuK+oyIsIumFiSIsIuK+pCIsIumHhiIsIuK+pSIsIumHjCIsIuK+piIsIumHkSIsIuK+pyIsIumVtyIsIuK+qCIsIumWgCIsIuK+qSIsIumYnCIsIuK+qiIsIumatiIsIuK+qyIsIumauSIsIuK+rCIsIumbqCIsIuK+rSIsIumdkSIsIuK+riIsIumdniIsIuK+ryIsIumdoiIsIuK+sCIsIumdqSIsIuK+sSIsIumfiyIsIuK+siIsIumfrSIsIuK+syIsIumfsyIsIuK+tCIsIumggSIsIuK+tSIsIumiqCIsIuK+tiIsIumjmyIsIuK+tyIsIumjnyIsIuK+uCIsIummliIsIuK+uSIsIummmSIsIuK+uiIsIummrCIsIuK+uyIsIumqqCIsIuK+vCIsIumrmCIsIuK+vSIsIumrnyIsIuK+viIsIumspSIsIuK+vyIsIumsryIsIuK/gCIsIumssiIsIuK/gSIsIumsvCIsIuK/giIsIumtmiIsIuK/gyIsIumzpSIsIuK/hCIsIum5tSIsIuK/hSIsIum5vyIsIuK/hiIsIum6pSIsIuK/hyIsIum6uyIsIuK/iCIsIum7gyIsIuK/iSIsIum7jSIsIuK/iiIsIum7kSIsIuK/iyIsIum7uSIsIuK/jCIsIum7vSIsIuK/jSIsIum8jiIsIuK/jiIsIum8kyIsIuK/jyIsIum8oCIsIuK/kCIsIum8uyIsIuK/kSIsIum9iiIsIuK/kiIsIum9kiIsIuK/kyIsIum+jSIsIuK/lCIsIum+nCIsIuK/lSIsIum+oCIsIuOAtiIsIuOAkiIsIuOAuCIsIuWNgSIsIuOAuSIsIuWNhCIsIuOAuiIsIuWNhSIsIuOCmyIsIiDjgpkiLCLjgpwiLCIg44KaIiwi44SxIiwi4YSAIiwi44SyIiwi4YSBIiwi44SzIiwi4YaqIiwi44S0Iiwi4YSCIiwi44S1Iiwi4YasIiwi44S2Iiwi4YatIiwi44S3Iiwi4YSDIiwi44S4Iiwi4YSEIiwi44S5Iiwi4YSFIiwi44S6Iiwi4YawIiwi44S7Iiwi4YaxIiwi44S8Iiwi4YayIiwi44S9Iiwi4YazIiwi44S+Iiwi4Ya0Iiwi44S/Iiwi4Ya1Iiwi44WAIiwi4YSaIiwi44WBIiwi4YSGIiwi44WCIiwi4YSHIiwi44WDIiwi4YSIIiwi44WEIiwi4YShIiwi44WFIiwi4YSJIiwi44WGIiwi4YSKIiwi44WHIiwi4YSLIiwi44WIIiwi4YSMIiwi44WJIiwi4YSNIiwi44WKIiwi4YSOIiwi44WLIiwi4YSPIiwi44WMIiwi4YSQIiwi44WNIiwi4YSRIiwi44WOIiwi4YSSIiwi44WPIiwi4YWhIiwi44WQIiwi4YWiIiwi44WRIiwi4YWjIiwi44WSIiwi4YWkIiwi44WTIiwi4YWlIiwi44WUIiwi4YWmIiwi44WVIiwi4YWnIiwi44WWIiwi4YWoIiwi44WXIiwi4YWpIiwi44WYIiwi4YWqIiwi44WZIiwi4YWrIiwi44WaIiwi4YWsIiwi44WbIiwi4YWtIiwi44WcIiwi4YWuIiwi44WdIiwi4YWvIiwi44WeIiwi4YWwIiwi44WfIiwi4YWxIiwi44WgIiwi4YWyIiwi44WhIiwi4YWzIiwi44WiIiwi4YW0Iiwi44WjIiwi4YW1Iiwi44WkIiwi4YWgIiwi44WlIiwi4YSUIiwi44WmIiwi4YSVIiwi44WnIiwi4YeHIiwi44WoIiwi4YeIIiwi44WpIiwi4YeMIiwi44WqIiwi4YeOIiwi44WrIiwi4YeTIiwi44WsIiwi4YeXIiwi44WtIiwi4YeZIiwi44WuIiwi4YScIiwi44WvIiwi4YedIiwi44WwIiwi4YefIiwi44WxIiwi4YSdIiwi44WyIiwi4YSeIiwi44WzIiwi4YSgIiwi44W0Iiwi4YSiIiwi44W1Iiwi4YSjIiwi44W2Iiwi4YSnIiwi44W3Iiwi4YSpIiwi44W4Iiwi4YSrIiwi44W5Iiwi4YSsIiwi44W6Iiwi4YStIiwi44W7Iiwi4YSuIiwi44W8Iiwi4YSvIiwi44W9Iiwi4YSyIiwi44W+Iiwi4YS2Iiwi44W/Iiwi4YWAIiwi44aAIiwi4YWHIiwi44aBIiwi4YWMIiwi44aCIiwi4YexIiwi44aDIiwi4YeyIiwi44aEIiwi4YWXIiwi44aFIiwi4YWYIiwi44aGIiwi4YWZIiwi44aHIiwi4YaEIiwi44aIIiwi4YaFIiwi44aJIiwi4YaIIiwi44aKIiwi4YaRIiwi44aLIiwi4YaSIiwi44aMIiwi4YaUIiwi44aNIiwi4YaeIiwi44aOIiwi4YahIiwi44iAIiwiKOGEgCkiLCLjiIEiLCIo4YSCKSIsIuOIgiIsIijhhIMpIiwi44iDIiwiKOGEhSkiLCLjiIQiLCIo4YSGKSIsIuOIhSIsIijhhIcpIiwi44iGIiwiKOGEiSkiLCLjiIciLCIo4YSLKSIsIuOIiCIsIijhhIwpIiwi44iJIiwiKOGEjikiLCLjiIoiLCIo4YSPKSIsIuOIiyIsIijhhJApIiwi44iMIiwiKOGEkSkiLCLjiI0iLCIo4YSSKSIsIuOIjiIsIijhhIDhhaEpIiwi44iPIiwiKOGEguGFoSkiLCLjiJAiLCIo4YSD4YWhKSIsIuOIkSIsIijhhIXhhaEpIiwi44iSIiwiKOGEhuGFoSkiLCLjiJMiLCIo4YSH4YWhKSIsIuOIlCIsIijhhInhhaEpIiwi44iVIiwiKOGEi+GFoSkiLCLjiJYiLCIo4YSM4YWhKSIsIuOIlyIsIijhhI7hhaEpIiwi44iYIiwiKOGEj+GFoSkiLCLjiJkiLCIo4YSQ4YWhKSIsIuOImiIsIijhhJHhhaEpIiwi44ibIiwiKOGEkuGFoSkiLCLjiJwiLCIo4YSM4YWuKSIsIuOInSIsIijhhIvhhanhhIzhhaXhhqspIiwi44ieIiwiKOGEi+GFqeGEkuGFrikiLCLjiKAiLCIo5LiAKSIsIuOIoSIsIijkuowpIiwi44iiIiwiKOS4iSkiLCLjiKMiLCIo5ZubKSIsIuOIpCIsIijkupQpIiwi44ilIiwiKOWFrSkiLCLjiKYiLCIo5LiDKSIsIuOIpyIsIijlhaspIiwi44ioIiwiKOS5nSkiLCLjiKkiLCIo5Y2BKSIsIuOIqiIsIijmnIgpIiwi44irIiwiKOeBqykiLCLjiKwiLCIo5rC0KSIsIuOIrSIsIijmnKgpIiwi44iuIiwiKOmHkSkiLCLjiK8iLCIo5ZyfKSIsIuOIsCIsIijml6UpIiwi44ixIiwiKOagqikiLCLjiLIiLCIo5pyJKSIsIuOIsyIsIijnpL4pIiwi44i0IiwiKOWQjSkiLCLjiLUiLCIo54m5KSIsIuOItiIsIijosqEpIiwi44i3IiwiKOelnSkiLCLjiLgiLCIo5Yq0KSIsIuOIuSIsIijku6MpIiwi44i6IiwiKOWRvCkiLCLjiLsiLCIo5a2mKSIsIuOIvCIsIijnm6MpIiwi44i9IiwiKOS8gSkiLCLjiL4iLCIo6LOHKSIsIuOIvyIsIijljZQpIiwi44mAIiwiKOelrSkiLCLjiYEiLCIo5LyRKSIsIuOJgiIsIijoh6opIiwi44mDIiwiKOiHsykiLCLji4AiLCIx5pyIIiwi44uBIiwiMuaciCIsIuOLgiIsIjPmnIgiLCLji4MiLCI05pyIIiwi44uEIiwiNeaciCIsIuOLhSIsIjbmnIgiLCLji4YiLCI35pyIIiwi44uHIiwiOOaciCIsIuOLiCIsIjnmnIgiLCLji4kiLCIxMOaciCIsIuOLiiIsIjEx5pyIIiwi44uLIiwiMTLmnIgiLCLjjZgiLCIw54K5Iiwi442ZIiwiMeeCuSIsIuONmiIsIjLngrkiLCLjjZsiLCIz54K5Iiwi442cIiwiNOeCuSIsIuONnSIsIjXngrkiLCLjjZ4iLCI254K5Iiwi442fIiwiN+eCuSIsIuONoCIsIjjngrkiLCLjjaEiLCI554K5Iiwi442iIiwiMTDngrkiLCLjjaMiLCIxMeeCuSIsIuONpCIsIjEy54K5Iiwi442lIiwiMTPngrkiLCLjjaYiLCIxNOeCuSIsIuONpyIsIjE154K5Iiwi442oIiwiMTbngrkiLCLjjakiLCIxN+eCuSIsIuONqiIsIjE454K5Iiwi442rIiwiMTnngrkiLCLjjawiLCIyMOeCuSIsIuONrSIsIjIx54K5Iiwi442uIiwiMjLngrkiLCLjja8iLCIyM+eCuSIsIuONsCIsIjI054K5Iiwi44+gIiwiMeaXpSIsIuOPoSIsIjLml6UiLCLjj6IiLCIz5pelIiwi44+jIiwiNOaXpSIsIuOPpCIsIjXml6UiLCLjj6UiLCI25pelIiwi44+mIiwiN+aXpSIsIuOPpyIsIjjml6UiLCLjj6giLCI55pelIiwi44+pIiwiMTDml6UiLCLjj6oiLCIxMeaXpSIsIuOPqyIsIjEy5pelIiwi44+sIiwiMTPml6UiLCLjj60iLCIxNOaXpSIsIuOPriIsIjE15pelIiwi44+vIiwiMTbml6UiLCLjj7AiLCIxN+aXpSIsIuOPsSIsIjE45pelIiwi44+yIiwiMTnml6UiLCLjj7MiLCIyMOaXpSIsIuOPtCIsIjIx5pelIiwi44+1IiwiMjLml6UiLCLjj7YiLCIyM+aXpSIsIuOPtyIsIjI05pelIiwi44+4IiwiMjXml6UiLCLjj7kiLCIyNuaXpSIsIuOPuiIsIjI35pelIiwi44+7IiwiMjjml6UiLCLjj7wiLCIyOeaXpSIsIuOPvSIsIjMw5pelIiwi44++IiwiMzHml6UiLCLvrIAiLCJmZiIsIu+sgSIsImZpIiwi76yCIiwiZmwiLCLvrIMiLCJmZmkiLCLvrIQiLCJmZmwiLCLvrIUiLCLFv3QiLCLvrIYiLCJzdCIsIu+skyIsItW01bYiLCLvrJQiLCLVtNWlIiwi76yVIiwi1bTVqyIsIu+sliIsItW+1bYiLCLvrJciLCLVtNWtIiwi762PIiwi15DXnCIsIu+tkCIsItmxIiwi762RIiwi2bEiLCLvrZIiLCLZuyIsIu+tkyIsItm7Iiwi762UIiwi2bsiLCLvrZUiLCLZuyIsIu+tliIsItm+Iiwi762XIiwi2b4iLCLvrZgiLCLZviIsIu+tmSIsItm+Iiwi762aIiwi2oAiLCLvrZsiLCLagCIsIu+tnCIsItqAIiwi762dIiwi2oAiLCLvrZ4iLCLZuiIsIu+tnyIsItm6Iiwi762gIiwi2boiLCLvraEiLCLZuiIsIu+toiIsItm/Iiwi762jIiwi2b8iLCLvraQiLCLZvyIsIu+tpSIsItm/Iiwi762mIiwi2bkiLCLvraciLCLZuSIsIu+tqCIsItm5Iiwi762pIiwi2bkiLCLvraoiLCLapCIsIu+tqyIsItqkIiwi762sIiwi2qQiLCLvra0iLCLapCIsIu+triIsItqmIiwi762vIiwi2qYiLCLvrbAiLCLapiIsIu+tsSIsItqmIiwi762yIiwi2oQiLCLvrbMiLCLahCIsIu+ttCIsItqEIiwi7621Iiwi2oQiLCLvrbYiLCLagyIsIu+ttyIsItqDIiwi7624Iiwi2oMiLCLvrbkiLCLagyIsIu+tuiIsItqGIiwi7627Iiwi2oYiLCLvrbwiLCLahiIsIu+tvSIsItqGIiwi762+Iiwi2ociLCLvrb8iLCLahyIsIu+ugCIsItqHIiwi766BIiwi2ociLCLvroIiLCLajSIsIu+ugyIsItqNIiwi766EIiwi2owiLCLvroUiLCLajCIsIu+uhiIsItqOIiwi766HIiwi2o4iLCLvrogiLCLaiCIsIu+uiSIsItqIIiwi766KIiwi2pgiLCLvrosiLCLamCIsIu+ujCIsItqRIiwi766NIiwi2pEiLCLvro4iLCLaqSIsIu+ujyIsItqpIiwi766QIiwi2qkiLCLvrpEiLCLaqSIsIu+ukiIsItqvIiwi766TIiwi2q8iLCLvrpQiLCLaryIsIu+ulSIsItqvIiwi766WIiwi2rMiLCLvrpciLCLasyIsIu+umCIsItqzIiwi766ZIiwi2rMiLCLvrpoiLCLasSIsIu+umyIsItqxIiwi766cIiwi2rEiLCLvrp0iLCLasSIsIu+uniIsItq6Iiwi766fIiwi2roiLCLvrqAiLCLauyIsIu+uoSIsItq7Iiwi766iIiwi2rsiLCLvrqMiLCLauyIsIu+upCIsItuAIiwi766lIiwi24AiLCLvrqYiLCLbgSIsIu+upyIsItuBIiwi766oIiwi24EiLCLvrqkiLCLbgSIsIu+uqiIsItq+Iiwi766rIiwi2r4iLCLvrqwiLCLaviIsIu+urSIsItq+Iiwi766uIiwi25IiLCLvrq8iLCLbkiIsIu+usCIsItuTIiwi766xIiwi25MiLCLvr5MiLCLarSIsIu+vlCIsItqtIiwi76+VIiwi2q0iLCLvr5YiLCLarSIsIu+vlyIsItuHIiwi76+YIiwi24ciLCLvr5kiLCLbhiIsIu+vmiIsItuGIiwi76+bIiwi24giLCLvr5wiLCLbiCIsIu+vnSIsItm3Iiwi76+eIiwi24siLCLvr58iLCLbiyIsIu+voCIsItuFIiwi76+hIiwi24UiLCLvr6IiLCLbiSIsIu+voyIsItuJIiwi76+kIiwi25AiLCLvr6UiLCLbkCIsIu+vpiIsItuQIiwi76+nIiwi25AiLCLvr6giLCLZiSIsIu+vqSIsItmJIiwi76+qIiwi2KbYpyIsIu+vqyIsItim2KciLCLvr6wiLCLYptuVIiwi76+tIiwi2KbblSIsIu+vriIsItim2YgiLCLvr68iLCLYptmIIiwi76+wIiwi2KbbhyIsIu+vsSIsItim24ciLCLvr7IiLCLYptuGIiwi76+zIiwi2KbbhiIsIu+vtCIsItim24giLCLvr7UiLCLYptuIIiwi76+2Iiwi2KbbkCIsIu+vtyIsItim25AiLCLvr7giLCLYptuQIiwi76+5Iiwi2KbZiSIsIu+vuiIsItim2YkiLCLvr7siLCLYptmJIiwi76+8Iiwi24wiLCLvr70iLCLbjCIsIu+vviIsItuMIiwi76+/Iiwi24wiLCLvsIAiLCLYptisIiwi77CBIiwi2KbYrSIsIu+wgiIsItim2YUiLCLvsIMiLCLYptmJIiwi77CEIiwi2KbZiiIsIu+whSIsItio2KwiLCLvsIYiLCLYqNitIiwi77CHIiwi2KjYriIsIu+wiCIsItio2YUiLCLvsIkiLCLYqNmJIiwi77CKIiwi2KjZiiIsIu+wiyIsItiq2KwiLCLvsIwiLCLYqtitIiwi77CNIiwi2KrYriIsIu+wjiIsItiq2YUiLCLvsI8iLCLYqtmJIiwi77CQIiwi2KrZiiIsIu+wkSIsItir2KwiLCLvsJIiLCLYq9mFIiwi77CTIiwi2KvZiSIsIu+wlCIsItir2YoiLCLvsJUiLCLYrNitIiwi77CWIiwi2KzZhSIsIu+wlyIsItit2KwiLCLvsJgiLCLYrdmFIiwi77CZIiwi2K7YrCIsIu+wmiIsItiu2K0iLCLvsJsiLCLYrtmFIiwi77CcIiwi2LPYrCIsIu+wnSIsItiz2K0iLCLvsJ4iLCLYs9iuIiwi77CfIiwi2LPZhSIsIu+woCIsIti12K0iLCLvsKEiLCLYtdmFIiwi77CiIiwi2LbYrCIsIu+woyIsIti22K0iLCLvsKQiLCLYttiuIiwi77ClIiwi2LbZhSIsIu+wpiIsIti32K0iLCLvsKciLCLYt9mFIiwi77CoIiwi2LjZhSIsIu+wqSIsIti52KwiLCLvsKoiLCLYudmFIiwi77CrIiwi2LrYrCIsIu+wrCIsIti62YUiLCLvsK0iLCLZgdisIiwi77CuIiwi2YHYrSIsIu+wryIsItmB2K4iLCLvsLAiLCLZgdmFIiwi77CxIiwi2YHZiSIsIu+wsiIsItmB2YoiLCLvsLMiLCLZgtitIiwi77C0Iiwi2YLZhSIsIu+wtSIsItmC2YkiLCLvsLYiLCLZgtmKIiwi77C3Iiwi2YPYpyIsIu+wuCIsItmD2KwiLCLvsLkiLCLZg9itIiwi77C6Iiwi2YPYriIsIu+wuyIsItmD2YQiLCLvsLwiLCLZg9mFIiwi77C9Iiwi2YPZiSIsIu+wviIsItmD2YoiLCLvsL8iLCLZhNisIiwi77GAIiwi2YTYrSIsIu+xgSIsItmE2K4iLCLvsYIiLCLZhNmFIiwi77GDIiwi2YTZiSIsIu+xhCIsItmE2YoiLCLvsYUiLCLZhdisIiwi77GGIiwi2YXYrSIsIu+xhyIsItmF2K4iLCLvsYgiLCLZhdmFIiwi77GJIiwi2YXZiSIsIu+xiiIsItmF2YoiLCLvsYsiLCLZhtisIiwi77GMIiwi2YbYrSIsIu+xjSIsItmG2K4iLCLvsY4iLCLZhtmFIiwi77GPIiwi2YbZiSIsIu+xkCIsItmG2YoiLCLvsZEiLCLZh9isIiwi77GSIiwi2YfZhSIsIu+xkyIsItmH2YkiLCLvsZQiLCLZh9mKIiwi77GVIiwi2YrYrCIsIu+xliIsItmK2K0iLCLvsZciLCLZitiuIiwi77GYIiwi2YrZhSIsIu+xmSIsItmK2YkiLCLvsZoiLCLZitmKIiwi77GbIiwi2LDZsCIsIu+xnCIsItix2bAiLCLvsZ0iLCLZidmwIiwi77GeIiwiINmM2ZEiLCLvsZ8iLCIg2Y3ZkSIsIu+xoCIsIiDZjtmRIiwi77GhIiwiINmP2ZEiLCLvsaIiLCIg2ZDZkSIsIu+xoyIsIiDZkdmwIiwi77GkIiwi2KbYsSIsIu+xpSIsItim2LIiLCLvsaYiLCLYptmFIiwi77GnIiwi2KbZhiIsIu+xqCIsItim2YkiLCLvsakiLCLYptmKIiwi77GqIiwi2KjYsSIsIu+xqyIsItio2LIiLCLvsawiLCLYqNmFIiwi77GtIiwi2KjZhiIsIu+xriIsItio2YkiLCLvsa8iLCLYqNmKIiwi77GwIiwi2KrYsSIsIu+xsSIsItiq2LIiLCLvsbIiLCLYqtmFIiwi77GzIiwi2KrZhiIsIu+xtCIsItiq2YkiLCLvsbUiLCLYqtmKIiwi77G2Iiwi2KvYsSIsIu+xtyIsItir2LIiLCLvsbgiLCLYq9mFIiwi77G5Iiwi2KvZhiIsIu+xuiIsItir2YkiLCLvsbsiLCLYq9mKIiwi77G8Iiwi2YHZiSIsIu+xvSIsItmB2YoiLCLvsb4iLCLZgtmJIiwi77G/Iiwi2YLZiiIsIu+ygCIsItmD2KciLCLvsoEiLCLZg9mEIiwi77KCIiwi2YPZhSIsIu+ygyIsItmD2YkiLCLvsoQiLCLZg9mKIiwi77KFIiwi2YTZhSIsIu+yhiIsItmE2YkiLCLvsociLCLZhNmKIiwi77KIIiwi2YXYpyIsIu+yiSIsItmF2YUiLCLvsooiLCLZhtixIiwi77KLIiwi2YbYsiIsIu+yjCIsItmG2YUiLCLvso0iLCLZhtmGIiwi77KOIiwi2YbZiSIsIu+yjyIsItmG2YoiLCLvspAiLCLZidmwIiwi77KRIiwi2YrYsSIsIu+ykiIsItmK2LIiLCLvspMiLCLZitmFIiwi77KUIiwi2YrZhiIsIu+ylSIsItmK2YkiLCLvspYiLCLZitmKIiwi77KXIiwi2KbYrCIsIu+ymCIsItim2K0iLCLvspkiLCLYptiuIiwi77KaIiwi2KbZhSIsIu+ymyIsItim2YciLCLvspwiLCLYqNisIiwi77KdIiwi2KjYrSIsIu+yniIsItio2K4iLCLvsp8iLCLYqNmFIiwi77KgIiwi2KjZhyIsIu+yoSIsItiq2KwiLCLvsqIiLCLYqtitIiwi77KjIiwi2KrYriIsIu+ypCIsItiq2YUiLCLvsqUiLCLYqtmHIiwi77KmIiwi2KvZhSIsIu+ypyIsItis2K0iLCLvsqgiLCLYrNmFIiwi77KpIiwi2K3YrCIsIu+yqiIsItit2YUiLCLvsqsiLCLYrtisIiwi77KsIiwi2K7ZhSIsIu+yrSIsItiz2KwiLCLvsq4iLCLYs9itIiwi77KvIiwi2LPYriIsIu+ysCIsItiz2YUiLCLvsrEiLCLYtditIiwi77KyIiwi2LXYriIsIu+ysyIsIti12YUiLCLvsrQiLCLYttisIiwi77K1Iiwi2LbYrSIsIu+ytiIsIti22K4iLCLvsrciLCLYttmFIiwi77K4Iiwi2LfYrSIsIu+yuSIsIti42YUiLCLvsroiLCLYudisIiwi77K7Iiwi2LnZhSIsIu+yvCIsIti62KwiLCLvsr0iLCLYutmFIiwi77K+Iiwi2YHYrCIsIu+yvyIsItmB2K0iLCLvs4AiLCLZgdiuIiwi77OBIiwi2YHZhSIsIu+zgiIsItmC2K0iLCLvs4MiLCLZgtmFIiwi77OEIiwi2YPYrCIsIu+zhSIsItmD2K0iLCLvs4YiLCLZg9iuIiwi77OHIiwi2YPZhCIsIu+ziCIsItmD2YUiLCLvs4kiLCLZhNisIiwi77OKIiwi2YTYrSIsIu+ziyIsItmE2K4iLCLvs4wiLCLZhNmFIiwi77ONIiwi2YTZhyIsIu+zjiIsItmF2KwiLCLvs48iLCLZhditIiwi77OQIiwi2YXYriIsIu+zkSIsItmF2YUiLCLvs5IiLCLZhtisIiwi77OTIiwi2YbYrSIsIu+zlCIsItmG2K4iLCLvs5UiLCLZhtmFIiwi77OWIiwi2YbZhyIsIu+zlyIsItmH2KwiLCLvs5giLCLZh9mFIiwi77OZIiwi2YfZsCIsIu+zmiIsItmK2KwiLCLvs5siLCLZititIiwi77OcIiwi2YrYriIsIu+znSIsItmK2YUiLCLvs54iLCLZitmHIiwi77OfIiwi2KbZhSIsIu+zoCIsItim2YciLCLvs6EiLCLYqNmFIiwi77OiIiwi2KjZhyIsIu+zoyIsItiq2YUiLCLvs6QiLCLYqtmHIiwi77OlIiwi2KvZhSIsIu+zpiIsItir2YciLCLvs6ciLCLYs9mFIiwi77OoIiwi2LPZhyIsIu+zqSIsIti02YUiLCLvs6oiLCLYtNmHIiwi77OrIiwi2YPZhCIsIu+zrCIsItmD2YUiLCLvs60iLCLZhNmFIiwi77OuIiwi2YbZhSIsIu+zryIsItmG2YciLCLvs7AiLCLZitmFIiwi77OxIiwi2YrZhyIsIu+zsiIsItmA2Y7ZkSIsIu+zsyIsItmA2Y/ZkSIsIu+ztCIsItmA2ZDZkSIsIu+ztSIsIti32YkiLCLvs7YiLCLYt9mKIiwi77O3Iiwi2LnZiSIsIu+zuCIsIti52YoiLCLvs7kiLCLYutmJIiwi77O6Iiwi2LrZiiIsIu+zuyIsItiz2YkiLCLvs7wiLCLYs9mKIiwi77O9Iiwi2LTZiSIsIu+zviIsIti02YoiLCLvs78iLCLYrdmJIiwi77SAIiwi2K3ZiiIsIu+0gSIsItis2YkiLCLvtIIiLCLYrNmKIiwi77SDIiwi2K7ZiSIsIu+0hCIsItiu2YoiLCLvtIUiLCLYtdmJIiwi77SGIiwi2LXZiiIsIu+0hyIsIti22YkiLCLvtIgiLCLYttmKIiwi77SJIiwi2LTYrCIsIu+0iiIsIti02K0iLCLvtIsiLCLYtNiuIiwi77SMIiwi2LTZhSIsIu+0jSIsIti02LEiLCLvtI4iLCLYs9ixIiwi77SPIiwi2LXYsSIsIu+0kCIsIti22LEiLCLvtJEiLCLYt9mJIiwi77SSIiwi2LfZiiIsIu+0kyIsIti52YkiLCLvtJQiLCLYudmKIiwi77SVIiwi2LrZiSIsIu+0liIsIti62YoiLCLvtJciLCLYs9mJIiwi77SYIiwi2LPZiiIsIu+0mSIsIti02YkiLCLvtJoiLCLYtNmKIiwi77SbIiwi2K3ZiSIsIu+0nCIsItit2YoiLCLvtJ0iLCLYrNmJIiwi77SeIiwi2KzZiiIsIu+0nyIsItiu2YkiLCLvtKAiLCLYrtmKIiwi77ShIiwi2LXZiSIsIu+0oiIsIti12YoiLCLvtKMiLCLYttmJIiwi77SkIiwi2LbZiiIsIu+0pSIsIti02KwiLCLvtKYiLCLYtNitIiwi77SnIiwi2LTYriIsIu+0qCIsIti02YUiLCLvtKkiLCLYtNixIiwi77SqIiwi2LPYsSIsIu+0qyIsIti12LEiLCLvtKwiLCLYttixIiwi77StIiwi2LTYrCIsIu+0riIsIti02K0iLCLvtK8iLCLYtNiuIiwi77SwIiwi2LTZhSIsIu+0sSIsItiz2YciLCLvtLIiLCLYtNmHIiwi77SzIiwi2LfZhSIsIu+0tCIsItiz2KwiLCLvtLUiLCLYs9itIiwi77S2Iiwi2LPYriIsIu+0tyIsIti02KwiLCLvtLgiLCLYtNitIiwi77S5Iiwi2LTYriIsIu+0uiIsIti32YUiLCLvtLsiLCLYuNmFIiwi77S8Iiwi2KfZiyIsIu+0vSIsItin2YsiLCLvtZAiLCLYqtis2YUiLCLvtZEiLCLYqtit2KwiLCLvtZIiLCLYqtit2KwiLCLvtZMiLCLYqtit2YUiLCLvtZQiLCLYqtiu2YUiLCLvtZUiLCLYqtmF2KwiLCLvtZYiLCLYqtmF2K0iLCLvtZciLCLYqtmF2K4iLCLvtZgiLCLYrNmF2K0iLCLvtZkiLCLYrNmF2K0iLCLvtZoiLCLYrdmF2YoiLCLvtZsiLCLYrdmF2YkiLCLvtZwiLCLYs9it2KwiLCLvtZ0iLCLYs9is2K0iLCLvtZ4iLCLYs9is2YkiLCLvtZ8iLCLYs9mF2K0iLCLvtaAiLCLYs9mF2K0iLCLvtaEiLCLYs9mF2KwiLCLvtaIiLCLYs9mF2YUiLCLvtaMiLCLYs9mF2YUiLCLvtaQiLCLYtdit2K0iLCLvtaUiLCLYtdit2K0iLCLvtaYiLCLYtdmF2YUiLCLvtaciLCLYtNit2YUiLCLvtagiLCLYtNit2YUiLCLvtakiLCLYtNis2YoiLCLvtaoiLCLYtNmF2K4iLCLvtasiLCLYtNmF2K4iLCLvtawiLCLYtNmF2YUiLCLvta0iLCLYtNmF2YUiLCLvta4iLCLYttit2YkiLCLvta8iLCLYttiu2YUiLCLvtbAiLCLYttiu2YUiLCLvtbEiLCLYt9mF2K0iLCLvtbIiLCLYt9mF2K0iLCLvtbMiLCLYt9mF2YUiLCLvtbQiLCLYt9mF2YoiLCLvtbUiLCLYudis2YUiLCLvtbYiLCLYudmF2YUiLCLvtbciLCLYudmF2YUiLCLvtbgiLCLYudmF2YkiLCLvtbkiLCLYutmF2YUiLCLvtboiLCLYutmF2YoiLCLvtbsiLCLYutmF2YkiLCLvtbwiLCLZgdiu2YUiLCLvtb0iLCLZgdiu2YUiLCLvtb4iLCLZgtmF2K0iLCLvtb8iLCLZgtmF2YUiLCLvtoAiLCLZhNit2YUiLCLvtoEiLCLZhNit2YoiLCLvtoIiLCLZhNit2YkiLCLvtoMiLCLZhNis2KwiLCLvtoQiLCLZhNis2KwiLCLvtoUiLCLZhNiu2YUiLCLvtoYiLCLZhNiu2YUiLCLvtociLCLZhNmF2K0iLCLvtogiLCLZhNmF2K0iLCLvtokiLCLZhdit2KwiLCLvtooiLCLZhdit2YUiLCLvtosiLCLZhdit2YoiLCLvtowiLCLZhdis2K0iLCLvto0iLCLZhdis2YUiLCLvto4iLCLZhdiu2KwiLCLvto8iLCLZhdiu2YUiLCLvtpIiLCLZhdis2K4iLCLvtpMiLCLZh9mF2KwiLCLvtpQiLCLZh9mF2YUiLCLvtpUiLCLZhtit2YUiLCLvtpYiLCLZhtit2YkiLCLvtpciLCLZhtis2YUiLCLvtpgiLCLZhtis2YUiLCLvtpkiLCLZhtis2YkiLCLvtpoiLCLZhtmF2YoiLCLvtpsiLCLZhtmF2YkiLCLvtpwiLCLZitmF2YUiLCLvtp0iLCLZitmF2YUiLCLvtp4iLCLYqNiu2YoiLCLvtp8iLCLYqtis2YoiLCLvtqAiLCLYqtis2YkiLCLvtqEiLCLYqtiu2YoiLCLvtqIiLCLYqtiu2YkiLCLvtqMiLCLYqtmF2YoiLCLvtqQiLCLYqtmF2YkiLCLvtqUiLCLYrNmF2YoiLCLvtqYiLCLYrNit2YkiLCLvtqciLCLYrNmF2YkiLCLvtqgiLCLYs9iu2YkiLCLvtqkiLCLYtdit2YoiLCLvtqoiLCLYtNit2YoiLCLvtqsiLCLYttit2YoiLCLvtqwiLCLZhNis2YoiLCLvtq0iLCLZhNmF2YoiLCLvtq4iLCLZitit2YoiLCLvtq8iLCLZitis2YoiLCLvtrAiLCLZitmF2YoiLCLvtrEiLCLZhdmF2YoiLCLvtrIiLCLZgtmF2YoiLCLvtrMiLCLZhtit2YoiLCLvtrQiLCLZgtmF2K0iLCLvtrUiLCLZhNit2YUiLCLvtrYiLCLYudmF2YoiLCLvtrciLCLZg9mF2YoiLCLvtrgiLCLZhtis2K0iLCLvtrkiLCLZhdiu2YoiLCLvtroiLCLZhNis2YUiLCLvtrsiLCLZg9mF2YUiLCLvtrwiLCLZhNis2YUiLCLvtr0iLCLZhtis2K0iLCLvtr4iLCLYrNit2YoiLCLvtr8iLCLYrdis2YoiLCLvt4AiLCLZhdis2YoiLCLvt4EiLCLZgdmF2YoiLCLvt4IiLCLYqNit2YoiLCLvt4MiLCLZg9mF2YUiLCLvt4QiLCLYudis2YUiLCLvt4UiLCLYtdmF2YUiLCLvt4YiLCLYs9iu2YoiLCLvt4ciLCLZhtis2YoiLCLvuYkiLCLigL4iLCLvuYoiLCLigL4iLCLvuYsiLCLigL4iLCLvuYwiLCLigL4iLCLvuY0iLCJfIiwi77mOIiwiXyIsIu+5jyIsIl8iLCLvuoAiLCLYoSIsIu+6gSIsItiiIiwi77qCIiwi2KIiLCLvuoMiLCLYoyIsIu+6hCIsItijIiwi77qFIiwi2KQiLCLvuoYiLCLYpCIsIu+6hyIsItilIiwi77qIIiwi2KUiLCLvuokiLCLYpiIsIu+6iiIsItimIiwi77qLIiwi2KYiLCLvuowiLCLYpiIsIu+6jSIsItinIiwi77qOIiwi2KciLCLvuo8iLCLYqCIsIu+6kCIsItioIiwi77qRIiwi2KgiLCLvupIiLCLYqCIsIu+6kyIsItipIiwi77qUIiwi2KkiLCLvupUiLCLYqiIsIu+6liIsItiqIiwi77qXIiwi2KoiLCLvupgiLCLYqiIsIu+6mSIsItirIiwi77qaIiwi2KsiLCLvupsiLCLYqyIsIu+6nCIsItirIiwi77qdIiwi2KwiLCLvup4iLCLYrCIsIu+6nyIsItisIiwi77qgIiwi2KwiLCLvuqEiLCLYrSIsIu+6oiIsItitIiwi77qjIiwi2K0iLCLvuqQiLCLYrSIsIu+6pSIsItiuIiwi77qmIiwi2K4iLCLvuqciLCLYriIsIu+6qCIsItiuIiwi77qpIiwi2K8iLCLvuqoiLCLYryIsIu+6qyIsItiwIiwi77qsIiwi2LAiLCLvuq0iLCLYsSIsIu+6riIsItixIiwi77qvIiwi2LIiLCLvurAiLCLYsiIsIu+6sSIsItizIiwi77qyIiwi2LMiLCLvurMiLCLYsyIsIu+6tCIsItizIiwi77q1Iiwi2LQiLCLvurYiLCLYtCIsIu+6tyIsIti0Iiwi77q4Iiwi2LQiLCLvurkiLCLYtSIsIu+6uiIsIti1Iiwi77q7Iiwi2LUiLCLvurwiLCLYtSIsIu+6vSIsIti2Iiwi77q+Iiwi2LYiLCLvur8iLCLYtiIsIu+7gCIsIti2Iiwi77uBIiwi2LciLCLvu4IiLCLYtyIsIu+7gyIsIti3Iiwi77uEIiwi2LciLCLvu4UiLCLYuCIsIu+7hiIsIti4Iiwi77uHIiwi2LgiLCLvu4giLCLYuCIsIu+7iSIsIti5Iiwi77uKIiwi2LkiLCLvu4siLCLYuSIsIu+7jCIsIti5Iiwi77uNIiwi2LoiLCLvu44iLCLYuiIsIu+7jyIsIti6Iiwi77uQIiwi2LoiLCLvu5EiLCLZgSIsIu+7kiIsItmBIiwi77uTIiwi2YEiLCLvu5QiLCLZgSIsIu+7lSIsItmCIiwi77uWIiwi2YIiLCLvu5ciLCLZgiIsIu+7mCIsItmCIiwi77uZIiwi2YMiLCLvu5oiLCLZgyIsIu+7myIsItmDIiwi77ucIiwi2YMiLCLvu50iLCLZhCIsIu+7niIsItmEIiwi77ufIiwi2YQiLCLvu6AiLCLZhCIsIu+7oSIsItmFIiwi77uiIiwi2YUiLCLvu6MiLCLZhSIsIu+7pCIsItmFIiwi77ulIiwi2YYiLCLvu6YiLCLZhiIsIu+7pyIsItmGIiwi77uoIiwi2YYiLCLvu6kiLCLZhyIsIu+7qiIsItmHIiwi77urIiwi2YciLCLvu6wiLCLZhyIsIu+7rSIsItmIIiwi77uuIiwi2YgiLCLvu68iLCLZiSIsIu+7sCIsItmJIiwi77uxIiwi2YoiLCLvu7IiLCLZiiIsIu+7syIsItmKIiwi77u0Iiwi2YoiLCLvu7UiLCLZhNiiIiwi77u2Iiwi2YTYoiIsIu+7tyIsItmE2KMiLCLvu7giLCLZhNijIiwi77u5Iiwi2YTYpSIsIu+7uiIsItmE2KUiLCLvu7siLCLZhNinIiwi77u8Iiwi2YTYpyJdfSkpO2Z1bmN0aW9uIHJldmVyc2VJZlJ0bChlKXtjb25zdCB0PWUubGVuZ3RoO2lmKHQ8PTF8fCFmdW5jdGlvbiBpc1JUTFJhbmdlRm9yKGUpe2xldCB0PWlbMTNdO2lmKGU+PXQuYmVnaW4mJmU8dC5lbmQpcmV0dXJuITA7dD1pWzExXTtyZXR1cm4gZT49dC5iZWdpbiYmZTx0LmVuZH0oZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gZTtjb25zdCBhPVtdO2ZvcihsZXQgcj10LTE7cj49MDtyLS0pYS5wdXNoKGVbcl0pO3JldHVybiBhLmpvaW4oIiIpfWNvbnN0IG89bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLGM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9Yy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2gobykscj17aXNXaGl0ZXNwYWNlOiEoIWF8fCFhWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKCFhfHwhYVsyXSksaXNJbnZpc2libGVGb3JtYXRNYXJrOiEoIWF8fCFhWzNdKX07Yy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtjLmNsZWFyKCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuZ2V0U2VyaWZGb250cz10LmdldE5vblN0ZEZvbnRNYXA9dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9dC5nZXRGb250TmFtZVRvRmlsZU1hcD12b2lkIDA7dC5nZXRTdGFuZGFyZEZvbnROYW1lPWZ1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxuLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfTt0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciByPWEoNCksbj1hKDM2KTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO2NvbnN0IHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iRm94aXRTYW5zLnBmYiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iRm94aXRTYW5zQm9sZC5wZmIiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJGb3hpdFNhbnNCb2xkSXRhbGljLnBmYiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iRm94aXRTYW5zSXRhbGljLnBmYiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKTt0LmdldEZvbnROYW1lVG9GaWxlTWFwPXM7Y29uc3Qgbz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EiO2UuV2luZ2RpbmdzPSJaYXBmRGluZ2JhdHMiO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09IlphcGZEaW5nYmF0cyJ9KSk7dC5nZXROb25TdGRGb250TWFwPW87Y29uc3QgYz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO2NvbnN0IGw9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwfSkpO3QuZ2V0U3ltYm9sc0ZvbnRzPWw7Y29uc3QgaD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgyKTt0LlRvVW5pY29kZU1hcD1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19O3QuSWRlbnRpdHlUb1VuaWNvZGVNYXA9Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMzMpLG49YSgzNiksaT1hKDIpO3QuQ0ZGRm9udD1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgci5DRkZQYXJzZXIoZSx0LG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IHIuQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChhKXsoMCxpLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbjtpZihhJiZhLmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAscj1hLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09ciYmKHRbcl09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBlPWlbb107bj1yLmNoYXJDb2RlT2YoZSk7dCYmdm9pZCAwIT09dFtuXSYmKG49dFtuXSk7c1tuXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKXtuPXIuY2hhckNvZGVPZihvKTtzW25dPW99cmV0dXJuIHN9bGV0IGM9ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKGM9dC5kZWZhdWx0RW5jb2RpbmcpO3M9KDAsbi50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsYyxpKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2Rpbmcsbj1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihuW2VdPXIpfX1uLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1uKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMzMpLGk9YSgzNykscz1hKDM1KSxvPWEoOCk7ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTMyNzY4O3Q8MTI0MD9hPTEwNzp0PDMzOTAwJiYoYT0xMTMxKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IG49MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxpPWdldFVpbnQxNihlLHQrbik7bGV0IHMsbyxjO2lmKDQ9PT1pKXtnZXRVaW50MTYoZSx0K24rMik7Y29uc3QgYT1nZXRVaW50MTYoZSx0K24rNik+PjE7bz10K24rMTQ7cz1bXTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdPXtlbmQ6Z2V0VWludDE2KGUsbyl9O28rPTI7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5zdGFydD1nZXRVaW50MTYoZSxvKTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdLmlkRGVsdGE9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpe2xldCB0PWdldFVpbnQxNihlLG8pO2lmKDAhPT10KXtzW2NdLmlkcz1bXTtmb3IobGV0IGE9MCxyPXNbY10uZW5kLXNbY10uc3RhcnQrMTthPHI7YSsrKXtzW2NdLmlkc1thXT1nZXRVaW50MTYoZSxvK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PWkpe2NvbnN0IGE9Z2V0VWludDMyKGUsdCtuKzEyKTtvPXQrbisxNjtzPVtdO2ZvcihjPTA7YzxhO2MrKyl7dD1nZXRVaW50MzIoZSxvKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG8rNCksaWREZWx0YTpnZXRVaW50MzIoZSxvKzgpLXR9KTtvKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtpfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IGk9bmV3IG4uQ0ZGUGFyc2VyKG5ldyBvLlN0cmVhbShlLHQsYS10KSx7fSxyKS5wYXJzZSgpO3JldHVybntnbHlwaHM6aS5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOmkudG9wRGljdC5wcml2YXRlRGljdCYmaS50b3BEaWN0LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgmJmkudG9wRGljdC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4JiZpLmdsb2JhbFN1YnJJbmRleC5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsbj0wLGk9ZS5sZW5ndGgtMTtmb3IoO248aTspe2NvbnN0IHQ9bitpKzE+PjE7YTxlW3RdLnN0YXJ0P2k9dC0xOm49dH1lW25dLnN0YXJ0PD1hJiZhPD1lW25dLmVuZCYmKHI9ZVtuXS5pZERlbHRhKyhlW25dLmlkcz9lW25dLmlkc1thLWVbbl0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsbil7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UsYSxyLG5dfSl9bGV0IHI9MDtjb25zdCBuPWdldEludDE2KGUscik7bGV0IGkscz0wLG89MDtyKz0xMDtpZihuPDApZG97aT1nZXRVaW50MTYoZSxyKTtjb25zdCBuPWdldFVpbnQxNihlLHIrMik7cis9NDtsZXQgYyxsO2lmKDEmaSl7aWYoMiZpKXtjPWdldEludDE2KGUscik7bD1nZXRJbnQxNihlLHIrMil9ZWxzZXtjPWdldFVpbnQxNihlLHIpO2w9Z2V0VWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZpKXtjPWdldEludDgoZSxyKyspO2w9Z2V0SW50OChlLHIrKyl9ZWxzZXtjPWVbcisrXTtsPWVbcisrXX1pZigyJmkpe3M9YztvPWx9ZWxzZXtzPTA7bz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZpKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmaSl7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmaSl7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tuXTtpZihnKXt0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbaCxkLGYsdSxzLG9dfSk7Y29tcGlsZUdseWYoZyx0LGEpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pfX13aGlsZSgzMiZpKTtlbHNle2NvbnN0IHQ9W107bGV0IGEsYztmb3IoYT0wO2E8bjthKyspe3QucHVzaChnZXRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK2dldFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe2k9ZVtyKytdO2xldCB0PTE7OCZpJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczppfSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOnMrPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDI6cy09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6cys9ZVtyKytdfWhbYV0ueD1zfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDM2JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0Om8tPWVbcisrXTticmVhaztjYXNlIDM2Om8rPWVbcisrXX1oW2FdLnk9b31sZXQgdT0wO2ZvcihyPTA7cjxuO3IrKyl7Y29uc3QgZT10W3JdLG49aC5zbGljZSh1LGUrMSk7aWYoMSZuWzBdLmZsYWdzKW4ucHVzaChuWzBdKTtlbHNlIGlmKDEmbi5hdCgtMSkuZmxhZ3Mpbi51bnNoaWZ0KG4uYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooblswXS54K24uYXQoLTEpLngpLzIseTooblswXS55K24uYXQoLTEpLnkpLzJ9O24udW5zaGlmdChlKTtuLnB1c2goZSl9bW92ZVRvKG5bMF0ueCxuWzBdLnkpO2ZvcihhPTEsYz1uLmxlbmd0aDthPGM7YSsrKWlmKDEmblthXS5mbGFncylsaW5lVG8oblthXS54LG5bYV0ueSk7ZWxzZSBpZigxJm5bYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhuW2FdLngsblthXS55LG5bYSsxXS54LG5bYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKG5bYV0ueCxuW2FdLnksKG5bYV0ueCtuW2ErMV0ueCkvMiwoblthXS55K25bYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEscixuLGkscyl7dC5wdXNoKHtjbWQ6ImJlemllckN1cnZlVG8iLGFyZ3M6W2UsYSxyLG4saSxzXX0pfWNvbnN0IGk9W107bGV0IG89MCxjPTAsbD0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgaD0wO2Zvcig7aDxlLmxlbmd0aDspe2xldCB1LGQsZixnLHAsbSxiLHksdyxTPSExLHg9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpsKz1pLmxlbmd0aD4+MTtTPSEwO2JyZWFrO2Nhc2UgNDpjKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAxMDp5PWkucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3QmJnQucHJpdmF0ZURpY3Quc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe3krPWdldFN1YnJvdXRpbmVCaWFzKHIpO3c9clt5XX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1hLnN1YnJzW3krYS5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6eD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMzQ6dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsYyxkLHAsbyxwKTt1PW8raS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUscCxkLGMsbyxjKTticmVhaztjYXNlIDM1OnU9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2kucG9wKCk7YnJlYWs7Y2FzZSAzNjp1PW8raS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTttPXAraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxtLG8sbSk7dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2I9bStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsbSxkLGIsbyxjKTticmVhaztjYXNlIDM3OmNvbnN0IGU9byx0PWM7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nO01hdGguYWJzKG8tZSk+TWF0aC5hYnMoYy10KT9vKz1pLnNoaWZ0KCk6Yys9aS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7eH1gKX1icmVhaztjYXNlIDE0OmlmKGkubGVuZ3RoPj00KXtjb25zdCBlPWkucG9wKCkscj1pLnBvcCgpO2M9aS5wb3AoKTtvPWkucG9wKCk7dC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W28sY119KTtsZXQgbj1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tuLmdseXBoSWRdLHQsYSxuLmdseXBoSWQpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pO249bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2Rpbmdbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbbi5nbHlwaElkXSx0LGEsbi5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOmwrPWkubGVuZ3RoPj4xO2grPWwrNz4+MztTPSEwO2JyZWFrO2Nhc2UgMjE6Yys9aS5wb3AoKTtvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyMjpvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2kubGVuZ3RoPjI7KXt1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1vKz1pLnNoaWZ0KCk7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtpLmxlbmd0aD42Oyl7bys9aS5zaGlmdCgpO2MrPWkuc2hpZnQoKTtsaW5lVG8obyxjKX11PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztjYXNlIDI2OmkubGVuZ3RoJTImJihvKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI3OmkubGVuZ3RoJTImJihjKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bytpLnNoaWZ0KCk7Zj1jO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZztiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI4OmkucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNik+PjE2KTtoKz0yO2JyZWFrO2Nhc2UgMjk6eT1pLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW3ldO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1pLmxlbmd0aClicmVhazt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAzMTpmb3IoO2kubGVuZ3RoPjA7KXt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZysoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztkZWZhdWx0OmlmKHg8MzIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7eH1gKTtpZih4PDI0NylpLnB1c2goeC0xMzkpO2Vsc2UgaWYoeDwyNTEpaS5wdXNoKDI1NiooeC0yNDcpK2VbaCsrXSsxMDgpO2Vsc2UgaWYoeDwyNTUpaS5wdXNoKDI1NiotKHgtMjUxKS1lW2grK10tMTA4KTtlbHNle2kucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdKS82NTUzNik7aCs9NH19UyYmKGkubGVuZ3RoPTApfX0oZSl9Y29uc3QgYz1bXTtjbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbXBpbGVkRm9udCYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbXBpbGVkRm9udC4iKTt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcj10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKCFyKXRyeXtyPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpO3RoaXMuY29tcGlsZWRHbHlwaHNbYV09cn1jYXRjaChlKXt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWM7dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3Rocm93IGV9dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gYztsZXQgYT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7YT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IG49W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6YS5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsbix0KTtuLnB1c2goe2NtZDoicmVzdG9yZSJ9KTtyZXR1cm4gbn1jb21waWxlR2x5cGhJbXBsKCl7KDAsci51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1yfHwoMCxpLmdldEdseXBoc1VuaWNvZGUpKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19dC5Gb250UmVuZGVyZXJGYWN0b3J5PWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgbixpLHMsbyxjLGw7Y29uc3QgaD1nZXRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCx1PTEyO2U8aDtlKyssdSs9MTYpe2NvbnN0IGU9KDAsci5ieXRlc1RvU3RyaW5nKShhLnN1YmFycmF5KHUsdSs0KSksaD1nZXRVaW50MzIoYSx1KzgpLGQ9Z2V0VWludDMyKGEsdSsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6bj1wYXJzZUNtYXAoYSxoKTticmVhaztjYXNlImdseWYiOmk9YS5zdWJhcnJheShoLGgrZCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UiaGVhZCI6bD1nZXRVaW50MTYoYSxoKzE4KTtjPWdldFVpbnQxNihhLGgrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGgsaCtkLHQpfX1pZihpKXtjb25zdCB0PWw/WzEvbCwwLDAsMS9sLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsbjtpZihhKXtyPTQ7bj1nZXRVaW50MzJ9ZWxzZXtyPTI7bj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBpPVtdO2xldCBzPW4odCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9bih0LGEpO2kucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gaX0oaSxzLGMpLG4sdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8sbixlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRNZXRyaWNzPXQuZ2V0Rm9udEJhc2ljTWV0cmljcz12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlLlN5bWJvbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KSk7ZVsiVGltZXMtUm9tYW4iXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUl0YWxpYyJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZS5aYXBmRGluZ2JhdHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1uO2NvbnN0IGk9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9aX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5HbHlmVGFibGU9dm9pZCAwO3QuR2x5ZlRhYmxlPWNsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IG49bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLGk9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9uLmdldFVpbnQzMigwKToyKm4uZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9uLmdldFVpbnQzMihjKToyKm4uZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxpKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksYT1lPjEzMTA3MCxyPWE/NDoyLG49bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKnIpKTthP24uc2V0VWludDMyKDAsMCk6bi5zZXRVaW50MTYoMCwwKTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7aSs9ZS53cml0ZShpLHQpO2k9aSszJi00O3MrPXI7YT9uLnNldFVpbnQzMihzLGkpOm4uc2V0VWludDE2KHMsaT4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmEsbG9jYTpuZXcgVWludDhBcnJheShuLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGE9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8YTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fTtjbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixuXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKG4pO2lmKCEoMzImbi5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3Qgbj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6bn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDpufSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PW59c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPGE7bisrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IG49clthLTFdKzEsaT10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWk7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPG47ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBuPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8bjtlKyspby5wdXNoKHIpO2ErPW59fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgbj1vW2FdO2lmKDImbil7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmbj9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2Jm4pbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49b1thXTtpZig0Jm4pe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJm4/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZuKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmbnw2NCZuKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IG49MCxpPXIueENvb3JkaW5hdGVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXIueENvb3JkaW5hdGVzW25dLHM9ci55Q29vcmRpbmF0ZXNbbl07bGV0IG89TWF0aC5hYnMoaS10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9aTtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10sbj1bXSxpPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O24ucHVzaChlKX1lbHNlIG4ucHVzaChsKX1vPWg7aS5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBpKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1yW2FdLHM9aVthXTtpZigyJnMpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW5bYV0scz1pW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLG49YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8bjtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjpuLGluc3RydWN0aW9uczppfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1uO3RoaXMuaW5zdHJ1Y3Rpb25zPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IG49dC5nZXRVaW50MTYoZSk7Y29uc3QgaT10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJm4pe2lmKDImbil7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtuXj0xfWVsc2V7aWYoMiZuKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmbil7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOm4sZ2x5cGhJbmRleDppLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9dm9pZCAwO3ZhciByPWEoNCksbj1hKDIpO2Z1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsbj1hLmxlbmd0aDtyPG47cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3Qgbj1hKnQ7cmV0dXJue3JhbmdlOm4sZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1ufX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCBpPWEubGVuZ3RoO2xldCBzLG8sYyxsLGgsdT0xMisxNippO2NvbnN0IGQ9W3VdO2ZvcihzPTA7czxpO3MrKyl7bD10W2Fbc11dO3UrPShsLmxlbmd0aCszJi00KT4+PjA7ZC5wdXNoKHUpfWNvbnN0IGY9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKHM9MDtzPGk7cysrKXtsPXRbYVtzXV07d3JpdGVEYXRhKGYsZFtzXSxsKX0idHJ1ZSI9PT1lJiYoZT0oMCxuLnN0cmluZzMyKSg2NTUzNikpO2ZbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtmWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7ZlsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2ZbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGYsNCxpKTtjb25zdCBnPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGksMTYpO3dyaXRlSW50MTYoZiw2LGcucmFuZ2UpO3dyaXRlSW50MTYoZiw4LGcuZW50cnkpO3dyaXRlSW50MTYoZiwxMCxnLnJhbmdlU2hpZnQpO3U9MTI7Zm9yKHM9MDtzPGk7cysrKXtoPWFbc107Zlt1XT0yNTUmaC5jaGFyQ29kZUF0KDApO2ZbdSsxXT0yNTUmaC5jaGFyQ29kZUF0KDEpO2ZbdSsyXT0yNTUmaC5jaGFyQ29kZUF0KDIpO2ZbdSszXT0yNTUmaC5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG89ZFtzXSxjPWRbcysxXTtvPGM7bys9NCl7ZT1lKygwLHIucmVhZFVpbnQzMikoZixvKT4+PjB9d3JpdGVJbnQzMihmLHUrNCxlKTt3cml0ZUludDMyKGYsdSs4LGRbc10pO3dyaXRlSW50MzIoZix1KzEyLHRbaF0ubGVuZ3RoKTt1Kz0xNn1yZXR1cm4gZn1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fXQuT3BlblR5cGVGaWxlQnVpbGRlcj1PcGVuVHlwZUZpbGVCdWlsZGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFGb250PXZvaWQgMDt2YXIgcj1hKDMzKSxuPWEoMiksaT1hKDM2KSxzPWEoNCksbz1hKDgpLGM9YSg0Nyk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT1yLW47bGV0IG89YSxjPSExO2Zvcig7bzxpOyl7bGV0IGE9MDtmb3IoO2E8biYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PW4pe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGkscyxjLGw7dHJ5e2k9ZS5nZXRCeXRlcyh0KTtzPWkubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCl7Yz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fX0oMCxuLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLG4ud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLG47Zm9yKG49MDtuPHQubGVuZ3RoO24rKylhLnB1c2godFtuXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe249YS5pbmRleE9mKHNbZV0pO24+PTAmJihyW2VdPW4pfX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IG47Zm9yKG49MDtuPHQ7bisrKXIucHVzaChbMTFdKTtmb3Iobj0wO248YTtuKyspci5wdXNoKGVbbl0pO3JldHVybiByfXdyYXAoZSx0LGEsbixpKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9bi5sZW5ndGg7dTxkO3UrKyltLmFkZChuW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIHI9YSgzNSksbj1hKDQpLGk9YSg4KSxzPWEoMik7Y29uc3Qgbz1bNF0sYz1bNV0sbD1bNl0saD1bN10sdT1bOF0sZD1bMTIsMzVdLGY9WzE0XSxnPVsyMV0scD1bMjJdLG09WzMwXSxiPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbixpLHksdz0hMTtmb3IobGV0IFM9MDtTPHI7UysrKXtsZXQgcj1lW1NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytTXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLG8pO2JyZWFrO2Nhc2UgNTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjKTticmVhaztjYXNlIDY6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbCk7YnJlYWs7Y2FzZSA3Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgODp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix1KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3ldKXt3PSEwO2JyZWFrfXc9dGhpcy5jb252ZXJ0KHRbeV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiB3O2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPWk7dGhpcy53aWR0aD1uO3RoaXMuc3RhY2sucHVzaChuLGkpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLHApO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChmWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhazt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLHApO2JyZWFrO2Nhc2UgMzA6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbSk7YnJlYWs7Y2FzZSAzMTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxiKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgwLGYpfWVsc2Ugdz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe3c9ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO2k9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1pO3RoaXMud2lkdGg9bjt0aGlzLnN0YWNrLnB1c2gobixpLGUpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGcpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWNvbnN0IFM9dGhpcy5zdGFjay5wb3AoKSx4PXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKHgvUyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGs9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09eSYmMz09PWspe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UodGhpcy5zdGFjay5sZW5ndGgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PWsmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYodylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK1NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytTXS0xMDg6KDI1NSZlWysrU10pPDwyNHwoMjU1JmVbKytTXSk8PDE2fCgyNTUmZVsrK1NdKTw8OHwoMjU1JmVbKytTXSk8PDA7dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gd31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3Qgbj1yLWU7Zm9yKGxldCBlPW47ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShuLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgcixuLGk9MHx0O2ZvcihyPTA7cjxhO3IrKylpPTUyODQ1KihlW3JdK2kpKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsbj0wO248cztyKyssbisrKXtjb25zdCB0PWVbcl07b1tuXT10Xmk+Pjg7aT01Mjg0NSoodCtpKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8KDAsbi5pc1doaXRlU3BhY2UpKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgaS5TdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3Qgbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8bjtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPG4mJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPG4pe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtpW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsbi5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLG49T2JqZWN0LmNyZWF0ZShudWxsKTtuLmxlbklWPTQ7Y29uc3QgaT17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6bn19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkZvcmNlQm9sZCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpufW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PW4/aS5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOmkuY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKG4pO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gaX1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KG4pKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPSgwLHIuZ2V0RW5jb2RpbmcpKG4pO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUGF0dGVybj12b2lkIDA7dC5nZXRUaWxpbmdQYXR0ZXJuSVI9ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxhKXtjb25zdCBuPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9ci5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxzPXQuZ2V0KCJYU3RlcCIpLG89dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksbD10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyR7aX1dLmApO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLG4saSxzLG8sYyxsXX07dmFyIHI9YSgyKSxuPWEoNSksaT1hKDEyKSxzPWEoNCk7Y29uc3Qgbz0yLGM9MyxsPTQsaD01LHU9NixkPTc7dC5QYXR0ZXJuPWNsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXsoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLGksZixnKXtjb25zdCBwPWUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0/ZS5kaWN0OmUsbT1wLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG0pe2Nhc2UgbzpjYXNlIGM6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcocCx0LGEsZixnKTtjYXNlIGw6Y2FzZSBoOmNhc2UgdTpjYXNlIGQ6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsYSxmLGcpO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK20pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2kuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuc2hhZGluZ1BhdHRlcm59KTsoMCxyLndhcm4pKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19O2NsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBnZXQgU01BTExfTlVNQkVSKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlNNQUxMX05VTUJFUiIsMWUtNil9Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLG4scyl7c3VwZXIoKTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IG89aS5Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLGw9ZS5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6dGhpcy5iYm94PW51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsbixpLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLW4sdC1pKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1uLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzEwLGI9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGg+PXV8fG08PTApeygwLHIuaW5mbykoIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgeT1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLHc9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgUztmb3IobGV0IGU9MDtlPD0xMDtlKyspe3dbMF09aCtlKm07cCh3LDAseSwwKTtTPW8uZ2V0UmdiKHksMCk7Y29uc3QgdD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtiLnB1c2goW2UvMTAsdF0pfWxldCB4PSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7Uz1vLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO3g9ci5VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSl9aWYoIWQpe2IudW5zaGlmdChbMCx4XSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFmKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSx4XSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdCBlPXRoaXMuY29vcmRzQXJyLHQ9dGhpcy5zaGFkaW5nVHlwZTtsZXQgYSxuLGkscyxsO2lmKHQ9PT1vKXtuPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07cz1udWxsO2w9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09Yyl7bj1bZVswXSxlWzFdXTtpPVtlWzNdLGVbNF1dO3M9ZVsyXTtsPWVbNV07YT0icmFkaWFsIn1lbHNlKDAsci51bnJlYWNoYWJsZSkoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4saSxzLGxdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgYT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShhKTtjb25zdCByPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkocik6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1hKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGEpLTE7cmV0dXJuKHQ8PDgtYXwoMjU1JmUpPj5hKT4+PjB9aWYoOD09PWUmJjA9PT1hKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDthPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2ErPTh9YS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1hO3RoaXMuYnVmZmVyPXQmKDE8PGEpLTE7cmV0dXJuIHQ+PmF9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGE9dGhpcy5yZWFkQml0cyhlKSxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0Km4qKHJbMV0tclswXSkrclswXSxhKm4qKHJbM10tclsyXSkrclsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGE9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgaT0wLHM9NDtpPGU7aSsrLHMrPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtuW2ldPWUqYSoocltzKzFdLXJbc10pK3Jbc119Y29uc3QgaT10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKG4sMCxpLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IoaSwwKX19Y29uc3QgZj1mdW5jdGlvbiBnZXRCQ2xvc3VyZSgpe2NvbnN0IGU9W107cmV0dXJuIGZ1bmN0aW9uKHQpe2VbdF18fChlW3RdPWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxuPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbbipuKm4sMypyKm4qbiwzKnIqcipuLHIqcipyXSkpfXJldHVybiB0fSh0KSk7cmV0dXJuIGVbdF19fSgpO2NsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIGdldCBNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMyl9c3RhdGljIGdldCBNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMjApfXN0YXRpYyBnZXQgVFJJQU5HTEVfREVOU0lUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJUUklBTkdMRV9ERU5TSVRZIiwyMCl9Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6dGhpcy5iYm94PW51bGw7Y29uc3QgZz1pLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/Zy5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IHA9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksbT1wP3MuY3JlYXRlRnJvbUFycmF5KHApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGI9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjptLGNvbG9yU3BhY2U6ZyxudW1Db21wczptPzE6Zy5udW1Db21wc30seT1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGIpO2xldCB3PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGw6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHkpO2JyZWFrO2Nhc2UgaDpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHksZSk7YnJlYWs7Y2FzZSB1OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyh5KTt3PSEwO2JyZWFrO2Nhc2UgZDp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoeSk7dz0hMDticmVhaztkZWZhdWx0OigwLHIudW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodyl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPVtdLGk9W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6aS5wdXNoKGkuYXQoLTIpLGkuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOmkucHVzaChpLmF0KC0zKSxpLmF0KC0xKSk7cz0xfW4ucHVzaChvKX1pLnB1c2godC5sZW5ndGgpO3QucHVzaChjKTthLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxuPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksaT1lLnJlYWRDb21wb25lbnRzKCk7bi5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKGkpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzg6MTI7YTxyO2ErKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPWEubGVuZ3RoO2ZvcihsZXQgdD0wLHI9MCE9PXM/Mjo0O3Q8cjt0KyspYS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDpuWzEyXT1vKzM7blsxM109bys0O25bMTRdPW8rNTtuWzE1XT1vKzY7bls4XT1vKzI7blsxMV09bys3O25bNF09bysxO25bN109bys4O25bMF09bztuWzFdPW8rMTE7blsyXT1vKzEwO25bM109bys5O2lbMl09YysxO2lbM109YysyO2lbMF09YztpWzFdPWMrMzticmVhaztjYXNlIDE6bD1uWzEyXTtoPW5bMTNdO3U9blsxNF07ZD1uWzE1XTtuWzEyXT1kO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09dTtuWzExXT1vKzM7bls0XT1oO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbMl07aD1pWzNdO2lbMl09aDtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2g9blsxMV07blsxMl09blszXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bN107blsxMV09byszO25bNF09aDtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzNdO2lbMl09aVsxXTtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09blsxXTtuWzExXT1vKzM7bls0XT1uWzJdO25bN109bys0O25bMF09blszXTtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtpWzJdPWlbMF07aVszXT1jO2lbMF09aVsxXTtpWzFdPWMrMX1uWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblswXV1bMF0tdFtuWzE1XV1bMF0rNioodFtuWzRdXVswXSt0W25bMV1dWzBdKS0yKih0W25bMTJdXVswXSt0W25bM11dWzBdKSszKih0W25bMTNdXVswXSt0W25bN11dWzBdKSkvOSwoLTQqdFtuWzBdXVsxXS10W25bMTVdXVsxXSs2Kih0W25bNF1dWzFdK3RbblsxXV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsxM11dWzFdK3Rbbls3XV1bMV0pKS85XSk7bls2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bM11dWzBdLXRbblsxMl1dWzBdKzYqKHRbblsyXV1bMF0rdFtuWzddXVswXSktMioodFtuWzBdXVswXSt0W25bMTVdXVswXSkrMyoodFtuWzRdXVswXSt0W25bMTRdXVswXSkpLzksKC00KnRbblszXV1bMV0tdFtuWzEyXV1bMV0rNioodFtuWzJdXVsxXSt0W25bN11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bNF1dWzFdK3RbblsxNF1dWzFdKSkvOV0pO25bOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzEyXV1bMF0tdFtuWzNdXVswXSs2Kih0W25bOF1dWzBdK3RbblsxM11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bMTFdXVswXSt0W25bMV1dWzBdKSkvOSwoLTQqdFtuWzEyXV1bMV0tdFtuWzNdXVsxXSs2Kih0W25bOF1dWzFdK3RbblsxM11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bMTFdXVsxXSt0W25bMV1dWzFdKSkvOV0pO25bMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblsxNV1dWzBdLXRbblswXV1bMF0rNioodFtuWzExXV1bMF0rdFtuWzE0XV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsyXV1bMF0rdFtuWzhdXVswXSkpLzksKC00KnRbblsxNV1dWzFdLXRbblswXV1bMV0rNioodFtuWzExXV1bMV0rdFtuWzE0XV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsyXV1bMV0rdFtuWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsbj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09cz8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOm5bMTJdPW8rMztuWzEzXT1vKzQ7blsxNF09bys1O25bMTVdPW8rNjtuWzhdPW8rMjtuWzldPW8rMTM7blsxMF09bysxNDtuWzExXT1vKzc7bls0XT1vKzE7bls1XT1vKzEyO25bNl09bysxNTtuWzddPW8rODtuWzBdPW87blsxXT1vKzExO25bMl09bysxMDtuWzNdPW8rOTtpWzJdPWMrMTtpWzNdPWMrMjtpWzBdPWM7aVsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07aD1uWzEzXTt1PW5bMTRdO2Q9blsxNV07blsxMl09ZDtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPXU7bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1oO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzJdO2g9aVszXTtpWzJdPWg7aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDI6bD1uWzE1XTtoPW5bMTFdO25bMTJdPW5bM107blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT1uWzddO25bOV09bys5O25bMTBdPW8rMTA7blsxMV09byszO25bNF09aDtuWzVdPW8rODtuWzZdPW8rMTE7bls3XT1vKzQ7blswXT1sO25bMV09bys3O25bMl09bys2O25bM109bys1O2w9aVszXTtpWzJdPWlbMV07aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bMV07bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1uWzJdO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPW5bM107blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7aVsyXT1pWzBdO2lbM109YztpWzBdPWlbMV07aVsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxyLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLGM9TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxsPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksaD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO3U9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsdSkpO2xldCBkPU1hdGguY2VpbCgoaC1jKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZCkpO2NvbnN0IGc9dSsxLHA9bmV3IEludDMyQXJyYXkoKGQrMSkqZyksbT1uZXcgSW50MzJBcnJheSgoZCsxKSpnKTtsZXQgYj0wO2NvbnN0IHk9bmV3IFVpbnQ4QXJyYXkoMyksdz1uZXcgVWludDhBcnJheSgzKSxTPW5bc1swXV0seD1uW3NbMV1dLGs9bltzWzJdXSxDPW5bc1szXV0sdj1mKGQpLEY9Zih1KTtmb3IobGV0IGU9MDtlPD1kO2UrKyl7eVswXT0oU1swXSooZC1lKStrWzBdKmUpL2R8MDt5WzFdPShTWzFdKihkLWUpK2tbMV0qZSkvZHwwO3lbMl09KFNbMl0qKGQtZSkra1syXSplKS9kfDA7d1swXT0oeFswXSooZC1lKStDWzBdKmUpL2R8MDt3WzFdPSh4WzFdKihkLWUpK0NbMV0qZSkvZHwwO3dbMl09KHhbMl0qKGQtZSkrQ1syXSplKS9kfDA7Zm9yKGxldCB0PTA7dDw9dTt0KyssYisrKXtpZighKDAhPT1lJiZlIT09ZHx8MCE9PXQmJnQhPT11KSljb250aW51ZTtsZXQgcj0wLHM9MCxvPTA7Zm9yKGxldCBuPTA7bjw9MztuKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bbl0qRlt0XVtjXTtyKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfXBbYl09YS5sZW5ndGg7YS5wdXNoKFtyLHNdKTttW2JdPW4ubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0oeVswXSoodS10KSt3WzBdKnQpL3V8MDtjWzFdPSh5WzFdKih1LXQpK3dbMV0qdCkvdXwwO2NbMl09KHlbMl0qKHUtdCkrd1syXSp0KS91fDA7bi5wdXNoKGMpfX1wWzBdPWlbMF07bVswXT1zWzBdO3BbdV09aVszXTttW3VdPXNbMV07cFtnKmRdPWlbMTJdO21bZypkXT1zWzJdO3BbZypkK3VdPWlbMTVdO21bZypkK3VdPXNbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6cCxjb2xvcnM6bSx2ZXJ0aWNlc1BlclJvdzpnfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgbj0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dGhpcy5jb29yZHNbbl1bMF0scz10aGlzLmNvb3Jkc1tuXVsxXTtlPWU+aT9pOmU7dD10PnM/czp0O2E9YTxpP2k6YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IG49dGhpcy5jb29yZHMsaT1uZXcgRmxvYXQzMkFycmF5KDIqbi5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1uW2VdO2lbYSsrXT10WzBdO2lbYSsrXT10WzFdfXRoaXMuY29vcmRzPWk7Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxuPXQuY29vcmRzLGk9dC5jb2xvcnM7Zm9yKGE9MCxyPW4ubGVuZ3RoO2E8cjthKyspe25bYV0qPTI7aVthXSo9M319fWdldElSKCl7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6bn09dDtsZXQgaTtpPW4/YS5tYXAoKChlLHQpPT5lKm5bdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtzLnB1c2goaVt0XSk7bys9MX1lbHNle289ZTtzPVtpW3RdXTtjLnB1c2goZSxzKX1yZXR1cm4gY30oZSksYT1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsbi5OYW1lLmdldChlKSk7YS5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLG4uTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLG4uTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7YS5zZXQoIkNJRFRvR0lETWFwIixuLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgcj1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgbi5EaWN0KG51bGwpO2kuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7aS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtpLnNldCgiU3VwcGxlbWVudCIsMCk7YS5zZXQoIkNJRFN5c3RlbUluZm8iLGkpO3JldHVybiBhfTt0LmdldFhmYUZvbnROYW1lPWdldFhmYUZvbnROYW1lO3ZhciByPWEoNTApLG49YSgzKSxpPWEoNTEpLHM9YSg1Miksbz1hKDUzKSxjPWEoNTQpLGw9YSg0KSxoPWEoMzYpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc307ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnIuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpUmVndWxhck1ldHJpY3N9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZE1ldHJpY3N9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUl0YWxpY01ldHJpY3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6aS5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZE1ldHJpY3N9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsaC5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIHUoKVt0XX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPXQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9dC5DYWxpYnJpSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkRmFjdG9ycz12b2lkIDA7dC5DYWxpYnJpQm9sZEZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlSZWd1bGFyRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz12b2lkIDA7dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXQuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9dC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRGYWN0b3JzPXZvaWQgMDt0Lk15cmlhZFByb0JvbGRGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdEV2YWx1YXRvcj10LlBvc3RTY3JpcHRDb21waWxlcj10LlBERkZ1bmN0aW9uRmFjdG9yeT12b2lkIDA7dC5pc1BERkZ1bmN0aW9uPWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfTt2YXIgcj1hKDMpLG49YSgyKSxpPWEoNTYpLHM9YSg1KSxvPWEoNTcpO3QuUERGRnVuY3Rpb25GYWN0b3J5PWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2Ygci5SZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGEpO3JldHVybiBhfWdldENhY2hlZChlKXtsZXQgdDtlIGluc3RhbmNlb2Ygci5SZWY/dD1lOmUgaW5zdGFuY2VvZiByLkRpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0mJih0PWUuZGljdCYmZS5kaWN0Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGE7ZSBpbnN0YW5jZW9mIHIuUmVmP2E9ZTplIGluc3RhbmNlb2Ygci5EaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtJiYoYT1lLmRpY3QmJmUuZGljdC5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgbixpLHM9MTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKylzKj1lW25dO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKG49MDtuPHM7bisrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tuXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphfSl7Y29uc3Qgcj1hLmRpY3R8fGE7c3dpdGNoKHIuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDpyfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OnJ9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6YX0pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46YX0pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG4gb2YgYSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihuKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsbil7Zm9yKGxldCBpPTAscz1yLmxlbmd0aDtpPHM7aSsrKXJbaV0oZSx0LGEsbitpKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bis9MilhW3IrK109W2Vbbl0sZVtuKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLG4pe3JldHVybiByKyhuLXIpLyhhLXQpKihlLXQpfWxldCBpPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJSYW5nZSIpKTtpZighaXx8IXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG89aS5sZW5ndGgvMixjPXMubGVuZ3RoLzI7aT10b011bHRpQXJyYXkoaSk7cz10b011bHRpQXJyYXkocyk7Y29uc3QgbD10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIlNpemUiKSksaD1yLmdldCgiQml0c1BlclNhbXBsZSIpLHU9ci5nZXQoIk9yZGVyIil8fDE7MSE9PXUmJigwLG4uaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK3UpO2xldCBkPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGQpZD10b011bHRpQXJyYXkoZCk7ZWxzZXtkPVtdO2ZvcihsZXQgZT0wO2U8bzsrK2UpZC5wdXNoKFswLGxbZV0tMV0pfWxldCBmPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRGVjb2RlIikpO2Y9Zj90b011bHRpQXJyYXkoZik6cztjb25zdCBnPXRoaXMuZ2V0U2FtcGxlQXJyYXkobCxjLGgsYSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBuPTE8PG8saD1uZXcgRmxvYXQ2NEFycmF5KG4pLHU9bmV3IFVpbnQzMkFycmF5KG4pO2xldCBwLG07Zm9yKG09MDttPG47bSsrKWhbbV09MTtsZXQgYj1jLHk9MTtmb3IocD0wO3A8bzsrK3Ape2NvbnN0IGE9aVtwXVswXSxyPWlbcF1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3BdLGEpLHIpLGEscixkW3BdWzBdLGRbcF1bMV0pO2NvbnN0IG89bFtwXTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksby0xKTtjb25zdCBjPXM8by0xP01hdGguZmxvb3Iocyk6cy0xLGY9YysxLXMsZz1zLWMsdz1jKmIsUz13K2I7Zm9yKG09MDttPG47bSsrKWlmKG0meSl7aFttXSo9Zzt1W21dKz1TfWVsc2V7aFttXSo9Zjt1W21dKz13fWIqPW87eTw8PTF9Zm9yKG09MDttPGM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxuO3ArKyllKz1nW3VbcF0rbV0qaFtwXTtlPWludGVycG9sYXRlKGUsMCwxLGZbbV1bMF0sZlttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsc1ttXVswXSksc1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMwIikpfHxbMF0sbj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMxIikpfHxbMV0saT1hLmdldCgiTiIpLHM9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXMucHVzaChuW2VdLXJbZV0pO2NvbnN0IG89cy5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxhLG4pe2NvbnN0IGM9MT09PWk/ZVt0XTplW3RdKippO2ZvcihsZXQgZT0wO2U8bzsrK2UpYVtuK2VdPXJbZV0rYypzW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSk7aWYoIXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1yLmxlbmd0aC8yKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3QgaT1bXTtmb3IoY29uc3QgciBvZiBhLmdldCgiRnVuY3Rpb25zIikpaS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocil9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkJvdW5kcyIpKSxvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLG4pe2NvbnN0IGw9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGEpe2U+YT9lPWE6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxyWzBdLHJbMV0pLGg9cy5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxzW3VdKTsrK3UpO2xldCBkPXJbMF07dT4wJiYoZD1zW3UtMV0pO2xldCBmPXJbMV07dTxzLmxlbmd0aCYmKGY9c1t1XSk7Y29uc3QgZz1vWzIqdV0scD1vWzIqdSsxXTtjWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtpW3VdKGMsMCxhLG4pfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl7Y29uc3Qgcz10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKSxvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighbyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgYz1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIoYSksbD1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobCxzLG8pO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLG4uaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgaD1vLmxlbmd0aD4+MSx1PXMubGVuZ3RoPj4xLGQ9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobCksZj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBnPTgxOTI7Y29uc3QgcD1uZXcgRmxvYXQzMkFycmF5KHUpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4saSxzPSIiO2NvbnN0IGM9cDtmb3Iobj0wO248dTtuKyspe2k9ZVt0K25dO2Nbbl09aTtzKz1pKyJfIn1jb25zdCBsPWZbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGgpLGI9ZC5leGVjdXRlKGMpLHk9Yi5sZW5ndGgtaDtmb3Iobj0wO248aDtuKyspe2k9Ylt5K25dO2xldCBlPW9bMipuXTtpZihpPGUpaT1lO2Vsc2V7ZT1vWzIqbisxXTtpPmUmJihpPWUpfW1bbl09aX1pZihnPjApe2ctLTtmW3NdPW19YS5zZXQobSxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgZ2V0IE1BWF9TVEFDS19TSVpFKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1BWF9TVEFDS19TSVpFIiwxMDApfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLG49YS5sZW5ndGgtMSxpPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1pLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1pLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLGk9ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxpOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguYXRhbihvKSk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6Yz10LnBvcCgpO289dC5wb3AoKTtvPjA/dC5wdXNoKG88PGMpOnQucHVzaChvPj5jKTticmVhaztjYXNlImNlaWxpbmciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG8pKTticmVhaztjYXNlImNvcHkiOm89dC5wb3AoKTt0LmNvcHkobyk7YnJlYWs7Y2FzZSJjb3MiOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobykpO2JyZWFrO2Nhc2UiY3ZpIjpvPTB8dC5wb3AoKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2MpO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobz09PWMpO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8qKmMpO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bz10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKG8pKTticmVhaztjYXNlImdlIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPj1jKTticmVhaztjYXNlImd0IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPmMpO2JyZWFrO2Nhc2UiaWRpdiI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2goby9jfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm89dC5wb3AoKTt0LmluZGV4KG8pO2JyZWFrO2Nhc2UibGUiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG88PWMpO2JyZWFrO2Nhc2UibG4iOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobykpO2JyZWFrO2Nhc2UibG9nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG8pL01hdGguTE4xMCk7YnJlYWs7Y2FzZSJsdCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzxjKTticmVhaztjYXNlIm1vZCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyVjKTticmVhaztjYXNlIm11bCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobypjKTticmVhaztjYXNlIm5lIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvIT09Yyk7YnJlYWs7Y2FzZSJuZWciOm89dC5wb3AoKTt0LnB1c2goLW8pO2JyZWFrO2Nhc2Uibm90IjpvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goIW8pOnQucHVzaCh+byk7YnJlYWs7Y2FzZSJvciI6Yz10LnBvcCgpO289dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvfHxjKTp0LnB1c2gob3xjKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5yb2xsKG8sYyk7YnJlYWs7Y2FzZSJyb3VuZCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG8pKTticmVhaztjYXNlInNpbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNpbihvKSk7YnJlYWs7Y2FzZSJzcXJ0IjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChvKSk7YnJlYWs7Y2FzZSJzdWIiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8tYyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm89dC5wb3AoKTtvPW88MD9NYXRoLmNlaWwobyk6TWF0aC5mbG9vcihvKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJ4b3IiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyE9PWMpOnQucHVzaChvXmMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtzfWApfWVsc2UgdC5wdXNoKHMpfXJldHVybiB0LnN0YWNrfX10LlBvc3RTY3JpcHRFdmFsdWF0b3I9UG9zdFNjcmlwdEV2YWx1YXRvcjtjbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpeygwLG4udW5yZWFjaGFibGUpKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsbil7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PW59dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLG49W10saT10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtuLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7bi5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxuPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChuKTtjb25zdCBpPWFbMiplXSxzPWFbMiplKzFdLG89W24udG9TdHJpbmcoKV07aWYoaT50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLGksIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19dC5Qb3N0U2NyaXB0Q29tcGlsZXI9UG9zdFNjcmlwdENvbXBpbGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtjb25zdCB0PVBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdO3JldHVybiB0fHwoUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV09bmV3IFBvc3RTY3JpcHRUb2tlbihzLk9QRVJBVE9SLGUpKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJMQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuUkJSQUNFLCJ9IikpfXN0YXRpYyBnZXQgSUYoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUZFTFNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUZFTFNFLCJJRkVMU0UiKSl9fXQuUG9zdFNjcmlwdExleGVyPWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbi5FT0Y7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsaS5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAke2F9YCk7cmV0dXJuIGF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyk7Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT0oZSYmZS5vbmx5UmVmcyk7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBuLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTtjbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBnZXQgTlVNX1BBR0VTX1RIUkVTSE9MRCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJOVU1fUEFHRVNfVEhSRVNIT0xEIiwyKX1zdGF0aWMgZ2V0IE1JTl9JTUFHRVNfVE9fQ0FDSEUoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUlOX0lNQUdFU19UT19DQUNIRSIsMTApfXN0YXRpYyBnZXQgTUFYX0JZVEVfU0laRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfQllURV9TSVpFIiw0ZTcpfWNvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgbi5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy5fYnl0ZVNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO3JldHVybiEoKGE/YS5zaXplKyhhLmhhcyh0KT8wOjEpOjEpPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZCl9YWRkUGFnZUluZGV4KGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJhZGRQYWdlSW5kZXgiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD8oMCxyLndhcm4pKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2V8fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCk7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX10Lkdsb2JhbEltYWdlQ2FjaGU9R2xvYmFsSW1hZ2VDYWNoZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmJpZGk9ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IGM9ITA7Y29uc3QgbD1lLmxlbmd0aDtpZigwPT09bHx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjLGEpO3MubGVuZ3RoPWw7by5sZW5ndGg9bDtsZXQgaCx1LGQ9MDtmb3IoaD0wO2g8bDsrK2gpe3NbaF09ZS5jaGFyQXQoaCk7Y29uc3QgdD1lLmNoYXJDb2RlQXQoaCk7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPW5bdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWE9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7YT1pWzI1NSZ0XTthfHwoMCxyLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UgMTc5Mjw9dCYmdDw9MjIyMCYmKGE9IkFMIik7IlIiIT09YSYmIkFMIiE9PWEmJiJBTiIhPT1hfHxkKys7b1toXT1hfWlmKDA9PT1kKXtjPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLGMpfWlmKC0xPT09dClpZihkL2w8LjMmJmw+NCl7Yz0hMDt0PTB9ZWxzZXtjPSExO3Q9MX1jb25zdCBmPVtdO2ZvcihoPTA7aDxsOysraClmW2hdPXQ7Y29uc3QgZz1pc09kZCh0KT8iUiI6IkwiLHA9ZyxtPXA7bGV0IGIseT1wO2ZvcihoPTA7aDxsOysraCkiTlNNIj09PW9baF0/b1toXT15Onk9b1toXTt5PXA7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkVOIj09PWI/b1toXT0iQUwiPT09eT8iQU4iOiJFTiI6IlIiIT09YiYmIkwiIT09YiYmIkFMIiE9PWJ8fCh5PWIpfWZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJBTCI9PT1iJiYob1toXT0iUiIpfWZvcihoPTE7aDxsLTE7KytoKXsiRVMiPT09b1toXSYmIkVOIj09PW9baC0xXSYmIkVOIj09PW9baCsxXSYmKG9baF09IkVOIik7IkNTIiE9PW9baF18fCJFTiIhPT1vW2gtMV0mJiJBTiIhPT1vW2gtMV18fG9baCsxXSE9PW9baC0xXXx8KG9baF09b1toLTFdKX1mb3IoaD0wO2g8bDsrK2gpaWYoIkVOIj09PW9baF0pe2ZvcihsZXQgZT1oLTE7ZT49MCYmIkVUIj09PW9bZV07LS1lKW9bZV09IkVOIjtmb3IobGV0IGU9aCsxO2U8bCYmIkVUIj09PW9bZV07KytlKW9bZV09IkVOIn1mb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiV1MiIT09YiYmIkVTIiE9PWImJiJFVCIhPT1iJiYiQ1MiIT09Ynx8KG9baF09Ik9OIil9eT1wO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJFTiI9PT1iP29baF09IkwiPT09eT8iTCI6IkVOIjoiUiIhPT1iJiYiTCIhPT1ifHwoeT1iKX1mb3IoaD0wO2g8bDsrK2gpaWYoIk9OIj09PW9baF0pe2NvbnN0IGU9ZmluZFVuZXF1YWwobyxoKzEsIk9OIik7bGV0IHQ9cDtoPjAmJih0PW9baC0xXSk7bGV0IGE9bTtlKzE8bCYmKGE9b1tlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWEmJihhPSJSIik7dD09PWEmJnNldFZhbHVlcyhvLGgsZSx0KTtoPWUtMX1mb3IoaD0wO2g8bDsrK2gpIk9OIj09PW9baF0mJihvW2hdPWcpO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdO2lzRXZlbihmW2hdKT8iUiI9PT1iP2ZbaF0rPTE6IkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9Mik6IkwiIT09YiYmIkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9MSl9bGV0IHcsUz0tMSx4PTk5O2ZvcihoPTAsdT1mLmxlbmd0aDtoPHU7KytoKXt3PWZbaF07Uzx3JiYoUz13KTt4PncmJmlzT2RkKHcpJiYoeD13KX1mb3Iodz1TO3c+PXg7LS13KXtsZXQgZT0tMTtmb3IoaD0wLHU9Zi5sZW5ndGg7aDx1OysraClpZihmW2hdPHcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMocyxlLGgpO2U9LTF9fWVsc2UgZTwwJiYoZT1oKTtlPj0wJiZyZXZlcnNlVmFsdWVzKHMsZSxmLmxlbmd0aCl9Zm9yKGg9MCx1PXMubGVuZ3RoO2g8dTsrK2gpe2NvbnN0IGU9c1toXTsiPCIhPT1lJiYiPiIhPT1lfHwoc1toXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHMuam9pbigiIiksYyl9O3ZhciByPWEoMik7Y29uc3Qgbj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0saT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IHIsbjtmb3Iocj10LG49ZS5sZW5ndGg7cjxuOysrcilpZihlW3JdIT09YSlyZXR1cm4gcjtyZXR1cm4gcn1mdW5jdGlvbiBzZXRWYWx1ZXMoZSx0LGEscil7Zm9yKGxldCBuPXQ7bjxhOysrbillW25dPXJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsbj1hLTE7cjxuOysrciwtLW4pe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbbl07ZVtuXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IHM9W10sbz1bXX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IG49MzI4NTM3NzUyMCxpPTQyOTQ5MDE3NjAscz02NTUzNTt0Lk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO2lmKG48PTI1NSl0W2ErK109bjtlbHNle3RbYSsrXT1uPj4+ODt0W2ErK109MjU1Jm59fX1lbHNle2lmKCEoMCxyLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixvPWEtNCpuLGM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGw9MCxoPTAsdT10aGlzLmgxLGQ9dGhpcy5oMjtjb25zdCBmPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcscD0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtsPWNbZV07bD1sKmYmaXxsKnAmcztsPWw8PDE1fGw+Pj4xNztsPWwqZyZpfGwqbSZzO3VePWw7dT11PDwxM3x1Pj4+MTk7dT01KnUrMzg2NDI5MjE5Nn1lbHNle2g9Y1tlXTtoPWgqZiZpfGgqcCZzO2g9aDw8MTV8aD4+PjE3O2g9aCpnJml8aCptJnM7ZF49aDtkPWQ8PDEzfGQ+Pj4xOTtkPTUqZCszODY0MjkyMTk2fWw9MDtzd2l0Y2gobyl7Y2FzZSAzOmxePXRbNCpuKzJdPDwxNjtjYXNlIDI6bF49dFs0Km4rMV08PDg7Y2FzZSAxOmxePXRbNCpuXTtsPWwqZiZpfGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJml8bCptJnM7MSZuP3VePWw6ZF49bH10aGlzLmgxPXU7dGhpcy5oMj1kfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzO3Q9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzO3Q9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtjb25zdCBhPShlPj4+MCkudG9TdHJpbmcoMTYpLHI9KHQ+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIGEucGFkU3RhcnQoOCwiMCIpK3IucGFkU3RhcnQoOCwiMCIpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PcGVyYXRvckxpc3Q9dm9pZCAwO3ZhciByPWEoMik7ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGEscixuKXtsZXQgaT1lO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPGE7ZSsrKXtjb25zdCBhPXRbZV07aT1pW2FdfHwoaVthXT1bXSl9aVt0LmF0KC0xKV09e2NoZWNrRm46YSxpdGVyYXRlRm46cixwcm9jZXNzRm46bn19Y29uc3Qgbj1bXTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXIuT1BTLnNhdmU7Y2FzZSAxOnJldHVybiBhW3RdPT09ci5PUFMudHJhbnNmb3JtO2Nhc2UgMjpyZXR1cm4gYVt0XT09PXIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke259YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIscz1pLTMsbz1pLTIsYz1pLTEsbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDIwMCk7aWYobDwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBoPTA7Y29uc3QgdT1bXTtsZXQgZD0wLGY9MSxnPTE7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW28rKGU8PDIpXSxhPW5bYysoZTw8MildWzBdO2lmKGYrYS53aWR0aD4xZTMpe2g9TWF0aC5tYXgoaCxmKTtnKz1kKzI7Zj0wO2Q9MH11LnB1c2goe3RyYW5zZm9ybTp0LHg6Zix5OmcsdzphLndpZHRoLGg6YS5oZWlnaHR9KTtmKz1hLndpZHRoKzI7ZD1NYXRoLm1heChkLGEuaGVpZ2h0KX1jb25zdCBwPU1hdGgubWF4KGgsZikrMSxtPWcrZCsxLGI9bmV3IFVpbnQ4QXJyYXkocCptKjQpLHk9cDw8Mjtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bYysoZTw8MildWzBdLmRhdGEsYT11W2VdLnc8PDI7bGV0IHI9MCxpPXVbZV0ueCt1W2VdLnkqcDw8MjtiLnNldCh0LnN1YmFycmF5KDAsYSksaS15KTtmb3IobGV0IG49MCxzPXVbZV0uaDtuPHM7bisrKXtiLnNldCh0LnN1YmFycmF5KHIscithKSxpKTtyKz1hO2krPXl9Yi5zZXQodC5zdWJhcnJheShyLWEsciksaSk7Zm9yKDtpPj0wOyl7dFtpLTRdPXRbaV07dFtpLTNdPXRbaSsxXTt0W2ktMl09dFtpKzJdO3RbaS0xXT10W2krM107dFtpK2FdPXRbaSthLTRdO3RbaSthKzFdPXRbaSthLTNdO3RbaSthKzJdPXRbaSthLTJdO3RbaSthKzNdPXRbaSthLTFdO2ktPXl9fWEuc3BsaWNlKHMsNCpsLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFt7d2lkdGg6cCxoZWlnaHQ6bSxraW5kOnIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTpifSx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9bltoXTtpZihuW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PW5baF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCBhPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0yLHM9bltpXVswXSxvPW5baV1bM107cmV0dXJuIG5bdF1bMF09PT1zJiYwPT09blt0XVsxXSYmMD09PW5bdF1bMl0mJm5bdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1uW2UuaUN1cnItMV1bMF07cmV0dXJuIG5bdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2l9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPW5baS0xXVswXSxsPW5bb11bMF0saD1uW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PW5bZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO24uc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUobixbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLHM9bltpXVswXSxvPW5baV1bMV07cmV0dXJuIG5bdF1bMF09PT1zJiZuW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxuPWUuaUN1cnIsaT1uLTQscz1uLTMsbz1uLTIsYz1uLTEsbD1uLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1pKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1pKSU1O2xldCBmPWk7aWYoaT49NCYmYVtpLTRdPT09YVtzXSYmYVtpLTNdPT09YVtvXSYmYVtpLTJdPT09YVtjXSYmYVtpLTFdPT09YVtsXSYmcltpLTRdWzBdPT09aCYmcltpLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxhPWUubGVuZ3RoLHI9dGhpcy5zdGF0ZSxpPXRoaXMubWF0Y2g7aWYoIXImJiFpJiZ0KzE9PT1hJiYhbltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWE7cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxhOyl7aWYoaSl7aWYoKDAsaS5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLGkucHJvY2Vzc0ZuKShzLHQrMSk7YT1lLmxlbmd0aDtpPW51bGw7cj1udWxsO2lmKHQ+PWEpYnJlYWt9cj0ocnx8bilbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe3MuaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShzKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIGdldCBDSFVOS19TSVpFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkUiLDFlMyl9c3RhdGljIGdldCBDSFVOS19TSVpFX0FCT1VUKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkVfQUJPVVQiLHRoaXMuQ0hVTktfU0laRS01KX1jb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTshdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBOdWxsT3B0aW1pemVyKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IGk9MDtpPG47aSsrKXN3aXRjaCh0W2ldKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbaV1bMF07IXQuY2FjaGVkJiZ0LmRhdGEmJnQuZGF0YS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKHQuZGF0YS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGE9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWE7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6YX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19dC5PcGVyYXRvckxpc3Q9T3BlcmF0b3JMaXN0fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUERGSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDYyKSxpPWEoNSkscz1hKDEyKSxvPWEoMTcpLGM9YSgyNSksbD1hKDI4KSxoPWEoMyk7ZnVuY3Rpb24gZGVjb2RlQW5kQ2xhbXAoZSx0LGEscil7KGU9dCtlKmEpPDA/ZT0wOmU+ciYmKGU9cik7cmV0dXJuIGV9ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPW4qaTtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBjPWEvbixsPXIvaTtsZXQgaCx1LGQsZixnPTA7Y29uc3QgcD1uZXcgVWludDE2QXJyYXkobiksbT1hO2ZvcihoPTA7aDxuO2grKylwW2hdPU1hdGguZmxvb3IoaCpjKTtmb3IoaD0wO2g8aTtoKyspe2Q9TWF0aC5mbG9vcihoKmwpKm07Zm9yKHU9MDt1PG47dSsrKXtmPWQrcFt1XTtvW2crK109ZVtmXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOm49ITEsc21hc2s6bz1udWxsLG1hc2s6Yz1udWxsLGlzTWFzazp1PSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpkLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KXt0aGlzLmltYWdlPWE7Y29uc3QgZz1hLmRpY3QscD1nLmdldCgiRiIsIkZpbHRlciIpO2xldCBtO2lmKHAgaW5zdGFuY2VvZiBoLk5hbWUpbT1wLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHApKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihwWzBdKTt0IGluc3RhbmNlb2YgaC5OYW1lJiYobT10Lm5hbWUpfXN3aXRjaChtKXtjYXNlIkpQWERlY29kZSI6Y29uc3QgZT1uZXcgbC5KcHhJbWFnZTtlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKTthLnN0cmVhbS5yZXNldCgpO2Eud2lkdGg9ZS53aWR0aDthLmhlaWdodD1lLmhlaWdodDthLmJpdHNQZXJDb21wb25lbnQ9ZS5iaXRzUGVyQ29tcG9uZW50O2EubnVtQ29tcHM9ZS5jb21wb25lbnRzQ291bnQ7YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBiPWcuZ2V0KCJXIiwiV2lkdGgiKSx5PWcuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1ifHxhLmhlaWdodCE9PXkpKXsoMCxyLndhcm4pKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2I9YS53aWR0aDt5PWEuaGVpZ2h0fWlmKGI8MXx8eTwxKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke2J9IG9yIGhlaWdodDogJHt5fWApO3RoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD15O3RoaXMuaW50ZXJwb2xhdGU9Zy5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPWcuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPWcuZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgdz1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXcpe3c9Zy5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighdyl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTt3PTF9fXRoaXMuYnBjPXc7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1nLmdldFJhdygiQ1MiKXx8Zy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighaSl7KDAsci5pbmZvKSgiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpO3N3aXRjaChhLm51bUNvbXBzKXtjYXNlIDE6aT1oLk5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9aC5OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0Omk9aC5OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBKUFggaW1hZ2VzIHdpdGggJHthLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9fXRoaXMuY29sb3JTcGFjZT1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHN9dGhpcy5kZWNvZGU9Zy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLHcpfHx1JiYhcy5Db2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8dyktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD10aGlzLmNvbG9yU3BhY2UmJiJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lO2ZvcihsZXQgYT0wLHI9MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrcil7Y29uc3Qgbj10aGlzLmRlY29kZVthXSxpPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbcl09dD8oaS1uKS9lOmktbjt0aGlzLmRlY29kZUFkZGVuZHNbcl09dD9uOmUqbn19aWYobyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7ZWxzZSBpZihjKWlmKGMgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmMsaXNJbmxpbmU6bixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pOigwLHIud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1jfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBjPWE7bGV0IGw9bnVsbCxoPW51bGw7Y29uc3QgdT1hLmRpY3QuZ2V0KCJTTWFzayIpLGQ9YS5kaWN0LmdldCgiTWFzayIpO3U/dSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9sPXU6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpkJiYoZCBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShkKT9oPWQ6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6Yyxpc0lubGluZTpuLHNtYXNrOmwsbWFzazpoLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDphLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIsaW52ZXJzZURlY29kZTpuLGludGVycG9sYXRlOml9KXtjb25zdCBzPSh0Kzc+PjMpKmEsbz1lLmJ5dGVMZW5ndGg7bGV0IGMsbDtpZighcnx8biYmIShzPT09bykpaWYobil7Yz1uZXcgVWludDhBcnJheShzKTtjLnNldChlKTtjLmZpbGwoMjU1LG8pfWVsc2UgYz1uZXcgVWludDhBcnJheShlKTtlbHNlIGM9ZTtpZihuKWZvcihsPTA7bDxvO2wrKyljW2xdXj0yNTU7cmV0dXJue2RhdGE6Yyx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOml9fXN0YXRpYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06aSxpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6byxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjPSEwfSl7Y29uc3QgbD0xPT09dCYmMT09PWEmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKGwpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6bH07aWYoYyYmci5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksaT1yLmdldENvbnRleHQoIjJkIix7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZX0pLGM9aS5jcmVhdGVJbWFnZURhdGEodCxhKTsoMCxuLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzplLGRlc3Q6Yy5kYXRhLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzfSk7aS5wdXRJbWFnZURhdGEoYywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTpvLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmksaW50ZXJwb2xhdGU6b30pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLndpZHRofHwwLHRoaXMubWFzayYmdGhpcy5tYXNrLndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLmhlaWdodHx8MCx0aGlzLm1hc2smJnRoaXMubWFzay5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxuPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLGk9KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPWRlY29kZUFuZENsYW1wKGVbY10sclt0XSxuW3RdLGkpO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5udW1Db21wcyxpPWEqcipuO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkoaSk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KGkpOm5ldyBVaW50MzJBcnJheShpKTtjb25zdCBjPWEqbixsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLG47Zm9yKGxldCBpPTA7aTxyO2krKyl7YT1kKygtOCZjKTtuPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPG4pe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxuOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPWk7ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBuPXU+PnI7bjwwP249MDpuPmwmJihuPWwpO3NbZF09bjt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxhLG4saSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQsZjtpZihzKXtsPXMud2lkdGg7aD1zLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO3MuZmlsbEdyYXlCdWZmZXIoYyk7bD09PXQmJmg9PT1hfHwoYz1yZXNpemVJbWFnZU1hc2soYyxzLmJwYyxsLGgsdCxhKSl9ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBQREZJbWFnZSl7bD1vLndpZHRoO2g9by5oZWlnaHQ7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKTtvLm51bUNvbXBzPTE7by5maWxsR3JheUJ1ZmZlcihjKTtmb3IodT0wLGQ9bCpoO3U8ZDsrK3UpY1t1XT0yNTUtY1t1XTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLG8uYnBjLGwsaCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCphO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3QgYT11KmU7Zm9yKGY9MDtmPGU7KytmKXtjb25zdCBlPWlbYStmXSxyPTIqZjtpZihlPG9bcl18fGU+b1tyKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLGY9MyxkPXQqbjt1PGQ7Kyt1LGYrPTQpZVtmXT1jW3VdO2Vsc2UgZm9yKHU9MCxmPTMsZD10Km47dTxkOysrdSxmKz00KWVbZl09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBuPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxpPW5bMF0scz1uWzFdLG89blsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1pKSpyK2k7ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319Y3JlYXRlSW1hZ2VEYXRhKGU9ITEpe2NvbnN0IHQ9dGhpcy5kcmF3V2lkdGgsYT10aGlzLmRyYXdIZWlnaHQsbj17d2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LGk9dGhpcy5udW1Db21wcyxzPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxsPXRoaXMuYnBjLGg9cyppKmwrNz4+MztpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1sP2U9ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJnQ9PT1zJiZhPT09byl7bi5raW5kPWU7bi5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse30pO2lmKHRoaXMubmVlZHNEZWNvZGUpeygwLHIuYXNzZXJ0KShlPT09ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9bi5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIG59aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGMuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe2xldCBlPW8qaDtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCXzI0QlBQO24uZGF0YT10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIG59fX1jb25zdCB1PXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse2ludGVybmFsOiEwfSksZD0wfHUubGVuZ3RoL2gqYS9vLGY9dGhpcy5nZXRDb21wb25lbnRzKHUpO2xldCBnLHA7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXtuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDtuLmRhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSo0KTtnPTE7cD0hMDt0aGlzLmZpbGxPcGFjaXR5KG4uZGF0YSx0LGEsZCxmKX1lbHNle24ua2luZD1yLkltYWdlS2luZC5SR0JfMjRCUFA7bi5kYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqMyk7Zz0wO3A9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2Iobi5kYXRhLHMsbyx0LGEsZCxsLGYsZyk7cCYmdGhpcy51bmRvUHJlYmxlbmQobi5kYXRhLHQsZCk7cmV0dXJuIG59ZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxzPWEqdCppKzc+PjMsbz10aGlzLmdldEltYWdlQnl0ZXMobipzLHtpbnRlcm5hbDohMH0pLGM9dGhpcy5nZXRDb21wb25lbnRzKG8pO2xldCBsLGg7aWYoMT09PWkpe2g9YSpuO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGw9MDtsPGg7KytsKWVbbF09Y1tsXS0xJjI1NTtlbHNlIGZvcihsPTA7bDxoOysrbCllW2xdPTI1NSYtY1tsXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoYyk7aD1hKm47Y29uc3QgdT0yNTUvKCgxPDxpKS0xKTtmb3IobD0wO2w8aDsrK2wpZVtsXT11KmNbbF19Z2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6bj0hMSxpbnRlcm5hbDppPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFuO2NvbnN0IHM9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtpZihpfHx0aGlzLmltYWdlIGluc3RhbmNlb2Ygby5EZWNvZGVTdHJlYW0pcmV0dXJuIHM7KDAsci5hc3NlcnQpKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocyl9fXQuUERGSW1hZ2U9UERGSW1hZ2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hcHBseU1hc2tJbWFnZURhdGE9ZnVuY3Rpb24gYXBwbHlNYXNrSW1hZ2VEYXRhKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOm49MCx3aWR0aDppLGhlaWdodDpzLGludmVyc2VEZWNvZGU6bz0hMX0pe2NvbnN0IGM9ci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxoXT1vP1swLGNdOltjLDBdLHU9aT4+MyxkPTcmaSxmPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtmb3IobGV0IHI9MDtyPHM7cisrKXtmb3IoY29uc3Qgcj10K3U7dDxyO3QrKyl7Y29uc3Qgcj10PGY/ZVt0XToyNTU7YVtuKytdPTEyOCZyP2g6bDthW24rK109NjQmcj9oOmw7YVtuKytdPTMyJnI/aDpsO2FbbisrXT0xNiZyP2g6bDthW24rK109OCZyP2g6bDthW24rK109NCZyP2g6bDthW24rK109MiZyP2g6bDthW24rK109MSZyP2g6bH1pZigwPT09ZCljb250aW51ZTtjb25zdCByPXQ8Zj9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8ZDtlKyspYVtuKytdPXImMTw8Ny1lP2g6bH1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpufX07dmFyIHI9YSgyKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmluY3JlbWVudGFsVXBkYXRlPWZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LG5ld1JlZnM6YSx4cmVmOm89bnVsbCxoYXNYZmE6bD0hMSx4ZmFEYXRhc2V0c1JlZjpoPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTp1PSExLGFjcm9Gb3JtUmVmOmQ9bnVsbCxhY3JvRm9ybTpmPW51bGwseGZhRGF0YTpnPW51bGx9KXtsJiZmdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGhhc1hmYURhdGFzZXRzRW50cnk6YSxhY3JvRm9ybVJlZjpuLGFjcm9Gb3JtOm8sbmV3UmVmczpjLHhyZWY6bCx4cmVmSW5mbzpofSl7aWYobnVsbD09PWwpcmV0dXJuO2lmKCFhKXtpZighbil7KDAsci53YXJuKSgiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtyZXR1cm59Y29uc3QgZT1vLmdldCgiWEZBIiksYT1lLnNsaWNlKCk7YS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Euc3BsaWNlKDMsMCx0KTtvLnNldCgiWEZBIixhKTtjb25zdCBpPWwuZW5jcnlwdDtsZXQgcz1udWxsO2kmJihzPWkuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKSk7Y29uc3QgaD1bYCR7bi5udW19ICR7bi5nZW59IG9ialxuYF07d3JpdGVEaWN0KG8saCxzKTtoLnB1c2goIlxuIik7by5zZXQoIlhGQSIsZSk7Yy5wdXNoKHtyZWY6bixkYXRhOmguam9pbigiIil9KX1pZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6bn09ZTtpZighdCljb250aW51ZTtjb25zdCBvPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoKDAsaS5wYXJzZVhGQVBhdGgpKHQpLDApO28/QXJyYXkuaXNBcnJheShuKT9vLmNoaWxkTm9kZXM9bi5tYXAoKGU9Pm5ldyBzLlNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOm8uY2hpbGROb2Rlcz1bbmV3IHMuU2ltcGxlRE9NTm9kZSgiI3RleHQiLG4pXTooMCxyLndhcm4pKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IG49W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChuKTtyZXR1cm4gbi5qb2luKCIiKX0obC5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGMpfWNvbnN0IHU9bC5lbmNyeXB0O2lmKHUpe2U9dS5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3QgZD1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7Yy5wdXNoKHtyZWY6dCxkYXRhOmR9KX0oe3hmYURhdGE6Zyx4ZmFEYXRhc2V0c1JlZjpoLGhhc1hmYURhdGFzZXRzRW50cnk6dSxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmYsbmV3UmVmczphLHhyZWY6byx4cmVmSW5mbzp0fSk7Y29uc3QgcD1uZXcgbi5EaWN0KG51bGwpLG09dC5uZXdSZWY7bGV0IGIseTtjb25zdCB3PWUuYXQoLTEpO2lmKDEwPT09d3x8MTM9PT13KXtiPVtdO3k9ZS5sZW5ndGh9ZWxzZXtiPVsiXG4iXTt5PWUubGVuZ3RoKzF9cC5zZXQoIlNpemUiLG0ubnVtKzEpO3Auc2V0KCJQcmV2Iix0LnN0YXJ0WFJlZik7cC5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIlhSZWYiKSk7bnVsbCE9PXQucm9vdFJlZiYmcC5zZXQoIlJvb3QiLHQucm9vdFJlZik7bnVsbCE9PXQuaW5mb1JlZiYmcC5zZXQoIkluZm8iLHQuaW5mb1JlZik7bnVsbCE9PXQuZW5jcnlwdFJlZiYmcC5zZXQoIkVuY3J5cHQiLHQuZW5jcnlwdFJlZik7YS5wdXNoKHtyZWY6bSxkYXRhOiIifSk7YT1hLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Y29uc3QgUz1bWzAsMSw2NTUzNV1dLHg9WzAsMV07bGV0IGs9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTp0fW9mIGEpe2s9TWF0aC5tYXgoayx5KTtTLnB1c2goWzEseSxNYXRoLm1pbihlLmdlbiw2NTUzNSldKTt5Kz10Lmxlbmd0aDt4LnB1c2goZS5udW0sMSk7Yi5wdXNoKHQpfXAuc2V0KCJJbmRleCIseCk7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGU9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksbj10LmZpbGVuYW1lfHwiIixpPVthLnRvU3RyaW5nKCksbixlLnRvU3RyaW5nKCldO2xldCBzPWkucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmluZm8pKXtpLnB1c2goZSk7cys9ZS5sZW5ndGh9Y29uc3Qgbz1uZXcgVWludDhBcnJheShzKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIGkpe3dyaXRlU3RyaW5nKGUsbCxvKTtsKz1lLmxlbmd0aH1yZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKCgwLGMuY2FsY3VsYXRlTUQ1KShvKSl9KHksdCk7cC5zZXQoIklEIixbdC5maWxlSWRzWzBdLGVdKX1jb25zdCBDPVsxLE1hdGguY2VpbChNYXRoLmxvZzIoaykvOCksMl0sdj0oQ1swXStDWzFdK0NbMl0pKlMubGVuZ3RoO3Auc2V0KCJXIixDKTtwLnNldCgiTGVuZ3RoIix2KTtiLnB1c2goYCR7bS5udW19ICR7bS5nZW59IG9ialxuYCk7d3JpdGVEaWN0KHAsYixudWxsKTtiLnB1c2goIiBzdHJlYW1cbiIpO2NvbnN0IEY9Yi5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKSxPPWBcbmVuZHN0cmVhbVxuZW5kb2JqXG5zdGFydHhyZWZcbiR7eX1cbiUlRU9GXG5gLFQ9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrRit2K08ubGVuZ3RoKTtULnNldChlKTtsZXQgTT1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBiKXt3cml0ZVN0cmluZyhlLE0sVCk7TSs9ZS5sZW5ndGh9Zm9yKGNvbnN0W2UsdCxhXW9mIFMpe009d3JpdGVJbnQoZSxDWzBdLE0sVCk7TT13cml0ZUludCh0LENbMV0sTSxUKTtNPXdyaXRlSW50KGEsQ1syXSxNLFQpfXdyaXRlU3RyaW5nKE8sTSxUKTtyZXR1cm4gVH07dC53cml0ZURpY3Q9d3JpdGVEaWN0O3Qud3JpdGVPYmplY3Q9ZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEscil7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBuLkRpY3Q/d3JpdGVEaWN0KHQsYSxyKTp0IGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZ3cml0ZVN0cmVhbSh0LGEscik7YS5wdXNoKCJcbmVuZG9ialxuIil9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNjQpLG89YSg1KSxjPWEoNjUpO2Z1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCByIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHsoMCxpLmVzY2FwZVBERk5hbWUpKHIpfSBgKTt3cml0ZVZhbHVlKGUuZ2V0UmF3KHIpLHQsYSl9dC5wdXNoKCI+PiIpfWZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXt3cml0ZURpY3QoZS5kaWN0LHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iKTtsZXQgcj1lLmdldFN0cmluZygpO251bGwhPT1hJiYocj1hLmVuY3J5cHRTdHJpbmcocikpO3QucHVzaChyLCJcbmVuZHN0cmVhbVxuIil9ZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl0LnB1c2goYC8keygwLGkuZXNjYXBlUERGTmFtZSkoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpIWZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEpe3QucHVzaCgiWyIpO2xldCByPSEwO2Zvcihjb25zdCBuIG9mIGUpe3I/cj0hMTp0LnB1c2goIiAiKTt3cml0ZVZhbHVlKG4sdCxhKX10LnB1c2goIl0iKX0oZSx0LGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtudWxsIT09YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIG4uRGljdD93cml0ZURpY3QoZSx0LGEpOmUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/d3JpdGVTdHJlYW0oZSx0LGEpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLHIud2FybikoYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsYSxyKXtmb3IobGV0IG49dCthLTE7bj5hLTE7bi0tKXtyW25dPTI1NSZlO2U+Pj04fXJldHVybiBhK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LGEpe2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylhW3Qrcl09MjU1JmUuY2hhckNvZGVBdChyKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O3QuWE1MUGFyc2VyRXJyb3JDb2RlPW47ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgYT1lW3RdO3JldHVybiIgIj09PWF8fCJcbiI9PT1hfHwiXHIiPT09YXx8Ilx0Ij09PWF9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsbj0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IGk9ZVtyXTtpZignIichPT1pJiYiJyIhPT1pKXJldHVybiBudWxsO2NvbnN0IHM9ZS5pbmRleE9mKGksKytyKTtpZihzPDApcmV0dXJuIG51bGw7bj1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOm4sYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBuPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcobixhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkQ29tbWVudCk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZENkYXQpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWk9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpO2ErPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1YTUxQYXJzZXJCYXNlO2NsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMmJnRoaXMuY2hpbGROb2Rlc1swXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2RlcyYmdGhpcy5jaGlsZE5vZGVzLmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBhPWVbdF0scj1bXTtsZXQgbj10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09bi5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W2ldPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBpLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gbi5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9bi5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYobi5jaGlsZE5vZGVzJiYwIT09bi5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtuLDBdKTtuPW4uY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7bj1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHsoMCxyLmVuY29kZVRvWG1sU3RyaW5nKSh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4keygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1TaW1wbGVET01Ob2RlO3QuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PW4uTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwO3QuY2FsY3VsYXRlU0hBMzg0PWNhbGN1bGF0ZVNIQTM4NDt0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDY2KTtjbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsbj0wO3I8MjU2Oysrcil7Y29uc3QgaT10W3JdO249bitpK2VbciVhXSYyNTU7dFtyXT10W25dO3Rbbl09aX10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLG49ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheShuKTtmb3IobGV0IHM9MDtzPG47KytzKXt0PXQrMSYyNTU7Y29uc3Qgbj1yW3RdO2E9YStuJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09bjtpW3NdPWVbc11ecltuK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gaX1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX10LkFSQ0ZvdXJDaXBoZXI9QVJDRm91ckNpcGhlcjtjb25zdCBzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGEscixuKXtsZXQgaT0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGM9MjcxNzMzODc4O2NvbnN0IGw9bis3MiYtNjQsaD1uZXcgVWludDhBcnJheShsKTtsZXQgdSxkO2Zvcih1PTA7dTxuOysrdSloW3VdPWFbcisrXTtoW3UrK109MTI4O2NvbnN0IGY9bC04O2Zvcig7dTxmOyloW3UrK109MDtoW3UrK109bjw8MyYyNTU7aFt1KytdPW4+PjUmMjU1O2hbdSsrXT1uPj4xMyYyNTU7aFt1KytdPW4+PjIxJjI1NTtoW3UrK109bj4+PjI5JjI1NTtoW3UrK109MDtoW3UrK109MDtoW3UrK109MDtjb25zdCBnPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IodT0wO3U8bDspe2ZvcihkPTA7ZDwxNjsrK2QsdSs9NClnW2RdPWhbdV18aFt1KzFdPDw4fGhbdSsyXTw8MTZ8aFt1KzNdPDwyNDtsZXQgYSxyLG49aSxsPXMsZj1vLHA9Yztmb3IoZD0wO2Q8NjQ7KytkKXtpZihkPDE2KXthPWwmZnx+bCZwO3I9ZH1lbHNlIGlmKGQ8MzIpe2E9cCZsfH5wJmY7cj01KmQrMSYxNX1lbHNlIGlmKGQ8NDgpe2E9bF5mXnA7cj0zKmQrNSYxNX1lbHNle2E9Zl4obHx+cCk7cj03KmQmMTV9Y29uc3QgaT1wLHM9bithK3RbZF0rZ1tyXXwwLG89ZVtkXTtwPWY7Zj1sO2w9bCsoczw8b3xzPj4+MzItbyl8MDtuPWl9aT1pK258MDtzPXMrbHwwO289bytmfDA7Yz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PXM7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGE7aWYoMzImZSl7YT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7YT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8YTw8MzItZTt0aGlzLmhpZ2g9YT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGE9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihhKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8YX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3Qgbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGEscil7bGV0IG49MTc3OTAzMzcwMyxpPTMxNDQxMzQyNzcscz0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixjPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGg9NTI4NzM0NjM1LHU9MTU0MTQ1OTIyNTtjb25zdCBkPTY0Kk1hdGguY2VpbCgocis5KS82NCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxyOysrZylmW2ddPXRbYSsrXTtmW2crK109MTI4O2NvbnN0IG09ZC04O2Zvcig7ZzxtOylmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109cj4+PjI5JjI1NTtmW2crK109cj4+MjEmMjU1O2ZbZysrXT1yPj4xMyYyNTU7ZltnKytdPXI+PjUmMjU1O2ZbZysrXT1yPDwzJjI1NTtjb25zdCBiPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdPWZbZ108PDI0fGZbZysxXTw8MTZ8ZltnKzJdPDw4fGZbZyszXTtnKz00fWZvcihwPTE2O3A8NjQ7KytwKWJbcF09KHJvdHIoeT1iW3AtMl0sMTcpXnJvdHIoeSwxOSleeT4+PjEwKStiW3AtN10rbGl0dGxlU2lnbWEoYltwLTE1XSkrYltwLTE2XXwwO2xldCB0LGEscj1uLGQ9aSxtPXMsdz1vLFM9Yyx4PWwsaz1oLEM9dTtmb3IocD0wO3A8NjQ7KytwKXt0PUMrc2lnbWFQcmltZShTKStjaChTLHgsaykrZVtwXStiW3BdO2E9c2lnbWEocikrbWFqKHIsZCxtKTtDPWs7az14O3g9UztTPXcrdHwwO3c9bTttPWQ7ZD1yO3I9dCthfDB9bj1uK3J8MDtpPWkrZHwwO3M9cyttfDA7bz1vK3d8MDtjPWMrU3wwO2w9bCt4fDA7aD1oK2t8MDt1PXUrQ3wwfXZhciB5O3JldHVybiBuZXcgVWludDhBcnJheShbbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCx1Pj4yNCYyNTUsdT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1XSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PW87Y29uc3QgYz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGEscixuKXtlLmFzc2lnbih0KTtlLmFuZChhKTtuLmFzc2lnbih0KTtuLm5vdCgpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIG1haihlLHQsYSxyLG4pe2UuYXNzaWduKHQpO2UuYW5kKGEpO24uYXNzaWduKHQpO24uYW5kKHIpO2UueG9yKG4pO24uYXNzaWduKGEpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyLG49ITEpe2xldCBpLHMsbyxjLGwsaCx1LGQ7aWYobil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cz1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2M9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7dT1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7ZD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtzPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtjPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO3U9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7ZD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBmPTEyOCpNYXRoLmNlaWwoKHIrMTcpLzEyOCksZz1uZXcgVWludDhBcnJheShmKTtsZXQgcCxtO2ZvcihwPTA7cDxyOysrcClnW3BdPXRbYSsrXTtnW3ArK109MTI4O2NvbnN0IGI9Zi0xNjtmb3IoO3A8YjspZ1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPXI+Pj4yOSYyNTU7Z1twKytdPXI+PjIxJjI1NTtnW3ArK109cj4+MTMmMjU1O2dbcCsrXT1yPj41JjI1NTtnW3ArK109cjw8MyYyNTU7Y29uc3QgeT1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspeVtwXT1uZXcgV29yZDY0KDAsMCk7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApO2NvbnN0IFQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEU9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApO2xldCBOLFI7Zm9yKHA9MDtwPGY7KXtmb3IobT0wO208MTY7KyttKXt5W21dLmhpZ2g9Z1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdO3lbbV0ubG93PWdbcCs0XTw8MjR8Z1twKzVdPDwxNnxnW3ArNl08PDh8Z1twKzddO3ArPTh9Zm9yKG09MTY7bTw4MDsrK20pe049eVttXTtsaXR0bGVTaWdtYVByaW1lKE4seVttLTJdLEQpO04uYWRkKHlbbS03XSk7bGl0dGxlU2lnbWEoRSx5W20tMTVdLEQpO04uYWRkKEUpO04uYWRkKHlbbS0xNl0pfXcuYXNzaWduKGkpO1MuYXNzaWduKHMpO3guYXNzaWduKG8pO2suYXNzaWduKGMpO0MuYXNzaWduKGwpO3YuYXNzaWduKGgpO0YuYXNzaWduKHUpO08uYXNzaWduKGQpO2ZvcihtPTA7bTw4MDsrK20pe1QuYXNzaWduKE8pO3NpZ21hUHJpbWUoRSxDLEQpO1QuYWRkKEUpO2NoKEUsQyx2LEYsRCk7VC5hZGQoRSk7VC5hZGQoZVttXSk7VC5hZGQoeVttXSk7c2lnbWEoTSx3LEQpO21haihFLHcsUyx4LEQpO00uYWRkKEUpO049TztPPUY7Rj12O3Y9QztrLmFkZChUKTtDPWs7az14O3g9UztTPXc7Ti5hc3NpZ24oVCk7Ti5hZGQoTSk7dz1OfWkuYWRkKHcpO3MuYWRkKFMpO28uYWRkKHgpO2MuYWRkKGspO2wuYWRkKEMpO2guYWRkKHYpO3UuYWRkKEYpO2QuYWRkKE8pfWlmKG4pe1I9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKX1lbHNle1I9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKTt1LmNvcHlUbyhSLDQ4KTtkLmNvcHlUbyhSLDU2KX1yZXR1cm4gUn19KCk7dC5jYWxjdWxhdGVTSEE1MTI9YztmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjKGUsdCxhLCEwKX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixuO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpaVtlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9aVsxM107aVsxM109aVs5XTtpWzldPWlbNV07aVs1XT1pWzFdO2lbMV09YTthPWlbMTRdO3I9aVsxMF07aVsxNF09aVs2XTtpWzEwXT1pWzJdO2lbNl09YTtpWzJdPXI7YT1pWzE1XTtyPWlbMTFdO249aVs3XTtpWzE1XT1pWzNdO2lbMTFdPWE7aVs3XT1yO2lbM109bjtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpaVthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W2lbZV1dLHI9dGhpcy5fbWl4W2lbZSsxXV0sbj10aGlzLl9taXhbaVtlKzJdXSxzPXRoaXMuX21peFtpW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5uPj4+MTZebjw8MTZecz4+PjI0XnM8PDg7aVtlXT1hPj4+MjQmMjU1O2lbZSsxXT1hPj4xNiYyNTU7aVtlKzJdPWE+PjgmMjU1O2lbZSszXT0yNTUmYX19YT1pWzEzXTtpWzEzXT1pWzldO2lbOV09aVs1XTtpWzVdPWlbMV07aVsxXT1hO2E9aVsxNF07cj1pWzEwXTtpWzE0XT1pWzZdO2lbMTBdPWlbMl07aVs2XT1hO2lbMl09cjthPWlbMTVdO3I9aVsxMV07bj1pWzddO2lbMTVdPWlbM107aVsxMV09YTtpWzddPXI7aVszXT1uO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2lbZV1ePXRbZV19cmV0dXJuIGl9X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsbixpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07aT1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1pO2k9c1syXTtuPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPWk7c1sxNF09bjtpPXNbM107bj1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPWk7c1sxMV09bjtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2UrMF0sYT1zW2UrMV0sbj1zW2UrMl0saT1zW2UrM107cj10XmFebl5pO3NbZSswXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2Febl07c1tlKzJdXj1yXnRoaXMuX21peENvbFtuXmldO3NbZSszXV49cl50aGlzLl9taXhDb2xbaV50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO2k9c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109aTtpPXNbMl07bj1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1pO3NbMTRdPW47aT1zWzNdO249c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1pO3NbMTFdPW47c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltuXT1lW3RdOysrbjtpZihuPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj1zO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqaS5sZW5ndGg7aWYodCl7Y29uc3QgZT1pLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7aVtpLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9aS5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChpW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLG49dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8cjsrK3QsKytpKW5baV09ZVt0XTtpZihpPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1pO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PW47ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltuXT1lW3NdOysrbjtpZihuPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj10O2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNippLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQoaVtlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixuPTE7ZTwxNzY7KytuKXtsZXQgaT1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07aT10W2ldO3M9dFtzXTtvPXRbb107Yz10W2NdO2lePWFbbl07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1pXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLG4saSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO249YVtlLTJdO2k9YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8oaSwwLGkubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9byhuLDAsbi5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShpLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7bi5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT1vKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjb25zdCBsPWZ1bmN0aW9uIFBERjIwQ2xvc3VyZSgpe2Z1bmN0aW9uIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLG49WzBdLGk9MDtmb3IoO2k8NjR8fG4uYXQoLTEpPmktMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7bj1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1uLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8obiwwLG4ubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChuLDAsbi5sZW5ndGgpOjI9PT11JiYocj1jKG4sMCxuLmxlbmd0aCkpO2krK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1yZXR1cm4gY2xhc3MgUERGMjB7aGFzaChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxhLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7aS5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz1jYWxjdWxhdGVQREYyMEhhc2goZSxpLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLG4pfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1jYWxjdWxhdGVQREYyMEhhc2goZSxuLFtdKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkoaSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO24uc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IGk9Y2FsY3VsYXRlUERGMjBIYXNoKGUsbixhKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKS5kZWNyeXB0QmxvY2sociwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtjb25zdCBuPWNhbGN1bGF0ZVBERjIwSGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fX0oKTt0LlBERjIwPWw7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKW5bZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IGk9KDAsci5zdHJpbmdUb0J5dGVzKShlKTtpPXQuZW5jcnlwdChpLG4pO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO3Muc2V0KG4pO3Muc2V0KGksMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBoPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLG4saSxvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jmk7dVtnKytdPWk+PjgmMjU1O3VbZysrXT1pPj4xNiYyNTU7dVtnKytdPWk+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9bi5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSxyPSExKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLGk9YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPGk7KytvKW5bb109YVtvXTtuW28rK109MjU1JmU7bltvKytdPWU+PjgmMjU1O25bbysrXT1lPj4xNiYyNTU7bltvKytdPTI1NSZ0O25bbysrXT10Pj44JjI1NTtpZihyKXtuW28rK109MTE1O25bbysrXT02NTtuW28rK109MTA4O25bbysrXT04NH1yZXR1cm4gcyhuLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxpLHMpe2lmKCEodCBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsaSxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLGkscywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLGksbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLG4uaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBoPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fDEhPT1oJiYyIT09aCYmNCE9PWgmJjUhPT1oKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWg7bGV0IHU9YS5nZXQoIkxlbmd0aCIpO2lmKCF1KWlmKGg8PTMpdT00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJnQgaW5zdGFuY2VvZiBuLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTt1PWEmJmEuZ2V0KCJMZW5ndGgiKXx8MTI4O3U8NDAmJih1PDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDQwfHx1JTghPTApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IGQ9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgwLDMyKSxmPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCwzMiksZz1hLmdldCgiUCIpLHA9YS5nZXQoIlIiKSxtPSg0PT09aHx8NT09PWgpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1tO2NvbnN0IGI9KDAsci5zdHJpbmdUb0J5dGVzKShpKTtsZXQgeSx3O2lmKG8pe2lmKDY9PT1wKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaChlKXsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9eT0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1oKXc9cHJlcGFyZUtleURhdGEoYix5LGQsZixnLHAsdSxtKTtlbHNle2NvbnN0IGU9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgzMiw0MCksdD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJPIikpLnN1YmFycmF5KDQwLDQ4KSxuPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCw0OCksaT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLnN1YmFycmF5KDMyLDQwKSxzPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTt3PWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLG4saSxzLG8sYyxoLHUsZCl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtsZXQgZjtmPTY9PT1lP25ldyBsOm5ldyBQREYxNztyZXR1cm4gZi5jaGVja1VzZXJQYXNzd29yZCh0LG8scyk/Zi5nZXRVc2VyS2V5KHQsYyx1KTp0Lmxlbmd0aCYmZi5jaGVja093bmVyUGFzc3dvcmQodCxyLGksYSk/Zi5nZXRPd25lcktleSh0LG4saSxoKTpudWxsfShwLHksZCxlLHQsbixmLGkscyxvLGMpfWlmKCF3JiYhbyl0aHJvdyBuZXcgci5QYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLHIuUGFzc3dvcmRSZXNwb25zZXMuTkVFRF9QQVNTV09SRCk7aWYoIXcmJm8pe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlVXNlclBhc3N3b3JkKHQsYSxyLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBvPTA7Y29uc3QgYz1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtvPGM7KytvKWlbb109dFtvXTtsZXQgbD0wO2Zvcig7bzwzMjspaVtvKytdPWVbbCsrXTtsZXQgaD1zKGksMCxvKTtjb25zdCB1PW4+PjM7aWYocj49Mylmb3IobD0wO2w8NTA7KytsKWg9cyhoLDAsaC5sZW5ndGgpO2xldCBkLGY7aWYocj49Myl7Zj1hO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKGw9MTk7bD49MDtsLS0pe2ZvcihsZXQgdD0wO3Q8dTsrK3QpZVt0XT1oW3RdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcihlKTtmPWQuZW5jcnlwdEJsb2NrKGYpfX1lbHNle2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoaC5zdWJhcnJheSgwLHUpKTtmPWQuZW5jcnlwdEJsb2NrKGEpfXJldHVybiBmfSh5LGQscCx1KTt3PXByZXBhcmVLZXlEYXRhKGIsdCxkLGYsZyxwLHUsbSl9aWYoIXcpdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsci5QYXNzd29yZFJlc3BvbnNlcy5JTkNPUlJFQ1RfUEFTU1dPUkQpO3RoaXMuZW5jcnlwdGlvbktleT13O2lmKGg+PTQpe2NvbnN0IGU9YS5nZXQoIkNGIik7ZSBpbnN0YW5jZW9mIG4uRGljdCYmKGUuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPWU7dGhpcy5zdG1mPWEuZ2V0KCJTdG1GIil8fHQ7dGhpcy5zdHJmPWEuZ2V0KCJTdHJGIil8fHQ7dGhpcy5lZmY9YS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksYnVpbGRDaXBoZXJDb25zdHJ1Y3Rvcih0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT1idWlsZE9iamVjdEtleShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxyPWZ1bmN0aW9uIGJ1aWxkQ2lwaGVyQ2lwaGVyQ29uc3RydWN0b3IoKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHIscil9fX0oKTt0LkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk9aH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRlY3J5cHRTdHJlYW09dm9pZCAwO3ZhciByPWEoMTcpO2NsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rJiZ0aGlzLm5leHRDaHVuay5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9cn19dC5EZWNyeXB0U3RyZWFtPURlY3J5cHRTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DYXRhbG9nPXZvaWQgMDt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMykscz1hKDY4KSxvPWEoNSksYz1hKDY5KSxsPWEoMTIpLGg9YSg3MCksdT1hKDU3KSxkPWEoNzEpLGY9YSg3Mik7ZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihlKXtlIGluc3RhbmNlb2YgaS5EaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOm51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0O3RoaXMuX2FjdHVhbE51bVBhZ2VzPW51bGw7dGhpcy5mb250Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IHUuR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZTt0aGlzLnBhZ2VJbmRleENhY2hlPW5ldyBpLlJlZlNldENhY2hlO3RoaXMubm9uQmxlbmRNb2Rlc1NldD1uZXcgaS5SZWZTZXR9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoci5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChlLm5hbWUpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpOygwLG4ud2FybikoYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgaS5SZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGE9ISh0aGlzLnhyZWYuZW5jcnlwdCYmdGhpcy54cmVmLmVuY3J5cHQuZW5jcnlwdE1ldGFkYXRhKSxyPXRoaXMueHJlZi5mZXRjaChlLGEpO2lmKHIgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJnIuZGljdCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1yLmRpY3QuZ2V0KCJUeXBlIiksYT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoKDAsaS5pc05hbWUpKGUsIk1ldGFkYXRhIikmJigwLGkuaXNOYW1lKShhLCJYTUwiKSl7Y29uc3QgZT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IGQuTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlN0cnVjdFRyZWVSb290Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBmLlN0cnVjdFRyZWVSb290KGUpO3QuaW5pdCgpO3JldHVybiB0fWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBpLlJlZlNldDtyLnB1dChlKTtjb25zdCBzPXRoaXMueHJlZixvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxjPXMuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PWMpY29udGludWU7aWYoIWMuaGFzKCJUaXRsZSIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YyxyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCB1PWMuZ2V0KCJUaXRsZSIpLGQ9Yy5nZXQoIkYiKXx8MCxmPWMuZ2V0QXJyYXkoIkMiKSxnPWMuZ2V0KCJDb3VudCIpO2xldCBwPW87IUFycmF5LmlzQXJyYXkoZil8fDMhPT1mLmxlbmd0aHx8MD09PWZbMF0mJjA9PT1mWzFdJiYwPT09ZlsyXXx8KHA9bC5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihmLDApKTtjb25zdCBtPXthY3Rpb246aC5hY3Rpb24sYXR0YWNobWVudDpoLmF0dGFjaG1lbnQsZGVzdDpoLmRlc3QsdXJsOmgudXJsLHVuc2FmZVVybDpoLnVuc2FmZVVybCxuZXdXaW5kb3c6aC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6aC5zZXRPQ0dTdGF0ZSx0aXRsZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh1KSxjb2xvcjpwLGNvdW50Ok51bWJlci5pc0ludGVnZXIoZyk/Zzp2b2lkIDAsYm9sZDohISgyJmQpLGl0YWxpYzohISgxJmQpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKG0pO2U9Yy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50Om19KTtyLnB1dChlKX1lPWMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gbi5QZXJtaXNzaW9uRmxhZyl7Y29uc3Qgcj1uLlBlcm1pc3Npb25GbGFnW2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHM9W10sbz1bXTtmb3IoY29uc3QgZSBvZiByKXtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpY29udGludWU7by5wdXNoKGUpO2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cy5wdXNoKHtpZDplLnRvU3RyaW5nKCksbmFtZToic3RyaW5nIj09dHlwZW9mIHQuZ2V0KCJOYW1lIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk5hbWUiKSk6bnVsbCxpbnRlbnQ6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiSW50ZW50Iik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIkludGVudCIpKTpudWxsfSl9ZT10aGlzLl9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGEsbyk7ZS5ncm91cHM9c31jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9X3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBpLlJlZiYmdC5pbmNsdWRlcyhyKSYmYS5wdXNoKHIudG9TdHJpbmcoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGE9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO24ucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJm4ucHVzaChlKX1pZihhPjApcmV0dXJuIG47Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmbi5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBufWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsbi53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IGkuUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBpLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxuLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGUmJmUuaGFzKCJEZXN0cyIpP25ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG89IiI7Y29uc3QgYz1uZXcgcy5OdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKTtsZXQgbD0iIixoPTE7Zm9yKGxldCBlPTAscz10aGlzLm51bVBhZ2VzO2U8cztlKyspe2NvbnN0IHM9Yy5nZXQoZSk7aWYodm9pZCAwIT09cyl7aWYoIShzIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYocy5oYXMoIlR5cGUiKSYmISgwLGkuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJTIikpe2NvbnN0IGU9cy5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKHMuaGFzKCJQIikpe2NvbnN0IGU9cy5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO289KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSl9ZWxzZSBvPSIiO2lmKHMuaGFzKCJTdCIpKXtjb25zdCBlPXMuZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aD1lfWVsc2UgaD0xfXN3aXRjaChhKXtjYXNlIkQiOmw9aDticmVhaztjYXNlIlIiOmNhc2UiciI6bD0oMCxyLnRvUm9tYW5OdW1lcmFscykoaCwiciI9PT1hKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PTY1LGk9OTcscz0iYSI9PT1hP2k6dCxvPWgtMTtsPVN0cmluZy5mcm9tQ2hhckNvZGUocytvJWUpLnJlcGVhdChNYXRoLmZsb29yKG8vZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2F9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtsPSIifXRbZV09bytsO2grK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUuZ2V0S2V5cygpKXtjb25zdCByPWUuZ2V0KGEpO2xldCBzO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKHM9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCUyPT0wKXtyLmV2ZXJ5KCgoZSx0LGEpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49YVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocz1yKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wJiYocz1yKTticmVhaztkZWZhdWx0OigwLG4ud2FybikoYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cyl7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFthXT1zfWVsc2UoMCxuLndhcm4pKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtyfS5gKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPW5ldyBpLkRpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgcj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOnJ9KTtBcnJheS5pc0FycmF5KHIuZGVzdCk/dC5kZXN0PXIuZGVzdDpyLmFjdGlvbiYmKHQuYWN0aW9uPXIuYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkoZSkmJih0LmRlc3Q9ZSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wZW5BY3Rpb24iLCgwLG4ub2JqZWN0U2l6ZSkodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IGguRmlsZVNwZWMocix0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7dHx8KHQ9bmV3IGkuRGljdCh0aGlzLnhyZWYpKTt0LnNldCgoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKSxyKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxhKXtpZighKGEgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybjtpZighKDAsaS5pc05hbWUpKGEuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IHI9YS5nZXQoIkpTIik7aWYociBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSlyPXIuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuO251bGw9PT10JiYodD1uZXcgTWFwKTtyPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIpLnJlcGxhY2UoL1x1MDAwMC9nLCIiKTt0LnNldChlLHIpfWlmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpLGEpfWNvbnN0IGE9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQgamF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsZT9bLi4uZS52YWx1ZXMoKV06bnVsbCl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD0oMCxyLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxuLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlKTtpZihlKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTtmb3IoY29uc3RbYSxyXW9mIGUpYSBpbiB0P3RbYV0ucHVzaChyKTp0W2FdPVtyXX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBhPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgciBvZiBhKWlmKHIubG9hZGVkTmFtZT09PWUpe3IuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpeygwLGMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sYT1uZXcgaS5SZWZTZXQscj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHIpO2NvbnN0IHM9dGhpcy54cmVmLG89dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsYz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IHI9dC5wb3AoKTtpZihyIGluc3RhbmNlb2YgaS5SZWYpe2NvbnN0IGg9by5nZXQocik7aWYoaD49MCYmbCtoPD1lKXtsKz1oO2NvbnRpbnVlfWlmKGEuaGFzKHIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTthLnB1dChyKTtjb25zdCB1PWF3YWl0IHMuZmV0Y2hBc3luYyhyKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtsZXQgdD11LmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhdS5oYXMoIktpZHMiKSl7by5oYXMocil8fG8ucHV0KHIsMSk7Yy5oYXMocil8fGMucHV0KHIsbCk7aWYobD09PWUpcmV0dXJuW3Uscl07bCsrO2NvbnRpbnVlfX10LnB1c2godSk7Y29udGludWV9aWYoIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmh9PXI7bGV0IHU9ci5nZXRSYXcoIkNvdW50Iik7dSBpbnN0YW5jZW9mIGkuUmVmJiYodT1hd2FpdCBzLmZldGNoQXN5bmModSkpO2lmKE51bWJlci5pc0ludGVnZXIodSkmJnU+PTApe2gmJiFvLmhhcyhoKSYmby5wdXQoaCx1KTtpZihsK3U8PWUpe2wrPXU7Y29udGludWV9fWxldCBkPXIuZ2V0UmF3KCJLaWRzIik7ZCBpbnN0YW5jZW9mIGkuUmVmJiYoZD1hd2FpdCBzLmZldGNoQXN5bmMoZCkpO2lmKCFBcnJheS5pc0FycmF5KGQpKXtsZXQgdD1yLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhci5oYXMoIktpZHMiKSl7aWYobD09PWUpcmV0dXJuW3IsbnVsbF07bCsrO2NvbnRpbnVlfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXQucHVzaChkW2VdKX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0IHQ9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgaS5SZWZTZXQscz10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHMpO2NvbnN0IG89bmV3IE1hcCxjPXRoaXMueHJlZixsPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGg9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFsLmhhcyh0KSYmbC5wdXQodCxoKTtvLnNldChoKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcih0KXtpZih0IGluc3RhbmNlb2Ygci5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IHQ7by5zZXQoaCsrLFt0LG51bGxdKX1mb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBlPXQuYXQoLTEpLHtjdXJyZW50Tm9kZTpyLHBvc0luS2lkczpzfT1lO2xldCBvPXIuZ2V0UmF3KCJLaWRzIik7aWYobyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtvPWF3YWl0IGMuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobykpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49by5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3QgbD1vW3NdO2xldCBoO2lmKGwgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMobCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KGwpO3RyeXtoPWF3YWl0IGMuZmV0Y2hBc3luYyhsKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgaD1sO2lmKCEoaCBpbnN0YW5jZW9mIGkuRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgdT1oLmdldFJhdygiVHlwZSIpO2lmKHUgaW5zdGFuY2VvZiBpLlJlZil0cnl7dT1hd2FpdCBjLmZldGNoQXN5bmModSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfSgwLGkuaXNOYW1lKSh1LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGgsbCBpbnN0YW5jZW9mIGkuUmVmP2w6bnVsbCk6dC5wdXNoKHtjdXJyZW50Tm9kZTpoLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gb31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKCgwLGkuaXNSZWZzRXF1YWwpKHQsZSkmJiEoMCxpLmlzRGljdCkoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBpLkRpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgaS5SZWYpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZigoMCxpLmlzUmVmc0VxdWFsKShyLHQpKXtjPSEwO2JyZWFrfW8ucHVzaChhLmZldGNoQXN5bmMocikudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighYyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcyxyXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2Esbl09dDtyKz1hO3JldHVybiBuZXh0KG4pfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLG51bGwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9ZS5kZXN0RGljdDtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiIT10eXBlb2YgYSl7KDAsbi53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIik7cmV0dXJufWNvbnN0IHM9ZS5kb2NCYXNlVXJsfHxudWxsLGM9ZS5kb2NBdHRhY2htZW50c3x8bnVsbDtsZXQgbCxoLHU9dC5nZXQoIkEiKTtpZighKHUgaW5zdGFuY2VvZiBpLkRpY3QpKWlmKHQuaGFzKCJEZXN0IikpdT10LmdldCgiRGVzdCIpO2Vsc2V7dT10LmdldCgiQUEiKTt1IGluc3RhbmNlb2YgaS5EaWN0JiYodS5oYXMoIkQiKT91PXUuZ2V0KCJEIik6dS5oYXMoIlUiKSYmKHU9dS5nZXQoIlUiKSkpfWlmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9dS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IHQ9ZS5uYW1lO3N3aXRjaCh0KXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT11LmdldCgiRmxhZ3MiKSxzPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIHUuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIGkuUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZC5wdXNoKCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpKTthLnJlc2V0Rm9ybT17ZmllbGRzOmQscmVmczpmLGluY2x1ZGU6c307YnJlYWs7Y2FzZSJVUkkiOmw9dS5nZXQoIlVSSSIpO2wgaW5zdGFuY2VvZiBpLk5hbWUmJihsPSIvIitsLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6aD11LmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBnPXUuZ2V0KCJGIik7ZyBpbnN0YW5jZW9mIGkuRGljdD9sPWcuZ2V0KCJGIil8fG51bGw6InN0cmluZyI9PXR5cGVvZiBnJiYobD1nKTtsZXQgcD11LmdldCgiRCIpO2lmKHApe3AgaW5zdGFuY2VvZiBpLk5hbWUmJihwPXAubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX19Y29uc3QgbT11LmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgbSYmKGEubmV3V2luZG93PW0pO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGI9dS5nZXQoIlQiKTtsZXQgeTtpZihjJiZiIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPWIuZ2V0KCJSIiksdD1iLmdldCgiTiIpOygwLGkuaXNOYW1lKShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHk9Y1soMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh0KV0pfXk/YS5hdHRhY2htZW50PXk6KDAsbi53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3Qgdz11LmdldCgiTiIpO3cgaW5zdGFuY2VvZiBpLk5hbWUmJihhLmFjdGlvbj13Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IFM9dS5nZXQoIlN0YXRlIikseD11LmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KFMpfHwwPT09Uy5sZW5ndGgpYnJlYWs7Y29uc3Qgaz1bXTtmb3IoY29uc3QgZSBvZiBTKWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjprLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBpLlJlZiYmay5wdXNoKGUudG9TdHJpbmcoKSk7aWYoay5sZW5ndGghPT1TLmxlbmd0aClicmVhazthLnNldE9DR1N0YXRlPXtzdGF0ZTprLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgeHx8eH07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBDPXUuZ2V0KCJKUyIpO2xldCB2O0MgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/dj1DLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgQyYmKHY9Qyk7Y29uc3QgRj12JiYoMCxyLnJlY292ZXJKc1VSTCkoKDAsbi5zdHJpbmdUb1BERlN0cmluZykodikpO2lmKEYpe2w9Ri51cmw7YS5uZXdXaW5kb3c9Ri5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT10fHwiU3VibWl0Rm9ybSI9PT10KWJyZWFrOygwLG4ud2FybikoYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke3R9Ii5gKX19ZWxzZSB0LmhhcygiRGVzdCIpJiYoaD10LmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShsLHMse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYoYS51cmw9ZS5ocmVmKTthLnVuc2FmZVVybD1sfWlmKGgpe2ggaW5zdGFuY2VvZiBpLk5hbWUmJihoPWgubmFtZSk7InN0cmluZyI9PXR5cGVvZiBoP2EuZGVzdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoYS5kZXN0PWgpfX19dC5DYXRhbG9nPUNhdGFsb2d9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO3ZhciByPWEoMyksbj1hKDIpO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuY29uc3RydWN0b3I9PT1OYW1lT3JOdW1iZXJUcmVlJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgTmFtZU9yTnVtYmVyVHJlZS4iKTt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsYT1uZXcgci5SZWZTZXQ7YS5wdXQodGhpcy5yb290KTtjb25zdCBpPVt0aGlzLnJvb3RdO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IHM9dC5mZXRjaElmUmVmKGkuc2hpZnQoKSk7aWYoIShzIGluc3RhbmNlb2Ygci5EaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtpLnB1c2godCk7YS5wdXQodCl9Y29udGludWV9Y29uc3Qgbz1zLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpZS5zZXQodC5mZXRjaElmUmVmKG9bYV0pLHQuZmV0Y2hJZlJlZihvW2ErMV0pKX1yZXR1cm4gZX1nZXQoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxyPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytyPjEwKXsoMCxuLndhcm4pKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2xldCBzPTAsbz1pLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IHI9cytvPj4xLG49dC5mZXRjaElmUmVmKGlbcl0pLGM9bi5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89ci0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe2E9bjticmVha31zPXIrMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IGk9YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShpKSl7bGV0IGE9MCxyPWkubGVuZ3RoLTI7Zm9yKDthPD1yOyl7Y29uc3Qgbj1hK3I+PjEscz1uKygxJm4pLG89dC5mZXRjaElmUmVmKGlbc10pO2lmKGU8bylyPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKGlbcysxXSk7YT1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fTt0Lk51bWJlclRyZWU9Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLG4uY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDMpLG49YSgzOCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GaWxlU3BlYz12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNSksaT1hKDMpO2Z1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGx9dC5GaWxlU3BlYz1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlLHQpe2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiYoMCxyLndhcm4pKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITA7aWYoIWUuaGFzKCJFRiIpKXt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITE7KDAsci53YXJuKSgiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19fWdldCBmaWxlbmFtZSgpe2lmKCF0aGlzLl9maWxlbmFtZSYmdGhpcy5yb290KXtjb25zdCBlPXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KXx8InVubmFtZWQiO3RoaXMuX2ZpbGVuYW1lPSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpLnJlcGxhY2UoL1xcXFwvZywiXFwiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9cXC9nLCIvIil9cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50KCl7aWYoIXRoaXMuY29udGVudEF2YWlsYWJsZSlyZXR1cm4gbnVsbDshdGhpcy5jb250ZW50UmVmJiZ0aGlzLnJvb3QmJih0aGlzLmNvbnRlbnRSZWY9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QuZ2V0KCJFRiIpKSk7bGV0IGU9bnVsbDtpZih0aGlzLmNvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxyLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXRhZGF0YVBhcnNlcj12b2lkIDA7dmFyIHI9YSg2NCk7dC5NZXRhZGF0YVBhcnNlcj1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyByLlNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2UoLz5cXDM3NlxcMzc3KFtePF0rKS9nLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLChmdW5jdGlvbihlLHQsYSxyKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqYSsxKnIpfSkpLnJlcGxhY2UoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csKGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pKSxyPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2KmEuY2hhckNvZGVBdChlKSthLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOnIucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiI+IityLmpvaW4oIiIpfSkpfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSkpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLGE9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLGEubWFwKChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDA7dmFyIHI9YSgzKSxuPWEoMiksaT1hKDY4KTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWU7dGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiByLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygci5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiByLk5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmhhcyh0KT9hLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIHIuUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdCk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cyxtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgYT1udWxsO3QgaW5zdGFuY2VvZiByLlJlZj9hPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiByLkRpY3QmJihhPXQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIHIuUmVmJiYoZT1uLnRvU3RyaW5nKCkpO2NvbnN0IGk9YS5nZXQoIlR5cGUiKWluc3RhbmNlb2Ygci5OYW1lP2EuZ2V0KCJUeXBlIikubmFtZTpudWxsO3JldHVybiJNQ1IiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6byxyZWZPYmpJZDphLmdldFJhdygiU3RtIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJTdG0iKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDphLmdldCgiTUNJRCIpfSk6Ik9CSlIiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6YyxyZWZPYmpJZDphLmdldFJhdygiT2JqIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJPYmoiKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KTpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpsLGRpY3Q6YX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDphPW51bGwscGFnZU9iaklkOnI9bnVsbCxyZWZPYmpJZDpuPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9YTt0aGlzLnBhZ2VPYmpJZD1yO3RoaXMucmVmT2JqSWQ9bjt0aGlzLnBhcmVudE5vZGU9bnVsbH19dC5TdHJ1Y3RUcmVlUGFnZT1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1wYXJzZSgpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCBlPXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm47Y29uc3QgYT1uZXcgaS5OdW1iZXJUcmVlKGUsdGhpcy5yb290RGljdC54cmVmKS5nZXQodCk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuO2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiByLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaChlKSxuKX1hZGROb2RlKGUsdCxhPTApe2lmKGE+NDApeygwLG4ud2FybikoIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxpKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fCgwLHIuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGkpfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1jb25zdCBvPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighbylyZXR1cm4gaTtsZXQgYz0hMTtmb3IoY29uc3QgdCBvZiBvLmtpZHMpaWYodC50eXBlPT09bCYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWk7Yz0hMH1jfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWEpcmV0dXJuITE7aWYoYSBpbnN0YW5jZW9mIHIuRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCBuPSExO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtjb25zdCBpPWFbcl07aWYoaSYmaS50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tyXT10O249ITB9fXJldHVybiBufWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsbi53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBpPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGkpKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcGFnZSR7dC5wYWdlT2JqSWR9X21jaWQke3QubWNpZH1gfSk6dC50eXBlPT09YyYmci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PYmplY3RMb2FkZXI9dm9pZCAwO3ZhciByPWEoMyksbj1hKDUpLGk9YSg0KSxzPWEoMik7ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2Ygci5EaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGkgb2YgZSkoKGE9aSlpbnN0YW5jZW9mIHIuUmVmfHxhIGluc3RhbmNlb2Ygci5EaWN0fHxhIGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmdC5wdXNoKGkpO3ZhciBhfXQuT2JqZWN0TG9hZGVyPWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWE7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IHIuUmVmU2V0O2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhyKTt2b2lkIDAhPT1lJiZhLnB1c2goZSl9cmV0dXJuIHRoaXMuX3dhbGsoYSl9YXN5bmMgX3dhbGsoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbz1lLnBvcCgpO2lmKG8gaW5zdGFuY2VvZiByLlJlZil7aWYodGhpcy5yZWZTZXQuaGFzKG8pKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQobyk7bz10aGlzLnhyZWYuZmV0Y2gobyl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpeygwLHMud2FybikoYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKG8pO2EucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYobyBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3QgZT1vLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHI9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3I9ITA7YS5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXImJnQucHVzaChvKX19YWRkQ2hpbGRyZW4obyxlKX1pZihhLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMoYSk7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2Ygci5SZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTtyZXR1cm4gdGhpcy5fd2Fsayh0KX10aGlzLnJlZlNldD1udWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YRkFGYWN0b3J5PXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNzkpLGk9YSg4NSkscz1hKDgzKSxvPWEoNzYpLGM9YSgyKSxsPWEoODYpLGg9YSg5Nik7Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgbC5YRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBuLkJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBpLkRhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW3IuJHRvUGFnZXNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pKX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXI9bmV3IHMuRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcyl7ZT0oMCxvLnN0cmlwUXVvdGVzKShlKTt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IGwuWEZBUGFyc2VyKGguWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbci4kbm9kZU5hbWVdKSl7Y29uc3QgZT1oLlhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO3Q9ZX1jb25zdCBhPXRbci4kdG9IVE1MXSgpO2lmKCFhLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDpufT1hLHthdHRyaWJ1dGVzOml9PW47aWYoaSl7aS5jbGFzcyYmKGkuY2xhc3M9aS5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO2kuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpuLHN0cjp0W3IuJHRleHRdKCl9fWNhdGNoKGUpeygwLGMud2FybikoYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX10LlhGQUZhY3Rvcnk9WEZBRmFjdG9yeX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhtbE9iamVjdD10LlhGQU9iamVjdEFycmF5PXQuWEZBT2JqZWN0PXQuWEZBQXR0cmlidXRlPXQuU3RyaW5nT2JqZWN0PXQuT3B0aW9uT2JqZWN0PXQuT3B0aW9uMTA9dC5PcHRpb24wMT10LkludGVnZXJPYmplY3Q9dC5Db250ZW50T2JqZWN0PXQuJHVpZD10LiR0b1N0eWxlPXQuJHRvU3RyaW5nPXQuJHRvUGFnZXM9dC4kdG9IVE1MPXQuJHRleHQ9dC4kdGFiSW5kZXg9dC4kc2V0VmFsdWU9dC4kc2V0U2V0QXR0cmlidXRlcz10LiRzZXRJZD10LiRzZWFyY2hOb2RlPXQuJHJvb3Q9dC4kcmVzb2x2ZVByb3RvdHlwZXM9dC4kcmVtb3ZlQ2hpbGQ9dC4kcHVzaFBhcmE9dC4kcHVzaEdseXBocz10LiRwb3BQYXJhPXQuJG9uVGV4dD10LiRvbkNoaWxkQ2hlY2s9dC4kb25DaGlsZD10LiRuc0F0dHJpYnV0ZXM9dC4kbm9kZU5hbWU9dC4kbmFtZXNwYWNlSWQ9dC4kaXNVc2FibGU9dC4kaXNUcmFuc3BhcmVudD10LiRpc1RoZXJlTW9yZVdpZHRoPXQuJGlzU3BsaXR0YWJsZT10LiRpc05zQWdub3N0aWM9dC4kaXNEZXNjZW5kZW50PXQuJGlzRGF0YVZhbHVlPXQuJGlzQ0RBVEFYbWw9dC4kaXNCaW5kYWJsZT10LiRpbnNlcnRBdD10LiRpbmRleE9mPXQuJGlkcz10LiRoYXNTZXR0YWJsZVZhbHVlPXQuJGdsb2JhbERhdGE9dC4kZ2V0VGVtcGxhdGVSb290PXQuJGdldFN1YmZvcm1QYXJlbnQ9dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0UGFyZW50PXQuJGdldE5leHRQYWdlPXQuJGdldEV4dHJhPXQuJGdldERhdGFWYWx1ZT10LiRnZXRDb250YWluZWRDaGlsZHJlbj10LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldENoaWxkcmVuQnlOYW1lPXQuJGdldENoaWxkcmVuQnlDbGFzcz10LiRnZXRDaGlsZHJlbj10LiRnZXRBdmFpbGFibGVTcGFjZT10LiRnZXRBdHRyaWJ1dGVzPXQuJGdldEF0dHJpYnV0ZUl0PXQuJGZsdXNoSFRNTD10LiRmaW5hbGl6ZT10LiRleHRyYT10LiRkdW1wPXQuJGRhdGE9dC4kY29udGVudD10LiRjb25zdW1lZD10LiRjbG9uZT10LiRjbGVhbnVwPXQuJGNsZWFuUGFnZT10LiRjbGVhbj10LiRjaGlsZHJlblRvSFRNTD10LiRhcHBlbmRDaGlsZD10LiRhZGRIVE1MPXQuJGFjY2VwdFdoaXRlc3BhY2U9dm9pZCAwO3ZhciByPWEoNzYpLG49YSgyKSxpPWEoNCkscz1hKDc3KSxvPWEoNzgpO2NvbnN0IGM9U3ltYm9sKCk7dC4kYWNjZXB0V2hpdGVzcGFjZT1jO2NvbnN0IGw9U3ltYm9sKCk7dC4kYWRkSFRNTD1sO2NvbnN0IGg9U3ltYm9sKCk7dC4kYXBwZW5kQ2hpbGQ9aDtjb25zdCB1PVN5bWJvbCgpO3QuJGNoaWxkcmVuVG9IVE1MPXU7Y29uc3QgZD1TeW1ib2woKTt0LiRjbGVhbj1kO2NvbnN0IGY9U3ltYm9sKCk7dC4kY2xlYW5QYWdlPWY7Y29uc3QgZz1TeW1ib2woKTt0LiRjbGVhbnVwPWc7Y29uc3QgcD1TeW1ib2woKTt0LiRjbG9uZT1wO2NvbnN0IG09U3ltYm9sKCk7dC4kY29uc3VtZWQ9bTtjb25zdCBiPVN5bWJvbCgiY29udGVudCIpO3QuJGNvbnRlbnQ9Yjtjb25zdCB5PVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9eTtjb25zdCB3PVN5bWJvbCgpO3QuJGR1bXA9dztjb25zdCBTPVN5bWJvbCgiZXh0cmEiKTt0LiRleHRyYT1TO2NvbnN0IHg9U3ltYm9sKCk7dC4kZmluYWxpemU9eDtjb25zdCBrPVN5bWJvbCgpO3QuJGZsdXNoSFRNTD1rO2NvbnN0IEM9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlSXQ9Qztjb25zdCB2PVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9djtjb25zdCBGPVN5bWJvbCgpO3QuJGdldEF2YWlsYWJsZVNwYWNlPUY7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9Tztjb25zdCBUPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPVQ7Y29uc3QgTT1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PU07Y29uc3QgRT1TeW1ib2woKTt0LiRnZXREYXRhVmFsdWU9RTtjb25zdCBEPVN5bWJvbCgpO3QuJGdldEV4dHJhPUQ7Y29uc3QgTj1TeW1ib2woKTt0LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD1OO2NvbnN0IFI9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW49Ujtjb25zdCBMPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPUw7Y29uc3Qgaj1TeW1ib2woKTt0LiRnZXROZXh0UGFnZT1qO2NvbnN0ICQ9U3ltYm9sKCk7dC4kZ2V0U3ViZm9ybVBhcmVudD0kO2NvbnN0IF89U3ltYm9sKCk7dC4kZ2V0UGFyZW50PV87Y29uc3QgVT1TeW1ib2woKTt0LiRnZXRUZW1wbGF0ZVJvb3Q9VTtjb25zdCBYPVN5bWJvbCgpO3QuJGdsb2JhbERhdGE9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGhhc1NldHRhYmxlVmFsdWU9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlkcz1xO2NvbnN0IFc9U3ltYm9sKCk7dC4kaW5kZXhPZj1XO2NvbnN0IHo9U3ltYm9sKCk7dC4kaW5zZXJ0QXQ9ejtjb25zdCBHPVN5bWJvbCgpO3QuJGlzQ0RBVEFYbWw9Rztjb25zdCBWPVN5bWJvbCgpO3QuJGlzQmluZGFibGU9Vjtjb25zdCBLPVN5bWJvbCgpO3QuJGlzRGF0YVZhbHVlPUs7Y29uc3QgWT1TeW1ib2woKTt0LiRpc0Rlc2NlbmRlbnQ9WTtjb25zdCBKPVN5bWJvbCgpO3QuJGlzTnNBZ25vc3RpYz1KO2NvbnN0IFo9U3ltYm9sKCk7dC4kaXNTcGxpdHRhYmxlPVo7Y29uc3QgUT1TeW1ib2woKTt0LiRpc1RoZXJlTW9yZVdpZHRoPVE7Y29uc3QgZWU9U3ltYm9sKCk7dC4kaXNUcmFuc3BhcmVudD1lZTtjb25zdCB0ZT1TeW1ib2woKTt0LiRpc1VzYWJsZT10ZTtjb25zdCBhZT1TeW1ib2woKSxyZT1TeW1ib2woIm5hbWVzcGFjZUlkIik7dC4kbmFtZXNwYWNlSWQ9cmU7Y29uc3QgbmU9U3ltYm9sKCJub2RlTmFtZSIpO3QuJG5vZGVOYW1lPW5lO2NvbnN0IGllPVN5bWJvbCgpO3QuJG5zQXR0cmlidXRlcz1pZTtjb25zdCBzZT1TeW1ib2woKTt0LiRvbkNoaWxkPXNlO2NvbnN0IG9lPVN5bWJvbCgpO3QuJG9uQ2hpbGRDaGVjaz1vZTtjb25zdCBjZT1TeW1ib2woKTt0LiRvblRleHQ9Y2U7Y29uc3QgbGU9U3ltYm9sKCk7dC4kcHVzaEdseXBocz1sZTtjb25zdCBoZT1TeW1ib2woKTt0LiRwb3BQYXJhPWhlO2NvbnN0IHVlPVN5bWJvbCgpO3QuJHB1c2hQYXJhPXVlO2NvbnN0IGRlPVN5bWJvbCgpO3QuJHJlbW92ZUNoaWxkPWRlO2NvbnN0IGZlPVN5bWJvbCgicm9vdCIpO3QuJHJvb3Q9ZmU7Y29uc3QgZ2U9U3ltYm9sKCk7dC4kcmVzb2x2ZVByb3RvdHlwZXM9Z2U7Y29uc3QgcGU9U3ltYm9sKCk7dC4kc2VhcmNoTm9kZT1wZTtjb25zdCBtZT1TeW1ib2woKTt0LiRzZXRJZD1tZTtjb25zdCBiZT1TeW1ib2woKTt0LiRzZXRTZXRBdHRyaWJ1dGVzPWJlO2NvbnN0IHllPVN5bWJvbCgpO3QuJHNldFZhbHVlPXllO2NvbnN0IHdlPVN5bWJvbCgpO3QuJHRhYkluZGV4PXdlO2NvbnN0IFNlPVN5bWJvbCgpO3QuJHRleHQ9U2U7Y29uc3QgeGU9U3ltYm9sKCk7dC4kdG9QYWdlcz14ZTtjb25zdCBBZT1TeW1ib2woKTt0LiR0b0hUTUw9QWU7Y29uc3Qga2U9U3ltYm9sKCk7dC4kdG9TdHJpbmc9a2U7Y29uc3QgQ2U9U3ltYm9sKCk7dC4kdG9TdHlsZT1DZTtjb25zdCB2ZT1TeW1ib2woInVpZCIpO3QuJHVpZD12ZTtjb25zdCBGZT1TeW1ib2woKSxPZT1TeW1ib2woKSxUZT1TeW1ib2woKSxJZT1TeW1ib2woIl9jaGlsZHJlbiIpLFBlPVN5bWJvbCgpLE1lPVN5bWJvbCgpLEVlPVN5bWJvbCgpLERlPVN5bWJvbCgpLE5lPVN5bWJvbCgpLEJlPVN5bWJvbCgpLFJlPVN5bWJvbCgpLExlPVN5bWJvbCgpLGplPVN5bWJvbCgpLCRlPVN5bWJvbCgicGFyZW50IiksX2U9U3ltYm9sKCksVWU9U3ltYm9sKCksWGU9U3ltYm9sKCk7bGV0IEhlPTA7Y29uc3QgcWU9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPSExKXt0aGlzW3JlXT1lO3RoaXNbbmVdPXQ7dGhpc1tSZV09YTt0aGlzWyRlXT1udWxsO3RoaXNbSWVdPVtdO3RoaXNbdmVdPWAke3R9JHtIZSsrfWA7dGhpc1tYXT1udWxsfVtzZV0oZSl7aWYoIXRoaXNbUmVdfHwhdGhpc1tvZV0oZSkpcmV0dXJuITE7Y29uc3QgdD1lW25lXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tkZV0oYSk7dGhpc1t0XT1lO3RoaXNbaF0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW2hdKGUpO3JldHVybiEwfWxldCByPSIiO3RoaXMuaWQ/cj1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKHI9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTsoMCxuLndhcm4pKGBYRkEgLSBub2RlICIke3RoaXNbbmVdfSIke3J9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W29lXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW25lXSkmJmVbcmVdPT09dGhpc1tyZV19W0pdKCl7cmV0dXJuITF9W2NdKCl7cmV0dXJuITF9W0ddKCl7cmV0dXJuITF9W1ZdKCl7cmV0dXJuITF9W2hlXSgpe3RoaXMucGFyYSYmdGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wb3AoKX1bdWVdKCl7dGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W21lXShlKXt0aGlzLmlkJiZ0aGlzW3JlXT09PXMuTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtVXSgpe3JldHVybiB0aGlzW1hdLnRlbXBsYXRlfVtaXSgpe3JldHVybiExfVtRXSgpe3JldHVybiExfVtoXShlKXtlWyRlXT10aGlzO3RoaXNbSWVdLnB1c2goZSk7IWVbWF0mJnRoaXNbWF0mJihlW1hdPXRoaXNbWF0pfVtkZV0oZSl7Y29uc3QgdD10aGlzW0llXS5pbmRleE9mKGUpO3RoaXNbSWVdLnNwbGljZSh0LDEpfVtIXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVt5ZV0oZSl7fVtjZV0oZSl7fVt4XSgpe31bZF0oZSl7ZGVsZXRlIHRoaXNbUmVdO2lmKHRoaXNbZ10pe2UuY2xlYW4odGhpc1tnXSk7ZGVsZXRlIHRoaXNbZ119fVtXXShlKXtyZXR1cm4gdGhpc1tJZV0uaW5kZXhPZihlKX1bel0oZSx0KXt0WyRlXT10aGlzO3RoaXNbSWVdLnNwbGljZShlLDAsdCk7IXRbWF0mJnRoaXNbWF0mJih0W1hdPXRoaXNbWF0pfVtlZV0oKXtyZXR1cm4hdGhpcy5uYW1lfVthZV0oKXtyZXR1cm4iIn1bU2VdKCl7cmV0dXJuIDA9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tiXTp0aGlzW0llXS5tYXAoKGU9PmVbU2VdKCkpKS5qb2luKCIiKX1nZXRbVGVdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsVGUsZS5fYXR0cmlidXRlcyl9W1ldKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W19dKCl9cmV0dXJuITF9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVskXSgpe3JldHVybiB0aGlzW19dKCl9W1JdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW0llXX1bd10oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tiXSYmKGUuJGNvbnRlbnQ9dGhpc1tiXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW3ddKCk6YSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2EuaXNFbXB0eSgpfHwoZVt0XT1hLmR1bXAoKSk6ZVt0XT1hKX1yZXR1cm4gZX1bQ2VdKCl7cmV0dXJuIG51bGx9W0FlXSgpe3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9KltMXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbUl0oKSl5aWVsZCBlfSpbRGVdKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tMXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtuZV0pKXtjb25zdCBlPXRoaXNbRl0oKSx0PWFbQWVdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbU10uZmFpbGluZ05vZGU9YSk7eWllbGQgdH19W2tdKCl7cmV0dXJuIG51bGx9W2xdKGUsdCl7dGhpc1tTXS5jaGlsZHJlbi5wdXNoKGUpfVtGXSgpe31bdV0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tTXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tGXSgpLHQ9dGhpc1tTXS5mYWlsaW5nTm9kZVtBZV0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbF0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbU10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW1NdLmdlbmVyYXRvcj10aGlzW0RlXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW1NdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tsXSh0Lmh0bWwsdC5iYm94KX10aGlzW1NdLmdlbmVyYXRvcj1udWxsO3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9W2JlXShlKXt0aGlzW1VlXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bQmVdKGUpe2NvbnN0IHQ9dGhpc1tUZV0sYT10aGlzW1VlXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWEuaGFzKGUpKSl9W2dlXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pYVtfZV0oZSx0KX1bX2VdKGUsdCl7Y29uc3QgYT10aGlzW05lXShlLHQpO2E/dGhpc1tGZV0oYSxlLHQpOnRoaXNbZ2VdKGUsdCl9W05lXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6cn09dGhpcztpZighYSYmIXIpcmV0dXJuIG51bGw7bGV0IGk9bnVsbCxzPW51bGwsYz1udWxsLGw9YTtpZihyKXtsPXI7ci5zdGFydHNXaXRoKCIjc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/cz1yLnNsaWNlKCIjc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiLiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9zPXIuc2xpY2UoIi4jc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiIyIpP2M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihjPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/Yz1hLnNsaWNlKDEpOnM9YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoYylpPWUuZ2V0KGMpO2Vsc2V7aT0oMCxvLnNlYXJjaE5vZGUpKGUuZ2V0KGZlKSx0aGlzLHMsITAsITEpO2kmJihpPWlbMF0pfWlmKCFpKXsoMCxuLndhcm4pKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7bH0uYCk7cmV0dXJuIG51bGx9aWYoaVtuZV0hPT10aGlzW25lXSl7KDAsbi53YXJuKShgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtpW25lXX0gIT09ICR7dGhpc1tuZV19LmApO3JldHVybiBudWxsfWlmKHQuaGFzKGkpKXsoMCxuLndhcm4pKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChpKTtjb25zdCBoPWlbTmVdKGUsdCk7aCYmaVtGZV0oaCxlLHQpO2lbZ2VdKGUsdCk7dC5kZWxldGUoaSk7cmV0dXJuIGl9W0ZlXShlLHQsYSl7aWYoYS5oYXMoZSkpeygwLG4ud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tiXSYmZVtiXSYmKHRoaXNbYl09ZVtiXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tCZV0oZVtVZV0pKXt0aGlzW3RdPWVbdF07dGhpc1tVZV0mJnRoaXNbVWVdLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tUZV0uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG49dGhpc1tyXSxpPWVbcl07aWYobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBuW0llXSllW19lXSh0LGEpO2ZvcihsZXQgcj1uW0llXS5sZW5ndGgscz1pW0llXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW0llXVtyXVtwXSgpO2lmKCFuLnB1c2goaSkpYnJlYWs7aVskZV09dGhpczt0aGlzW0llXS5wdXNoKGkpO2lbX2VdKHQsYSl9fWVsc2UgaWYobnVsbD09PW4pe2lmKG51bGwhPT1pKXtjb25zdCBlPWlbcF0oKTtlWyRlXT10aGlzO3RoaXNbcl09ZTt0aGlzW0llXS5wdXNoKGUpO2VbX2VdKHQsYSl9fWVsc2V7bltnZV0odCxhKTtpJiZuW0ZlXShpLHQsYSl9fX1zdGF0aWNbUGVdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbUGVdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3BdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoKGEpeygwLG4uc2hhZG93KShlLHQsdGhpc1t0XSl9ZVt2ZV09YCR7ZVtuZV19JHtIZSsrfWA7ZVtJZV09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbVGVdLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbUGVdKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtMZV0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tJZV0pe2NvbnN0IGE9dFtuZV0scj10W3BdKCk7ZVtJZV0ucHVzaChyKTtyWyRlXT1lO251bGw9PT1lW2FdP2VbYV09cjplW2FdW0llXS5wdXNoKHIpfXJldHVybiBlfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbSWVdLmZpbHRlcigodD0+dFtuZV09PT1lKSk6dGhpc1tJZV19W09dKGUpe3JldHVybiB0aGlzW2VdfVtUXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tNXShlLHQsYSkpfSpbTV0oZSx0LGE9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO2EubmFtZT09PWUmJih5aWVsZCBhKTsodHx8YVtlZV0oKSkmJih5aWVsZCphW01dKGUsdCwhMSkpfWEmJnRoaXNbVGVdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbJGVdfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbTGVdPWU7dGhpc1tJZV09W119cHVzaChlKXtpZih0aGlzW0llXS5sZW5ndGg8PXRoaXNbTGVdKXt0aGlzW0llXS5wdXNoKGUpO3JldHVybiEwfSgwLG4ud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtuZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbTGVdfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbSWVdLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tJZV1bMF1bd10oKTp0aGlzW0llXS5tYXAoKGU9PmVbd10oKSkpfVtwXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbTGVdKTtlW0llXT10aGlzW0llXS5tYXAoKGU9PmVbcF0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW0llXX1jbGVhcigpe3RoaXNbSWVdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVhGQU9iamVjdEFycmF5O2NsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpc1skZV09ZTt0aGlzW25lXT10O3RoaXNbYl09YTt0aGlzW21dPSExO3RoaXNbdmVdPSJhdHRyaWJ1dGUiK0hlKyt9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVtLXSgpe3JldHVybiEwfVtFXSgpe3JldHVybiB0aGlzW2JdLnRyaW0oKX1beWVdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tiXT1lLnRvU3RyaW5nKCl9W1NlXSgpe3JldHVybiB0aGlzW2JdfVtZXShlKXtyZXR1cm4gdGhpc1skZV09PT1lfHx0aGlzWyRlXVtZXShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT17fSl7c3VwZXIoZSx0KTt0aGlzW2JdPSIiO3RoaXNbTWVdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW09lXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShpZSkpe2NvbnN0IGU9YVtpZV0ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tNZV09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tNZV09ITApKX19dGhpc1ttXT0hMX1ba2VdKGUpe2NvbnN0IHQ9dGhpc1tuZV07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk7cmV0dXJufWNvbnN0IGE9KDAsbi51dGY4U3RyaW5nVG9TdHJpbmcpKHQpLHI9dGhpc1tyZV09PT1xZT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtyfSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbT2VdLmVudHJpZXMoKSl7Y29uc3Qgcj0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKGAgJHtyfT0iJHsoMCxpLmVuY29kZVRvWG1sU3RyaW5nKShhW2JdKX0iYCl9bnVsbCE9PXRoaXNbTWVdJiYodGhpc1tNZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbYl18fDAhPT10aGlzW0llXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbYl0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2JdP2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk6dGhpc1tiXVtrZV0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0llXSl0W2tlXShlKTtlLnB1c2goYDwvJHtyfSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W3NlXShlKXtpZih0aGlzW2JdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyZV0sIiN0ZXh0Iik7dGhpc1toXShlKTtlW2JdPXRoaXNbYl07dGhpc1tiXT0iIn10aGlzW2hdKGUpO3JldHVybiEwfVtjZV0oZSl7dGhpc1tiXSs9ZX1beF0oKXtpZih0aGlzW2JdJiZ0aGlzW0llXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbcmVdLCIjdGV4dCIpO3RoaXNbaF0oZSk7ZVtiXT10aGlzW2JdO2RlbGV0ZSB0aGlzW2JdfX1bQWVdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbbmVdP3IuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tiXX0pOnIuSFRNTFJlc3VsdC5FTVBUWX1bUl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW0llXS5maWx0ZXIoKHQ9PnRbbmVdPT09ZSkpOnRoaXNbSWVdfVt2XSgpe3JldHVybiB0aGlzW09lXX1bT10oZSl7Y29uc3QgdD10aGlzW09lXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1JdKGUpfSpbTV0oZSx0KXtjb25zdCBhPXRoaXNbT2VdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW01dKGUsdCkpfX0qW0NdKGUsdCl7Y29uc3QgYT10aGlzW09lXS5nZXQoZSk7IWF8fHQmJmFbbV18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW0llXSl5aWVsZCphW0NdKGUsdCl9KltOXShlLHQsYSl7Zm9yKGNvbnN0IHIgb2YgdGhpc1tJZV0pe3JbbmVdIT09ZXx8YSYmclttXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW05dKGUsdCxhKSl9fVtLXSgpe3JldHVybiBudWxsPT09dGhpc1tNZV0/MD09PXRoaXNbSWVdLmxlbmd0aHx8dGhpc1tJZV1bMF1bcmVdPT09cy5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tNZV19W0VdKCl7cmV0dXJuIG51bGw9PT10aGlzW01lXT8wPT09dGhpc1tJZV0ubGVuZ3RoP3RoaXNbYl0udHJpbSgpOnRoaXNbSWVdWzBdW3JlXT09PXMuTmFtZXNwYWNlSWRzLnhodG1sLmlkP3RoaXNbSWVdWzBdW1NlXSgpLnRyaW0oKTpudWxsOnRoaXNbYl0udHJpbSgpfVt5ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2JdPWUudG9TdHJpbmcoKX1bd10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3JlXSk7dGhpc1tiXSYmKHQuJGNvbnRlbnQ9dGhpc1tiXSk7dC4kbmFtZT10aGlzW25lXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbSWVdKXQuY2hpbGRyZW4ucHVzaChhW3ddKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbT2VdKXQuYXR0cmlidXRlc1tlXT1hW2JdO3JldHVybiB0fX10LlhtbE9iamVjdD1YbWxPYmplY3Q7Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tiXT0iIn1bY2VdKGUpe3RoaXNbYl0rPWV9W3hdKCl7fX10LkNvbnRlbnRPYmplY3Q9Q29udGVudE9iamVjdDt0Lk9wdGlvbk9iamVjdD1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbamVdPWF9W3hdKCl7dGhpc1tiXT0oMCxyLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbYl0sZGVmYXVsdFZhbHVlOnRoaXNbamVdWzBdLHZhbGlkYXRlOmU9PnRoaXNbamVdLmluY2x1ZGVzKGUpfSl9W2RdKGUpe3N1cGVyW2RdKGUpO2RlbGV0ZSB0aGlzW2plXX19O3QuU3RyaW5nT2JqZWN0PWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3hdKCl7dGhpc1tiXT10aGlzW2JdLnRyaW0oKX19O2NsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tFZV09YTt0aGlzW1hlXT1yfVt4XSgpe3RoaXNbYl09KDAsci5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW2JdLGRlZmF1bHRWYWx1ZTp0aGlzW0VlXSx2YWxpZGF0ZTp0aGlzW1hlXX0pfVtkXShlKXtzdXBlcltkXShlKTtkZWxldGUgdGhpc1tFZV07ZGVsZXRlIHRoaXNbWGVdfX10LkludGVnZXJPYmplY3Q9SW50ZWdlck9iamVjdDt0Lk9wdGlvbjAxPWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX07dC5PcHRpb24xMD1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixuLGksc109YTtyZXR1cm57eDpyLHk6bix3aWR0aDppLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixuXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6bn07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKGkubGVuZ3RoPDMpcmV0dXJue3I6YSxnOnIsYjpufTtbYSxyLG5dPWk7cmV0dXJue3I6YSxnOnIsYjpufX07dC5nZXRGbG9hdD1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0S2V5d29yZD1nZXRLZXl3b3JkO3QuZ2V0TWVhc3VyZW1lbnQ9Z2V0TWVhc3VyZW1lbnQ7dC5nZXRSYXRpbz1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fTt0LmdldFJlbGV2YW50PWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe2lmKCFlKXJldHVybltdO3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpfTt0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX07dC5zdHJpcFF1b3Rlcz1mdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtpZihlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJykpcmV0dXJuIGUuc2xpY2UoMSxlLmxlbmd0aC0xKTtyZXR1cm4gZX07dmFyIHI9YSgyKTtjb25zdCBuPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxpPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dD10fHwiMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2goaSk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPW5bc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlSWRzPXQuJGJ1aWxkWEZBT2JqZWN0PXZvaWQgMDtjb25zdCBhPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PWE7dC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgbj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zb21lKChlPT5lLm9wZXJhdG9yPT09bCkpKXJldHVybiBudWxsO2NvbnN0IHM9Zi5nZXQoblswXS5uYW1lKTtsZXQgbz0wO2lmKHMpe2U9cyhlLHQpO289MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9bi5sZW5ndGg7bzx0O28rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6c309bltvXTtpZighaXNGaW5pdGUocykpe25bb10uaW5kZXg9MDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX1sZXQgdTtzd2l0Y2goYSl7Y2FzZSBjOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMSk7YnJlYWs7Y2FzZSBsOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBoOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKHQpO3U9dSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/dS5jaGlsZHJlbjpbdV19aWYoMD09PXUubGVuZ3RoKXJldHVybiBjcmVhdGVOb2RlcyhlLG4uc2xpY2UobykpO2lmKCEoczx1Lmxlbmd0aCkpe25bb10uaW5kZXg9cy11Lmxlbmd0aDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX17Y29uc3QgdD11W3NdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSl7KDAsaS53YXJuKSgiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH07dC5zZWFyY2hOb2RlPWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEsbj0hMCxpPSEwKXtjb25zdCBzPXBhcnNlRXhwcmVzc2lvbihhLG4pO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IG89Zi5nZXQoc1swXS5uYW1lKTtsZXQgdSxkPTA7aWYobyl7dT0hMDtlPVtvKGUsdCldO2Q9MX1lbHNle3U9bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBhPXMubGVuZ3RoO2Q8YTtkKyspe2NvbnN0e25hbWU6YSxjYWNoZU5hbWU6bixvcGVyYXRvcjpvLGluZGV4OmZ9PXNbZF0scD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCkpY29udGludWU7bGV0IGUscztpZihpKXtzPWcuZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7Zy5zZXQodCxzKX1lPXMuZ2V0KG4pfWlmKCFlKXtzd2l0Y2gobyl7Y2FzZSBjOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMSk7YnJlYWs7Y2FzZSBsOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMCk7YnJlYWs7Y2FzZSBoOmU9dFtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGEpO2U9ZSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19aSYmcy5zZXQobixlKX1lLmxlbmd0aD4wJiZwLnB1c2goZSl9aWYoMCE9PXAubGVuZ3RofHx1fHwwIT09ZCllPWlzRmluaXRlKGYpP3AuZmlsdGVyKChlPT5mPGUubGVuZ3RoKSkubWFwKChlPT5lW2ZdKSk6cC5mbGF0KCk7ZWxzZXtjb25zdCBhPXRbci4kZ2V0UGFyZW50XSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtkPS0xO2U9W3RdfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIGV9O3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDIpO2NvbnN0IHM9L15bXi5bXSsvLG89L15bXlxdXSsvLGM9MCxsPTEsaD0yLHU9MyxkPTQsZj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3IuJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxnPW5ldyBXZWFrTWFwLHA9bi5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKHMpO2lmKCFyKXJldHVybiBudWxsO2xldFtuXT1yO2NvbnN0IGY9W3tuYW1lOm4sY2FjaGVOYW1lOiIuIituLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOmN9XTtsZXQgZz1uLmxlbmd0aDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBtPWc7aWYoIlsiPT09ZS5jaGFyQXQoZysrKSl7cj1lLnNsaWNlKGcpLm1hdGNoKG8pO2lmKCFyKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9Zi5hdCgtMSkuaW5kZXg9IioiPT09KHA9KHA9clswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQocCwxMCl8fDA7Zys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYjtzd2l0Y2goZS5jaGFyQXQoZykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7ZysrO2I9bDticmVhaztjYXNlIiMiOmcrKztiPWg7YnJlYWs7Y2FzZSJbIjppZihhKXsoMCxpLndhcm4pKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWI9dTticmVhaztjYXNlIigiOmlmKGEpeygwLGkud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1iPWQ7YnJlYWs7ZGVmYXVsdDpiPWN9cj1lLnNsaWNlKGcpLm1hdGNoKHMpO2lmKCFyKWJyZWFrO1tuXT1yO2crPW4ubGVuZ3RoO2YucHVzaCh7bmFtZTpuLGNhY2hlTmFtZTplLnNsaWNlKG0sZyksb3BlcmF0b3I6YixpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBwO3JldHVybiBmfWZ1bmN0aW9uIGNyZWF0ZU5vZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4Oml9b2YgdCl7Zm9yKGxldCB0PTAscz1pc0Zpbml0ZShpKT9pOjA7dDw9czt0Kyspe2NvbnN0IHQ9ZVtyLiRuYW1lc3BhY2VJZF09PT1wPy0xOmVbci4kbmFtZXNwYWNlSWRdO2E9bmV3IHIuWG1sT2JqZWN0KHQsbik7ZVtyLiRhcHBlbmRDaGlsZF0oYSl9ZT1hfXJldHVybiBhfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkJpbmRlcj12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDgwKSxpPWEoNzgpLHM9YSg3Nyksbz1hKDIpO2NvbnN0IGM9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBuLlRleHQoe30pO3Rbci4kY29udGVudF09ZTtyZXR1cm4gdH10LkJpbmRlcj1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO2UuZGF0YXNldHMmJmUuZGF0YXNldHMuZGF0YT90aGlzLmRhdGE9ZS5kYXRhc2V0cy5kYXRhOnRoaXMuZGF0YT1uZXcgci5YbWxPYmplY3Qocy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbci4kY2xvbmVdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyLiRkYXRhXT10O2lmKGVbci4kaGFzU2V0dGFibGVWYWx1ZV0oKSlpZih0W3IuJGlzRGF0YVZhbHVlXSgpKXtjb25zdCBhPXRbci4kZ2V0RGF0YVZhbHVlXSgpO2Vbci4kc2V0VmFsdWVdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRmllbGQmJmUudWkmJmUudWkuY2hvaWNlTGlzdCYmIm11bHRpU2VsZWN0Ij09PWUudWkuY2hvaWNlTGlzdC5vcGVuKXtjb25zdCBhPXRbci4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW3IuJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLG8ud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbci4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsby53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxuKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxvO2ZvcihsZXQgbj0wO248MztuKyspe2k9YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMSwhMCk7Zm9yKDs7KXtvPWkubmV4dCgpLnZhbHVlO2lmKCFvKWJyZWFrO2lmKHQ9PT1vW3IuJGlzRGF0YVZhbHVlXSgpKXJldHVybiBvfWlmKGFbci4kbmFtZXNwYWNlSWRdPT09cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbci4kbm9kZU5hbWVdKWJyZWFrO2E9YVtyLiRnZXRQYXJlbnRdKCl9aWYoIW4pcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpO289aS5uZXh0KCkudmFsdWU7aWYobylyZXR1cm4gbztpPXRoaXMuZGF0YVtyLiRnZXRBdHRyaWJ1dGVJdF0oZSwhMCk7bz1pLm5leHQoKS52YWx1ZTtyZXR1cm4gbyYmb1tyLiRpc0RhdGFWYWx1ZV0oKT9vOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6YSx0YXJnZXQ6cyxjb25uZWN0aW9uOmN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYoYyljb250aW51ZTtpZighYSljb250aW51ZTtjb25zdCBsPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsYSwhMSwhMSk7aWYoIWwpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWw7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGEpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3QgdT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCxlLHMsITEsITEpO2lmKCF1KXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0oZSkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgZj1kW3IuJGdldFBhcmVudF0oKTtpZihkIGluc3RhbmNlb2Ygbi5TZXRQcm9wZXJ0eXx8ZiBpbnN0YW5jZW9mIG4uU2V0UHJvcGVydHkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoZCBpbnN0YW5jZW9mIG4uQmluZEl0ZW1zfHxmIGluc3RhbmNlb2Ygbi5CaW5kSXRlbXMpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGc9aFtyLiR0ZXh0XSgpLHA9ZFtyLiRub2RlTmFtZV07aWYoZCBpbnN0YW5jZW9mIHIuWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtwXT1nO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltwXT10W3BdfWVsc2UgaWYoZC5oYXNPd25Qcm9wZXJ0eShyLiRjb250ZW50KSl7ZFtyLiRkYXRhXT1oO2Rbci4kY29udGVudF09ZztkW3IuJGZpbmFsaXplXSgpfWVsc2UoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtyLiRyZW1vdmVDaGlsZF0odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IG4uSXRlbXMoe30pLHM9bmV3IG4uSXRlbXMoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKGEpO2UuaXRlbXMucHVzaChhKTtlW3IuJGFwcGVuZENoaWxkXShzKTtlLml0ZW1zLnB1c2gocyk7Zm9yKGNvbnN0e3JlZjpuLGxhYmVsUmVmOmMsdmFsdWVSZWY6bCxjb25uZWN0aW9uOmh9b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKGgpY29udGludWU7aWYoIW4pY29udGludWU7Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LG4sITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWYgKCR7bn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGMsITAsITEpO2lmKCFlKXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke2N9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWU7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IHU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxsLCEwLCExKTtpZighdSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtsfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBmPWNyZWF0ZVRleHQoaFtyLiR0ZXh0XSgpKSxnPWNyZWF0ZVRleHQoZFtyLiR0ZXh0XSgpKTthW3IuJGFwcGVuZENoaWxkXShmKTthLnRleHQucHVzaChmKTtzW3IuJGFwcGVuZENoaWxkXShnKTtzLnRleHQucHVzaChnKX1lbHNlKDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7bn0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCBuO2lmKHQubGVuZ3RoPjEpe249ZVtyLiRjbG9uZV0oKTtuW3IuJHJlbW92ZUNoaWxkXShuLm9jY3VyKTtuLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbci4kZ2V0UGFyZW50XSgpLHM9ZVtyLiRub2RlTmFtZV0sbz1pW3IuJGluZGV4T2ZdKGUpO2ZvcihsZXQgZT0xLGM9dC5sZW5ndGg7ZTxjO2UrKyl7Y29uc3QgYz10W2VdLGw9bltyLiRjbG9uZV0oKTtpW3NdLnB1c2gobCk7aVtyLiRpbnNlcnRBdF0obytlLGwpO3RoaXMuX2JpbmRWYWx1ZShsLGMsYSk7dGhpcy5fc2V0UHJvcGVydGllcyhsLGMpO3RoaXMuX2JpbmRJdGVtcyhsLGMpfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbci4kZ2V0UGFyZW50XSgpLG49ZVtyLiRub2RlTmFtZV07aWYoIShhW25daW5zdGFuY2VvZiByLlhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/YVtuXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDphW25dLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBzPWFbci4kaW5kZXhPZl0oZSkrMSxvPXQuaW5pdGlhbC1pO2lmKG8pe2NvbnN0IHQ9ZVtyLiRjbG9uZV0oKTt0W3IuJHJlbW92ZUNoaWxkXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7YVtuXS5wdXNoKHQpO2Fbci4kaW5zZXJ0QXRdKHMsdCk7Zm9yKGxldCBlPTE7ZTxvO2UrKyl7Y29uc3QgaT10W3IuJGNsb25lXSgpO2Fbbl0ucHVzaChpKTthW3IuJGluc2VydEF0XShzK2UsaSl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjphfT1lO2lmKCFhfHwhdClyZXR1cm5bMSwxXTtjb25zdCByPS0xPT09YS5tYXg/MS8wOmEubWF4O3JldHVyblthLm1pbixyXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGE9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IG4gb2YgZVtyLiRnZXRDaGlsZHJlbl0oKSl7aWYobltyLiRkYXRhXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PW5bci4kbm9kZU5hbWVdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PW4ubWVyZ2VNb2RlO2NvbnN0IGU9dFtyLiRnZXRDaGlsZHJlbl0oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W3IuJG5hbWVzcGFjZUlkXT09PWM/LTE6dFtyLiRuYW1lc3BhY2VJZF0sYT1uW3IuJGRhdGFdPW5ldyByLlhtbE9iamVjdChlLG4ubmFtZXx8InJvb3QiKTt0W3IuJGFwcGVuZENoaWxkXShhKTt0aGlzLl9iaW5kRWxlbWVudChuLGEpfWNvbnRpbnVlfWlmKCFuW3IuJGlzQmluZGFibGVdKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLGw9bnVsbCxoPW51bGw7aWYobi5iaW5kKXtzd2l0Y2gobi5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFuLmJpbmQucmVmKXsoMCxvLndhcm4pKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke25bci4kbm9kZU5hbWVdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9bD1uLmJpbmQucmVmfW4uYmluZC5waWN0dXJlJiYocz1uLmJpbmQucGljdHVyZVtyLiRjb250ZW50XSl9Y29uc3RbdSxkXT10aGlzLl9nZXRPY2N1ckluZm8obik7aWYobCl7aD0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGwsITAsITEpO2lmKG51bGw9PT1oKXtoPSgwLGkuY3JlYXRlRGF0YU5vZGUpKHRoaXMuZGF0YSx0LGwpO2lmKCFoKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGhbci4kY29uc3VtZWRdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaD1oLmZpbHRlcigoZT0+IWVbci4kY29uc3VtZWRdKSkpO2gubGVuZ3RoPmQ/aD1oLnNsaWNlKDAsZCk6MD09PWgubGVuZ3RoJiYoaD1udWxsKTtoJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJmguZm9yRWFjaCgoZT0+e2Vbci4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIW4ubmFtZSl7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGQ7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKG4ubmFtZSxuW3IuJGhhc1NldHRhYmxlVmFsdWVdKCksdCxlKTtpZighaSlicmVhaztpW3IuJGNvbnN1bWVkXT0hMDthLnB1c2goaSl9aD1hLmxlbmd0aD4wP2E6bnVsbH1lbHNle2g9dFtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0obi5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFoKXtpZigwPT09dSl7YS5wdXNoKG4pO2NvbnRpbnVlfWNvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1jPy0xOnRbci4kbmFtZXNwYWNlSWRdO2g9bltyLiRkYXRhXT1uZXcgci5YbWxPYmplY3QoZSxuLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGhbci4kY29uc3VtZWRdPSEwKTt0W3IuJGFwcGVuZENoaWxkXShoKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaFtyLiRjb25zdW1lZF09ITApO2g9W2hdfX1oP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLGgscyk6dT4wP3RoaXMuX3NldEFuZEJpbmQobix0KTphLnB1c2gobil9YS5mb3JFYWNoKChlPT5lW3IuJGdldFBhcmVudF0oKVtyLiRyZW1vdmVDaGlsZF0oZSkpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDc3KSxpPWEoODEpLHM9YSg4Miksbz1hKDc2KSxjPWEoMiksbD1hKDgzKSxoPWEoNCksdT1hKDc4KTtjb25zdCBkPW4uTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkLGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixnPS9eSChcZCspJC8scD1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLG09W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO2UudmFsdWU9dH1lLnZhbHVlW3IuJHNldFZhbHVlXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW3IuJGdldENoaWxkcmVuXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiBlLnZhbGlkYXRlJiYiZXJyb3IiPT09ZS52YWxpZGF0ZS5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2Vbci4kdGFiSW5kZXhdPWVbci4kZ2V0UGFyZW50XSgpW3IuJHRhYkluZGV4XTtyZXR1cm59aWYoZVtyLiR0YWJJbmRleF0pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS50cmF2ZXJzYWxbci4kZ2V0Q2hpbGRyZW5dKCkpaWYoIm5leHQiPT09YS5vcGVyYXRpb24pe3Q9YTticmVha31pZighdHx8IXQucmVmKXtlW3IuJHRhYkluZGV4XT1lW3IuJGdldFBhcmVudF0oKVtyLiR0YWJJbmRleF07cmV0dXJufWNvbnN0IGE9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7ZVtyLiR0YWJJbmRleF09KythW3IuJHRhYkluZGV4XTtjb25zdCBuPWFbci4kc2VhcmNoTm9kZV0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtyLiR0b0hUTUxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3Qgbj1hLnJvbGUubWF0Y2goZyk7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7InJvdyI9PT1hLmxheW91dCYmKGEuYXNzaXN0JiYiVEgiPT09YS5hc3Npc3Qucm9sZT90LnJvbGU9ImNvbHVtbmhlYWRlciI6dC5yb2xlPSJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW3IuJGNvbnRlbnRdP3Quc3BlYWtbci4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtyLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7aWYobnVsbD09PXRbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlKXt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1lO3Rbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO3Rbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtyLiRleHRyYV0pcmV0dXJuITE7ZVtyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTtsZXQgYT1udWxsO2lmKGUudGFyZ2V0KXthPXRbci4kc2VhcmNoTm9kZV0oZS50YXJnZXQsZVtyLiRnZXRQYXJlbnRdKCkpO2lmKCFhKXJldHVybiExO2E9YVswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6bixjdXJyZW50Q29udGVudEFyZWE6aX09dFtyLiRleHRyYV07aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7YSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwoYT1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3IuJGV4dHJhXS50YXJnZXQ9YXx8bjtyZXR1cm4hMH1pZihhJiZhIT09bil7ZVtyLiRleHRyYV0udGFyZ2V0PWE7cmV0dXJuITB9cmV0dXJuITF9YSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwoYT1udWxsKTtjb25zdCBzPWEmJmFbci4kZ2V0UGFyZW50XSgpO2xldCBvLGM9cztpZihlLnN0YXJ0TmV3KWlmKGEpe2NvbnN0IGU9cy5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihpKSxyPWUuaW5kZXhPZihhKTstMSE9PXQmJnQ8ciYmKGM9bnVsbCk7bz1yLTF9ZWxzZSBvPW4uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKTtlbHNle2lmKCFhfHxhPT09aSlyZXR1cm4hMTtvPXMuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKS0xO2M9cz09PW4/bnVsbDpzfWVbci4kZXh0cmFdLnRhcmdldD1jO2Vbci4kZXh0cmFdLmluZGV4PW87cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGEpe2NvbnN0IG49ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCksaT1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUscz10W3IuJGdldFN1YmZvcm1QYXJlbnRdO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09KCk9PmU7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IG89dFtyLiR0b0hUTUxdKGEpO2Vbci4kYWRkSFRNTF0oby5odG1sLG8uYmJveCk7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWk7dFtyLiRnZXRTdWJmb3JtUGFyZW50XT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT0oMCxvLmdldEZsb2F0KSh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtyLiR0b1N0eWxlXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgbjtjb25zdCBpPXt4bWxuczpmLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpbj17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZixkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IGM9e25hbWU6InN2ZyIsY2hpbGRyZW46W25dLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2NdfSk7Yy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsbixpLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStpKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LG4rcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBuPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjpuLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3Mpe2lmKGkuaXNCcmVhaygpKXJldHVybiBpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMsbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXAmJnRoaXMudG9vbFRpcFtyLiRjb250ZW50XT90aGlzLnRvb2xUaXBbci4kY29udGVudF06bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxvLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsby5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyByLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcj10LmNvbG9yfHwiIzAwMDAwMCI7cmV0dXJuIHR9KSksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGEsdGhpcy5tYXJnaW5bci4kdG9TdHlsZV0oKSk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbci4kdG9TdHlsZV0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW3IuJHRvU3R5bGVdKCkpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9YS5ib3JkZXJSYWRpdXM9ZS5tYXAoKGU9PmUucmFkaXVzKSkuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKChlPT5lLnN0eWxlKSkuam9pbigiICIpfWEuYm9yZGVyV2lkdGg9dC5tYXAoKGU9PmUud2lkdGgpKS5qb2luKCIgIik7YS5ib3JkZXJDb2xvcj10Lm1hcCgoZT0+ZS5jb2xvcikpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtyLiR0b0hUTUxdKGUpe3RoaXNbci4kZXh0cmFdPXt9O3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PSgwLGgucmVjb3ZlckpzVVJMKShlLnNjcmlwdFtyLiRjb250ZW50XSk7aWYoIXQpY29udGludWU7Y29uc3Qgbj0oMCxzLmZpeFVSTCkodC51cmwpO24mJmEuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbci4kdWlkXSxocmVmOm4sbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhhKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoKDAsby5nZXRNZWFzdXJlbWVudCkoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3IuJHNldFZhbHVlXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bci4kZ2V0RXh0cmFdKGUpe2lmKCF0aGlzW3IuJGV4dHJhXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbci4kZXh0cmFdPSgwLHMubGF5b3V0Tm9kZSkodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW3IuJGV4dHJhXX1bci4kdG9IVE1MXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oZSkuaHRtbDtpZighdCl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgYT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDphfT10aGlzW3IuJGdldEV4dHJhXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWF9fWNvbnN0IG49W107InN0cmluZyI9PXR5cGVvZiB0P24ucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTpuLnB1c2godCk7Y29uc3QgaT0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoaS53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKGkuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJlc2VydmUpKX0oMCxzLnNldFBhcmEpKHRoaXMsbnVsbCx0KTt0aGlzW3IuJHBvcFBhcmFdKCk7dGhpcy5yZXNlcnZlPWE7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkoIm1hcmdpbiIpLGE9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1hO2xldCBuLGksYztjb25zdCBsPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxoPWwuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZsLml0ZW1zLmNoaWxkcmVuWzBdW3IuJHRvSFRNTF0oKS5odG1sfHxbXSx1PXtvbjoodm9pZCAwIT09aFswXT9oWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1oWzFdP2hbMV06Im9mZiIpLnRvU3RyaW5nKCl9LGQ9KGwudmFsdWUmJmwudmFsdWVbci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe2M9ZltyLiR1aWRdO249InJhZGlvIjtpPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdJiZmW3IuJGRhdGFdW3IuJHVpZF18fGZbci4kdWlkXX1lbHNle249ImNoZWNrYm94IjtpPSJ4ZmFDaGVja2JveCI7cD1sW3IuJGRhdGFdJiZsW3IuJGRhdGFdW3IuJHVpZF18fGxbci4kdWlkXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W2ldLHN0eWxlOnQsZmllbGRJZDpnLGRhdGFJZDpwLHR5cGU6bixjaGVja2VkOmQseGZhT246dS5vbix4ZmFPZmY6dS5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChsKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtjJiYobS5hdHRyaWJ1dGVzLm5hbWU9Yyk7aWYoaXNSZXF1aXJlZChsKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e2ZvbnRTaXplOmBjYWxjKCR7YS5mb250JiZhLmZvbnQuc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWUmJmEudmFsdWVbci4kdGV4dF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1vLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOmNbZV18fG9bZV0sc3R5bGU6bn0sdmFsdWU6b1tlXX07Y1tlXT09PWgmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7aS5wdXNoKHQpfWx8fGkuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IGM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoYSkpe2NbImFyaWEtcmVxdWlyZWQiXT0hMDtjLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihjLm11bHRpcGxlPSEwKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjppLGF0dHJpYnV0ZXM6Y31dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT8oMCxvLmdldENvbG9yKShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiExfVtyLiR0b1N0eWxlXSgpe3JldHVybiB0aGlzLnZhbHVlP2MuVXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KTt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9e2xlZnQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueCksdG9wOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnkpLHdpZHRoOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLncpLGhlaWdodDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5oKX0sYT1bInhmYUNvbnRlbnRhcmVhIl07KDAscy5pc1ByaW50T25seSkodGhpcykmJmEucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW3IuJHVpZF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9KDAsby5nZXRNZWFzdXJlbWVudCkoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXSYmYVtyLiRkYXRhXVtyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgci5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6Yyxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1ufWMmJiIiPT09dGhpcy5oJiYodGhpcy5oPWMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZWRnZSIsITApO3RoaXMuY2FwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBuPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6YyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtufHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxvLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxpPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPWk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7aT1hfWVsc2UgaT0oMCxsLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtuKz11Lnc7aSs9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6Yyxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPWM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1pfX1lbHNle3Q9bjthPWl9aWYodCYmIiI9PT10aGlzLncpe3QrPWM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1oO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9bjt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4mJncuY2hpbGRyZW5bMF0/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdOncuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW3IuJHRhYkluZGV4XSk7dy5hdHRyaWJ1dGVzLnN0eWxlfHwody5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCBTPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT13LmNoaWxkcmVuLmxlbmd0aCYmKFtTXT13LmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHcuYXR0cmlidXRlcy5zdHlsZSxiKX1lbHNlIE9iamVjdC5hc3NpZ24oZCxiKTtwLnB1c2godyk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdCl3LmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbci4kdGV4dF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtyLiRnZXRFeHRyYV0oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0JiZ0aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMmJih3LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT13LmNoaWxkcmVuWzBdLm5hbWU/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmdy5jaGlsZHJlbiYmdy5jaGlsZHJlblswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWgtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIsaT1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO2k9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249aT0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/bjppXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jbci4kdG9TdHlsZV0oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP246aV09ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRm9udCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXNbci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9KDAscy5tZWFzdXJlVG9TdHJpbmcpKC45OSp0aGlzLnNpemUpOygwLHMuc2V0Rm9udEZhbWlseSkodGhpcyx0aGlzLHRoaXNbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2UiKTt0aGlzLmFzcGVjdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiR0b0hUTUxdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIXAuaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW3IuJGdsb2JhbERhdGFdLmltYWdlcyYmdGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW3IuJGNvbnRlbnRdKSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT0oMCxjLnN0cmluZ1RvQnl0ZXMpKGF0b2IodGhpc1tyLiRjb250ZW50XSkpKTtpZighZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxhXW9mIG0paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGEpPT50PT09ZVthXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGE7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjphPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6YT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6YT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IG49dGhpc1tyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTphLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDpuP2FyaWFMYWJlbChuW3IuJGdldFBhcmVudF0oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9vLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSwxMCk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX1bci4kdG9IVE1MXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tyLiRnZXRDaGlsZHJlbl0oKSllLnB1c2godFtyLiR0ZXh0XSgpKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fXQuSXRlbXM9SXRlbXM7Y2xhc3MgS2VlcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmludGFjdCx0KTt0aGlzLm5leHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lIiwhMCk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGE9dFtyLiR0b1N0eWxlXSgpLG49T2JqZWN0LmNyZWF0ZShudWxsKSxpPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtuLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKShpKTtuLnN0cm9rZT1hLmNvbG9yO2xldCBjLGwsaCx1LGQ9IjEwMCUiLGc9IjEwMCUiO2lmKGUudzw9aSl7W2MsbCxoLHVdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07ZD1uLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1pKXtbYyxsLGgsdV09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtnPW4uc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tjLGwsaCx1XT1bMCwwLCIxMDAlIiwiMTAwJSJdOltjLGwsaCx1XT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHA9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpmLHgxOmMseTE6bCx4MjpoLHkyOnUsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOmQsaGVpZ2h0Omcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3BdfSk7cC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHApfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKSh0aGlzW3IuJGNvbnRlbnRdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtyZXR1cm57bWFyZ2luOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRvcEluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmlnaHRJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJvdHRvbUluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9KDAsby5nZXRCQm94KShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxuPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmEmJmFbMF18fG51bGwsbGVhZGVyOm4mJm5bMF18fG51bGwsdHJhaWxlcjppJiZpWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxvLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtyLiR0b1N0eWxlXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgbj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtyLiR0b1N0eWxlXSgpLGk9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6bi5yYWRpdXMscnk6bi5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX10LlNldFByb3BlcnR5PVNldFByb3BlcnR5O2NsYXNzIFNpZ25EYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtyZXR1cm4gZT9lW3IuJHRvU3R5bGVdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNwZWFrIik7dGhpcy5kaXNhYmxlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBjLlV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOigwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpKSk7dGhpcy5oPWUuaD8oMCxvLmdldE1lYXN1cmVtZW50KShlLmgpOiIiO3RoaXMuaEFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0Iik7dGhpcy5taW5XPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiI7dGhpcy54PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGdldFN1YmZvcm1QYXJlbnRdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpOmV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9W3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJnRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT4wfHx0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpfSpbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3IuJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W3IuJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W3IuJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtyLiRpc1NwbGl0dGFibGVdKCl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYoIWVbci4kaXNTcGxpdHRhYmxlXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kdG9IVE1MXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbci4kcmVtb3ZlQ2hpbGRdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJigwLGMud2FybikoIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gby5IVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW3IuJGV4dHJhXSYmdGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbXX07KDAscy5zZXRBY2Nlc3MpKHRoaXMsYS5jbGFzcyk7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbci4kZXh0cmFdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKCksbD1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUsaD10aGlzW3IuJGlzU3BsaXR0YWJsZV0oKTtofHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHU9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW3IuJGV4dHJhXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IGQ9KDAscy50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxmPVsieGZhU3ViZm9ybSJdLGc9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7ZyYmZi5wdXNoKGcpO2Euc3R5bGU9ZDthLmNsYXNzPWY7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3IuJGdldEV4dHJhXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHA9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbT1wPzI6MTtmb3IoO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQ8bTt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0Kyspe3AmJjE9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYodGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjp1LGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gZX1pZihwJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmMD09PXRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZSYmIW5bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdD1tO2JyZWFrfX10aGlzW3IuJHBvcFBhcmFdKCk7aHx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtuW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9bDtpZih0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PT09bSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7aHx8ZGVsZXRlIHRoaXNbci4kZXh0cmFdO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBiPTAseT0wO2lmKHRoaXMubWFyZ2luKXtiPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3k9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3Qgdz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtiLHRoaXMud3x8MCksUz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQreSx0aGlzLmh8fDApLHg9W3RoaXMueCx0aGlzLnksdyxTXTsiIj09PXRoaXMudyYmKGQud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHcpKTsiIj09PXRoaXMuaCYmKGQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShTKSk7aWYoKCIwcHgiPT09ZC53aWR0aHx8IjBweCI9PT1kLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGs9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7Y29uc3QgQz1vLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsaykseCk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbci4kZXh0cmFdLmFmdGVyQnJlYWtBZnRlcj1DO3JldHVybiBvLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIEN9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtsZXQgZT10aGlzW3IuJGdldFBhcmVudF0oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT1uZXcgTWFwKHRoaXNbci4kY29udGVudF0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRmaW5hbGl6ZV0oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmKDAsYy53YXJuKSgiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbci4kdGFiSW5kZXhdPTVlM31bci4kaXNTcGxpdHRhYmxlXSgpe3JldHVybiEwfVtyLiRzZWFyY2hOb2RlXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tyLiRpZHNdLmdldChlLnNsaWNlKDEpKV06KDAsdS5zZWFyY2hOb2RlKSh0aGlzLHQsZSwhMCwhMCl9KltyLiR0b1BhZ2VzXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbci4kZXh0cmFdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W3IuJGNsZWFuUGFnZV0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixhPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgbj1udWxsLGk9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2k9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPWkudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1pLnRhcmdldH1lbHNlIGlmKGUuYnJlYWsmJmUuYnJlYWsuYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhayYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLmJlZm9yZVRhcmdldCl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1pZihpKXtjb25zdCBlPXRoaXNbci4kc2VhcmNoTm9kZV0ocyxpW3IuJGdldFBhcmVudF0oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXtuPWU7aVtyLiRleHRyYV09e319fW58fChuPXRbMF0pO25bci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfTtjb25zdCBsPW5bci4kZ2V0UGFyZW50XSgpO2xbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpsLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBoLHU9bnVsbCxkPW51bGwsZj0hMCxnPTAscD0wO2Zvcig7Oyl7aWYoZilnPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsrZyl7KDAsYy53YXJuKSgiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBhfX1oPW51bGw7dGhpc1tyLiRleHRyYV0uY3VycmVudFBhZ2VBcmVhPW47Y29uc3QgdD1uW3IuJHRvSFRNTF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZih1KXt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShuW3IuJGV4dHJhXS5zcGFjZSkuaHRtbCk7dT1udWxsfWlmKGQpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZFtyLiR0b0hUTUxdKG5bci4kZXh0cmFdLnNwYWNlKS5odG1sKTtkPW51bGx9Y29uc3QgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2Y9ITE7dGhpc1tyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGE9ZVtyLiRmbHVzaEhUTUxdKCk7aWYoYSl7Zj1mfHxhLmNoaWxkcmVuJiYwIT09YS5jaGlsZHJlbi5sZW5ndGg7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLG89e3dpZHRoOm4udyxoZWlnaHQ6bi5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Y9Znx8Yy5odG1sLmNoaWxkcmVuJiYwIT09Yy5odG1sLmNoaWxkcmVuLmxlbmd0aDtzW3RdLmNoaWxkcmVuLnB1c2goYy5odG1sKX1lbHNlIWYmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYoYy5pc0JyZWFrKCkpe2NvbnN0IGU9Yy5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXt1PXRoaXNbci4kc2VhcmNoTm9kZV0oZS5sZWFkZXIsZVtyLiRnZXRQYXJlbnRdKCkpO3U9dT91WzBdOm51bGx9aWYoZS50cmFpbGVyKXtkPXRoaXNbci4kc2VhcmNoTm9kZV0oZS50cmFpbGVyLGVbci4kZ2V0UGFyZW50XSgpKTtkPWQ/ZFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtyLiRleHRyYV0udGFyZ2V0KXtoPWVbci4kZXh0cmFdLnRhcmdldDtwPWVbci4kZXh0cmFdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbci4kZXh0cmFdLmluZGV4fWVsc2UgaWYodGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZTt0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbci4kZ2V0RXh0cmFdKCksbj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcz10O3Q9MS8wO2lmKG4gaW5zdGFuY2VvZiBQYWdlQXJlYSloPW47ZWxzZSBpZihuIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKG4pO2lmKC0xIT09ZSllPnM/dD1lLTE6cD1lO2Vsc2V7aD1uW3IuJGdldFBhcmVudF0oKTtwPWguY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihuKX19fWVsc2UgZmx1c2godCl9dGhpc1tyLiRleHRyYV0ucGFnZU51bWJlcis9MTtoJiYoaFtyLiRpc1VzYWJsZV0oKT9oW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTpoPW51bGwpO249aHx8bltyLiRnZXROZXh0UGFnZV0oKTt5aWVsZCBudWxsfX19dC5UZW1wbGF0ZT1UZW1wbGF0ZTtjbGFzcyBUZXh0IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpe3JldHVybiEwfVtyLiRvbkNoaWxkXShlKXtpZihlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnhodG1sLmlkKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9KDAsYy53YXJuKShgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtyLiRub2RlTmFtZV19LmApO3JldHVybiExfVtyLiRvblRleHRdKGUpe3RoaXNbci4kY29udGVudF1pbnN0YW5jZW9mIHIuWEZBT2JqZWN0fHxzdXBlcltyLiRvblRleHRdKGUpfVtyLiRmaW5hbGl6ZV0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0mJih0aGlzW3IuJGNvbnRlbnRdPXRoaXNbci4kY29udGVudF0ucmVwbGFjZSgvXHJcbi9nLCJcbiIpKX1bci4kZ2V0RXh0cmFdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tyLiRjb250ZW50XVtyLiR0ZXh0XSgpfVtyLiR0b0hUTUxdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdKS5odG1sO2lmKHRoaXNbci4kY29udGVudF0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW3IuJGNvbnRlbnRdLnNwbGl0KCJcdTIwMjkiKS5tYXAoKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57ZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSk7cmV0dXJuIGV9KSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3IuJGNvbnRlbnRdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKX19dC5UZXh0PVRleHQ7Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgbj10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW4gaW5zdGFuY2VvZiBEcmF3PzE6MCk7YT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bci4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3IuJGdldEV4dHJhXSgpe2lmKHZvaWQgMD09PXRoaXNbci4kZXh0cmFdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe3RoaXNbci4kZXh0cmFdPXQ7cmV0dXJuIHR9fXRoaXNbci4kZXh0cmFdPW51bGx9cmV0dXJuIHRoaXNbci4kZXh0cmFdfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD90W3IuJHRvSFRNTF0oZSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3IuJHNldFZhbHVlXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aSYmdC51aS5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygci5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IGk9ZVtyLiRleHRyYV0scz1pLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6aS53aWR0aD1NYXRoLm1heChpLndpZHRoLG8rbCk7aS5oZWlnaHQ9TWF0aC5tYXgoaS5oZWlnaHQsYytoKTtpLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWkubGluZXx8MT09PWkuYXR0ZW1wdCl7aS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7aS5jaGlsZHJlbi5wdXNoKGkubGluZSk7aS5udW1iZXJJbkxpbmU9MH1pLm51bWJlckluTGluZSs9MTtpLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09aS5hdHRlbXB0KXtpLmN1cnJlbnRXaWR0aCs9bDtpLmhlaWdodD1NYXRoLm1heChpLmhlaWdodCxpLnByZXZIZWlnaHQraCl9ZWxzZXtpLmN1cnJlbnRXaWR0aD1sO2kucHJldkhlaWdodD1pLmhlaWdodDtpLmhlaWdodCs9aDtpLmF0dGVtcHQ9MH1pLndpZHRoPU1hdGgubWF4KGkud2lkdGgsaS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2kuY2hpbGRyZW4ucHVzaCh0KTtpLndpZHRoKz1sO2kuaGVpZ2h0PU1hdGgubWF4KGkuaGVpZ2h0LGgpO2NvbnN0IGU9KDAsbi5tZWFzdXJlVG9TdHJpbmcpKGkuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBpLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjppLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgoaS53aWR0aCxsKSk7aS5oZWlnaHQrPWg7aS5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLG49YVtyLiRleHRyYV0mJmFbci4kZXh0cmFdLmF0dGVtcHR8fDAsWyxpLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LG49IiI9PT1lLmg/TmFOOmUuaCxbaSxzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltpLHNdPVtyLzIsbl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbaSxzXT1bMCxuXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbaSxzXT1bcixuXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W2ksc109W3IvMixuLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W2ksc109WzAsbi8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbaSxzXT1bcixuLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbaSxzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltpLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstaSwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsaV07W3Isbl09W24sLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtpLHNdO1tyLG5dPVstciwtbl07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLWldO1tyLG5dPVstbixyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLG4pLE1hdGguYWJzKHIpLE1hdGguYWJzKG4pXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO2NvbnN0IGM9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYTtyZXR1cm4gbytpPmMuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG8tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX07dC5mbHVzaEhUTUw9ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW3IuJGV4dHJhXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtyLiRleHRyYV0uYXR0cmlidXRlcyxjaGlsZHJlbjplW3IuJGV4dHJhXS5jaGlsZHJlbn07aWYoZVtyLiRleHRyYV0uZmFpbGluZ05vZGUpe2NvbnN0IGE9ZVtyLiRleHRyYV0uZmFpbGluZ05vZGVbci4kZmx1c2hIVE1MXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfWlmKDA9PT10LmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gdH07dC5nZXRBdmFpbGFibGVTcGFjZT1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbci4kZXh0cmFdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW3IuJGV4dHJhXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtyLiRleHRyYV0ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOmVbci4kZXh0cmFdLmNvbHVtbldpZHRocy5zbGljZShlW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpKSxoZWlnaHQ6dC5oZWlnaHQtbn07Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJue3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2RlZmF1bHQ6cmV0dXJuIHR9fTt2YXIgcj1hKDc1KSxuPWEoODIpO2Z1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbXB1dGVCYm94PWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfW49W2UueCxlLnksaSxzXX1yZXR1cm4gbn07dC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOmF9PXQse3N0eWxlOm59PWEsaT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07YS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczphLGluc2V0czpzfT1lLmJvcmRlcltyLiRleHRyYV07bGV0IG8sYyxsPXNbMF0saD1zWzNdO2NvbnN0IHU9c1swXStzWzJdLGQ9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmwtPWFbMF0vMjtoLT1hWzNdLzI7bz1gY2FsYygxMDAlICsgJHsoYVsxXSthWzNdKS8yLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAkeyhhWzBdK2FbMl0pLzItdX1weClgO2JyZWFrO2Nhc2UibGVmdCI6bC09YVswXTtoLT1hWzNdO289YGNhbGMoMTAwJSArICR7YVsxXSthWzNdLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAke2FbMF0rYVsyXS11fXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bz1kP2BjYWxjKDEwMCUgLSAke2R9cHgpYDoiMTAwJSI7Yz11P2BjYWxjKDEwMCUgLSAke3V9cHgpYDoiMTAwJSJ9Y29uc3QgZj1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmYsc3R5bGU6e3RvcDpgJHtsfXB4YCxsZWZ0OmAke2h9cHhgLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PW5bZV0pe2cuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuY2hpbGRyZW4ucHVzaChnLHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PW5bZV0pe2kuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfSJhYnNvbHV0ZSI9PT1uLnBvc2l0aW9uP2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiOmkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2RlbGV0ZSBuLnBvc2l0aW9uO2lmKG4uYWxpZ25TZWxmKXtpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPW4uYWxpZ25TZWxmO2RlbGV0ZSBuLmFsaWduU2VsZn1yZXR1cm4gaX07dC5maXhEaW1lbnNpb25zPWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYodC5sYXlvdXQmJnQubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgYT10W3IuJGV4dHJhXSxuPWUuY29sU3BhbjtsZXQgaTtpPS0xPT09bj9hLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6YS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uLGEuY3VycmVudENvbHVtbituKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKGkpfHwoZS53PWkpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfTt0LmZpeFRleHRJbmRlbnQ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PSgwLGkuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLHI9KDAsaS5nZXRNZWFzdXJlbWVudCkoZVthXSwiMHB4Iik7ZVthXT1yLXQrInB4In07dC5maXhVUkw9ZnVuY3Rpb24gZml4VVJMKGUpe2NvbnN0IHQ9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShlLG51bGwse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtyZXR1cm4gdD90LmhyZWY6bnVsbH07dC5pc1ByaW50T25seT1pc1ByaW50T25seTt0LmxheW91dENsYXNzPWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19O3QubGF5b3V0Tm9kZT1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGE9bnVsbCxuPW51bGwsaT0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsbz0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O289ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGM9bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7Yz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGg9ZS5mb250O2lmKCFoKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2xldCBhPWVbci4kZ2V0UGFyZW50XSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2g9YS5mb250O2JyZWFrfWE9YVtyLiRnZXRQYXJlbnRdKCl9fWNvbnN0IHU9KGUud3x8dC53aWR0aCktcyxkPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbci4kY29udGVudF0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSxoLGwsYyxkLHUpO249dC53aWR0aDthPXQuaGVpZ2h0O2k9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtyLiR0ZXh0XSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGgsbCxjLGQsdSk7bj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09bnx8ZS53fHwobis9cyk7bnVsbD09PWF8fGUuaHx8KGErPW8pfXJldHVybnt3Om4saDphLGlzQnJva2VuOml9fTt0Lm1lYXN1cmVUb1N0cmluZz1tZWFzdXJlVG9TdHJpbmc7dC5zZXRBY2Nlc3M9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fTt0LnNldEZvbnRGYW1pbHk9ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxyKXtpZighYSl7ZGVsZXRlIHIuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgbj0oMCxpLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKTtyLmZvbnRGYW1pbHk9YCIke259ImA7Y29uc3Qgbz1hLmZpbmQobik7aWYobyl7Y29uc3R7Zm9udEZhbWlseTphfT1vLnJlZ3VsYXIuY3NzRm9udEluZm87YSE9PW4mJihyLmZvbnRGYW1pbHk9YCIke2F9ImApO2NvbnN0IGk9Z2V0Q3VycmVudFBhcmEodCk7aWYoaSYmIiIhPT1pLmxpbmVIZWlnaHQpcmV0dXJuO2lmKHIubGluZUhlaWdodClyZXR1cm47Y29uc3QgYz0oMCxzLnNlbGVjdEZvbnQpKGUsbyk7YyYmKHIubGluZUhlaWdodD1NYXRoLm1heCgxLjIsYy5saW5lSGVpZ2h0KSl9fTt0LnNldE1pbk1heERpbWVuc2lvbnM9ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fTt0LnNldFBhcmE9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzJiZhLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSl7aWYodCl7IiI9PT1lLmgmJih0LmhlaWdodD0iYXV0byIpOyIiPT09ZS53JiYodC53aWR0aD0iYXV0byIpfWNvbnN0IG49Z2V0Q3VycmVudFBhcmEoZSk7aWYobil7Y29uc3QgZT1hLmF0dHJpYnV0ZXMuc3R5bGU7ZS5kaXNwbGF5PSJmbGV4IjtlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7c3dpdGNoKG4udkFsaWduKXtjYXNlInRvcCI6ZS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjplLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjplLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWNvbnN0IHQ9bltyLiR0b1N0eWxlXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fTt0LnRvU3R5bGU9ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PWVbaV07aWYobnVsbCE9PXQpaWYoYy5oYXNPd25Qcm9wZXJ0eShpKSljW2ldKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe2NvbnN0IGU9dFtyLiR0b1N0eWxlXSgpO2U/T2JqZWN0LmFzc2lnbihhLGUpOigwLG4ud2FybikoYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHtpfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiBhfTt2YXIgcj1hKDc1KSxuPWEoMiksaT1hKDc2KSxzPWEoODMpLG89YSg4NCk7ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgYz17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKGEmJighYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtsZXQgbj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQmJmEubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW3IuJGV4dHJhXSxpPWUuY29sU3BhbjtsZXQgcztpZigtMT09PWkpe3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocyl8fChuPWUudz1zKX10LndpZHRoPSIiIT09bj9tZWFzdXJlVG9TdHJpbmcobik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFhfHwhYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW3IuJG5vZGVOYW1lXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bci4kdG9TdHlsZV0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsYSxuLGkscyl7Y29uc3QgYz1uZXcgby5UZXh0TWVhc3VyZSh0LGEsbixpKTsic3RyaW5nIj09dHlwZW9mIGU/Yy5hZGRTdHJpbmcoZSk6ZVtyLiRwdXNoR2x5cGhzXShjKTtyZXR1cm4gYy5jb21wdXRlKHMpfWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZvbnRGaW5kZXI9dm9pZCAwO3QuZ2V0TWV0cmljcz1mdW5jdGlvbiBnZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PSgwLG4uc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpLGk9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUsaSl9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgaT1lLnNpemV8fDEwLHM9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbz12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OnMqaSxsaW5lR2FwOm8qaSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxzLW8pKml9fTt0LnNlbGVjdEZvbnQ9c2VsZWN0Rm9udDt2YXIgcj1hKDc1KSxuPWEoNzYpLGk9YSgyKTt0LkZvbnRGaW5kZXI9Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgbj0iIjtjb25zdCBpPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9uPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYobj0iYm9sZCIpO2lmKCFuKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lJiZlLnBzTmFtZS5pbmNsdWRlcygiQm9sZCIpKSYmKG49ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZSYmKGUucHNOYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWUuZW5kc1dpdGgoIkl0IikpKSYmKG4rPSJpdGFsaWMiKX1ufHwobj0icmVndWxhciIpO3Jbbl09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IHI9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBuPWUucmVwbGFjZShyLCIiKTthPXRoaXMuZm9udHMuZ2V0KG4pO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9bj1uLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZShyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7bj1uLnJlcGxhY2UoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJigwLGkud2FybikoYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpOygwLGkud2FybikoYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciByPWEoODMpO2NsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3QgaT1uLmZpbmQoZS50eXBlZmFjZSk7aWYoaSl7dGhpcy5wZGZGb250PSgwLHIuc2VsZWN0Rm9udCkoZSxpKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KG4pfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodCYmdC5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5mb250RmluZGVyPXI7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxhLHIpXX1wdXNoRGF0YShlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1yLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09ci5wYXJhTWFyZ2luW2VdKTtjb25zdCBuPW5ldyBGb250SW5mbyhlLHQsYXx8ci5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7bi5wZGZGb250fHwobi5wZGZGb250PXIucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKG4pfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fXQuVGV4dE1lYXN1cmU9Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsYSxyKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGEpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxhKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGE9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCByPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLG49dC5wZGZGb250LGk9bi5saW5lSGVpZ2h0fHwxLjIscz10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixpKSphLG89aS0odm9pZCAwPT09bi5saW5lR2FwPy4yOm4ubGluZUdhcCksYz1NYXRoLm1heCgxLG8pKmEsbD1hLzFlMyxoPW4uZGVmYXVsdFdpZHRofHxuLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9bi5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksYT1uLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1lLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW3QqbCtyLHMsYyxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9ZWxzZXtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfX1jb21wdXRlKGUpe2xldCB0PS0xLGE9MCxyPTAsbj0wLGk9MCxzPTAsbz0hMSxjPSEwO2ZvcihsZXQgbD0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2w8aDtsKyspe2NvbnN0W2gsdSxkLGYsZ109dGhpcy5nbHlwaHNbbF0scD0iICI9PT1mLG09Yz9kOnU7aWYoZyl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtjPSExfWVsc2UgaWYocClpZihpK2g+ZSl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtvPSEwO2M9ITF9ZWxzZXtzPU1hdGgubWF4KG0scyk7YT1pO2krPWg7dD1sfWVsc2UgaWYoaStoPmUpe24rPXM7cz1tO2lmKC0xIT09dCl7bD10O3I9TWF0aC5tYXgocixhKTtpPTA7dD0tMTthPTB9ZWxzZXtyPU1hdGgubWF4KHIsaSk7aT1ofW89ITA7Yz0hMX1lbHNle2krPWg7cz1NYXRoLm1heChtLHMpfX1yPU1hdGgubWF4KHIsaSk7bis9cyt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKnIsaGVpZ2h0Om4saXNCcm9rZW46b319fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFIYW5kbGVyPXZvaWQgMDt2YXIgcj1hKDc1KTt0LkRhdGFIYW5kbGVyPWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbci4kZ2V0Q2hpbGRyZW5dKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtuLGldPWE7aWYobisxPT09aS5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcz1pWysrYVswXV0sbz1lLmdldChzW3IuJHVpZF0pO2lmKG8pc1tyLiRzZXRWYWx1ZV0obyk7ZWxzZXtjb25zdCB0PXNbci4kZ2V0QXR0cmlidXRlc10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbci4kdWlkXSk7aWYodCl7YVtyLiRzZXRWYWx1ZV0odCk7YnJlYWt9fX1jb25zdCBjPXNbci4kZ2V0Q2hpbGRyZW5dKCk7Yy5sZW5ndGg+MCYmdC5wdXNoKFstMSxjXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbci4kZ2V0Q2hpbGRyZW5dKCkpImRhdGEiIT09ZVtyLiRub2RlTmFtZV0mJmVbci4kdG9TdHJpbmddKGEpO3RoaXMuZGF0YVtyLiR0b1N0cmluZ10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBUGFyc2VyPXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNjQpLGk9YSg4Nykscz1hKDIpO2NsYXNzIFhGQVBhcnNlciBleHRlbmRzIG4uWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlPW51bGwsdD0hMSl7c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBpLkJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPW4uWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3I7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1uLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXt0aGlzLl9jdXJyZW50W3IuJGZpbmFsaXplXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6byx2YWx1ZTpjfW9mIGUpaWYoInhtbG5zIj09PW8pYT8oMCxzLndhcm4pKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWM7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW8uc3Vic3RyaW5nKCJ4bWxuczoiLmxlbmd0aCk7bnx8KG49W10pO24ucHVzaCh7cHJlZml4OmUsdmFsdWU6Y30pfWVsc2V7Y29uc3QgZT1vLmluZGV4T2YoIjoiKTtpZigtMT09PWUpaVtvXT1jO2Vsc2V7bGV0IHQ9aVtyLiRuc0F0dHJpYnV0ZXNdO3R8fCh0PWlbci4kbnNBdHRyaWJ1dGVzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdFthLG5dPVtvLnNsaWNlKDAsZSksby5zbGljZShlKzEpXTtsZXQgcz10W2FdO3N8fChzPXRbYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7c1tuXT1jfX1yZXR1cm5bYSxuLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixpLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtvLGNdPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4OmMsbmFtZTpvLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6bixwcmVmaXhlczppfSk7bFtyLiRnbG9iYWxEYXRhXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xbci4kZmluYWxpemVdKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXShsKSYmbFtyLiRzZXRJZF0odGhpcy5faWRzKTtsW3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1sfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbci4kaXNDREFUQVhtbF0oKSYmInN0cmluZyI9PXR5cGVvZiB0W3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3IuJGNvbnRlbnRdKTt0W3IuJGNvbnRlbnRdPW51bGw7dFtyLiRvbkNoaWxkXShhKX10W3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXSh0KSYmdFtyLiRzZXRJZF0odGhpcy5faWRzKTt0W3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX10LlhGQVBhcnNlcj1YRkFQYXJzZXJ9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CdWlsZGVyPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpLGk9YSg4OCkscz1hKDgwKSxvPWEoOTcpLGM9YSgyKTtjbGFzcyBSb290IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbbi4kaWRzXT1lfVtuLiRvbkNoaWxkXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bbi4kZmluYWxpemVdKCl7c3VwZXJbbi4kZmluYWxpemVdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSl7dGhpc1tuLiRpZHNdLnNldChuLiRyb290LHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW24uJHJlc29sdmVQcm90b3R5cGVzXSh0aGlzW24uJGlkc10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtuLiRpZHNdPXRoaXNbbi4kaWRzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbi4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyLk5hbWVzcGFjZUlkcykubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpzLHByZWZpeGVzOm99KXtjb25zdCBjPW51bGwhPT1zO2lmKGMpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uocyl9byYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KG8pO2lmKGEuaGFzT3duUHJvcGVydHkobi4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9YVtuLiRuc0F0dHJpYnV0ZXNdO2xldCByPW51bGw7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoYSk9PT1lKXtyPXt4ZmE6bn07YnJlYWt9fXI/YVtuLiRuc0F0dHJpYnV0ZXNdPXI6ZGVsZXRlIGFbbi4kbnNBdHRyaWJ1dGVzXX1jb25zdCBsPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLGg9bCYmbFtyLiRidWlsZFhGQU9iamVjdF0odCxhKXx8bmV3IEVtcHR5O2hbbi4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsoY3x8b3x8aFtuLiRpc05zQWdub3N0aWNdKCkpJiYoaFtuLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOmMscHJlZml4ZXM6byxuc0Fnbm9zdGljOmhbbi4kaXNOc0Fnbm9zdGljXSgpfSk7cmV0dXJuIGh9aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6bn1db2YgT2JqZWN0LmVudHJpZXMoci5OYW1lc3BhY2VJZHMpKWlmKG4oZSkpe3Q9aS5OYW1lc3BhY2VTZXRVcFthXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOmF9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSk7bGV0IHI9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFyKXtyPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LHIpfXIucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQmJnQubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpOygwLGMud2FybikoYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCgoe3ByZWZpeDplfSk9Pnt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSkucG9wKCl9KSk7ciYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgcj1hKDg5KSxuPWEoOTApLGk9YSg5MSkscz1hKDkyKSxvPWEoOTMpLGM9YSg5NCksbD1hKDgwKSxoPWEoOTUpLHU9YSg5Nik7Y29uc3QgZD17Y29uZmlnOnIuQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246bi5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db25maWdOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSksaT1hKDc2KSxzPWEoMik7Y29uc3Qgbz1yLk5hbWVzcGFjZUlkcy5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgbi5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbWQiKX19Y2xhc3MgQXJlYSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFyZWEiKTt0aGlzLmxldmVsPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmVoYXZpb3JPdmVycmlkZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBuLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIG4uSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBuLlhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVtYmVkIil9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHQiKX19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlcXVhdGUiKTt0aGlzLmZvcmNlPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGE9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgciBvZiBhLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KSk7MT09PXIubGVuZ3RoJiZyLnB1c2goclswXSk7ZS5wdXNoKHIpfXJldHVybigwLHMuc2hhZG93KSh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImV4Y2x1ZGUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIEZvbnRJbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhY2tldHMiKX1bbi4kZmluYWxpemVdKCl7IioiIT09dGhpc1tuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VPZmZzZXQiKTt0aGlzLng9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VSYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tuLiRjb250ZW50XT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVjb3JkIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW24uJGNvbnRlbnRdLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW24uJGNvbnRlbnRdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyZWxldmFudCIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmFtZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpOyh0aGlzW24uJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbbi4kY29udGVudF0pKSYmKDAscy53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3RhcGxlIik7dGhpcy5tb2RlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN0YXJ0UGFnZSIsMCwoZT0+ITApKX19Y2xhc3MgU3VibWl0Rm9ybWF0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0YWdnZWQiKX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidXJpIil9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aW5kb3ciKX1bbi4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW24uJGNvbnRlbnRdPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tuLiRjb250ZW50XT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywieGRjIiwhMCk7dGhpcy51cmk9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBGb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fXQuQ29uZmlnTmFtZXNwYWNlPUNvbmZpZ05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNvbm5lY3Rpb25TZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFVyaSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fXQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT1Db25uZWN0aW9uU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGF0YXNldHNOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3Nyk7Y29uc3QgaT1uLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZDtjbGFzcyBEYXRhIGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiZGF0YSIsZSl9W3IuJGlzTnNBZ25vc3RpY10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W3IuJG9uQ2hpbGRdKGUpe2NvbnN0IHQ9ZVtyLiRub2RlTmFtZV07KCJkYXRhIj09PXQmJmVbci4kbmFtZXNwYWNlSWRdPT09aXx8IlNpZ25hdHVyZSI9PT10JiZlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX19dC5EYXRhc2V0c05hbWVzcGFjZT1EYXRhc2V0c05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsZVNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KSxpPWEoNzYpO2NvbnN0IHM9ci5OYW1lc3BhY2VJZHMubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBuLlhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBuLlhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IG4uWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIExvY2FsZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBuLlhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgbi5YRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgbi5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19dC5Mb2NhbGVTZXROYW1lc3BhY2U9TG9jYWxlU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NvbnN0IGk9ci5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkO2NsYXNzIFNpZ25hdHVyZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9fXQuU2lnbmF0dXJlTmFtZXNwYWNlPVNpZ25hdHVyZU5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX10LlN0eWxlc2hlZXROYW1lc3BhY2U9U3R5bGVzaGVldE5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhkcE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KTtjb25zdCBpPXIuTmFtZXNwYWNlSWRzLnhkcC5pZDtjbGFzcyBYZHAgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtuLiRvbkNoaWxkQ2hlY2tdKGUpe2NvbnN0IHQ9ci5OYW1lc3BhY2VJZHNbZVtuLiRub2RlTmFtZV1dO3JldHVybiB0JiZlW24uJG5hbWVzcGFjZUlkXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX19dC5YZHBOYW1lc3BhY2U9WGRwTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGh0bWxOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDgyKSxzPWEoNzYpO2NvbnN0IG89bi5OYW1lc3BhY2VJZHMueGh0bWwuaWQsYz1TeW1ib2woKSxsPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksaD1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT57ZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpO3JldHVybigwLGkubWVhc3VyZVRvU3RyaW5nKSguOTkqZSl9XSxbImxldHRlci1zcGFjaW5nIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbiIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tdG9wIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbInRleHQtaW5kZW50IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXV0pLHU9L1xzKy9nLGQ9L1tcclxuXSsvZyxmPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIG47Y29uc3Qgbz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1oLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHI9YTtlJiYocj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEsbykpO3QuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm0/bi50cmFuc2Zvcm09YCR7blt0XX0gJHtyfWA6bi50cmFuc2Zvcm09cjpuW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1yfW4uZm9udEZhbWlseSYmKDAsaS5zZXRGb250RmFtaWx5KSh7dHlwZWZhY2U6bi5mb250RmFtaWx5LHdlaWdodDpuLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6bi5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6by5mb250U2l6ZXx8MH0sdCx0W3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsbik7aWYoYSYmbi52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PW4udmVydGljYWxBbGlnbiYmbi5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxhPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKG4uZm9udFNpemUpO24uZm9udFNpemU9KDAsaS5tZWFzdXJlVG9TdHJpbmcpKGEqZSk7bi52ZXJ0aWNhbEFsaWduPSgwLGkubWVhc3VyZVRvU3RyaW5nKShNYXRoLnNpZ24oKDAscy5nZXRNZWFzdXJlbWVudCkobi52ZXJ0aWNhbEFsaWduKSkqYSp0KX1hJiZuLmZvbnRTaXplJiYobi5mb250U2l6ZT1gY2FsYygke24uZm9udFNpemV9ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgKTsoMCxpLmZpeFRleHRJbmRlbnQpKG4pO3JldHVybiBufWNvbnN0IGc9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihvLHQpO3RoaXNbY109ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtyLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZChhKTtyZXR1cm4gbC5oYXModCl9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuIWcuaGFzKHRoaXNbci4kbm9kZU5hbWVdKX1bci4kb25UZXh0XShlLHQ9ITEpe2lmKHQpdGhpc1tjXT0hMDtlbHNle2U9ZS5yZXBsYWNlKGQsIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlKHUsIiAiKSl9ZSYmKHRoaXNbci4kY29udGVudF0rPWUpfVtyLiRwdXNoR2x5cGhzXShlLHQ9ITApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgaT1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT0oMCxzLnN0cmlwUXVvdGVzKSh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKChlPT4oMCxzLmdldE1lYXN1cmVtZW50KShlKSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOm4udG9wPW4uYm90dG9tPW4ubGVmdD1uLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOm4udG9wPW4uYm90dG9tPWVbMF07bi5sZWZ0PW4ucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6bi50b3A9ZVswXTtuLmJvdHRvbT1lWzJdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0Om4udG9wPWVbMF07bi5sZWZ0PWVbMV07bi5ib3R0b209ZVsyXTtuLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjpuLnRvcD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOm4uYm90dG9tPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOm4ubGVmdD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6bi5yaWdodD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjppPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpfWUucHVzaERhdGEoYSxuLGkpO2lmKHRoaXNbci4kY29udGVudF0pZS5hZGRTdHJpbmcodGhpc1tyLiRjb250ZW50XSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW3IuJGdldENoaWxkcmVuXSgpKSIjdGV4dCIhPT10W3IuJG5vZGVOYW1lXT90W3IuJHB1c2hHbHlwaHNdKGUpOmUuYWRkU3RyaW5nKHRbci4kY29udGVudF0pO3QmJmUucG9wRm9udCgpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW3IuJGNvbnRlbnRdKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW2NdP3RoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlKGYsIlxuIik6dm9pZCAwOnRoaXNbci4kY29udGVudF18fHZvaWQgMDtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tyLiRub2RlTmFtZV0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbY10pfSxjaGlsZHJlbjp0LHZhbHVlOmF9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9KDAsaS5maXhVUkwpKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtyLiRwdXNoR2x5cGhzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbci4kcHVzaEdseXBoc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1zdXBlcltyLiR0b0hUTUxdKGUpLHtodG1sOmF9PXQ7aWYoIWEpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W3IuJHRleHRdKCl7cmV0dXJuIlxuIn1bci4kcHVzaEdseXBoc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjp0fTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tyLiRjb250ZW50XXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXMmJmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bci4kcHVzaEdseXBoc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bci4kcHVzaEdseXBoc10oZSl7c3VwZXJbci4kcHVzaEdseXBoc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W3IuJHRleHRdKCl7cmV0dXJuIHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbci4kdGV4dF0oKTpzdXBlcltyLiR0ZXh0XSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGh0bWxOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhodG1sTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fXQuWGh0bWxOYW1lc3BhY2U9WGh0bWxOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtyZXR1cm4gbmV3IG4uWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19dC5Vbmtub3duTmFtZXNwYWNlPVVua25vd25OYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0UmVhZGVyPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoNjQpO2Z1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuKDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGUpfWNhdGNoKHQpeygwLHIud2FybikoYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19dC5EYXRhc2V0UmVhZGVyPWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IGkuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaChlKXt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZSgoMCxuLnBhcnNlWEZBUGF0aCkoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGEmJiJ2YWx1ZSI9PT1hLm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhSZWY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoMTUpLG89YSg1KSxjPWEoNjUpO3QuWFJlZj1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy54cmVmc3Rtcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IG4uUmVmU2V0O3RoaXMuc3RhdHM9bmV3IGkuRG9jU3RhdHModC5tc2dIYW5kbGVyKTt0aGlzLl9uZXdSZWZOdW09bnVsbH1nZXROZXdSZWYoKXtudWxsPT09dGhpcy5fbmV3UmVmTnVtJiYodGhpcy5fbmV3UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3JldHVybiBuLlJlZi5nZXQodGhpcy5fbmV3UmVmTnVtKyssMCl9cmVzZXROZXdSZWYoKXt0aGlzLl9uZXdSZWZOdW09bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxzO2lmKGUpeygwLHIud2FybikoIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lJiZlLmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgYy5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGEscix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXtzPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYocyBpbnN0YW5jZW9mIG4uRGljdCl0cnl7aWYocy5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIG4uRGljdCl7dGhpcy5yb290PXM7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtjb25zdCB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsbi5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCBhPWUuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIG4uRGljdHx8IWEuZGljdHx8KGE9YS5kaWN0KTtpZighKGEgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiBhfXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxhPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1hLnN0cmVhbVBvcztlLmJ1ZjE9YS5wYXJzZXJCdWYxO2UuYnVmMj1hLnBhcnNlckJ1ZjI7bGV0IGk7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGEpfHwhKCJlbnRyeUNvdW50ImluIGEpKXtpZigoMCxuLmlzQ21kKShpPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhazthLmZpcnN0RW50cnlOdW09aTthLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1hLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1hLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBpPWEuZW50cnlOdW07aTxvO2krKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1pO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCk7Yy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtvfWApOzA9PT1pJiZjLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbaStzXXx8KHRoaXMuZW50cmllc1tpK3NdPWMpfWEuZW50cnlOdW09MDthLnN0cmVhbVBvcz10LnBvczthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGEuZmlyc3RFbnRyeU51bTtkZWxldGUgYS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGl9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LGE9dC5nZXQoIlciKTtsZXQgcj10LmdldCgiSW5kZXgiKTtyfHwocj1bMCx0LmdldCgiU2l6ZSIpXSk7dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXRoaXMucmVhZFhSZWZTdHJlYW0oZSk7ZGVsZXRlIHRoaXMuc3RyZWFtU3RhdGU7cmV0dXJuIGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbYSxuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtvfSwgJHtjfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke299LCAke2N9YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1hJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3Uub2Zmc2V0PWw7dS5nZW49aDtzd2l0Y2goYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke2N9YCl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTA7dC5zdHJlYW1Qb3M9ZS5wb3M7cy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gcmVhZFRva2VuKGUsdCl7bGV0IGE9IiIscj1lW3RdO2Zvcig7MTAhPT1yJiYxMyE9PXImJjYwIT09ciYmISgrK3Q+PWUubGVuZ3RoKTspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUocik7cj1lW3RdfXJldHVybiBhfWZ1bmN0aW9uIHNraXBVbnRpbChlLHQsYSl7Y29uc3Qgcj1hLmxlbmd0aCxuPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDt0PG47KXtsZXQgbj0wO2Zvcig7bjxyJiZlW3Qrbl09PT1hW25dOykrK247aWYobj49cilicmVhazt0Kys7aSsrfXJldHVybiBpfWNvbnN0IGU9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHQ9L1xiZW5kb2JqW1xiXHNdJC8sYT0vXHMrKFxkK1xzK1xkK1xzK29ialtcYlxzPF0pJC8sbz1uZXcgVWludDhBcnJheShbMTE2LDExNCw5NywxMDUsMTA4LDEwMSwxMTRdKSxjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbD1uZXcgVWludDhBcnJheShbMTExLDk4LDEwNl0pLGg9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCB1PXRoaXMuc3RyZWFtO3UucG9zPTA7Y29uc3QgZD11LmdldEJ5dGVzKCksZj1kLmxlbmd0aDtsZXQgZz11LnN0YXJ0O2NvbnN0IHA9W10sbT1bXTtmb3IoO2c8Zjspe2xldCBuPWRbZ107aWYoOT09PW58fDEwPT09bnx8MTM9PT1ufHwzMj09PW4peysrZztjb250aW51ZX1pZigzNz09PW4pe2RveysrZztpZihnPj1mKWJyZWFrO249ZFtnXX13aGlsZSgxMCE9PW4mJjEzIT09bik7Y29udGludWV9Y29uc3QgYj1yZWFkVG9rZW4oZCxnKTtsZXQgeTtpZihiLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbNF0pKSl7Zys9c2tpcFVudGlsKGQsZyxvKTtwLnB1c2goZyk7Zys9c2tpcFVudGlsKGQsZyxjKX1lbHNlIGlmKHk9ZS5leGVjKGIpKXtjb25zdCBlPTB8eVsxXSxuPTB8eVsyXTtsZXQgbyxjPWcrYi5sZW5ndGgsZj0hMTtpZih0aGlzLmVudHJpZXNbZV0pe2lmKHRoaXMuZW50cmllc1tlXS5nZW49PT1uKXRyeXtuZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUubWFrZVN1YlN0cmVhbShjKSl9KS5nZXRPYmooKTtmPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBpLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxyLndhcm4pKGBpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgke2J9KTogIiR7ZX0iLmApOmY9ITB9fWVsc2UgZj0hMDtmJiYodGhpcy5lbnRyaWVzW2VdPXtvZmZzZXQ6Zy11LnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2Zvcig7YzxkLmxlbmd0aDspe2NvbnN0IGU9Yytza2lwVW50aWwoZCxjLGwpKzQ7bz1lLWc7Y29uc3Qgbj1NYXRoLm1heChlLTI1LGMpLGk9KDAsci5ieXRlc1RvU3RyaW5nKShkLnN1YmFycmF5KG4sZSkpO2lmKHQudGVzdChpKSlicmVhazt7Y29uc3QgZT1hLmV4ZWMoaSk7aWYoZSYmZVsxXSl7KDAsci53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCBuZXcgIm9iaiIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLicpO28tPWVbMV0ubGVuZ3RoO2JyZWFrfX1jPWV9Y29uc3QgcD1kLnN1YmFycmF5KGcsZytvKSx3PXNraXBVbnRpbChwLDAsaCk7aWYodzxvJiZwW3crNV08NjQpe20ucHVzaChnLXUuc3RhcnQpO3RoaXMueHJlZnN0bXNbZy11LnN0YXJ0XT0xfWcrPW99ZWxzZSBpZihiLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbN10pKSl7cC5wdXNoKGcpO2crPXNraXBVbnRpbChkLGcsYyl9ZWxzZSBnKz1iLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIG0pe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1sZXQgYix5O2Zvcihjb25zdCBlIG9mWy4uLnAsImdlbmVyYXRpb25GYWxsYmFjayIsLi4ucF0pe2lmKCJnZW5lcmF0aW9uRmFsbGJhY2siPT09ZSl7aWYoIXkpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfXUucG9zPWU7Y29uc3QgdD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksYT10LmdldE9iaigpO2lmKCEoMCxuLmlzQ21kKShhLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3Qgcj10LmdldE9iaigpO2lmKCEociBpbnN0YW5jZW9mIG4uRGljdCkpY29udGludWU7bGV0IGk9ITE7dHJ5e2NvbnN0IGU9ci5nZXQoIlJvb3QiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2NvbnN0IHQ9ZS5nZXQoIlBhZ2VzIik7aWYoISh0IGluc3RhbmNlb2Ygbi5EaWN0KSljb250aW51ZTtjb25zdCBhPXQuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIoYSkmJihpPSEwKX1jYXRjaChlKXt5PWU7Y29udGludWV9aWYoaSYmci5oYXMoIklEIikpcmV0dXJuIHI7Yj1yfWlmKGIpcmV0dXJuIGI7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7dGhyb3cgbmV3IHIuSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O3RyeXtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXsoMCxyLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgaT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgYyxsPWkuZ2V0T2JqKCk7aWYoKDAsbi5pc0NtZCkobCwieHJlZiIpKXtjPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShpKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9Yyk7bD1jLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobCkpe2NvbnN0IGU9bDtpZighKGUgaW4gdGhpcy54cmVmc3Rtcykpe3RoaXMueHJlZnN0bXNbZV09MTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSl9fX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpLmdldE9iaigpKSYmKDAsbi5pc0NtZCkoaS5nZXRPYmooKSwib2JqIikmJihsPWkuZ2V0T2JqKCkpaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7Yz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1jKTtpZighYyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWMuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIG4uUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1yZXR1cm4gdGhpcy50b3BEaWN0fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSk7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKCFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLGk9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PWkpe2kgaW5zdGFuY2VvZiBuLkRpY3QmJiFpLm9iaklkJiYoaS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpe3RoaXMuX2NhY2hlTWFwLnNldChhLHMpO3JldHVybiBzfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpOygwLHIud2FybikoYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbi5DSVJDVUxBUl9SRUZ9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIG4uRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IGM9ZS5nZW47bGV0IGw9ZS5udW07aWYodC5nZW4hPT1jKXtjb25zdCBzPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPGMpeygwLHIud2Fybikocyk7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQobi5SZWYuZ2V0KGwsdC5nZW4pLHQsYSl9dGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09bHx8ZiE9PWN8fCEoZyBpbnN0YW5jZW9mIG4uQ21kKSl0aHJvdyBuZXcgaS5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2w9cGFyc2VJbnQoZy5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGwpKXJldHVybiBsfXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3UuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obCxjKSk6dS5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGwsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBjPXQub2Zmc2V0LGw9dGhpcy5mZXRjaChuLlJlZi5nZXQoYywwKSk7aWYoIShsIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBoPWwuZGljdC5nZXQoIkZpcnN0IiksdT1sLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fCFOdW1iZXIuaXNJbnRlZ2VyKHUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBmPW5ldyBBcnJheSh1KSxnPW5ldyBBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7KytlKXtjb25zdCB0PWQuZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9ZC5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2F9YCk7ZltlXT10O2dbZV09YX1jb25zdCBwPShsLnN0YXJ0fHwwKStoLG09bmV3IEFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTsrK2Upe2NvbnN0IHQ9ZTx1LTE/Z1tlKzFdLWdbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7ZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwubWFrZVN1YlN0cmVhbShwK2dbZV0sdCxsLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1kLmdldE9iaigpO21bZV09YTtpZihhIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IG49ZltlXSxpPXRoaXMuZW50cmllc1tuXTtpJiZpLm9mZnNldD09PWMmJmkuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KG4sYSl9aWYodm9pZCAwPT09KHQ9bVt0Lmdlbl0pKXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuLlJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmlzTm9kZUpTPXZvaWQgMDtjb25zdCBhPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPWF9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIHI9YSgyKTtjb25zdCBuPTEsaT0yLHM9MSxvPTIsYz0zLGw9NCxoPTUsdT02LGQ9NyxmPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCgwLHIudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgci5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLk1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oZS5tZXNzYWdlLGUuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgci5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9fXQuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPWU9Pntjb25zdCB0PWUuZGF0YTtpZih0LnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKHQuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1uKWEucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYodC5jYWxsYmFjayE9PWkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IHI9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscz10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocih0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihyKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpzLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTpyfSl9KSwoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHIpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsodCk6cih0LmRhdGEpfTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKyssaT0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6bixkYXRhOnR9LGEpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGEsbil7Y29uc3QgaT10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsYz10aGlzLnRhcmdldE5hbWUsbD10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3Qgcz0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV09e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6cyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxhY3Rpb246ZSxzdHJlYW1JZDppLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gcy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnUsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9PnsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uaXNDbG9zZWQ9ITA7bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxzdHJlYW06cyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfV9jcmVhdGVTdHJlYW1TaW5rKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxuPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLHM9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sdT17ZW5xdWV1ZShlLHM9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBjPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09cztpZihjPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1pLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpsLHN0cmVhbUlkOnQsY2h1bms6ZX0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06YyxzdHJlYW1JZDp0fSk7ZGVsZXRlIHMuc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OigwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O3Uuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO3UucmVhZHk9dS5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09dTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChvKGUuZGF0YSx1KSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scD10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBmOmUuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGQ6ZS5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHU6aWYoIXApe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cC5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZwLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtwLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UocC5vblB1bGwmJnAub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06ZCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIGw6KDAsci5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgYzooMCxyLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgaDooMCxyLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyx0KTticmVhaztjYXNlIG86ZS5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgczppZighcClicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChwLm9uQ2FuY2VsJiZwLm9uQ2FuY2VsKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO3Auc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtwLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbCYmZS5zdGFydENhbGwucHJvbWlzZSxlLnB1bGxDYWxsJiZlLnB1bGxDYWxsLnByb21pc2UsZS5jYW5jZWxDYWxsJiZlLmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBERldvcmtlclN0cmVhbT12b2lkIDA7dmFyIHI9YSgyKTt0LlBERldvcmtlclN0cmVhbT1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpeygwLHIuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgYT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciYmdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIuY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fTtjbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19fV0sdD17fTtmdW5jdGlvbiBfX3dfcGRmanNfcmVxdWlyZV9fKGEpe3ZhciByPXRbYV07aWYodm9pZCAwIT09cilyZXR1cm4gci5leHBvcnRzO3ZhciBuPXRbYV09e2V4cG9ydHM6e319O2VbYV0obixuLmV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk7cmV0dXJuIG4uZXhwb3J0c31fX3dfcGRmanNfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIGEgaW4gdClfX3dfcGRmanNfcmVxdWlyZV9fLm8odCxhKSYmIV9fd19wZGZqc19yZXF1aXJlX18ubyhlLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLGdldDp0W2FdfSl9O19fd19wZGZqc19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCk7X193X3BkZmpzX3JlcXVpcmVfXy5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgYT17fTsoKCk9Pnt2YXIgZT1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiV29ya2VyTWVzc2FnZUhhbmRsZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lldvcmtlck1lc3NhZ2VIYW5kbGVyfX0pO3ZhciB0PV9fd19wZGZqc19yZXF1aXJlX18oMSl9KSgpO3JldHVybiBhfSkoKSkpOw==",B2e="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmIixbXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYiXT1lKCk6dFsicGRmanMtZGlzdC9idWlsZC9wZGYiXT10LnBkZmpzTGliPWUoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz1bLCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuVmVyYm9zaXR5TGV2ZWw9ZS5VdGlsPWUuVW5rbm93bkVycm9yRXhjZXB0aW9uPWUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWUuVU5TVVBQT1JURURfRkVBVFVSRVM9ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlN0cmVhbVR5cGU9ZS5SZW5kZXJpbmdJbnRlbnRGbGFnPWUuUGVybWlzc2lvbkZsYWc9ZS5QYXNzd29yZFJlc3BvbnNlcz1lLlBhc3N3b3JkRXhjZXB0aW9uPWUuUGFnZUFjdGlvbkV2ZW50VHlwZT1lLk9QUz1lLk1pc3NpbmdQREZFeGNlcHRpb249ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5Gb250VHlwZT1lLkZlYXR1cmVUZXN0PWUuRk9OVF9JREVOVElUWV9NQVRSSVg9ZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT1lLkNNYXBDb21wcmVzc2lvblR5cGU9ZS5CYXNlRXhjZXB0aW9uPWUuQW5ub3RhdGlvblR5cGU9ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9ZS5Bbm5vdGF0aW9uUmVwbHlUeXBlPWUuQW5ub3RhdGlvbk1vZGU9ZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9ZS5Bbm5vdGF0aW9uRmxhZz1lLkFubm90YXRpb25GaWVsZEZsYWc9ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT1lLkFubm90YXRpb25FZGl0b3JQcmVmaXg9ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT1lLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPWUuQWJvcnRFeGNlcHRpb249dm9pZCAwO2UuYXJyYXlCeXRlTGVuZ3RoPWFycmF5Qnl0ZUxlbmd0aDtlLmFycmF5c1RvQnl0ZXM9ZnVuY3Rpb24gYXJyYXlzVG9CeXRlcyh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKDE9PT1lJiZ0WzBdaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0WzBdO2xldCBzPTA7Zm9yKGxldCBpPTA7aTxlO2krKylzKz1hcnJheUJ5dGVMZW5ndGgodFtpXSk7bGV0IGk9MDtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBlPXRbc107ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChlPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KGUpKTtjb25zdCByPWUuYnl0ZUxlbmd0aDtuLnNldChlLGkpO2krPXJ9cmV0dXJuIG59O2UuYXNzZXJ0PWZ1bmN0aW9uIGFzc2VydCh0LGUpe3R8fHVucmVhY2hhYmxlKGUpfTtlLmJ5dGVzVG9TdHJpbmc9ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyh0KXsib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ2b2lkIDAhPT10Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCBlPXQubGVuZ3RoLHM9ODE5MjtpZihlPHMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KTtjb25zdCBpPVtdO2ZvcihsZXQgbj0wO248ZTtuKz1zKXtjb25zdCByPU1hdGgubWluKG4rcyxlKSxhPXQuc3ViYXJyYXkobixyKTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKX1yZXR1cm4gaS5qb2luKCIiKX07ZS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbiBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZT0hMTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2V0dGxlZCIse2dldDooKT0+ZX0pO3QucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxpKXt0LnJlc29sdmU9ZnVuY3Rpb24odCl7ZT0hMDtzKHQpfTt0LnJlamVjdD1mdW5jdGlvbih0KXtlPSEwO2kodCl9fSkpO3JldHVybiB0fTtlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LGU9bnVsbCxzPW51bGwpe2lmKCF0KXJldHVybiBudWxsO3RyeXtpZihzJiYic3RyaW5nIj09dHlwZW9mIHQpe2lmKHMuYWRkRGVmYXVsdFByb3RvY29sJiZ0LnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgZT10Lm1hdGNoKC9cLi9nKTtlJiZlLmxlbmd0aD49MiYmKHQ9YGh0dHA6Ly8ke3R9YCl9aWYocy50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e3Q9c3RyaW5nVG9VVEY4U3RyaW5nKHQpfWNhdGNoKHQpe319Y29uc3QgaT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO2lmKGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2wodCl7aWYoIXQpcmV0dXJuITE7c3dpdGNoKHQucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oaSkpcmV0dXJuIGl9Y2F0Y2godCl7fXJldHVybiBudWxsfTtlLmVzY2FwZVN0cmluZz1mdW5jdGlvbiBlc2NhcGVTdHJpbmcodCl7cmV0dXJuIHQucmVwbGFjZSgvKFsoKVxcXG5ccl0pL2csKHQ9PiJcbiI9PT10PyJcXG4iOiJcciI9PT10PyJcXHIiOmBcXCR7dH1gKSl9O2UuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKHQ9bmV3IERhdGUpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwodC5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O2UuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gaX07ZS5pbmZvPWZ1bmN0aW9uIGluZm8odCl7aT49cy5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7dH1gKX07ZS5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdm9pZCAwIT09dC5ieXRlTGVuZ3RofTtlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKylpZih0W3NdIT09ZVtzXSlyZXR1cm4hMTtyZXR1cm4hMH07ZS5pc0FzY2lpPWZ1bmN0aW9uIGlzQXNjaWkodCl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KHQpfTtlLm9iamVjdEZyb21NYXA9ZnVuY3Rpb24gb2JqZWN0RnJvbU1hcCh0KXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3MsaV1vZiB0KWVbc109aTtyZXR1cm4gZX07ZS5vYmplY3RTaXplPWZ1bmN0aW9uIG9iamVjdFNpemUodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aH07ZS5zZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbCh0KXtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoaT10KX07ZS5zaGFkb3c9c2hhZG93O2Uuc3RyaW5nMzI9ZnVuY3Rpb24gc3RyaW5nMzIodCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9O2Uuc3RyaW5nVG9CeXRlcz1zdHJpbmdUb0J5dGVzO2Uuc3RyaW5nVG9QREZTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcodCl7aWYodFswXT49IsOvIil7bGV0IGU7IsO+Ij09PXRbMF0mJiLDvyI9PT10WzFdP2U9InV0Zi0xNmJlIjoiw78iPT09dFswXSYmIsO+Ij09PXRbMV0/ZT0idXRmLTE2bGUiOiLDryI9PT10WzBdJiYiwrsiPT09dFsxXSYmIsK/Ij09PXRbMl0mJihlPSJ1dGYtOCIpO2lmKGUpdHJ5e2NvbnN0IHM9bmV3IFRleHREZWNvZGVyKGUse2ZhdGFsOiEwfSksaT1zdHJpbmdUb0J5dGVzKHQpO3JldHVybiBzLmRlY29kZShpKX1jYXRjaCh0KXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7dH0iLmApfX1jb25zdCBlPVtdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT1hW3QuY2hhckNvZGVBdChzKV07ZS5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTp0LmNoYXJBdChzKSl9cmV0dXJuIGUuam9pbigiIil9O2Uuc3RyaW5nVG9VVEYxNkJFU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZCRVN0cmluZyh0KXtjb25zdCBlPVsiw77DvyJdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT10LmNoYXJDb2RlQXQocyk7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmkpKX1yZXR1cm4gZS5qb2luKCIiKX07ZS5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO2UudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7ZS51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfTtlLndhcm49d2FybjtlLklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdO2UuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXTtlLkxJTkVfRkFDVE9SPTEuMzU7ZS5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNTtlLlJlbmRlcmluZ0ludGVudEZsYWc9e0FOWToxLERJU1BMQVk6MixQUklOVDo0LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fTtlLkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M307ZS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIjtlLkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLElOSzoxNX07ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17RlJFRVRFWFRfU0laRToxLEZSRUVURVhUX0NPTE9SOjIsRlJFRVRFWFRfT1BBQ0lUWTozLElOS19DT0xPUjoxMSxJTktfVEhJQ0tORVNTOjEyLElOS19PUEFDSVRZOjEzfTtlLlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9O2UuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH07ZS5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfTtlLkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn07ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9e01BUktFRDoiTWFya2VkIixSRVZJRVc6IlJldmlldyJ9O2UuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXtNQVJLRUQ6Ik1hcmtlZCIsVU5NQVJLRUQ6IlVubWFya2VkIn07ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9e0FDQ0VQVEVEOiJBY2NlcHRlZCIsUkVKRUNURUQ6IlJlamVjdGVkIixDQU5DRUxMRUQ6IkNhbmNlbGxlZCIsQ09NUExFVEVEOiJDb21wbGV0ZWQiLE5PTkU6Ik5vbmUifTtlLkFubm90YXRpb25SZXBseVR5cGU9e0dST1VQOiJHcm91cCIsUkVQTFk6IlIifTtlLkFubm90YXRpb25GbGFnPXtJTlZJU0lCTEU6MSxISURERU46MixQUklOVDo0LE5PWk9PTTo4LE5PUk9UQVRFOjE2LE5PVklFVzozMixSRUFET05MWTo2NCxMT0NLRUQ6MTI4LFRPR0dMRU5PVklFVzoyNTYsTE9DS0VEQ09OVEVOVFM6NTEyfTtlLkFubm90YXRpb25GaWVsZEZsYWc9e1JFQURPTkxZOjEsUkVRVUlSRUQ6MixOT0VYUE9SVDo0LE1VTFRJTElORTo0MDk2LFBBU1NXT1JEOjgxOTIsTk9UT0dHTEVUT09GRjoxNjM4NCxSQURJTzozMjc2OCxQVVNIQlVUVE9OOjY1NTM2LENPTUJPOjEzMTA3MixFRElUOjI2MjE0NCxTT1JUOjUyNDI4OCxGSUxFU0VMRUNUOjEwNDg1NzYsTVVMVElTRUxFQ1Q6MjA5NzE1MixET05PVFNQRUxMQ0hFQ0s6NDE5NDMwNCxET05PVFNDUk9MTDo4Mzg4NjA4LENPTUI6MTY3NzcyMTYsUklDSFRFWFQ6MzM1NTQ0MzIsUkFESU9TSU5VTklTT046MzM1NTQ0MzIsQ09NTUlUT05TRUxDSEFOR0U6NjcxMDg4NjR9O2UuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT17U09MSUQ6MSxEQVNIRUQ6MixCRVZFTEVEOjMsSU5TRVQ6NCxVTkRFUkxJTkU6NX07ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifTtlLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifTtlLlBhZ2VBY3Rpb25FdmVudFR5cGU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifTtlLlN0cmVhbVR5cGU9e1VOS05PV046IlVOS05PV04iLEZMQVRFOiJGTEFURSIsTFpXOiJMWlciLERDVDoiRENUIixKUFg6IkpQWCIsSkJJRzoiSkJJRyIsQTg1OiJBODUiLEFIWDoiQUhYIixDQ0Y6IkNDRiIsUkxYOiJSTFgifTtlLkZvbnRUeXBlPXtVTktOT1dOOiJVTktOT1dOIixUWVBFMToiVFlQRTEiLFRZUEUxU1RBTkRBUkQ6IlRZUEUxU1RBTkRBUkQiLFRZUEUxQzoiVFlQRTFDIixDSURGT05UVFlQRTA6IkNJREZPTlRUWVBFMCIsQ0lERk9OVFRZUEUwQzoiQ0lERk9OVFRZUEUwQyIsVFJVRVRZUEU6IlRSVUVUWVBFIixDSURGT05UVFlQRTI6IkNJREZPTlRUWVBFMiIsVFlQRTM6IlRZUEUzIixPUEVOVFlQRToiT1BFTlRZUEUiLFRZUEUwOiJUWVBFMCIsTU1UWVBFMToiTU1UWVBFMSJ9O2NvbnN0IHM9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1zO2UuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTtlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTtlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXtmb3JtczoiZm9ybXMiLGphdmFTY3JpcHQ6ImphdmFTY3JpcHQiLHNpZ25hdHVyZXM6InNpZ25hdHVyZXMiLHNtYXNrOiJzbWFzayIsc2hhZGluZ1BhdHRlcm46InNoYWRpbmdQYXR0ZXJuIixlcnJvclRpbGluZ1BhdHRlcm46ImVycm9yVGlsaW5nUGF0dGVybiIsZXJyb3JFeHRHU3RhdGU6ImVycm9yRXh0R1N0YXRlIixlcnJvclhPYmplY3Q6ImVycm9yWE9iamVjdCIsZXJyb3JGb250TG9hZFR5cGUzOiJlcnJvckZvbnRMb2FkVHlwZTMiLGVycm9yRm9udFN0YXRlOiJlcnJvckZvbnRTdGF0ZSIsZXJyb3JGb250TWlzc2luZzoiZXJyb3JGb250TWlzc2luZyIsZXJyb3JGb250VHJhbnNsYXRlOiJlcnJvckZvbnRUcmFuc2xhdGUiLGVycm9yQ29sb3JTcGFjZToiZXJyb3JDb2xvclNwYWNlIixlcnJvck9wZXJhdG9yTGlzdDoiZXJyb3JPcGVyYXRvckxpc3QiLGVycm9yRm9udFRvVW5pY29kZToiZXJyb3JGb250VG9Vbmljb2RlIixlcnJvckZvbnRMb2FkTmF0aXZlOiJlcnJvckZvbnRMb2FkTmF0aXZlIixlcnJvckZvbnRCdWlsZFBhdGg6ImVycm9yRm9udEJ1aWxkUGF0aCIsZXJyb3JGb250R2V0UGF0aDoiZXJyb3JGb250R2V0UGF0aCIsZXJyb3JNYXJrZWRDb250ZW50OiJlcnJvck1hcmtlZENvbnRlbnQiLGVycm9yQ29udGVudFN1YlN0cmVhbToiZXJyb3JDb250ZW50U3ViU3RyZWFtIn07ZS5QYXNzd29yZFJlc3BvbnNlcz17TkVFRF9QQVNTV09SRDoxLElOQ09SUkVDVF9QQVNTV09SRDoyfTtsZXQgaT1zLldBUk5JTkdTO2Z1bmN0aW9uIHdhcm4odCl7aT49cy5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7dH1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZSh0KXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gc2hhZG93KHQsZSxzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpzLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIHN9Y29uc3Qgbj1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPXQ7dGhpcy5uYW1lPWV9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtlLkJhc2VFeGNlcHRpb249bjtlLlBhc3N3b3JkRXhjZXB0aW9uPWNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPWV9fTtlLlVua25vd25FcnJvckV4Y2VwdGlvbj1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPWV9fTtlLkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX07ZS5NaXNzaW5nUERGRXhjZXB0aW9uPWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19O2UuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz1lfX07ZS5Gb3JtYXRFcnJvcj1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiRm9ybWF0RXJyb3IiKX19O2UuQWJvcnRFeGNlcHRpb249Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkFib3J0RXhjZXB0aW9uIil9fTtmdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHQpeyJzdHJpbmciIT10eXBlb2YgdCYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCBlPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlOysraSlzW2ldPTI1NSZ0LmNoYXJDb2RlQXQoaSk7cmV0dXJuIHN9ZnVuY3Rpb24gYXJyYXlCeXRlTGVuZ3RoKHQpe2lmKHZvaWQgMCE9PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZih2b2lkIDAhPT10LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDt1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYXJyYXlCeXRlTGVuZ3RoIil9ZS5GZWF0dXJlVGVzdD1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3RbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaCh0KXtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9fTtjb25zdCByPVsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IodCxlLHMpe3JldHVybmAjJHtyW3RdfSR7cltlXX0ke3Jbc119YH1zdGF0aWMgc2NhbGVNaW5NYXgodCxlKXtsZXQgcztpZih0WzBdKXtpZih0WzBdPDApe3M9ZVswXTtlWzBdPWVbMV07ZVsxXT1zfWVbMF0qPXRbMF07ZVsxXSo9dFswXTtpZih0WzNdPDApe3M9ZVsyXTtlWzJdPWVbM107ZVszXT1zfWVbMl0qPXRbM107ZVszXSo9dFszXX1lbHNle3M9ZVswXTtlWzBdPWVbMl07ZVsyXT1zO3M9ZVsxXTtlWzFdPWVbM107ZVszXT1zO2lmKHRbMV08MCl7cz1lWzJdO2VbMl09ZVszXTtlWzNdPXN9ZVsyXSo9dFsxXTtlWzNdKj10WzFdO2lmKHRbMl08MCl7cz1lWzBdO2VbMF09ZVsxXTtlWzFdPXN9ZVswXSo9dFsyXTtlWzFdKj10WzJdfWVbMF0rPXRbNF07ZVsxXSs9dFs0XTtlWzJdKz10WzVdO2VbM10rPXRbNV19c3RhdGljIHRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsxXSplWzJdK2VbNF0sdFswXSplWzFdK3RbMV0qZVszXStlWzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHQsZSl7Y29uc3Qgcz1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVyblsodFswXSplWzNdLXRbMV0qZVsyXStlWzJdKmVbNV0tZVs0XSplWzNdKS9zLCgtdFswXSplWzFdK3RbMV0qZVswXStlWzRdKmVbMV0tZVs1XSplWzBdKS9zXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxlKXtjb25zdCBzPVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxlKSxpPVV0aWwuYXBwbHlUcmFuc2Zvcm0odC5zbGljZSgyLDQpLGUpLG49VXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzNdXSxlKSxyPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFsxXV0sZSk7cmV0dXJuW01hdGgubWluKHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWluKHNbMV0saVsxXSxuWzFdLHJbMV0pLE1hdGgubWF4KHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWF4KHNbMV0saVsxXSxuWzFdLHJbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybSh0KXtjb25zdCBlPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuW3RbM10vZSwtdFsxXS9lLC10WzJdL2UsdFswXS9lLCh0WzJdKnRbNV0tdFs0XSp0WzNdKS9lLCh0WzRdKnRbMV0tdFs1XSp0WzBdKS9lXX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodCl7Y29uc3QgZT1bdFswXSx0WzJdLHRbMV0sdFszXV0scz10WzBdKmVbMF0rdFsxXSplWzJdLGk9dFswXSplWzFdK3RbMV0qZVszXSxuPXRbMl0qZVswXSt0WzNdKmVbMl0scj10WzJdKmVbMV0rdFszXSplWzNdLGE9KHMrcikvMixvPU1hdGguc3FydCgocytyKSoqMi00KihzKnItbippKSkvMixsPWErb3x8MSxjPWEtb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGwpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QodCl7Y29uc3QgZT10LnNsaWNlKDApO2lmKHRbMF0+dFsyXSl7ZVswXT10WzJdO2VbMl09dFswXX1pZih0WzFdPnRbM10pe2VbMV09dFszXTtlWzNdPXRbMV19cmV0dXJuIGV9c3RhdGljIGludGVyc2VjdCh0LGUpe2NvbnN0IHM9TWF0aC5tYXgoTWF0aC5taW4odFswXSx0WzJdKSxNYXRoLm1pbihlWzBdLGVbMl0pKSxpPU1hdGgubWluKE1hdGgubWF4KHRbMF0sdFsyXSksTWF0aC5tYXgoZVswXSxlWzJdKSk7aWYocz5pKXJldHVybiBudWxsO2NvbnN0IG49TWF0aC5tYXgoTWF0aC5taW4odFsxXSx0WzNdKSxNYXRoLm1pbihlWzFdLGVbM10pKSxyPU1hdGgubWluKE1hdGgubWF4KHRbMV0sdFszXSksTWF0aC5tYXgoZVsxXSxlWzNdKSk7cmV0dXJuIG4+cj9udWxsOltzLG4saSxyXX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3godCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPVtdLGM9W1tdLFtdXTtsZXQgaCxkLHUscCxnLG0sZixiO2ZvcihsZXQgYz0wO2M8MjsrK2Mpe2lmKDA9PT1jKXtkPTYqdC0xMipzKzYqbjtoPS0zKnQrOSpzLTkqbiszKmE7dT0zKnMtMyp0fWVsc2V7ZD02KmUtMTIqaSs2KnI7aD0tMyplKzkqaS05KnIrMypvO3U9MyppLTMqZX1pZihNYXRoLmFicyhoKTwxZS0xMil7aWYoTWF0aC5hYnMoZCk8MWUtMTIpY29udGludWU7cD0tdS9kOzA8cCYmcDwxJiZsLnB1c2gocCl9ZWxzZXtmPWQqZC00KnUqaDtiPU1hdGguc3FydChmKTtpZighKGY8MCkpe2c9KC1kK2IpLygyKmgpOzA8ZyYmZzwxJiZsLnB1c2goZyk7bT0oLWQtYikvKDIqaCk7MDxtJiZtPDEmJmwucHVzaChtKX19fWxldCBBLF89bC5sZW5ndGg7Y29uc3Qgdj1fO2Zvcig7Xy0tOyl7cD1sW19dO0E9MS1wO2NbMF1bX109QSpBKkEqdCszKkEqQSpwKnMrMypBKnAqcCpuK3AqcCpwKmE7Y1sxXVtfXT1BKkEqQSplKzMqQSpBKnAqaSszKkEqcCpwKnIrcCpwKnAqb31jWzBdW3ZdPXQ7Y1sxXVt2XT1lO2NbMF1bdisxXT1hO2NbMV1bdisxXT1vO2NbMF0ubGVuZ3RoPWNbMV0ubGVuZ3RoPXYrMjtyZXR1cm5bTWF0aC5taW4oLi4uY1swXSksTWF0aC5taW4oLi4uY1sxXSksTWF0aC5tYXgoLi4uY1swXSksTWF0aC5tYXgoLi4uY1sxXSldfX1lLlV0aWw9VXRpbDtjb25zdCBhPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpfX0sKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZXhwb3J0cy5idWlsZD1leHBvcnRzLlJlbmRlclRhc2s9ZXhwb3J0cy5QREZXb3JrZXJVdGlsPWV4cG9ydHMuUERGV29ya2VyPWV4cG9ydHMuUERGUGFnZVByb3h5PWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1leHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2s9ZXhwb3J0cy5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZXhwb3J0cy5Mb29wYmFja1BvcnQ9ZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeT1leHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7ZXhwb3J0cy5nZXREb2N1bWVudD1nZXREb2N1bWVudDtleHBvcnRzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5PXNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5O2V4cG9ydHMudmVyc2lvbj12b2lkIDA7dmFyIF91dGlsPV9fd19wZGZqc19yZXF1aXJlX18oMSksX2Fubm90YXRpb25fc3RvcmFnZT1fX3dfcGRmanNfcmVxdWlyZV9fKDMpLF9kaXNwbGF5X3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oNiksX2ZvbnRfbG9hZGVyPV9fd19wZGZqc19yZXF1aXJlX18oOSksX2NhbnZhcz1fX3dfcGRmanNfcmVxdWlyZV9fKDEwKSxfd29ya2VyX29wdGlvbnM9X193X3BkZmpzX3JlcXVpcmVfXygxNCksX2lzX25vZGU9X193X3BkZmpzX3JlcXVpcmVfXygxMiksX21lc3NhZ2VfaGFuZGxlcj1fX3dfcGRmanNfcmVxdWlyZV9fKDE1KSxfbWV0YWRhdGE9X193X3BkZmpzX3JlcXVpcmVfXygxNiksX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnPV9fd19wZGZqc19yZXF1aXJlX18oMTcpLF90cmFuc3BvcnRfc3RyZWFtPV9fd19wZGZqc19yZXF1aXJlX18oMTgpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE5KTtjb25zdCBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU9NjU1MzYsUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUPTEwMDtsZXQgRGVmYXVsdENhbnZhc0ZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ2FudmFzRmFjdG9yeTtleHBvcnRzLkRlZmF1bHRDYW52YXNGYWN0b3J5PURlZmF1bHRDYW52YXNGYWN0b3J5O2xldCBEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ01hcFJlYWRlckZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O2xldCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NU3RhbmRhcmRGb250RGF0YUZhY3RvcnksY3JlYXRlUERGTmV0d29ya1N0cmVhbTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aWYoX2lzX25vZGUuaXNOb2RlSlMpe2NvbnN0e05vZGVDYW52YXNGYWN0b3J5OnQsTm9kZUNNYXBSZWFkZXJGYWN0b3J5OmUsTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5OnN9PV9fd19wZGZqc19yZXF1aXJlX18oMjApO2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk9dDtleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9ZTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9c31mdW5jdGlvbiBzZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSh0KXtjcmVhdGVQREZOZXR3b3JrU3RyZWFtPXR9ZnVuY3Rpb24gZ2V0RG9jdW1lbnQodCl7Y29uc3QgZT1uZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaztsZXQgcztpZigic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBVUkwpcz17dXJsOnR9O2Vsc2UgaWYoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCkpcz17ZGF0YTp0fTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQpcz17cmFuZ2U6dH07ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBlaXRoZXIgc3RyaW5nLCBVUkwsIFR5cGVkQXJyYXksIG9yIHBhcmFtZXRlciBvYmplY3QuIik7aWYoIXQudXJsJiYhdC5kYXRhJiYhdC5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcGFyYW1ldGVyIG9iamVjdDogbmVlZCBlaXRoZXIgLmRhdGEsIC5yYW5nZSBvciAudXJsIik7cz10fWNvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbj1udWxsLHI9bnVsbDtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07c3dpdGNoKHQpe2Nhc2UidXJsIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7aVt0XT1uZXcgVVJMKGUsd2luZG93LmxvY2F0aW9uKS5ocmVmO2NvbnRpbnVlfWNhdGNoKHQpeygwLF91dGlsLndhcm4pKGBDYW5ub3QgY3JlYXRlIHZhbGlkIFVSTDogIiR7dH0iLmApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVVJMKXtpW3RdPWUudG9TdHJpbmcoKTtjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS4iKTtjYXNlInJhbmdlIjpuPWU7Y29udGludWU7Y2FzZSJ3b3JrZXIiOnI9ZTtjb250aW51ZTtjYXNlImRhdGEiOmlmKF9pc19ub2RlLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmZSBpbnN0YW5jZW9mIEJ1ZmZlcilpW3RdPW5ldyBVaW50OEFycmF5KGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYnJlYWs7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlbdF09KDAsX3V0aWwuc3RyaW5nVG9CeXRlcykoZSk7ZWxzZSBpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHxpc05hTihlLmxlbmd0aCkpe2lmKCEoMCxfdXRpbC5pc0FycmF5QnVmZmVyKShlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKTtpW3RdPW5ldyBVaW50OEFycmF5KGUpfWVsc2UgaVt0XT1uZXcgVWludDhBcnJheShlKX1jb250aW51ZX1pW3RdPWV9aS5DTWFwUmVhZGVyRmFjdG9yeT1pLkNNYXBSZWFkZXJGYWN0b3J5fHxEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk7aS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1pLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aS5pZ25vcmVFcnJvcnM9ITAhPT1pLnN0b3BBdEVycm9ycztpLmZvbnRFeHRyYVByb3BlcnRpZXM9ITA9PT1pLmZvbnRFeHRyYVByb3BlcnRpZXM7aS5wZGZCdWc9ITA9PT1pLnBkZkJ1ZztpLmVuYWJsZVhmYT0hMD09PWkuZW5hYmxlWGZhOyghTnVtYmVyLmlzSW50ZWdlcihpLnJhbmdlQ2h1bmtTaXplKXx8aS5yYW5nZUNodW5rU2l6ZTwxKSYmKGkucmFuZ2VDaHVua1NpemU9REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFKTsoInN0cmluZyIhPXR5cGVvZiBpLmRvY0Jhc2VVcmx8fCgwLF9kaXNwbGF5X3V0aWxzLmlzRGF0YVNjaGVtZSkoaS5kb2NCYXNlVXJsKSkmJihpLmRvY0Jhc2VVcmw9bnVsbCk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkubWF4SW1hZ2VTaXplKXx8aS5tYXhJbWFnZVNpemU8LTEpJiYoaS5tYXhJbWFnZVNpemU9LTEpOyJzdHJpbmciIT10eXBlb2YgaS5jTWFwVXJsJiYoaS5jTWFwVXJsPW51bGwpOyJzdHJpbmciIT10eXBlb2YgaS5zdGFuZGFyZEZvbnREYXRhVXJsJiYoaS5zdGFuZGFyZEZvbnREYXRhVXJsPW51bGwpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlV29ya2VyRmV0Y2gmJihpLnVzZVdvcmtlckZldGNoPWkuQ01hcFJlYWRlckZhY3Rvcnk9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmaS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzRXZhbFN1cHBvcnRlZCYmKGkuaXNFdmFsU3VwcG9ydGVkPSEwKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hX2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUZvbnRGYWNlJiYoaS5kaXNhYmxlRm9udEZhY2U9X2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlU3lzdGVtRm9udHMmJihpLnVzZVN5c3RlbUZvbnRzPSFfaXNfbm9kZS5pc05vZGVKUyYmIWkuZGlzYWJsZUZvbnRGYWNlKTsib2JqZWN0Ij09dHlwZW9mIGkub3duZXJEb2N1bWVudCYmbnVsbCE9PWkub3duZXJEb2N1bWVudHx8KGkub3duZXJEb2N1bWVudD1nbG9iYWxUaGlzLmRvY3VtZW50KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVSYW5nZSYmKGkuZGlzYWJsZVJhbmdlPSExKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVTdHJlYW0mJihpLmRpc2FibGVTdHJlYW09ITEpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUF1dG9GZXRjaCYmKGkuZGlzYWJsZUF1dG9GZXRjaD0hMSk7KDAsX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKGkudmVyYm9zaXR5KTtpZighcil7Y29uc3QgdD17dmVyYm9zaXR5OmkudmVyYm9zaXR5LHBvcnQ6X3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyUG9ydH07cj10LnBvcnQ/UERGV29ya2VyLmZyb21Qb3J0KHQpOm5ldyBQREZXb3JrZXIodCk7ZS5fd29ya2VyPXJ9Y29uc3QgYT1lLmRvY0lkO3IucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe2lmKGUuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7Y29uc3QgdD1fZmV0Y2hEb2N1bWVudChyLGksbixhKSxzPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtsZXQgZTtuP2U9bmV3IF90cmFuc3BvcnRfc3RyZWFtLlBERkRhdGFUcmFuc3BvcnRTdHJlYW0oe2xlbmd0aDppLmxlbmd0aCxpbml0aWFsRGF0YTppLmluaXRpYWxEYXRhLHByb2dyZXNzaXZlRG9uZTppLnByb2dyZXNzaXZlRG9uZSxjb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZTppLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lLGRpc2FibGVSYW5nZTppLmRpc2FibGVSYW5nZSxkaXNhYmxlU3RyZWFtOmkuZGlzYWJsZVN0cmVhbX0sbik6aS5kYXRhfHwoZT1jcmVhdGVQREZOZXR3b3JrU3RyZWFtKHt1cmw6aS51cmwsbGVuZ3RoOmkubGVuZ3RoLGh0dHBIZWFkZXJzOmkuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOmkud2l0aENyZWRlbnRpYWxzLHJhbmdlQ2h1bmtTaXplOmkucmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOmkuZGlzYWJsZVJhbmdlLGRpc2FibGVTdHJlYW06aS5kaXNhYmxlU3RyZWFtfSkpO3QoZSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt0LHNdKS50aGVuKChmdW5jdGlvbihbdCxzXSl7aWYoZS5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJMb2FkaW5nIGFib3J0ZWQiKTtjb25zdCBuPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKGEsdCxyLnBvcnQpLG89bmV3IFdvcmtlclRyYW5zcG9ydChuLGUscyxpKTtlLl90cmFuc3BvcnQ9bztuLnNlbmQoIlJlYWR5IixudWxsKX0pKX0pKS5jYXRjaChlLl9jYXBhYmlsaXR5LnJlamVjdCk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gX2ZldGNoRG9jdW1lbnQodCxlLHMsaSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO2lmKHMpe2UubGVuZ3RoPXMubGVuZ3RoO2UuaW5pdGlhbERhdGE9cy5pbml0aWFsRGF0YTtlLnByb2dyZXNzaXZlRG9uZT1zLnByb2dyZXNzaXZlRG9uZTtlLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV9Y29uc3Qgbj1hd2FpdCB0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jUmVxdWVzdCIse2RvY0lkOmksYXBpVmVyc2lvbjoiMy4wLjI3OSIsZGF0YTplLmRhdGEscGFzc3dvcmQ6ZS5wYXNzd29yZCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplLGxlbmd0aDplLmxlbmd0aCxkb2NCYXNlVXJsOmUuZG9jQmFzZVVybCxlbmFibGVYZmE6ZS5lbmFibGVYZmEsZXZhbHVhdG9yT3B0aW9uczp7bWF4SW1hZ2VTaXplOmUubWF4SW1hZ2VTaXplLGRpc2FibGVGb250RmFjZTplLmRpc2FibGVGb250RmFjZSxpZ25vcmVFcnJvcnM6ZS5pZ25vcmVFcnJvcnMsaXNFdmFsU3VwcG9ydGVkOmUuaXNFdmFsU3VwcG9ydGVkLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsZm9udEV4dHJhUHJvcGVydGllczplLmZvbnRFeHRyYVByb3BlcnRpZXMsdXNlU3lzdGVtRm9udHM6ZS51c2VTeXN0ZW1Gb250cyxjTWFwVXJsOmUudXNlV29ya2VyRmV0Y2g/ZS5jTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDplLnVzZVdvcmtlckZldGNoP2Uuc3RhbmRhcmRGb250RGF0YVVybDpudWxsfX0pO2UuZGF0YSYmKGUuZGF0YT1udWxsKTtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIik7cmV0dXJuIG59Y2xhc3MgUERGRG9jdW1lbnRMb2FkaW5nVGFza3tzdGF0aWMjdD0wO2NvbnN0cnVjdG9yKCl7dGhpcy5fY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl90cmFuc3BvcnQ9bnVsbDt0aGlzLl93b3JrZXI9bnVsbDt0aGlzLmRvY0lkPSJkIitQREZEb2N1bWVudExvYWRpbmdUYXNrLiN0Kys7dGhpcy5kZXN0cm95ZWQ9ITE7dGhpcy5vblBhc3N3b3JkPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5vblVuc3VwcG9ydGVkRmVhdHVyZT1udWxsfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1hc3luYyBkZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITA7YXdhaXQodGhpcy5fdHJhbnNwb3J0Py5kZXN0cm95KCkpO3RoaXMuX3RyYW5zcG9ydD1udWxsO2lmKHRoaXMuX3dvcmtlcil7dGhpcy5fd29ya2VyLmRlc3Ryb3koKTt0aGlzLl93b3JrZXI9bnVsbH19fWV4cG9ydHMuUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1QREZEb2N1bWVudExvYWRpbmdUYXNrO2NsYXNzIFBERkRhdGFSYW5nZVRyYW5zcG9ydHtjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMubGVuZ3RoPXQ7dGhpcy5pbml0aWFsRGF0YT1lO3RoaXMucHJvZ3Jlc3NpdmVEb25lPXM7dGhpcy5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1pO3RoaXMuX3JhbmdlTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnM9W107dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpfWFkZFJhbmdlTGlzdGVuZXIodCl7dGhpcy5fcmFuZ2VMaXN0ZW5lcnMucHVzaCh0KX1hZGRQcm9ncmVzc0xpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzLnB1c2godCl9b25EYXRhUmFuZ2UodCxlKXtmb3IoY29uc3QgcyBvZiB0aGlzLl9yYW5nZUxpc3RlbmVycylzKHQsZSl9b25EYXRhUHJvZ3Jlc3ModCxlKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCBzIG9mIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzKXModCxlKX0pKX1vbkRhdGFQcm9ncmVzc2l2ZVJlYWQodCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgZSBvZiB0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnMpZSh0KX0pKX1vbkRhdGFQcm9ncmVzc2l2ZURvbmUoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycyl0KCl9KSl9dHJhbnNwb3J0UmVhZHkoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpfXJlcXVlc3REYXRhUmFuZ2UodCxlKXsoMCxfdXRpbC51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBQREZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSIpfWFib3J0KCl7fX1leHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7Y2xhc3MgUERGRG9jdW1lbnRQcm94eXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BkZkluZm89dDt0aGlzLl90cmFuc3BvcnQ9ZX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmFubm90YXRpb25TdG9yYWdlfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLl9wZGZJbmZvLm51bVBhZ2VzfWdldCBmaW5nZXJwcmludHMoKXtyZXR1cm4gdGhpcy5fcGRmSW5mby5maW5nZXJwcmludHN9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5zdGF0c31nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmF9Z2V0IGFsbFhmYUh0bWwoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhfWdldFBhZ2UodCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlKHQpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VJbmRleCh0KX1nZXREZXN0aW5hdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9ucygpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24odCl9Z2V0UGFnZUxhYmVscygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZUxhYmVscygpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYXlvdXQoKX1nZXRQYWdlTW9kZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZU1vZGUoKX1nZXRWaWV3ZXJQcmVmZXJlbmNlcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0Vmlld2VyUHJlZmVyZW5jZXMoKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRPcGVuQWN0aW9uKCl9Z2V0QXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEF0dGFjaG1lbnRzKCl9Z2V0SmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0SmF2YVNjcmlwdCgpfWdldEpTQWN0aW9ucygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RG9jSlNBY3Rpb25zKCl9Z2V0T3V0bGluZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3V0bGluZSgpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCl9Z2V0UGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBlcm1pc3Npb25zKCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1ldGFkYXRhKCl9Z2V0TWFya0luZm8oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1hcmtJbmZvKCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGF0YSgpfXNhdmVEb2N1bWVudCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuc2F2ZURvY3VtZW50KCl9Z2V0RG93bmxvYWRJbmZvKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnByb21pc2V9Y2xlYW51cCh0PSExKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnN0YXJ0Q2xlYW51cCh0fHx0aGlzLmlzUHVyZVhmYSl9ZGVzdHJveSgpe3JldHVybiB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKX1nZXQgbG9hZGluZ1BhcmFtcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1BhcmFtc31nZXQgbG9hZGluZ1Rhc2soKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmxvYWRpbmdUYXNrfWdldEZpZWxkT2JqZWN0cygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RmllbGRPYmplY3RzKCl9aGFzSlNBY3Rpb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5oYXNKU0FjdGlvbnMoKX1nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl9fWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1QREZEb2N1bWVudFByb3h5O2NsYXNzIFBERlBhZ2VQcm94eXtjb25zdHJ1Y3Rvcih0LGUscyxpLG49ITEpe3RoaXMuX3BhZ2VJbmRleD10O3RoaXMuX3BhZ2VJbmZvPWU7dGhpcy5fb3duZXJEb2N1bWVudD1pO3RoaXMuX3RyYW5zcG9ydD1zO3RoaXMuX3N0YXRzPW4/bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcjpudWxsO3RoaXMuX3BkZkJ1Zz1uO3RoaXMuY29tbW9uT2Jqcz1zLmNvbW1vbk9ianM7dGhpcy5vYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuX2JpdG1hcHM9bmV3IFNldDt0aGlzLmNsZWFudXBBZnRlclJlbmRlcj0hMTt0aGlzLnBlbmRpbmdDbGVhbnVwPSExO3RoaXMuX2ludGVudFN0YXRlcz1uZXcgTWFwO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcz1uZXcgTWFwO3RoaXMuZGVzdHJveWVkPSExfWdldCBwYWdlTnVtYmVyKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleCsxfWdldCByb3RhdGUoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlfWdldCByZWYoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucmVmfWdldCB1c2VyVW5pdCgpe3JldHVybiB0aGlzLl9wYWdlSW5mby51c2VyVW5pdH1nZXQgdmlldygpe3JldHVybiB0aGlzLl9wYWdlSW5mby52aWV3fWdldFZpZXdwb3J0KHtzY2FsZTp0LHJvdGF0aW9uOmU9dGhpcy5yb3RhdGUsb2Zmc2V0WDpzPTAsb2Zmc2V0WTppPTAsZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlldyxzY2FsZTp0LHJvdGF0aW9uOmUsb2Zmc2V0WDpzLG9mZnNldFk6aSxkb250RmxpcDpufSl9Z2V0QW5ub3RhdGlvbnMoe2ludGVudDp0PSJkaXNwbGF5In09e30pe2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudCh0KTtsZXQgcz10aGlzLl9hbm5vdGF0aW9uUHJvbWlzZXMuZ2V0KGUuY2FjaGVLZXkpO2lmKCFzKXtzPXRoaXMuX3RyYW5zcG9ydC5nZXRBbm5vdGF0aW9ucyh0aGlzLl9wYWdlSW5kZXgsZS5yZW5kZXJpbmdJbnRlbnQpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5zZXQoZS5jYWNoZUtleSxzKX1yZXR1cm4gc31nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fanNBY3Rpb25zUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSlNBY3Rpb25zKHRoaXMuX3BhZ2VJbmRleCl9YXN5bmMgZ2V0WGZhKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYT8uY2hpbGRyZW5bdGhpcy5fcGFnZUluZGV4XXx8bnVsbH1yZW5kZXIoe2NhbnZhc0NvbnRleHQ6dCx2aWV3cG9ydDplLGludGVudDpzPSJkaXNwbGF5Iixhbm5vdGF0aW9uTW9kZTppPV91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSx0cmFuc2Zvcm06bj1udWxsLGNhbnZhc0ZhY3Rvcnk6cj1udWxsLGJhY2tncm91bmQ6YT1udWxsLG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6bz1udWxsLGFubm90YXRpb25DYW52YXNNYXA6bD1udWxsLHBhZ2VDb2xvcnM6Yz1udWxsLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6aD1udWxsfSl7dGhpcy5fc3RhdHM/LnRpbWUoIk92ZXJhbGwiKTtjb25zdCBkPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQocyxpLGgpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7b3x8KG89dGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpKTtsZXQgdT10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGQuY2FjaGVLZXkpO2lmKCF1KXt1PU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW50ZW50U3RhdGVzLnNldChkLmNhY2hlS2V5LHUpfWlmKHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCl7Y2xlYXJUaW1lb3V0KHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCk7dS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9Y29uc3QgcD1yfHxuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe293bmVyRG9jdW1lbnQ6dGhpcy5fb3duZXJEb2N1bWVudH0pLGc9ISEoZC5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7aWYoIXUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSl7dS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3Uub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH07dGhpcy5fc3RhdHM/LnRpbWUoIlBhZ2UgUmVxdWVzdCIpO3RoaXMuX3B1bXBPcGVyYXRvckxpc3QoZCl9Y29uc3QgY29tcGxldGU9dD0+e3UucmVuZGVyVGFza3MuZGVsZXRlKG0pOyh0aGlzLmNsZWFudXBBZnRlclJlbmRlcnx8ZykmJih0aGlzLnBlbmRpbmdDbGVhbnVwPSEwKTt0aGlzLl90cnlDbGVhbnVwKCk7aWYodCl7bS5jYXBhYmlsaXR5LnJlamVjdCh0KTt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6dSxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSl9ZWxzZSBtLmNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3N0YXRzPy50aW1lRW5kKCJSZW5kZXJpbmciKTt0aGlzLl9zdGF0cz8udGltZUVuZCgiT3ZlcmFsbCIpfSxtPW5ldyBJbnRlcm5hbFJlbmRlclRhc2soe2NhbGxiYWNrOmNvbXBsZXRlLHBhcmFtczp7Y2FudmFzQ29udGV4dDp0LHZpZXdwb3J0OmUsdHJhbnNmb3JtOm4sYmFja2dyb3VuZDphfSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmwsb3BlcmF0b3JMaXN0OnUub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTpwLHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohZyxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6Y30pOyh1LnJlbmRlclRhc2tzfHw9bmV3IFNldCkuYWRkKG0pO2NvbnN0IGY9bS50YXNrO1Byb21pc2UuYWxsKFt1LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxvXSkudGhlbigoKFt0LGVdKT0+e2lmKHRoaXMucGVuZGluZ0NsZWFudXApY29tcGxldGUoKTtlbHNle3RoaXMuX3N0YXRzPy50aW1lKCJSZW5kZXJpbmciKTttLmluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KTttLm9wZXJhdG9yTGlzdENoYW5nZWQoKX19KSkuY2F0Y2goY29tcGxldGUpO3JldHVybiBmfWdldE9wZXJhdG9yTGlzdCh7aW50ZW50OnQ9ImRpc3BsYXkiLGFubm90YXRpb25Nb2RlOmU9X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6cz1udWxsfT17fSl7Y29uc3QgaT10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KHQsZSxzLCEwKTtsZXQgbixyPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoaS5jYWNoZUtleSk7aWYoIXIpe3I9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGkuY2FjaGVLZXkscil9aWYoIXIub3BMaXN0UmVhZENhcGFiaWxpdHkpe249T2JqZWN0LmNyZWF0ZShudWxsKTtuLm9wZXJhdG9yTGlzdENoYW5nZWQ9ZnVuY3Rpb24gb3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHIub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7ci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKHIub3BlcmF0b3JMaXN0KTtyLnJlbmRlclRhc2tzLmRlbGV0ZShuKX19O3Iub3BMaXN0UmVhZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7KHIucmVuZGVyVGFza3N8fD1uZXcgU2V0KS5hZGQobik7ci5vcGVyYXRvckxpc3Q9e2ZuQXJyYXk6W10sYXJnc0FycmF5OltdLGxhc3RDaHVuazohMSxzZXBhcmF0ZUFubm90czpudWxsfTt0aGlzLl9zdGF0cz8udGltZSgiUGFnZSBSZXF1ZXN0Iik7dGhpcy5fcHVtcE9wZXJhdG9yTGlzdChpKX1yZXR1cm4gci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlfXN0cmVhbVRleHRDb250ZW50KHtkaXNhYmxlQ29tYmluZVRleHRJdGVtczp0PSExLGluY2x1ZGVNYXJrZWRDb250ZW50OmU9ITF9PXt9KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRUZXh0Q29udGVudCIse3BhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY29tYmluZVRleHRJdGVtczohMCE9PXQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITA9PT1lfSx7aGlnaFdhdGVyTWFyazoxMDAsc2l6ZTp0PT50Lml0ZW1zLmxlbmd0aH0pfWdldFRleHRDb250ZW50KHQ9e30pe2lmKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSlyZXR1cm4gdGhpcy5nZXRYZmEoKS50aGVuKCh0PT5feGZhX3RleHQuWGZhVGV4dC50ZXh0Q29udGVudCh0KSkpO2NvbnN0IGU9dGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscyl7Y29uc3QgaT1lLmdldFJlYWRlcigpLG49e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gcHVtcCgpe2kucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6c30pe2lmKHMpdChuKTtlbHNle09iamVjdC5hc3NpZ24obi5zdHlsZXMsZS5zdHlsZXMpO24uaXRlbXMucHVzaCguLi5lLml0ZW1zKTtwdW1wKCl9fSkscyl9KCl9KSl9Z2V0U3RydWN0VHJlZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRTdHJ1Y3RUcmVlKHRoaXMuX3BhZ2VJbmRleCl9X2Rlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDtjb25zdCB0PVtdO2Zvcihjb25zdCBlIG9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSl7dGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOmUscmVhc29uOm5ldyBFcnJvcigiUGFnZSB3YXMgZGVzdHJveWVkLiIpLGZvcmNlOiEwfSk7aWYoIWUub3BMaXN0UmVhZENhcGFiaWxpdHkpZm9yKGNvbnN0IHMgb2YgZS5yZW5kZXJUYXNrcyl7dC5wdXNoKHMuY29tcGxldGVkKTtzLmNhbmNlbCgpfX10aGlzLm9ianMuY2xlYXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9iaXRtYXBzKXQuY2xvc2UoKTt0aGlzLl9iaXRtYXBzLmNsZWFyKCk7dGhpcy5fYW5ub3RhdGlvblByb21pc2VzLmNsZWFyKCk7dGhpcy5fanNBY3Rpb25zUHJvbWlzZT1udWxsO3RoaXMuX3N0cnVjdFRyZWVQcm9taXNlPW51bGw7dGhpcy5wZW5kaW5nQ2xlYW51cD0hMTtyZXR1cm4gUHJvbWlzZS5hbGwodCl9Y2xlYW51cCh0PSExKXt0aGlzLnBlbmRpbmdDbGVhbnVwPSEwO3JldHVybiB0aGlzLl90cnlDbGVhbnVwKHQpfV90cnlDbGVhbnVwKHQ9ITEpe2lmKCF0aGlzLnBlbmRpbmdDbGVhbnVwKXJldHVybiExO2Zvcihjb25zdHtyZW5kZXJUYXNrczp0LG9wZXJhdG9yTGlzdDplfW9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSlpZih0LnNpemU+MHx8IWUubGFzdENodW5rKXJldHVybiExO3RoaXMuX2ludGVudFN0YXRlcy5jbGVhcigpO3RoaXMub2Jqcy5jbGVhcigpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5jbGVhcigpO3RoaXMuX2pzQWN0aW9uc1Byb21pc2U9bnVsbDt0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZT1udWxsO3QmJnRoaXMuX3N0YXRzJiYodGhpcy5fc3RhdHM9bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fYml0bWFwcyl0LmNsb3NlKCk7dGhpcy5fYml0bWFwcy5jbGVhcigpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7cmV0dXJuITB9X3N0YXJ0UmVuZGVyUGFnZSh0LGUpe2NvbnN0IHM9dGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtpZihzKXt0aGlzLl9zdGF0cz8udGltZUVuZCgiUGFnZSBSZXF1ZXN0Iik7cy5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5Py5yZXNvbHZlKHQpfX1fcmVuZGVyUGFnZUNodW5rKHQsZSl7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cysrKXtlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2godC5mbkFycmF5W3NdKTtlLm9wZXJhdG9yTGlzdC5hcmdzQXJyYXkucHVzaCh0LmFyZ3NBcnJheVtzXSl9ZS5vcGVyYXRvckxpc3QubGFzdENodW5rPXQubGFzdENodW5rO2Uub3BlcmF0b3JMaXN0LnNlcGFyYXRlQW5ub3RzPXQuc2VwYXJhdGVBbm5vdHM7Zm9yKGNvbnN0IHQgb2YgZS5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0Lmxhc3RDaHVuayYmdGhpcy5fdHJ5Q2xlYW51cCgpfV9wdW1wT3BlcmF0b3JMaXN0KHtyZW5kZXJpbmdJbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlTWFwOnN9KXtjb25zdCBpPXRoaXMuX3RyYW5zcG9ydC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0T3BlcmF0b3JMaXN0Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlOnN9KS5nZXRSZWFkZXIoKSxuPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoZSk7bi5zdHJlYW1SZWFkZXI9aTtjb25zdCBwdW1wPSgpPT57aS5yZWFkKCkudGhlbigoKHt2YWx1ZTp0LGRvbmU6ZX0pPT57aWYoZSluLnN0cmVhbVJlYWRlcj1udWxsO2Vsc2UgaWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe3RoaXMuX3JlbmRlclBhZ2VDaHVuayh0LG4pO3B1bXAoKX19KSwodD0+e24uc3RyZWFtUmVhZGVyPW51bGw7aWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe2lmKG4ub3BlcmF0b3JMaXN0KXtuLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bms9ITA7Zm9yKGNvbnN0IHQgb2Ygbi5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0aGlzLl90cnlDbGVhbnVwKCl9aWYobi5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW4uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighbi5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O24ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9O3B1bXAoKX1fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOnQscmVhc29uOmUsZm9yY2U6cz0hMX0pe2lmKHQuc3RyZWFtUmVhZGVyKXtpZighcyl7aWYodC5yZW5kZXJUYXNrcy5zaXplPjApcmV0dXJuO2lmKGUgaW5zdGFuY2VvZiBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24pe3Quc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2Fib3J0T3BlcmF0b3JMaXN0KHtpbnRlbnRTdGF0ZTp0LHJlYXNvbjplLGZvcmNlOiEwfSk7dC5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9KSxSRU5ERVJJTkdfQ0FOQ0VMTEVEX1RJTUVPVVQpO3JldHVybn19dC5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpKS5jYXRjaCgoKCk9Pnt9KSk7dC5zdHJlYW1SZWFkZXI9bnVsbDtpZighdGhpcy5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7Zm9yKGNvbnN0W2Usc11vZiB0aGlzLl9pbnRlbnRTdGF0ZXMpaWYocz09PXQpe3RoaXMuX2ludGVudFN0YXRlcy5kZWxldGUoZSk7YnJlYWt9dGhpcy5jbGVhbnVwKCl9fX1nZXQgc3RhdHMoKXtyZXR1cm4gdGhpcy5fc3RhdHN9fWV4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTtjbGFzcyBMb29wYmFja1BvcnR7I2U9W107I3M9UHJvbWlzZS5yZXNvbHZlKCk7cG9zdE1lc3NhZ2UodCxlKXtjb25zdCBzPXtkYXRhOnN0cnVjdHVyZWRDbG9uZSh0LGUpfTt0aGlzLiNzLnRoZW4oKCgpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy4jZSl0LmNhbGwodGhpcyxzKX0pKX1hZGRFdmVudExpc3RlbmVyKHQsZSl7dGhpcy4jZS5wdXNoKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtjb25zdCBzPXRoaXMuI2UuaW5kZXhPZihlKTt0aGlzLiNlLnNwbGljZShzLDEpfXRlcm1pbmF0ZSgpe3RoaXMuI2UubGVuZ3RoPTB9fWV4cG9ydHMuTG9vcGJhY2tQb3J0PUxvb3BiYWNrUG9ydDtjb25zdCBQREZXb3JrZXJVdGlsPXtpc1dvcmtlckRpc2FibGVkOiExLGZhbGxiYWNrV29ya2VyU3JjOm51bGwsZmFrZVdvcmtlcklkOjB9O2V4cG9ydHMuUERGV29ya2VyVXRpbD1QREZXb3JrZXJVdGlsO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7UERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkPSEwO1BERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9Ii4vcGRmLndvcmtlci5qcyJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50KXtjb25zdCB0PWRvY3VtZW50Py5jdXJyZW50U2NyaXB0Py5zcmM7dCYmKFBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9dC5yZXBsYWNlKC8oXC4oPzptaW5cLik/anMpKFw/LiopPyQvaSwiLndvcmtlciQxJDIiKSl9UERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW49ZnVuY3Rpb24odCxlKXtsZXQgczt0cnl7cz1uZXcgVVJMKHQpO2lmKCFzLm9yaWdpbnx8Im51bGwiPT09cy5vcmlnaW4pcmV0dXJuITF9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1uZXcgVVJMKGUscyk7cmV0dXJuIHMub3JpZ2luPT09aS5vcmlnaW59O1BERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcj1mdW5jdGlvbih0KXtjb25zdCBlPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZV0pKX07Y2xhc3MgUERGV29ya2Vye3N0YXRpYyNpPW5ldyBXZWFrTWFwO2NvbnN0cnVjdG9yKHtuYW1lOnQ9bnVsbCxwb3J0OmU9bnVsbCx2ZXJib3NpdHk6cz0oMCxfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKX09e30pe2lmKGUmJlBERldvcmtlci4jaS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO3RoaXMubmFtZT10O3RoaXMuZGVzdHJveWVkPSExO3RoaXMudmVyYm9zaXR5PXM7dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3BvcnQ9bnVsbDt0aGlzLl93ZWJXb3JrZXI9bnVsbDt0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsO2lmKGUpe1BERldvcmtlci4jaS5zZXQoZSx0aGlzKTt0aGlzLl9pbml0aWFsaXplRnJvbVBvcnQoZSl9ZWxzZSB0aGlzLl9pbml0aWFsaXplKCl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2V9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5fcG9ydH1nZXQgbWVzc2FnZUhhbmRsZXIoKXtyZXR1cm4gdGhpcy5fbWVzc2FnZUhhbmRsZXJ9X2luaXRpYWxpemVGcm9tUG9ydCh0KXt0aGlzLl9wb3J0PXQ7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIoIm1haW4iLCJ3b3JrZXIiLHQpO3RoaXMuX21lc3NhZ2VIYW5kbGVyLm9uKCJyZWFkeSIsKGZ1bmN0aW9uKCl7fSkpO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7dGhpcy5fbWVzc2FnZUhhbmRsZXIuc2VuZCgiY29uZmlndXJlIix7dmVyYm9zaXR5OnRoaXMudmVyYm9zaXR5fSl9X2luaXRpYWxpemUoKXtpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkJiYhUERGV29ya2VyLl9tYWluVGhyZWFkV29ya2VyTWVzc2FnZUhhbmRsZXIpe2xldHt3b3JrZXJTcmM6dH09UERGV29ya2VyO3RyeXtQREZXb3JrZXJVdGlsLmlzU2FtZU9yaWdpbih3aW5kb3cubG9jYXRpb24uaHJlZix0KXx8KHQ9UERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyKG5ldyBVUkwodCx3aW5kb3cubG9jYXRpb24pLmhyZWYpKTtjb25zdCBlPW5ldyBXb3JrZXIodCkscz1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcigibWFpbiIsIndvcmtlciIsZSksdGVybWluYXRlRWFybHk9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtzLmRlc3Ryb3koKTtlLnRlcm1pbmF0ZSgpO3RoaXMuZGVzdHJveWVkP3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTp0aGlzLl9zZXR1cEZha2VXb3JrZXIoKX0sb25Xb3JrZXJFcnJvcj0oKT0+e3RoaXMuX3dlYldvcmtlcnx8dGVybWluYXRlRWFybHkoKX07ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7cy5vbigidGVzdCIsKHQ9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtpZih0aGlzLmRlc3Ryb3llZCl0ZXJtaW5hdGVFYXJseSgpO2Vsc2UgaWYodCl7dGhpcy5fbWVzc2FnZUhhbmRsZXI9czt0aGlzLl9wb3J0PWU7dGhpcy5fd2ViV29ya2VyPWU7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtzLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfWVsc2V7dGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7cy5kZXN0cm95KCk7ZS50ZXJtaW5hdGUoKX19KSk7cy5vbigicmVhZHkiLCh0PT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7aWYodGhpcy5kZXN0cm95ZWQpdGVybWluYXRlRWFybHkoKTtlbHNlIHRyeXtzZW5kVGVzdCgpfWNhdGNoKHQpe3RoaXMuX3NldHVwRmFrZVdvcmtlcigpfX0pKTtjb25zdCBzZW5kVGVzdD0oKT0+e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXk7cy5zZW5kKCJ0ZXN0Iix0LFt0LmJ1ZmZlcl0pfTtzZW5kVGVzdCgpO3JldHVybn1jYXRjaCh0KXsoMCxfdXRpbC5pbmZvKSgiVGhlIHdvcmtlciBoYXMgYmVlbiBkaXNhYmxlZC4iKX19dGhpcy5fc2V0dXBGYWtlV29ya2VyKCl9X3NldHVwRmFrZVdvcmtlcigpe2lmKCFQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQpeygwLF91dGlsLndhcm4pKCJTZXR0aW5nIHVwIGZha2Ugd29ya2VyLiIpO1BERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZD0hMH1QREZXb3JrZXIuX3NldHVwRmFrZVdvcmtlckdsb2JhbC50aGVuKCh0PT57aWYodGhpcy5kZXN0cm95ZWQpe3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTtyZXR1cm59Y29uc3QgZT1uZXcgTG9vcGJhY2tQb3J0O3RoaXMuX3BvcnQ9ZTtjb25zdCBzPSJmYWtlIitQREZXb3JrZXJVdGlsLmZha2VXb3JrZXJJZCsrLGk9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIocysiX3dvcmtlciIscyxlKTt0LnNldHVwKGksZSk7Y29uc3Qgbj1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihzLHMrIl93b3JrZXIiLGUpO3RoaXMuX21lc3NhZ2VIYW5kbGVyPW47dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtuLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfSkpLmNhdGNoKCh0PT57dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoYFNldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiAiJHt0Lm1lc3NhZ2V9Ii5gKSl9KSl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwO2lmKHRoaXMuX3dlYldvcmtlcil7dGhpcy5fd2ViV29ya2VyLnRlcm1pbmF0ZSgpO3RoaXMuX3dlYldvcmtlcj1udWxsfVBERldvcmtlci4jaS5kZWxldGUodGhpcy5fcG9ydCk7dGhpcy5fcG9ydD1udWxsO2lmKHRoaXMuX21lc3NhZ2VIYW5kbGVyKXt0aGlzLl9tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bnVsbH19c3RhdGljIGZyb21Qb3J0KHQpe2lmKCF0Py5wb3J0KXRocm93IG5ldyBFcnJvcigiUERGV29ya2VyLmZyb21Qb3J0IC0gaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlLiIpO3JldHVybiB0aGlzLiNpLmhhcyh0LnBvcnQpP3RoaXMuI2kuZ2V0KHQucG9ydCk6bmV3IFBERldvcmtlcih0KX1zdGF0aWMgZ2V0IHdvcmtlclNyYygpe2lmKF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYylyZXR1cm4gX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjO2lmKG51bGwhPT1QREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjKXtfaXNfbm9kZS5pc05vZGVKU3x8KDAsX2Rpc3BsYXlfdXRpbHMuZGVwcmVjYXRlZCkoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpO3JldHVybiBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjfXRocm93IG5ldyBFcnJvcignTm8gIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjIiBzcGVjaWZpZWQuJyl9c3RhdGljIGdldCBfbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyKCl7dHJ5e3JldHVybiBnbG9iYWxUaGlzLnBkZmpzV29ya2VyPy5Xb3JrZXJNZXNzYWdlSGFuZGxlcnx8bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19c3RhdGljIGdldCBfc2V0dXBGYWtlV29ya2VyR2xvYmFsKCl7Y29uc3QgbG9hZGVyPWFzeW5jKCk9Pntjb25zdCBtYWluV29ya2VyTWVzc2FnZUhhbmRsZXI9dGhpcy5fbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcilyZXR1cm4gbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7Y29uc3Qgd29ya2VyPWV2YWwoInJlcXVpcmUiKSh0aGlzLndvcmtlclNyYyk7cmV0dXJuIHdvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcn1hd2FpdCgwLF9kaXNwbGF5X3V0aWxzLmxvYWRTY3JpcHQpKHRoaXMud29ya2VyU3JjKTtyZXR1cm4gd2luZG93LnBkZmpzV29ya2VyLldvcmtlck1lc3NhZ2VIYW5kbGVyfTtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsIl9zZXR1cEZha2VXb3JrZXJHbG9iYWwiLGxvYWRlcigpKX19ZXhwb3J0cy5QREZXb3JrZXI9UERGV29ya2VyO2NsYXNzIFdvcmtlclRyYW5zcG9ydHsjbj1udWxsOyNyPW5ldyBNYXA7I2E9bmV3IE1hcDsjbz1udWxsO2NvbnN0cnVjdG9yKHQsZSxzLGkpe3RoaXMubWVzc2FnZUhhbmRsZXI9dDt0aGlzLmxvYWRpbmdUYXNrPWU7dGhpcy5jb21tb25PYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuZm9udExvYWRlcj1uZXcgX2ZvbnRfbG9hZGVyLkZvbnRMb2FkZXIoe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnRoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlLmJpbmQodGhpcyksb3duZXJEb2N1bWVudDppLm93bmVyRG9jdW1lbnQsc3R5bGVFbGVtZW50Omkuc3R5bGVFbGVtZW50fSk7dGhpcy5fcGFyYW1zPWk7aWYoIWkudXNlV29ya2VyRmV0Y2gpe3RoaXMuQ01hcFJlYWRlckZhY3Rvcnk9bmV3IGkuQ01hcFJlYWRlckZhY3Rvcnkoe2Jhc2VVcmw6aS5jTWFwVXJsLGlzQ29tcHJlc3NlZDppLmNNYXBQYWNrZWR9KTt0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5PW5ldyBpLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5KHtiYXNlVXJsOmkuc3RhbmRhcmRGb250RGF0YVVybH0pfXRoaXMuZGVzdHJveWVkPSExO3RoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbDt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9bnVsbDt0aGlzLl9uZXR3b3JrU3RyZWFtPXM7dGhpcy5fZnVsbFJlYWRlcj1udWxsO3RoaXMuX2xhc3RQcm9ncmVzcz1udWxsO3RoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIoKX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImFubm90YXRpb25TdG9yYWdlIixuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSl9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuI259Z2V0UmVuZGVyaW5nSW50ZW50KHQsZT1fdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscz1udWxsLGk9ITEpe2xldCBuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSxyPW51bGw7c3dpdGNoKHQpe2Nhc2UiYW55IjpuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO2JyZWFrO2Nhc2UiZGlzcGxheSI6YnJlYWs7Y2FzZSJwcmludCI6bj1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoYGdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiAke3R9YCl9c3dpdGNoKGUpe2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6bis9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUzticmVhaztjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOm4rPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtyPShuJl91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQmJnMgaW5zdGFuY2VvZiBfYW5ub3RhdGlvbl9zdG9yYWdlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U/czp0aGlzLmFubm90YXRpb25TdG9yYWdlKS5zZXJpYWxpemFibGU7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC53YXJuKShgZ2V0UmVuZGVyaW5nSW50ZW50IC0gaW52YWxpZCBhbm5vdGF0aW9uTW9kZTogJHtlfWApfWkmJihuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVCk7cmV0dXJue3JlbmRlcmluZ0ludGVudDpuLGNhY2hlS2V5OmAke259XyR7X2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZS5nZXRIYXNoKHIpfWAsYW5ub3RhdGlvblN0b3JhZ2VNYXA6cn19ZGVzdHJveSgpe2lmKHRoaXMuZGVzdHJveUNhcGFiaWxpdHkpcmV0dXJuIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucHJvbWlzZTt0aGlzLmRlc3Ryb3llZD0hMDt0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eSYmdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIGR1cmluZyBvblBhc3N3b3JkIGNhbGxiYWNrIikpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy4jci52YWx1ZXMoKSl0LnB1c2goZS5fZGVzdHJveSgpKTt0aGlzLiNyLmNsZWFyKCk7dGhpcy4jYS5jbGVhcigpO3RoaXMuaGFzT3duUHJvcGVydHkoImFubm90YXRpb25TdG9yYWdlIikmJnRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO2NvbnN0IGU9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlRlcm1pbmF0ZSIsbnVsbCk7dC5wdXNoKGUpO1Byb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGw7dGhpcy5fbmV0d29ya1N0cmVhbSYmdGhpcy5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7aWYodGhpcy5tZXNzYWdlSGFuZGxlcil7dGhpcy5tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5tZXNzYWdlSGFuZGxlcj1udWxsfXRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVzb2x2ZSgpfSksdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5yZWplY3QpO3JldHVybiB0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnByb21pc2V9c2V0dXBNZXNzYWdlSGFuZGxlcigpe2NvbnN0e21lc3NhZ2VIYW5kbGVyOnQsbG9hZGluZ1Rhc2s6ZX09dGhpczt0Lm9uKCJHZXRSZWFkZXIiLCgodCxlKT0+eygwLF91dGlsLmFzc2VydCkodGhpcy5fbmV0d29ya1N0cmVhbSwiR2V0UmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTt0aGlzLl9mdWxsUmVhZGVyPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0RnVsbFJlYWRlcigpO3RoaXMuX2Z1bGxSZWFkZXIub25Qcm9ncmVzcz10PT57dGhpcy5fbGFzdFByb2dyZXNzPXtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH19O2Uub25QdWxsPSgpPT57dGhpcy5fZnVsbFJlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24oe3ZhbHVlOnQsZG9uZTpzfSl7aWYocyllLmNsb3NlKCk7ZWxzZXsoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKTtlLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodCksMSxbdF0pfX0pKS5jYXRjaCgodD0+e2UuZXJyb3IodCl9KSl9O2Uub25DYW5jZWw9dD0+e3RoaXMuX2Z1bGxSZWFkZXIuY2FuY2VsKHQpO2UucmVhZHkuY2F0Y2goKHQ9PntpZighdGhpcy5kZXN0cm95ZWQpdGhyb3cgdH0pKX19KSk7dC5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwodD0+e2NvbnN0IHM9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksaT10aGlzLl9mdWxsUmVhZGVyO2kuaGVhZGVyc1JlYWR5LnRoZW4oKCgpPT57aWYoIWkuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fCFpLmlzUmFuZ2VTdXBwb3J0ZWQpe3RoaXMuX2xhc3RQcm9ncmVzcyYmZS5vblByb2dyZXNzPy4odGhpcy5fbGFzdFByb2dyZXNzKTtpLm9uUHJvZ3Jlc3M9dD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH0pfX1zLnJlc29sdmUoe2lzU3RyZWFtaW5nU3VwcG9ydGVkOmkuaXNTdHJlYW1pbmdTdXBwb3J0ZWQsaXNSYW5nZVN1cHBvcnRlZDppLmlzUmFuZ2VTdXBwb3J0ZWQsY29udGVudExlbmd0aDppLmNvbnRlbnRMZW5ndGh9KX0pLHMucmVqZWN0KTtyZXR1cm4gcy5wcm9taXNlfSkpO3Qub24oIkdldFJhbmdlUmVhZGVyIiwoKHQsZSk9PnsoMCxfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTtjb25zdCBzPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIodC5iZWdpbix0LmVuZCk7aWYocyl7ZS5vblB1bGw9KCk9PntzLnJlYWQoKS50aGVuKChmdW5jdGlvbih7dmFsdWU6dCxkb25lOnN9KXtpZihzKWUuY2xvc2UoKTtlbHNleygwLF91dGlsLmFzc2VydCkoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCksIkdldFJhbmdlUmVhZGVyIC0gZXhwZWN0ZWQgYW4gQXJyYXlCdWZmZXIuIik7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHQpLDEsW3RdKX19KSkuY2F0Y2goKHQ9PntlLmVycm9yKHQpfSkpfTtlLm9uQ2FuY2VsPXQ9PntzLmNhbmNlbCh0KTtlLnJlYWR5LmNhdGNoKCh0PT57aWYoIXRoaXMuZGVzdHJveWVkKXRocm93IHR9KSl9fWVsc2UgZS5jbG9zZSgpfSkpO3Qub24oIkdldERvYyIsKCh7cGRmSW5mbzp0fSk9Pnt0aGlzLl9udW1QYWdlcz10Lm51bVBhZ2VzO3RoaXMuX2h0bWxGb3JYZmE9dC5odG1sRm9yWGZhO2RlbGV0ZSB0Lmh0bWxGb3JYZmE7ZS5fY2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBQREZEb2N1bWVudFByb3h5KHQsdGhpcykpfSkpO3Qub24oIkRvY0V4Y2VwdGlvbiIsKGZ1bmN0aW9uKHQpe2xldCBzO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnM9bmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2JyZWFrO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuSW52YWxpZFBERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpzPW5ldyBfdXRpbC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTticmVhaztjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LmRldGFpbHMpO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwudW5yZWFjaGFibGUpKCJEb2NFeGNlcHRpb24gLSBleHBlY3RlZCBhIHZhbGlkIEVycm9yLiIpfWUuX2NhcGFiaWxpdHkucmVqZWN0KHMpfSkpO3Qub24oIlBhc3N3b3JkUmVxdWVzdCIsKHQ9Pnt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7aWYoZS5vblBhc3N3b3JkKXtjb25zdCB1cGRhdGVQYXNzd29yZD10PT57dCBpbnN0YW5jZW9mIEVycm9yP3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCk6dGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlc29sdmUoe3Bhc3N3b3JkOnR9KX07dHJ5e2Uub25QYXNzd29yZCh1cGRhdGVQYXNzd29yZCx0LmNvZGUpfWNhdGNoKHQpe3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCl9fWVsc2UgdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgX3V0aWwuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSkpO3JldHVybiB0aGlzLl9wYXNzd29yZENhcGFiaWxpdHkucHJvbWlzZX0pKTt0Lm9uKCJEYXRhTG9hZGVkIiwodD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sZW5ndGgsdG90YWw6dC5sZW5ndGh9KTt0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkucmVzb2x2ZSh0KX0pKTt0Lm9uKCJTdGFydFJlbmRlclBhZ2UiLCh0PT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO3RoaXMuI3IuZ2V0KHQucGFnZUluZGV4KS5fc3RhcnRSZW5kZXJQYWdlKHQudHJhbnNwYXJlbmN5LHQuY2FjaGVLZXkpfSkpO3Qub24oImNvbW1vbm9iaiIsKChbZSxzLGldKT0+e2lmKCF0aGlzLmRlc3Ryb3llZCYmIXRoaXMuY29tbW9uT2Jqcy5oYXMoZSkpc3dpdGNoKHMpe2Nhc2UiRm9udCI6Y29uc3Qgbj10aGlzLl9wYXJhbXM7aWYoImVycm9yImluIGkpe2NvbnN0IHQ9aS5lcnJvcjsoMCxfdXRpbC53YXJuKShgRXJyb3IgZHVyaW5nIGZvbnQgbG9hZGluZzogJHt0fWApO3RoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsdCk7YnJlYWt9bGV0IHI9bnVsbDtuLnBkZkJ1ZyYmZ2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yPy5lbmFibGVkJiYocj17cmVnaXN0ZXJGb250KHQsZSl7Z2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yLmZvbnRBZGRlZCh0LGUpfX0pO2NvbnN0IGE9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChpLHtpc0V2YWxTdXBwb3J0ZWQ6bi5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOm4uZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczpuLmlnbm9yZUVycm9ycyxvblVuc3VwcG9ydGVkRmVhdHVyZTp0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHRoaXMpLGZvbnRSZWdpc3RyeTpyfSk7dGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goKHM9PnQuc2VuZFdpdGhQcm9taXNlKCJGb250RmFsbGJhY2siLHtpZDplfSkpKS5maW5hbGx5KCgoKT0+eyFuLmZvbnRFeHRyYVByb3BlcnRpZXMmJmEuZGF0YSYmKGEuZGF0YT1udWxsKTt0aGlzLmNvbW1vbk9ianMucmVzb2x2ZShlLGEpfSkpO2JyZWFrO2Nhc2UiRm9udFBhdGgiOmNhc2UiSW1hZ2UiOnRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsaSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEdvdCB1bmtub3duIGNvbW1vbiBvYmplY3QgdHlwZSAke3N9YCl9fSkpO3Qub24oIm9iaiIsKChbdCxlLHMsaV0pPT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO2NvbnN0IG49dGhpcy4jci5nZXQoZSk7aWYoIW4ub2Jqcy5oYXModCkpc3dpdGNoKHMpe2Nhc2UiSW1hZ2UiOm4ub2Jqcy5yZXNvbHZlKHQsaSk7Y29uc3QgZT04ZTY7aWYoaSl7bGV0IHQ7aWYoaS5iaXRtYXApe2NvbnN0e2JpdG1hcDplLHdpZHRoOnMsaGVpZ2h0OnJ9PWk7dD1zKnIqNDtuLl9iaXRtYXBzLmFkZChlKX1lbHNlIHQ9aS5kYXRhPy5sZW5ndGh8fDA7dD5lJiYobi5jbGVhbnVwQWZ0ZXJSZW5kZXI9ITApfWJyZWFrO2Nhc2UiUGF0dGVybiI6bi5vYmpzLnJlc29sdmUodCxpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgR290IHVua25vd24gb2JqZWN0IHR5cGUgJHtzfWApfX0pKTt0Lm9uKCJEb2NQcm9ncmVzcyIsKHQ9Pnt0aGlzLmRlc3Ryb3llZHx8ZS5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9KSk7dC5vbigiRG9jU3RhdHMiLCh0PT57dGhpcy5kZXN0cm95ZWR8fCh0aGlzLiNuPU9iamVjdC5mcmVlemUoe3N0cmVhbVR5cGVzOk9iamVjdC5mcmVlemUodC5zdHJlYW1UeXBlcyksZm9udFR5cGVzOk9iamVjdC5mcmVlemUodC5mb250VHlwZXMpfSkpfSkpO3Qub24oIlVuc3VwcG9ydGVkRmVhdHVyZSIsdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUuYmluZCh0aGlzKSk7dC5vbigiRmV0Y2hCdWlsdEluQ01hcCIsKHQ9PnRoaXMuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnRoaXMuQ01hcFJlYWRlckZhY3Rvcnk/dGhpcy5DTWFwUmVhZGVyRmFjdG9yeS5mZXRjaCh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSkpKTt0Lm9uKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLCh0PT50aGlzLmRlc3Ryb3llZD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkLiIpKTp0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5P3RoaXMuU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuZmV0Y2godCk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQsIHNlZSB0aGUgYHVzZVdvcmtlckZldGNoYCBwYXJhbWV0ZXIuIikpKSl9X29uVW5zdXBwb3J0ZWRGZWF0dXJlKHtmZWF0dXJlSWQ6dH0pe3RoaXMuZGVzdHJveWVkfHx0aGlzLmxvYWRpbmdUYXNrLm9uVW5zdXBwb3J0ZWRGZWF0dXJlPy4odCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGF0YSIsbnVsbCl9c2F2ZURvY3VtZW50KCl7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zaXplPD0wJiYoMCxfdXRpbC53YXJuKSgic2F2ZURvY3VtZW50IGNhbGxlZCB3aGlsZSBgYW5ub3RhdGlvblN0b3JhZ2VgIGlzIGVtcHR5LCBwbGVhc2UgdXNlIHRoZSBnZXREYXRhLW1ldGhvZCBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZSxmaWxlbmFtZTp0aGlzLl9mdWxsUmVhZGVyPy5maWxlbmFtZT8/bnVsbH0pLmZpbmFsbHkoKCgpPT57dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5yZXNldE1vZGlmaWVkKCl9KSl9Z2V0UGFnZSh0KXtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDw9MHx8dD50aGlzLl9udW1QYWdlcylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2UgcmVxdWVzdC4iKSk7Y29uc3QgZT10LTEscz10aGlzLiNhLmdldChlKTtpZihzKXJldHVybiBzO2NvbnN0IGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2UiLHtwYWdlSW5kZXg6ZX0pLnRoZW4oKHQ9PntpZih0aGlzLmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zcG9ydCBkZXN0cm95ZWQiKTtjb25zdCBzPW5ldyBQREZQYWdlUHJveHkoZSx0LHRoaXMsdGhpcy5fcGFyYW1zLm93bmVyRG9jdW1lbnQsdGhpcy5fcGFyYW1zLnBkZkJ1Zyk7dGhpcy4jci5zZXQoZSxzKTtyZXR1cm4gc30pKTt0aGlzLiNhLnNldChlLGkpO3JldHVybiBpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10fHwhTnVtYmVyLmlzSW50ZWdlcih0Lm51bSl8fHQubnVtPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKHQuZ2VuKXx8dC5nZW48MD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgcGFnZUluZGV4IHJlcXVlc3QuIikpOnRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSW5kZXgiLHtudW06dC5udW0sZ2VuOnQuZ2VufSl9Z2V0QW5ub3RhdGlvbnModCxlKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEFubm90YXRpb25zIix7cGFnZUluZGV4OnQsaW50ZW50OmV9KX1nZXRGaWVsZE9iamVjdHMoKXtyZXR1cm4gdGhpcy5fZ2V0RmllbGRPYmplY3RzUHJvbWlzZXx8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRGaWVsZE9iamVjdHMiLG51bGwpfWhhc0pTQWN0aW9ucygpe3JldHVybiB0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlfHw9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkhhc0pTQWN0aW9ucyIsbnVsbCl9Z2V0Q2FsY3VsYXRpb25PcmRlcklkcygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCl9Z2V0RGVzdGluYXRpb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREZXN0aW5hdGlvbnMiLG51bGwpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgZGVzdGluYXRpb24gcmVxdWVzdC4iKSk6dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9uIix7aWQ6dH0pfWdldFBhZ2VMYWJlbHMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYWJlbHMiLG51bGwpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYXlvdXQiLG51bGwpfWdldFBhZ2VNb2RlKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlTW9kZSIsbnVsbCl9Z2V0Vmlld2VyUHJlZmVyZW5jZXMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFZpZXdlclByZWZlcmVuY2VzIixudWxsKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcGVuQWN0aW9uIixudWxsKX1nZXRBdHRhY2htZW50cygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0QXR0YWNobWVudHMiLG51bGwpfWdldEphdmFTY3JpcHQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEphdmFTY3JpcHQiLG51bGwpfWdldERvY0pTQWN0aW9ucygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jSlNBY3Rpb25zIixudWxsKX1nZXRQYWdlSlNBY3Rpb25zKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUpTQWN0aW9ucyIse3BhZ2VJbmRleDp0fSl9Z2V0U3RydWN0VHJlZSh0KXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFN0cnVjdFRyZWUiLHtwYWdlSW5kZXg6dH0pfWdldE91dGxpbmUoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE91dGxpbmUiLG51bGwpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKS50aGVuKCh0PT5uZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KSkpfWdldFBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQZXJtaXNzaW9ucyIsbnVsbCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy4jb3x8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRNZXRhZGF0YSIsbnVsbCkudGhlbigodD0+KHtpbmZvOnRbMF0sbWV0YWRhdGE6dFsxXT9uZXcgX21ldGFkYXRhLk1ldGFkYXRhKHRbMV0pOm51bGwsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6dGhpcy5fZnVsbFJlYWRlcj8uZmlsZW5hbWU/P251bGwsY29udGVudExlbmd0aDp0aGlzLl9mdWxsUmVhZGVyPy5jb250ZW50TGVuZ3RoPz9udWxsfSkpKX1nZXRNYXJrSW5mbygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0TWFya0luZm8iLG51bGwpfWFzeW5jIHN0YXJ0Q2xlYW51cCh0PSExKXtpZighdGhpcy5kZXN0cm95ZWQpe2F3YWl0IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJDbGVhbnVwIixudWxsKTtmb3IoY29uc3QgdCBvZiB0aGlzLiNyLnZhbHVlcygpKXtpZighdC5jbGVhbnVwKCkpdGhyb3cgbmV3IEVycm9yKGBzdGFydENsZWFudXA6IFBhZ2UgJHt0LnBhZ2VOdW1iZXJ9IGlzIGN1cnJlbnRseSByZW5kZXJpbmcuYCl9dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dHx8dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGx9fWdldCBsb2FkaW5nUGFyYW1zKCl7Y29uc3QgdD10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LmRpc2FibGVBdXRvRmV0Y2gsZW5hYmxlWGZhOnQuZW5hYmxlWGZhfSl9fWNsYXNzIFBERk9iamVjdHN7I2w9T2JqZWN0LmNyZWF0ZShudWxsKTsjYyh0KXtjb25zdCBlPXRoaXMuI2xbdF07cmV0dXJuIGV8fCh0aGlzLiNsW3RdPXtjYXBhYmlsaXR5OigwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLGRhdGE6bnVsbH0pfWdldCh0LGU9bnVsbCl7aWYoZSl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuY2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT5lKHMuZGF0YSkpKTtyZXR1cm4gbnVsbH1jb25zdCBzPXRoaXMuI2xbdF07aWYoIXM/LmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICR7dH0uYCk7cmV0dXJuIHMuZGF0YX1oYXModCl7cmV0dXJuIHRoaXMuI2xbdF0/LmNhcGFiaWxpdHkuc2V0dGxlZHx8ITF9cmVzb2x2ZSh0LGU9bnVsbCl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuZGF0YT1lO3MuY2FwYWJpbGl0eS5yZXNvbHZlKCl9Y2xlYXIoKXt0aGlzLiNsPU9iamVjdC5jcmVhdGUobnVsbCl9fWNsYXNzIFJlbmRlclRhc2t7I2g9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLiNoPXQ7dGhpcy5vbkNvbnRpbnVlPW51bGx9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy4jaC5jYXBhYmlsaXR5LnByb21pc2V9Y2FuY2VsKCl7dGhpcy4jaC5jYW5jZWwoKX1nZXQgc2VwYXJhdGVBbm5vdHMoKXtjb25zdHtzZXBhcmF0ZUFubm90czp0fT10aGlzLiNoLm9wZXJhdG9yTGlzdDtpZighdClyZXR1cm4hMTtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmV9PXRoaXMuI2g7cmV0dXJuIHQuZm9ybXx8dC5jYW52YXMmJmU/LnNpemU+MH19ZXhwb3J0cy5SZW5kZXJUYXNrPVJlbmRlclRhc2s7Y2xhc3MgSW50ZXJuYWxSZW5kZXJUYXNre3N0YXRpYyNkPW5ldyBXZWFrU2V0O2NvbnN0cnVjdG9yKHtjYWxsYmFjazp0LHBhcmFtczplLG9ianM6cyxjb21tb25PYmpzOmksYW5ub3RhdGlvbkNhbnZhc01hcDpuLG9wZXJhdG9yTGlzdDpyLHBhZ2VJbmRleDphLGNhbnZhc0ZhY3Rvcnk6byx1c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6bD0hMSxwZGZCdWc6Yz0hMSxwYWdlQ29sb3JzOmg9bnVsbH0pe3RoaXMuY2FsbGJhY2s9dDt0aGlzLnBhcmFtcz1lO3RoaXMub2Jqcz1zO3RoaXMuY29tbW9uT2Jqcz1pO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcD1uO3RoaXMub3BlcmF0b3JMaXN0SWR4PW51bGw7dGhpcy5vcGVyYXRvckxpc3Q9cjt0aGlzLl9wYWdlSW5kZXg9YTt0aGlzLmNhbnZhc0ZhY3Rvcnk9bzt0aGlzLl9wZGZCdWc9Yzt0aGlzLnBhZ2VDb2xvcnM9aDt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9bnVsbDt0aGlzLmdyYXBoaWNzUmVhZHk9ITE7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPSEwPT09bCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c7dGhpcy5jYW5jZWxsZWQ9ITE7dGhpcy5jYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMudGFzaz1uZXcgUmVuZGVyVGFzayh0aGlzKTt0aGlzLl9jYW5jZWxCb3VuZD10aGlzLmNhbmNlbC5iaW5kKHRoaXMpO3RoaXMuX2NvbnRpbnVlQm91bmQ9dGhpcy5fY29udGludWUuYmluZCh0aGlzKTt0aGlzLl9zY2hlZHVsZU5leHRCb3VuZD10aGlzLl9zY2hlZHVsZU5leHQuYmluZCh0aGlzKTt0aGlzLl9uZXh0Qm91bmQ9dGhpcy5fbmV4dC5iaW5kKHRoaXMpO3RoaXMuX2NhbnZhcz1lLmNhbnZhc0NvbnRleHQuY2FudmFzfWdldCBjb21wbGV0ZWQoKXtyZXR1cm4gdGhpcy5jYXBhYmlsaXR5LnByb21pc2UuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfWluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQ9ITEsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KXtpZih0aGlzLmNhbmNlbGxlZClyZXR1cm47aWYodGhpcy5fY2FudmFzKXtpZihJbnRlcm5hbFJlbmRlclRhc2suI2QuaGFzKHRoaXMuX2NhbnZhcykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIHRoZSBzYW1lIGNhbnZhcyBkdXJpbmcgbXVsdGlwbGUgcmVuZGVyKCkgb3BlcmF0aW9ucy4gVXNlIGRpZmZlcmVudCBjYW52YXMgb3IgZW5zdXJlIHByZXZpb3VzIG9wZXJhdGlvbnMgd2VyZSBjYW5jZWxsZWQgb3IgY29tcGxldGVkLiIpO0ludGVybmFsUmVuZGVyVGFzay4jZC5hZGQodGhpcy5fY2FudmFzKX1pZih0aGlzLl9wZGZCdWcmJmdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXI/LmVuYWJsZWQpe3RoaXMuc3RlcHBlcj1nbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO3RoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTt0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQ9dGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCl9Y29uc3R7Y2FudmFzQ29udGV4dDpzLHZpZXdwb3J0OmksdHJhbnNmb3JtOm4sYmFja2dyb3VuZDpyfT10aGlzLnBhcmFtczt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhzLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LGUsdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwLHRoaXMucGFnZUNvbG9ycyk7dGhpcy5nZnguYmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06bix2aWV3cG9ydDppLHRyYW5zcGFyZW5jeTp0LGJhY2tncm91bmQ6cn0pO3RoaXMub3BlcmF0b3JMaXN0SWR4PTA7dGhpcy5ncmFwaGljc1JlYWR5PSEwO3RoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPy4oKX1jYW5jZWwodD1udWxsKXt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5jYW5jZWxsZWQ9ITA7dGhpcy5nZng/LmVuZERyYXdpbmcoKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jZC5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKHR8fG5ldyBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24oYFJlbmRlcmluZyBjYW5jZWxsZWQsIHBhZ2UgJHt0aGlzLl9wYWdlSW5kZXgrMX1gLCJjYW52YXMiKSl9b3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHRoaXMuZ3JhcGhpY3NSZWFkeSl7dGhpcy5zdGVwcGVyPy51cGRhdGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QpO3RoaXMucnVubmluZ3x8dGhpcy5fY29udGludWUoKX1lbHNlIHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrfHwodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9dGhpcy5fY29udGludWVCb3VuZCl9X2NvbnRpbnVlKCl7dGhpcy5ydW5uaW5nPSEwO3RoaXMuY2FuY2VsbGVkfHwodGhpcy50YXNrLm9uQ29udGludWU/dGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpOnRoaXMuX3NjaGVkdWxlTmV4dCgpKX1fc2NoZWR1bGVOZXh0KCl7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fbmV4dEJvdW5kKCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpfSkpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4odGhpcy5fbmV4dEJvdW5kKS5jYXRjaCh0aGlzLl9jYW5jZWxCb3VuZCl9YXN5bmMgX25leHQoKXtpZighdGhpcy5jYW5jZWxsZWQpe3RoaXMub3BlcmF0b3JMaXN0SWR4PXRoaXMuZ2Z4LmV4ZWN1dGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QsdGhpcy5vcGVyYXRvckxpc3RJZHgsdGhpcy5fY29udGludWVCb3VuZCx0aGlzLnN0ZXBwZXIpO2lmKHRoaXMub3BlcmF0b3JMaXN0SWR4PT09dGhpcy5vcGVyYXRvckxpc3QuYXJnc0FycmF5Lmxlbmd0aCl7dGhpcy5ydW5uaW5nPSExO2lmKHRoaXMub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7dGhpcy5nZnguZW5kRHJhd2luZygpO3RoaXMuX2NhbnZhcyYmSW50ZXJuYWxSZW5kZXJUYXNrLiNkLmRlbGV0ZSh0aGlzLl9jYW52YXMpO3RoaXMuY2FsbGJhY2soKX19fX19Y29uc3QgdmVyc2lvbj0iMy4wLjI3OSI7ZXhwb3J0cy52ZXJzaW9uPXZlcnNpb247Y29uc3QgYnVpbGQ9ImQwODIzMDY2YyI7ZXhwb3J0cy5idWlsZD1idWlsZH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9ZS5Bbm5vdGF0aW9uU3RvcmFnZT12b2lkIDA7dmFyIGk9cygxKSxuPXMoNCkscj1zKDgpO2NsYXNzIEFubm90YXRpb25TdG9yYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmFnZT1uZXcgTWFwO3RoaXMuX21vZGlmaWVkPSExO3RoaXMub25TZXRNb2RpZmllZD1udWxsO3RoaXMub25SZXNldE1vZGlmaWVkPW51bGw7dGhpcy5vbkFubm90YXRpb25FZGl0b3I9bnVsbH1nZXRWYWx1ZSh0LGUpe2NvbnN0IHM9dGhpcy5fc3RvcmFnZS5nZXQodCk7cmV0dXJuIHZvaWQgMD09PXM/ZTpPYmplY3QuYXNzaWduKGUscyl9Z2V0UmF3VmFsdWUodCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0KHQpfXJlbW92ZSh0KXt0aGlzLl9zdG9yYWdlLmRlbGV0ZSh0KTswPT09dGhpcy5fc3RvcmFnZS5zaXplJiZ0aGlzLnJlc2V0TW9kaWZpZWQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3Ipe2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0b3JhZ2UudmFsdWVzKCkpaWYodCBpbnN0YW5jZW9mIG4uQW5ub3RhdGlvbkVkaXRvcilyZXR1cm47dGhpcy5vbkFubm90YXRpb25FZGl0b3IobnVsbCl9fXNldFZhbHVlKHQsZSl7Y29uc3Qgcz10aGlzLl9zdG9yYWdlLmdldCh0KTtsZXQgaT0hMTtpZih2b2lkIDAhPT1zKXtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKHNbdF0hPT1uKXtpPSEwO3NbdF09bn19ZWxzZXtpPSEwO3RoaXMuX3N0b3JhZ2Uuc2V0KHQsZSl9aSYmdGhpcy4jdSgpO2UgaW5zdGFuY2VvZiBuLkFubm90YXRpb25FZGl0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQW5ub3RhdGlvbkVkaXRvciYmdGhpcy5vbkFubm90YXRpb25FZGl0b3IoZS5jb25zdHJ1Y3Rvci5fdHlwZSl9aGFzKHQpe3JldHVybiB0aGlzLl9zdG9yYWdlLmhhcyh0KX1nZXRBbGwoKXtyZXR1cm4gdGhpcy5fc3RvcmFnZS5zaXplPjA/KDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLl9zdG9yYWdlKTpudWxsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2l6ZX0jdSgpe2lmKCF0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITA7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25TZXRNb2RpZmllZCYmdGhpcy5vblNldE1vZGlmaWVkKCl9fXJlc2V0TW9kaWZpZWQoKXtpZih0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITE7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25SZXNldE1vZGlmaWVkJiZ0aGlzLm9uUmVzZXRNb2RpZmllZCgpfX1nZXQgcHJpbnQoKXtyZXR1cm4gbmV3IFByaW50QW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9Z2V0IHNlcmlhbGl6YWJsZSgpe2lmKDA9PT10aGlzLl9zdG9yYWdlLnNpemUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtlLHNdb2YgdGhpcy5fc3RvcmFnZSl7Y29uc3QgaT1zIGluc3RhbmNlb2Ygbi5Bbm5vdGF0aW9uRWRpdG9yP3Muc2VyaWFsaXplKCk6cztpJiZ0LnNldChlLGkpfXJldHVybiB0fXN0YXRpYyBnZXRIYXNoKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IGU9bmV3IHIuTXVybXVySGFzaDNfNjQ7Zm9yKGNvbnN0W3MsaV1vZiB0KWUudXBkYXRlKGAke3N9OiR7SlNPTi5zdHJpbmdpZnkoaSl9YCk7cmV0dXJuIGUuaGV4ZGlnZXN0KCl9fWUuQW5ub3RhdGlvblN0b3JhZ2U9QW5ub3RhdGlvblN0b3JhZ2U7Y2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdleyNwPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLiNwPXN0cnVjdHVyZWRDbG9uZSh0LnNlcmlhbGl6YWJsZSl9Z2V0IHByaW50KCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50Iil9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybiB0aGlzLiNwfX1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9UHJpbnRBbm5vdGF0aW9uU3RvcmFnZX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25FZGl0b3I9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpO2NsYXNzIEFubm90YXRpb25FZGl0b3J7I2c9dGhpcy5mb2N1c2luLmJpbmQodGhpcyk7I209dGhpcy5mb2N1c291dC5iaW5kKHRoaXMpOyNmPSExOyNiPSExOyNBPSExOyNfPUFubm90YXRpb25FZGl0b3IuX3pJbmRleCsrO3N0YXRpYyBfY29sb3JNYW5hZ2VyPW5ldyBpLkNvbG9yTWFuYWdlcjtzdGF0aWMgX3pJbmRleD0xO2NvbnN0cnVjdG9yKHQpe3RoaXMuY29uc3RydWN0b3I9PT1Bbm5vdGF0aW9uRWRpdG9yJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQW5ub3RhdGlvbkVkaXRvci4iKTt0aGlzLnBhcmVudD10LnBhcmVudDt0aGlzLmlkPXQuaWQ7dGhpcy53aWR0aD10aGlzLmhlaWdodD1udWxsO3RoaXMucGFnZUluZGV4PXQucGFyZW50LnBhZ2VJbmRleDt0aGlzLm5hbWU9dC5uYW1lO3RoaXMuZGl2PW51bGw7Y29uc3RbZSxzXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMueD10LngvZTt0aGlzLnk9dC55L3M7dGhpcy5yb3RhdGlvbj10aGlzLnBhcmVudC52aWV3cG9ydC5yb3RhdGlvbjt0aGlzLmlzQXR0YWNoZWRUb0RPTT0hMX1zdGF0aWMgZ2V0IF9kZWZhdWx0TGluZUNvbG9yKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9kZWZhdWx0TGluZUNvbG9yIix0aGlzLl9jb2xvck1hbmFnZXIuZ2V0SGV4Q29kZSgiQ2FudmFzVGV4dCIpKX1zZXRJbkJhY2tncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9MH1zZXRJbkZvcmVncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9dGhpcy4jX31mb2N1c2luKHQpe3RoaXMuI2Y/dGhpcy4jZj0hMTp0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKX1mb2N1c291dCh0KXtpZighdGhpcy5pc0F0dGFjaGVkVG9ET00pcmV0dXJuO2lmKCF0LnJlbGF0ZWRUYXJnZXQ/LmNsb3Nlc3QoYCMke3RoaXMuaWR9YCkpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLnBhcmVudC5pc011bHRpcGxlU2VsZWN0aW9ufHx0aGlzLmNvbW1pdE9yUmVtb3ZlKCl9fWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy5pc0VtcHR5KCk/dGhpcy5yZW1vdmUoKTp0aGlzLmNvbW1pdCgpfWNvbW1pdCgpe3RoaXMucGFyZW50LmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9ZHJhZ3N0YXJ0KHQpe2NvbnN0IGU9dGhpcy5wYXJlbnQuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3RhcnRYPXQuY2xpZW50WC1lLng7dGhpcy5zdGFydFk9dC5jbGllbnRZLWUueTt0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0aGlzLmlkKTt0LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIn1zZXRBdCh0LGUscyxpKXtjb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7W3MsaV09dGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihzLGkpO3RoaXMueD0odCtzKS9uO3RoaXMueT0oZStpKS9yO3RoaXMuZGl2LnN0eWxlLmxlZnQ9MTAwKnRoaXMueCsiJSI7dGhpcy5kaXYuc3R5bGUudG9wPTEwMCp0aGlzLnkrIiUifXRyYW5zbGF0ZSh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztbdCxlXT10aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKHQsZSk7dGhpcy54Kz10L3M7dGhpcy55Kz1lL2k7dGhpcy5kaXYuc3R5bGUubGVmdD0xMDAqdGhpcy54KyIlIjt0aGlzLmRpdi5zdHlsZS50b3A9MTAwKnRoaXMueSsiJSJ9c2NyZWVuVG9QYWdlVHJhbnNsYXRpb24odCxlKXtjb25zdHtyb3RhdGlvbjpzfT10aGlzLnBhcmVudC52aWV3cG9ydDtzd2l0Y2gocyl7Y2FzZSA5MDpyZXR1cm5bZSwtdF07Y2FzZSAxODA6cmV0dXJuWy10LC1lXTtjYXNlIDI3MDpyZXR1cm5bLWUsdF07ZGVmYXVsdDpyZXR1cm5bdCxlXX19c2V0RGltcyh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLmRpdi5zdHlsZS53aWR0aD0xMDAqdC9zKyIlIjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9MTAwKmUvaSsiJSJ9Zml4RGltcygpe2NvbnN0e3N0eWxlOnR9PXRoaXMuZGl2LHtoZWlnaHQ6ZSx3aWR0aDpzfT10LGk9cy5lbmRzV2l0aCgiJSIpLG49ZS5lbmRzV2l0aCgiJSIpO2lmKGkmJm4pcmV0dXJuO2NvbnN0W3IsYV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztpfHwodC53aWR0aD0xMDAqcGFyc2VGbG9hdChzKS9yKyIlIik7bnx8KHQuaGVpZ2h0PTEwMCpwYXJzZUZsb2F0KGUpL2ErIiUiKX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bMCwwXX1yZW5kZXIoKXt0aGlzLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImRhdGEtZWRpdG9yLXJvdGF0aW9uIiwoMzYwLXRoaXMucm90YXRpb24pJTM2MCk7dGhpcy5kaXYuY2xhc3NOYW1lPXRoaXMubmFtZTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLmlkKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoInRhYkluZGV4IiwwKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLiNtKTtjb25zdFt0LGVdPXRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCk7dGhpcy50cmFuc2xhdGUodCxlKTsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnc3RhcnQiLCJwb2ludGVyZG93biJdKTtyZXR1cm4gdGhpcy5kaXZ9cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSl0LnByZXZlbnREZWZhdWx0KCk7ZWxzZXt0LmN0cmxLZXkmJiFlfHx0LnNoaWZ0S2V5fHx0Lm1ldGFLZXkmJmU/dGhpcy5wYXJlbnQudG9nZ2xlU2VsZWN0ZWQodGhpcyk6dGhpcy5wYXJlbnQuc2V0U2VsZWN0ZWQodGhpcyk7dGhpcy4jZj0hMH19Z2V0UmVjdCh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxbbixyXT10aGlzLnBhcmVudC5wYWdlRGltZW5zaW9ucyxhPW4qdC9zLG89ciplL2ksbD10aGlzLngqbixjPXRoaXMueSpyLGg9dGhpcy53aWR0aCpuLGQ9dGhpcy5oZWlnaHQqcjtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltsK2Esci1jLW8tZCxsK2EraCxyLWMtb107Y2FzZSA5MDpyZXR1cm5bbCtvLHItYythLGwrbytkLHItYythK2hdO2Nhc2UgMTgwOnJldHVybltsLWEtaCxyLWMrbyxsLWEsci1jK28rZF07Y2FzZSAyNzA6cmV0dXJuW2wtby1kLHItYy1hLWgsbC1vLHItYy1hXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQsZSl7Y29uc3RbcyxpLG4scl09dCxhPW4tcyxvPXItaTtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltzLGUtcixhLG9dO2Nhc2UgOTA6cmV0dXJuW3MsZS1pLG8sYV07Y2FzZSAxODA6cmV0dXJuW24sZS1pLGEsb107Y2FzZSAyNzA6cmV0dXJuW24sZS1yLG8sYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19b25jZUFkZGVkKCl7fWlzRW1wdHkoKXtyZXR1cm4hMX1lbmFibGVFZGl0TW9kZSgpe3RoaXMuI0E9ITB9ZGlzYWJsZUVkaXRNb2RlKCl7dGhpcy4jQT0hMX1pc0luRWRpdE1vZGUoKXtyZXR1cm4gdGhpcy4jQX1zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpe3JldHVybiExfW5lZWRzVG9CZVJlYnVpbHQoKXtyZXR1cm4gdGhpcy5kaXYmJiF0aGlzLmlzQXR0YWNoZWRUb0RPTX1yZWJ1aWxkKCl7dGhpcy5kaXY/LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpfXNlcmlhbGl6ZSgpeygwLG4udW5yZWFjaGFibGUpKCJBbiBlZGl0b3IgbXVzdCBiZSBzZXJpYWxpemFibGUiKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7cGFyZW50OmUsaWQ6ZS5nZXROZXh0SWQoKX0pO3Mucm90YXRpb249dC5yb3RhdGlvbjtjb25zdFtpLG5dPWUucGFnZURpbWVuc2lvbnMsW3IsYSxvLGxdPXMuZ2V0UmVjdEluQ3VycmVudENvb3Jkcyh0LnJlY3Qsbik7cy54PXIvaTtzLnk9YS9uO3Mud2lkdGg9by9pO3MuaGVpZ2h0PWwvbjtyZXR1cm4gc31yZW1vdmUoKXt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIix0aGlzLiNnKTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsdGhpcy4jbSk7dGhpcy5pc0VtcHR5KCl8fHRoaXMuY29tbWl0KCk7dGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpfXNlbGVjdCgpe3RoaXMuZGl2Py5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfXVuc2VsZWN0KCl7dGhpcy5kaXY/LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkRWRpdG9yIil9dXBkYXRlUGFyYW1zKHQsZSl7fWRpc2FibGVFZGl0aW5nKCl7fWVuYWJsZUVkaXRpbmcoKXt9Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybnt9fWdldCBjb250ZW50RGl2KCl7cmV0dXJuIHRoaXMuZGl2fWdldCBpc0VkaXRpbmcoKXtyZXR1cm4gdGhpcy4jYn1zZXQgaXNFZGl0aW5nKHQpe3RoaXMuI2I9dDtpZih0KXt0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKTt0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IodGhpcyl9ZWxzZSB0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IobnVsbCl9fWUuQW5ub3RhdGlvbkVkaXRvcj1Bbm5vdGF0aW9uRWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuS2V5Ym9hcmRNYW5hZ2VyPWUuQ29tbWFuZE1hbmFnZXI9ZS5Db2xvck1hbmFnZXI9ZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyPXZvaWQgMDtlLmJpbmRFdmVudHM9ZnVuY3Rpb24gYmluZEV2ZW50cyh0LGUscyl7Zm9yKGNvbnN0IGkgb2YgcyllLmFkZEV2ZW50TGlzdGVuZXIoaSx0W2ldLmJpbmQodCkpfTtlLm9wYWNpdHlUb0hleD1mdW5jdGlvbiBvcGFjaXR5VG9IZXgodCl7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oMjU1LE1hdGgubWF4KDEsMjU1KnQpKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX07dmFyIGk9cygxKSxuPXMoNik7Y2xhc3MgSWRNYW5hZ2VyeyN2PTA7Z2V0SWQoKXtyZXR1cm5gJHtpLkFubm90YXRpb25FZGl0b3JQcmVmaXh9JHt0aGlzLiN2Kyt9YH19Y2xhc3MgQ29tbWFuZE1hbmFnZXJ7I3k9W107I1M9ITE7I3g7I0U9LTE7Y29uc3RydWN0b3IodD0xMjgpe3RoaXMuI3g9dH1hZGQoe2NtZDp0LHVuZG86ZSxtdXN0RXhlYzpzLHR5cGU6aT1OYU4sb3ZlcndyaXRlSWZTYW1lVHlwZTpuPSExLGtlZXBVbmRvOnI9ITF9KXtzJiZ0KCk7aWYodGhpcy4jUylyZXR1cm47Y29uc3QgYT17Y21kOnQsdW5kbzplLHR5cGU6aX07aWYoLTE9PT10aGlzLiNFKXt0aGlzLiN5Lmxlbmd0aD4wJiYodGhpcy4jeS5sZW5ndGg9MCk7dGhpcy4jRT0wO3RoaXMuI3kucHVzaChhKTtyZXR1cm59aWYobiYmdGhpcy4jeVt0aGlzLiNFXS50eXBlPT09aSl7ciYmKGEudW5kbz10aGlzLiN5W3RoaXMuI0VdLnVuZG8pO3RoaXMuI3lbdGhpcy4jRV09YTtyZXR1cm59Y29uc3Qgbz10aGlzLiNFKzE7aWYobz09PXRoaXMuI3gpdGhpcy4jeS5zcGxpY2UoMCwxKTtlbHNle3RoaXMuI0U9bztvPHRoaXMuI3kubGVuZ3RoJiZ0aGlzLiN5LnNwbGljZShvKX10aGlzLiN5LnB1c2goYSl9dW5kbygpe2lmKC0xIT09dGhpcy4jRSl7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLnVuZG8oKTt0aGlzLiNTPSExO3RoaXMuI0UtPTF9fXJlZG8oKXtpZih0aGlzLiNFPHRoaXMuI3kubGVuZ3RoLTEpe3RoaXMuI0UrPTE7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLmNtZCgpO3RoaXMuI1M9ITF9fWhhc1NvbWV0aGluZ1RvVW5kbygpe3JldHVybi0xIT09dGhpcy4jRX1oYXNTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy4jRTx0aGlzLiN5Lmxlbmd0aC0xfWRlc3Ryb3koKXt0aGlzLiN5PW51bGx9fWUuQ29tbWFuZE1hbmFnZXI9Q29tbWFuZE1hbmFnZXI7Y2xhc3MgS2V5Ym9hcmRNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe3RoaXMuYnVmZmVyPVtdO3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5hbGxLZXlzPW5ldyBTZXQ7Y29uc3QgZT1LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7Zm9yKGNvbnN0W3MsaV1vZiB0KWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IHM9dC5zdGFydHNXaXRoKCJtYWMrIik7aWYoZSYmcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQuc2xpY2UoNCksaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX1lbHNlIGlmKCFlJiYhcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQsaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX19fXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5wbGF0Zm9ybToiIjtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywicGxhdGZvcm0iLHtpc1dpbjp0LmluY2x1ZGVzKCJXaW4iKSxpc01hYzp0LmluY2x1ZGVzKCJNYWMiKX0pfSNDKHQpe3QuYWx0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJhbHQiKTt0LmN0cmxLZXkmJnRoaXMuYnVmZmVyLnB1c2goImN0cmwiKTt0Lm1ldGFLZXkmJnRoaXMuYnVmZmVyLnB1c2goIm1ldGEiKTt0LnNoaWZ0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJzaGlmdCIpO3RoaXMuYnVmZmVyLnB1c2godC5rZXkpO2NvbnN0IGU9dGhpcy5idWZmZXIuam9pbigiKyIpO3RoaXMuYnVmZmVyLmxlbmd0aD0wO3JldHVybiBlfWV4ZWModCxlKXtpZighdGhpcy5hbGxLZXlzLmhhcyhlLmtleSkpcmV0dXJuO2NvbnN0IHM9dGhpcy5jYWxsYmFja3MuZ2V0KHRoaXMuI0MoZSkpO2lmKHMpe3MuYmluZCh0KSgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfX19ZS5LZXlib2FyZE1hbmFnZXI9S2V5Ym9hcmRNYW5hZ2VyO2NsYXNzIENvbG9yTWFuYWdlcntzdGF0aWMgX2NvbG9yc01hcHBpbmc9bmV3IE1hcChbWyJDYW52YXNUZXh0IixbMCwwLDBdXSxbIkNhbnZhcyIsWzI1NSwyNTUsMjU1XV1dKTtnZXQgX2NvbG9ycygpe2NvbnN0IHQ9bmV3IE1hcChbWyJDYW52YXNUZXh0IixudWxsXSxbIkNhbnZhcyIsbnVsbF1dKTsoMCxuLmdldENvbG9yVmFsdWVzKSh0KTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2NvbG9ycyIsdCl9Y29udmVydCh0KXtjb25zdCBlPSgwLG4uZ2V0UkdCKSh0KTtpZighd2luZG93Lm1hdGNoTWVkaWEoIihmb3JjZWQtY29sb3JzOiBhY3RpdmUpIikubWF0Y2hlcylyZXR1cm4gZTtmb3IoY29uc3RbdCxzXW9mIHRoaXMuX2NvbG9ycylpZihzLmV2ZXJ5KCgodCxzKT0+dD09PWVbc10pKSlyZXR1cm4gQ29sb3JNYW5hZ2VyLl9jb2xvcnNNYXBwaW5nLmdldCh0KTtyZXR1cm4gZX1nZXRIZXhDb2RlKHQpe2NvbnN0IGU9dGhpcy5fY29sb3JzLmdldCh0KTtyZXR1cm4gZT9pLlV0aWwubWFrZUhleENvbG9yKC4uLmUpOnR9fWUuQ29sb3JNYW5hZ2VyPUNvbG9yTWFuYWdlcjtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyeyNQPW51bGw7I1Q9bmV3IE1hcDsjdz1uZXcgTWFwOyNrPW5ldyBDb21tYW5kTWFuYWdlcjsjRj0wOyNNPW51bGw7I1I9bnVsbDsjRD1uZXcgSWRNYW5hZ2VyOyNJPSExOyNPPWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORTsjTD1uZXcgU2V0OyNOPXRoaXMuY29weS5iaW5kKHRoaXMpOyNCPXRoaXMuY3V0LmJpbmQodGhpcyk7I2o9dGhpcy5wYXN0ZS5iaW5kKHRoaXMpOyNVPXRoaXMua2V5ZG93bi5iaW5kKHRoaXMpOyNxPXRoaXMub25FZGl0aW5nQWN0aW9uLmJpbmQodGhpcyk7I1c9dGhpcy5vblBhZ2VDaGFuZ2luZy5iaW5kKHRoaXMpOyNHPXtpc0VkaXRpbmc6ITEsaXNFbXB0eTohMCxoYXNTb21ldGhpbmdUb1VuZG86ITEsaGFzU29tZXRoaW5nVG9SZWRvOiExLGhhc1NlbGVjdGVkRWRpdG9yOiExfTsjSD1udWxsO3N0YXRpYyBfa2V5Ym9hcmRNYW5hZ2VyPW5ldyBLZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5zZWxlY3RBbGxdLFtbImN0cmwreiIsIm1hYyttZXRhK3oiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bmRvXSxbWyJjdHJsK3kiLCJjdHJsK3NoaWZ0K1oiLCJtYWMrbWV0YStzaGlmdCtaIl0sQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5wcm90b3R5cGUucmVkb10sW1siQmFja3NwYWNlIiwiYWx0K0JhY2tzcGFjZSIsImN0cmwrQmFja3NwYWNlIiwic2hpZnQrQmFja3NwYWNlIiwibWFjK0JhY2tzcGFjZSIsIm1hYythbHQrQmFja3NwYWNlIiwibWFjK2N0cmwrQmFja3NwYWNlIiwiRGVsZXRlIiwiY3RybCtEZWxldGUiLCJzaGlmdCtEZWxldGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5kZWxldGVdLFtbIkVzY2FwZSIsIm1hYytFc2NhcGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bnNlbGVjdEFsbF1dKTtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuI0g9dDt0aGlzLiNSPWU7dGhpcy4jUi5fb24oImVkaXRpbmdhY3Rpb24iLHRoaXMuI3EpO3RoaXMuI1IuX29uKCJwYWdlY2hhbmdpbmciLHRoaXMuI1cpfWRlc3Ryb3koKXt0aGlzLiN6KCk7dGhpcy4jUi5fb2ZmKCJlZGl0aW5nYWN0aW9uIix0aGlzLiNxKTt0aGlzLiNSLl9vZmYoInBhZ2VjaGFuZ2luZyIsdGhpcy4jVyk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jdy52YWx1ZXMoKSl0LmRlc3Ryb3koKTt0aGlzLiN3LmNsZWFyKCk7dGhpcy4jVC5jbGVhcigpO3RoaXMuI1A9bnVsbDt0aGlzLiNMLmNsZWFyKCk7dGhpcy4jay5kZXN0cm95KCl9b25QYWdlQ2hhbmdpbmcoe3BhZ2VOdW1iZXI6dH0pe3RoaXMuI0Y9dC0xfWZvY3VzTWFpbkNvbnRhaW5lcigpe3RoaXMuI0guZm9jdXMoKX0jVigpe3RoaXMuI0guYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy4jVSl9I3ooKXt0aGlzLiNILnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI1UpfSNYKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jTik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY3V0Iix0aGlzLiNCKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsdGhpcy4jail9IyQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb3B5Iix0aGlzLiNOKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjdXQiLHRoaXMuI0IpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNqKX1jb3B5KHQpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLiNQJiZ0aGlzLiNQLmNvbW1pdE9yUmVtb3ZlKCk7aWYoIXRoaXMuaGFzU2VsZWN0aW9uKXJldHVybjtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuI0wpdC5pc0VtcHR5KCl8fGUucHVzaCh0LnNlcmlhbGl6ZSgpKTswIT09ZS5sZW5ndGgmJnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJhcHBsaWNhdGlvbi9wZGZqcyIsSlNPTi5zdHJpbmdpZnkoZSkpfWN1dCh0KXt0aGlzLmNvcHkodCk7dGhpcy5kZWxldGUoKX1wYXN0ZSh0KXt0LnByZXZlbnREZWZhdWx0KCk7bGV0IGU9dC5jbGlwYm9hcmREYXRhLmdldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIik7aWYoIWUpcmV0dXJuO3RyeXtlPUpTT04ucGFyc2UoZSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApO3JldHVybn1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47dGhpcy51bnNlbGVjdEFsbCgpO2NvbnN0IHM9dGhpcy4jdy5nZXQodGhpcy4jRik7dHJ5e2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1zLmRlc2VyaWFsaXplKGkpO2lmKCFlKXJldHVybjt0LnB1c2goZSl9Y29uc3QgY21kPSgpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpO3RoaXMuI0sodCl9LHVuZG89KCk9Pntmb3IoY29uc3QgZSBvZiB0KWUucmVtb3ZlKCl9O3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpjbWQsdW5kbzp1bmRvLG11c3RFeGVjOiEwfSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApfX1rZXlkb3duKHQpe3RoaXMuZ2V0QWN0aXZlKCk/LnNob3VsZEdldEtleWJvYXJkRXZlbnRzKCl8fEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9b25FZGl0aW5nQWN0aW9uKHQpe1sidW5kbyIsInJlZG8iLCJkZWxldGUiLCJzZWxlY3RBbGwiXS5pbmNsdWRlcyh0Lm5hbWUpJiZ0aGlzW3QubmFtZV0oKX0jSih0KXtPYmplY3QuZW50cmllcyh0KS5zb21lKCgoW3QsZV0pPT50aGlzLiNHW3RdIT09ZSkpJiZ0aGlzLiNSLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6T2JqZWN0LmFzc2lnbih0aGlzLiNHLHQpfSl9I1EodCl7dGhpcy4jUi5kaXNwYXRjaCgiYW5ub3RhdGlvbmVkaXRvcnBhcmFtc2NoYW5nZWQiLHtzb3VyY2U6dGhpcyxkZXRhaWxzOnR9KX1zZXRFZGl0aW5nU3RhdGUodCl7aWYodCl7dGhpcy4jVigpO3RoaXMuI1goKTt0aGlzLiNKKHtpc0VkaXRpbmc6dGhpcy4jTyE9PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSxpc0VtcHR5OnRoaXMuI1ooKSxoYXNTb21ldGhpbmdUb1VuZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1JlZG8oKSxoYXNTZWxlY3RlZEVkaXRvcjohMX0pfWVsc2V7dGhpcy4jeigpO3RoaXMuIyQoKTt0aGlzLiNKKHtpc0VkaXRpbmc6ITF9KX19cmVnaXN0ZXJFZGl0b3JUeXBlcyh0KXtpZighdGhpcy4jTSl7dGhpcy4jTT10O2Zvcihjb25zdCB0IG9mIHRoaXMuI00pdGhpcy4jUSh0LmRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUpfX1nZXRJZCgpe3JldHVybiB0aGlzLiNELmdldElkKCl9YWRkTGF5ZXIodCl7dGhpcy4jdy5zZXQodC5wYWdlSW5kZXgsdCk7dGhpcy4jST90LmVuYWJsZSgpOnQuZGlzYWJsZSgpfXJlbW92ZUxheWVyKHQpe3RoaXMuI3cuZGVsZXRlKHQucGFnZUluZGV4KX11cGRhdGVNb2RlKHQpe3RoaXMuI089dDtpZih0PT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FKXt0aGlzLnNldEVkaXRpbmdTdGF0ZSghMSk7dGhpcy4jdHQoKX1lbHNle3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLiNldCgpO2Zvcihjb25zdCBlIG9mIHRoaXMuI3cudmFsdWVzKCkpZS51cGRhdGVNb2RlKHQpfX11cGRhdGVUb29sYmFyKHQpe3QhPT10aGlzLiNPJiZ0aGlzLiNSLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfXVwZGF0ZVBhcmFtcyh0LGUpe2lmKHRoaXMuI00pe2Zvcihjb25zdCBzIG9mIHRoaXMuI0wpcy51cGRhdGVQYXJhbXModCxlKTtmb3IoY29uc3QgcyBvZiB0aGlzLiNNKXMudXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpfX0jZXQoKXtpZighdGhpcy4jSSl7dGhpcy4jST0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLiN3LnZhbHVlcygpKXQuZW5hYmxlKCl9fSN0dCgpe3RoaXMudW5zZWxlY3RBbGwoKTtpZih0aGlzLiNJKXt0aGlzLiNJPSExO2Zvcihjb25zdCB0IG9mIHRoaXMuI3cudmFsdWVzKCkpdC5kaXNhYmxlKCl9fWdldEVkaXRvcnModCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0aGlzLiNULnZhbHVlcygpKXMucGFnZUluZGV4PT09dCYmZS5wdXNoKHMpO3JldHVybiBlfWdldEVkaXRvcih0KXtyZXR1cm4gdGhpcy4jVC5nZXQodCl9YWRkRWRpdG9yKHQpe3RoaXMuI1Quc2V0KHQuaWQsdCl9cmVtb3ZlRWRpdG9yKHQpe3RoaXMuI1QuZGVsZXRlKHQuaWQpO3RoaXMudW5zZWxlY3QodCl9I1kodCl7Y29uc3QgZT10aGlzLiN3LmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1zZXRBY3RpdmVFZGl0b3IodCl7aWYodGhpcy4jUCE9PXQpe3RoaXMuI1A9dDt0JiZ0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKX19dG9nZ2xlU2VsZWN0ZWQodCl7aWYodGhpcy4jTC5oYXModCkpe3RoaXMuI0wuZGVsZXRlKHQpO3QudW5zZWxlY3QoKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjp0aGlzLmhhc1NlbGVjdGlvbn0pfWVsc2V7dGhpcy4jTC5hZGQodCk7dC5zZWxlY3QoKTt0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjohMH0pfX1zZXRTZWxlY3RlZCh0KXtmb3IoY29uc3QgZSBvZiB0aGlzLiNMKWUhPT10JiZlLnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0wuYWRkKHQpO3Quc2VsZWN0KCk7dGhpcy4jUSh0LnByb3BlcnRpZXNUb1VwZGF0ZSk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNMLmhhcyh0KX11bnNlbGVjdCh0KXt0LnVuc2VsZWN0KCk7dGhpcy4jTC5kZWxldGUodCk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1nZXQgaGFzU2VsZWN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLiNMLnNpemV9dW5kbygpe3RoaXMuI2sudW5kbygpO3RoaXMuI0ooe2hhc1NvbWV0aGluZ1RvVW5kbzp0aGlzLiNrLmhhc1NvbWV0aGluZ1RvVW5kbygpLGhhc1NvbWV0aGluZ1RvUmVkbzohMCxpc0VtcHR5OnRoaXMuI1ooKX0pfXJlZG8oKXt0aGlzLiNrLnJlZG8oKTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOnRoaXMuI2suaGFzU29tZXRoaW5nVG9SZWRvKCksaXNFbXB0eTp0aGlzLiNaKCl9KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNrLmFkZCh0KTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOiExLGlzRW1wdHk6dGhpcy4jWigpfSl9I1ooKXtpZigwPT09dGhpcy4jVC5zaXplKXJldHVybiEwO2lmKDE9PT10aGlzLiNULnNpemUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jVC52YWx1ZXMoKSlyZXR1cm4gdC5pc0VtcHR5KCk7cmV0dXJuITF9ZGVsZXRlKCl7dGhpcy5jb21taXRPclJlbW92ZSgpO2lmKCF0aGlzLmhhc1NlbGVjdGlvbilyZXR1cm47Y29uc3QgdD1bLi4udGhpcy4jTF07dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfSx1bmRvOigpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpfSxtdXN0RXhlYzohMH0pfWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy4jUD8uY29tbWl0T3JSZW1vdmUoKX0jSyh0KXt0aGlzLiNMLmNsZWFyKCk7Zm9yKGNvbnN0IGUgb2YgdClpZighZS5pc0VtcHR5KCkpe3RoaXMuI0wuYWRkKGUpO2Uuc2VsZWN0KCl9dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1zZWxlY3RBbGwoKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNMKXQuY29tbWl0KCk7dGhpcy4jSyh0aGlzLiNULnZhbHVlcygpKX11bnNlbGVjdEFsbCgpe2lmKHRoaXMuI1ApdGhpcy4jUC5jb21taXRPclJlbW92ZSgpO2Vsc2UgaWYoMCE9PXRoaXMuI0wuc2l6ZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jTCl0LnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0ooe2hhc1NlbGVjdGVkRWRpdG9yOiExfSl9fWlzQWN0aXZlKHQpe3JldHVybiB0aGlzLiNQPT09dH1nZXRBY3RpdmUoKXtyZXR1cm4gdGhpcy4jUH1nZXRNb2RlKCl7cmV0dXJuIHRoaXMuI099fWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj1Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhdFRpbWVyPWUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uPWUuUGl4ZWxzUGVySW5jaD1lLlBhZ2VWaWV3cG9ydD1lLlBERkRhdGVTdHJpbmc9ZS5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1lLkRPTVNWR0ZhY3Rvcnk9ZS5ET01DYW52YXNGYWN0b3J5PWUuRE9NQ01hcFJlYWRlckZhY3Rvcnk9ZS5Bbm5vdGF0aW9uUHJlZml4PXZvaWQgMDtlLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gZGVwcmVjYXRlZCh0KXtjb25zb2xlLmxvZygiRGVwcmVjYXRlZCBBUEkgdXNhZ2U6ICIrdCl9O2UuZ2V0Q29sb3JWYWx1ZXM9ZnVuY3Rpb24gZ2V0Q29sb3JWYWx1ZXModCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2RvY3VtZW50LmJvZHkuYXBwZW5kKGUpO2Zvcihjb25zdCBzIG9mIHQua2V5cygpKXtlLnN0eWxlLmNvbG9yPXM7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChzLGdldFJHQihpKSl9ZS5yZW1vdmUoKX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtPWZ1bmN0aW9uIGdldEN1cnJlbnRUcmFuc2Zvcm0odCl7Y29uc3R7YTplLGI6cyxjOmksZDpuLGU6cixmOmF9PXQuZ2V0VHJhbnNmb3JtKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZT1mdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSh0KXtjb25zdHthOmUsYjpzLGM6aSxkOm4sZTpyLGY6YX09dC5nZXRUcmFuc2Zvcm0oKS5pbnZlcnRTZWxmKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIjIikscz10LmluZGV4T2YoIj8iKSxpPU1hdGgubWluKGU+MD9lOnQubGVuZ3RoLHM+MD9zOnQubGVuZ3RoKTtyZXR1cm4gdC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLyIsaSkrMSxpKX07ZS5nZXRQZGZGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0UGRmRmlsZW5hbWVGcm9tVXJsKHQsZT0iZG9jdW1lbnQucGRmIil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBlO2lmKGlzRGF0YVNjaGVtZSh0KSl7KDAsbi53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgImRhdGE6Ii1VUkwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuJyk7cmV0dXJuIGV9Y29uc3Qgcz0vW14vPyM9XStcLnBkZlxiKD8hLipcLnBkZlxiKS9pLGk9L14oPzooPzpbXjpdKzopP1wvXC9bXi9dKyk/KFtePyNdKikoXD9bXiNdKik/KCMuKik/JC8uZXhlYyh0KTtsZXQgcj1zLmV4ZWMoaVsxXSl8fHMuZXhlYyhpWzJdKXx8cy5leGVjKGlbM10pO2lmKHIpe3I9clswXTtpZihyLmluY2x1ZGVzKCIlIikpdHJ5e3I9cy5leGVjKGRlY29kZVVSSUNvbXBvbmVudChyKSlbMF19Y2F0Y2godCl7fX1yZXR1cm4gcnx8ZX07ZS5nZXRSR0I9Z2V0UkdCO2UuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LHtzY2FsZTplPTEscm90YXRpb246cz0wfSl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6bn09dC5hdHRyaWJ1dGVzLnN0eWxlLHI9WzAsMCxwYXJzZUludChpKSxwYXJzZUludChuKV07cmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe3ZpZXdCb3g6cixzY2FsZTplLHJvdGF0aW9uOnN9KX07ZS5pc0RhdGFTY2hlbWU9aXNEYXRhU2NoZW1lO2UuaXNQZGZGaWxlPWZ1bmN0aW9uIGlzUGRmRmlsZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi9cLnBkZiQvaS50ZXN0KHQpfTtlLmlzVmFsaWRGZXRjaFVybD1pc1ZhbGlkRmV0Y2hVcmw7ZS5sb2FkU2NyaXB0PWZ1bmN0aW9uIGxvYWRTY3JpcHQodCxlPSExKXtyZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz10O24ub25sb2FkPWZ1bmN0aW9uKHQpe2UmJm4ucmVtb3ZlKCk7cyh0KX07bi5vbmVycm9yPWZ1bmN0aW9uKCl7aShuZXcgRXJyb3IoYENhbm5vdCBsb2FkIHNjcmlwdCBhdDogJHtuLnNyY31gKSl9Oyhkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZChuKX0pKX07dmFyIGk9cyg3KSxuPXMoMSk7ZS5Bbm5vdGF0aW9uUHJlZml4PSJwZGZqc19pbnRlcm5hbF9pZF8iO2NsYXNzIFBpeGVsc1BlckluY2h7c3RhdGljIENTUz05NjtzdGF0aWMgUERGPTcyO3N0YXRpYyBQREZfVE9fQ1NTX1VOSVRTPXRoaXMuQ1NTL3RoaXMuUERGfWUuUGl4ZWxzUGVySW5jaD1QaXhlbHNQZXJJbmNoO2NsYXNzIERPTUNhbnZhc0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDYW52YXNGYWN0b3J5e2NvbnN0cnVjdG9yKHtvd25lckRvY3VtZW50OnQ9Z2xvYmFsVGhpcy5kb2N1bWVudH09e30pe3N1cGVyKCk7dGhpcy5fZG9jdW1lbnQ9dH1fY3JlYXRlQ2FudmFzKHQsZSl7Y29uc3Qgcz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtzLndpZHRoPXQ7cy5oZWlnaHQ9ZTtyZXR1cm4gc319ZS5ET01DYW52YXNGYWN0b3J5PURPTUNhbnZhc0ZhY3Rvcnk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHQsZT0hMSl7aWYoaXNWYWxpZEZldGNoVXJsKHQsZG9jdW1lbnQuYmFzZVVSSSkpe2NvbnN0IHM9YXdhaXQgZmV0Y2godCk7aWYoIXMub2spdGhyb3cgbmV3IEVycm9yKHMuc3RhdHVzVGV4dCk7cmV0dXJuIGU/bmV3IFVpbnQ4QXJyYXkoYXdhaXQgcy5hcnJheUJ1ZmZlcigpKTooMCxuLnN0cmluZ1RvQnl0ZXMpKGF3YWl0IHMudGV4dCgpKX1yZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgcj1uZXcgWE1MSHR0cFJlcXVlc3Q7ci5vcGVuKCJHRVQiLHQsITApO2UmJihyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKTtyLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHIucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe2lmKDIwMD09PXIuc3RhdHVzfHwwPT09ci5zdGF0dXMpe2xldCB0O2UmJnIucmVzcG9uc2U/dD1uZXcgVWludDhBcnJheShyLnJlc3BvbnNlKTohZSYmci5yZXNwb25zZVRleHQmJih0PSgwLG4uc3RyaW5nVG9CeXRlcykoci5yZXNwb25zZVRleHQpKTtpZih0KXtzKHQpO3JldHVybn19aShuZXcgRXJyb3Ioci5zdGF0dXNUZXh0KSl9fTtyLnNlbmQobnVsbCl9KSl9Y2xhc3MgRE9NQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0LHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PURPTUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIERPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQsITApfX1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5e19jcmVhdGVTVkcodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpfX1lLkRPTVNWR0ZhY3Rvcnk9RE9NU1ZHRmFjdG9yeTtjbGFzcyBQYWdlVmlld3BvcnR7Y29uc3RydWN0b3Ioe3ZpZXdCb3g6dCxzY2FsZTplLHJvdGF0aW9uOnMsb2Zmc2V0WDppPTAsb2Zmc2V0WTpuPTAsZG9udEZsaXA6cj0hMX0pe3RoaXMudmlld0JveD10O3RoaXMuc2NhbGU9ZTt0aGlzLnJvdGF0aW9uPXM7dGhpcy5vZmZzZXRYPWk7dGhpcy5vZmZzZXRZPW47Y29uc3QgYT0odFsyXSt0WzBdKS8yLG89KHRbM10rdFsxXSkvMjtsZXQgbCxjLGgsZCx1LHAsZyxtOyhzJT0zNjApPDAmJihzKz0zNjApO3N3aXRjaChzKXtjYXNlIDE4MDpsPS0xO2M9MDtoPTA7ZD0xO2JyZWFrO2Nhc2UgOTA6bD0wO2M9MTtoPTE7ZD0wO2JyZWFrO2Nhc2UgMjcwOmw9MDtjPS0xO2g9LTE7ZD0wO2JyZWFrO2Nhc2UgMDpsPTE7Yz0wO2g9MDtkPS0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJQYWdlVmlld3BvcnQ6IEludmFsaWQgcm90YXRpb24sIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzLiIpfWlmKHIpe2g9LWg7ZD0tZH1pZigwPT09bCl7dT1NYXRoLmFicyhvLXRbMV0pKmUraTtwPU1hdGguYWJzKGEtdFswXSkqZStuO2c9TWF0aC5hYnModFszXS10WzFdKSplO209TWF0aC5hYnModFsyXS10WzBdKSplfWVsc2V7dT1NYXRoLmFicyhhLXRbMF0pKmUraTtwPU1hdGguYWJzKG8tdFsxXSkqZStuO2c9TWF0aC5hYnModFsyXS10WzBdKSplO209TWF0aC5hYnModFszXS10WzFdKSplfXRoaXMudHJhbnNmb3JtPVtsKmUsYyplLGgqZSxkKmUsdS1sKmUqYS1oKmUqbyxwLWMqZSphLWQqZSpvXTt0aGlzLndpZHRoPWc7dGhpcy5oZWlnaHQ9bX1jbG9uZSh7c2NhbGU6dD10aGlzLnNjYWxlLHJvdGF0aW9uOmU9dGhpcy5yb3RhdGlvbixvZmZzZXRYOnM9dGhpcy5vZmZzZXRYLG9mZnNldFk6aT10aGlzLm9mZnNldFksZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlld0JveC5zbGljZSgpLHNjYWxlOnQscm90YXRpb246ZSxvZmZzZXRYOnMsb2Zmc2V0WTppLGRvbnRGbGlwOm59KX1jb252ZXJ0VG9WaWV3cG9ydFBvaW50KHQsZSl7cmV0dXJuIG4uVXRpbC5hcHBseVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9Y29udmVydFRvVmlld3BvcnRSZWN0YW5nbGUodCl7Y29uc3QgZT1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMF0sdFsxXV0sdGhpcy50cmFuc2Zvcm0pLHM9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFt0WzJdLHRbM11dLHRoaXMudHJhbnNmb3JtKTtyZXR1cm5bZVswXSxlWzFdLHNbMF0sc1sxXV19Y29udmVydFRvUGRmUG9pbnQodCxlKXtyZXR1cm4gbi5VdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9fWUuUGFnZVZpZXdwb3J0PVBhZ2VWaWV3cG9ydDtjbGFzcyBSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24gZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iKTt0aGlzLnR5cGU9ZX19ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249UmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO2Z1bmN0aW9uIGlzRGF0YVNjaGVtZSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGUmJiIiPT09dFtzXS50cmltKCk7KXMrKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcocyxzKzUpLnRvTG93ZXJDYXNlKCl9ZS5TdGF0VGltZXI9Y2xhc3MgU3RhdFRpbWVye2NvbnN0cnVjdG9yKCl7dGhpcy5zdGFydGVkPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy50aW1lcz1bXX10aW1lKHQpe3QgaW4gdGhpcy5zdGFydGVkJiYoMCxuLndhcm4pKGBUaW1lciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yICR7dH1gKTt0aGlzLnN0YXJ0ZWRbdF09RGF0ZS5ub3coKX10aW1lRW5kKHQpe3QgaW4gdGhpcy5zdGFydGVkfHwoMCxuLndhcm4pKGBUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJHt0fWApO3RoaXMudGltZXMucHVzaCh7bmFtZTp0LHN0YXJ0OnRoaXMuc3RhcnRlZFt0XSxlbmQ6RGF0ZS5ub3coKX0pO2RlbGV0ZSB0aGlzLnN0YXJ0ZWRbdF19dG9TdHJpbmcoKXtjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy50aW1lcyl7Y29uc3Qgcz10Lm5hbWU7cy5sZW5ndGg+ZSYmKGU9cy5sZW5ndGgpfWZvcihjb25zdCBzIG9mIHRoaXMudGltZXMpe2NvbnN0IGk9cy5lbmQtcy5zdGFydDt0LnB1c2goYCR7cy5uYW1lLnBhZEVuZChlKX0gJHtpfW1zXG5gKX1yZXR1cm4gdC5qb2luKCIiKX19O2Z1bmN0aW9uIGlzVmFsaWRGZXRjaFVybCh0LGUpe3RyeXtjb25zdHtwcm90b2NvbDpzfT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO3JldHVybiJodHRwOiI9PT1zfHwiaHR0cHM6Ij09PXN9Y2F0Y2godCl7cmV0dXJuITF9fWxldCByO2UuUERGRGF0ZVN0cmluZz1jbGFzcyBQREZEYXRlU3RyaW5ne3N0YXRpYyB0b0RhdGVPYmplY3QodCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDtyfHwocj1uZXcgUmVnRXhwKCJeRDooXFxkezR9KShcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhbWnwrfC1dKT8oXFxkezJ9KT8nPyhcXGR7Mn0pPyc/IikpO2NvbnN0IGU9ci5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHM9cGFyc2VJbnQoZVsxXSwxMCk7bGV0IGk9cGFyc2VJbnQoZVsyXSwxMCk7aT1pPj0xJiZpPD0xMj9pLTE6MDtsZXQgbj1wYXJzZUludChlWzNdLDEwKTtuPW4+PTEmJm48PTMxP246MTtsZXQgYT1wYXJzZUludChlWzRdLDEwKTthPWE+PTAmJmE8PTIzP2E6MDtsZXQgbz1wYXJzZUludChlWzVdLDEwKTtvPW8+PTAmJm88PTU5P286MDtsZXQgbD1wYXJzZUludChlWzZdLDEwKTtsPWw+PTAmJmw8PTU5P2w6MDtjb25zdCBjPWVbN118fCJaIjtsZXQgaD1wYXJzZUludChlWzhdLDEwKTtoPWg+PTAmJmg8PTIzP2g6MDtsZXQgZD1wYXJzZUludChlWzldLDEwKXx8MDtkPWQ+PTAmJmQ8PTU5P2Q6MDtpZigiLSI9PT1jKXthKz1oO28rPWR9ZWxzZSBpZigiKyI9PT1jKXthLT1oO28tPWR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHMsaSxuLGEsbyxsKSl9fTtmdW5jdGlvbiBnZXRSR0IodCl7aWYodC5zdGFydHNXaXRoKCIjIikpe2NvbnN0IGU9cGFyc2VJbnQodC5zbGljZSgxKSwxNik7cmV0dXJuWygxNjcxMTY4MCZlKT4+MTYsKDY1MjgwJmUpPj44LDI1NSZlXX1pZih0LnN0YXJ0c1dpdGgoInJnYigiKSlyZXR1cm4gdC5zbGljZSg0LC0xKS5zcGxpdCgiLCIpLm1hcCgodD0+cGFyc2VJbnQodCkpKTtpZih0LnN0YXJ0c1dpdGgoInJnYmEoIikpcmV0dXJuIHQuc2xpY2UoNSwtMSkuc3BsaXQoIiwiKS5tYXAoKHQ9PnBhcnNlSW50KHQpKSkuc2xpY2UoMCwzKTsoMCxuLndhcm4pKGBOb3QgYSB2YWxpZCBjb2xvciBmb3JtYXQ6ICIke3R9ImApO3JldHVyblswLDAsMF19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuQmFzZVNWR0ZhY3Rvcnk9ZS5CYXNlQ2FudmFzRmFjdG9yeT1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7dmFyIGk9cygxKTtjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ2FudmFzRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7Y29uc3Qgcz10aGlzLl9jcmVhdGVDYW52YXModCxlKTtyZXR1cm57Y2FudmFzOnMsY29udGV4dDpzLmdldENvbnRleHQoIjJkIil9fXJlc2V0KHQsZSxzKXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO2lmKGU8PTB8fHM8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dC5jYW52YXMud2lkdGg9ZTt0LmNhbnZhcy5oZWlnaHQ9c31kZXN0cm95KHQpe2lmKCF0LmNhbnZhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbnZhcyBpcyBub3Qgc3BlY2lmaWVkIik7dC5jYW52YXMud2lkdGg9MDt0LmNhbnZhcy5oZWlnaHQ9MDt0LmNhbnZhcz1udWxsO3QuY29udGV4dD1udWxsfV9jcmVhdGVDYW52YXModCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuIil9fWUuQmFzZUNhbnZhc0ZhY3Rvcnk9QmFzZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgQmFzZUNNYXBSZWFkZXJGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbCxpc0NvbXByZXNzZWQ6ZT0hMX0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ01hcFJlYWRlckZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlQ01hcFJlYWRlckZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXQ7dGhpcy5pc0NvbXByZXNzZWQ9ZX1hc3luYyBmZXRjaCh7bmFtZTp0fSl7aWYoIXRoaXMuYmFzZVVybCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBDTWFwICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAiY01hcFVybCIgYW5kICJjTWFwUGFja2VkIiBBUEkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuJyk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDTWFwIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIik7Y29uc3QgZT10aGlzLmJhc2VVcmwrdCsodGhpcy5pc0NvbXByZXNzZWQ/Ii5iY21hcCI6IiIpLHM9dGhpcy5pc0NvbXByZXNzZWQ/aS5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWTppLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORTtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUscykuY2F0Y2goKHQ9Pnt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkICR7dGhpcy5pc0NvbXByZXNzZWQ/ImJpbmFyeSAiOiIifUNNYXAgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQsZSl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLiIpfX1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT1CYXNlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbH0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXR9YXN5bmMgZmV0Y2goe2ZpbGVuYW1lOnR9KXtpZighdGhpcy5iYXNlVXJsKXRocm93IG5ldyBFcnJvcignVGhlIHN0YW5kYXJkIGZvbnQgImJhc2VVcmwiIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCwgZW5zdXJlIHRoYXQgdGhlICJzdGFuZGFyZEZvbnREYXRhVXJsIiBBUEkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiRm9udCBmaWxlbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjb25zdCBlPWAke3RoaXMuYmFzZVVybH0ke3R9YDtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUpLmNhdGNoKCh0PT57dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmb250IGRhdGEgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9mZXRjaERhdGFgIGNhbGxlZC4iKX19ZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9QmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIEJhc2VTVkdGYWN0b3J5e2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTVkdGYWN0b3J5JiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNWR0ZhY3RvcnkuIil9Y3JlYXRlKHQsZSxzPSExKXtpZih0PD0wfHxlPD0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZGltZW5zaW9ucyIpO2NvbnN0IGk9dGhpcy5fY3JlYXRlU1ZHKCJzdmc6c3ZnIik7aS5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKTtpZighcyl7aS5zZXRBdHRyaWJ1dGUoIndpZHRoIixgJHt0fXB4YCk7aS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsYCR7ZX1weGApfWkuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwibm9uZSIpO2kuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixgMCAwICR7dH0gJHtlfWApO3JldHVybiBpfWNyZWF0ZUVsZW1lbnQodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZWxlbWVudCB0eXBlIik7cmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KX1fY3JlYXRlU1ZHKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC4iKX19ZS5CYXNlU1ZHRmFjdG9yeT1CYXNlU1ZHRmFjdG9yeX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgaT1zKDEpO2NvbnN0IG49MzI4NTM3NzUyMCxyPTQyOTQ5MDE3NjAsYT02NTUzNTtlLk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6bjt0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0Om59dXBkYXRlKHQpe2xldCBlLHM7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpO3M9MDtmb3IobGV0IGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dC5jaGFyQ29kZUF0KGkpO2lmKG48PTI1NSllW3MrK109bjtlbHNle2VbcysrXT1uPj4+ODtlW3MrK109MjU1Jm59fX1lbHNle2lmKCEoMCxpLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO2U9dC5zbGljZSgpO3M9ZS5ieXRlTGVuZ3RofWNvbnN0IG49cz4+MixvPXMtNCpuLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsbik7bGV0IGM9MCxoPTAsZD10aGlzLmgxLHU9dGhpcy5oMjtjb25zdCBwPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcsbT0xMTYwMSxmPTEzNzE1O2ZvcihsZXQgdD0wO3Q8bjt0KyspaWYoMSZ0KXtjPWxbdF07Yz1jKnAmcnxjKm0mYTtjPWM8PDE1fGM+Pj4xNztjPWMqZyZyfGMqZiZhO2RePWM7ZD1kPDwxM3xkPj4+MTk7ZD01KmQrMzg2NDI5MjE5Nn1lbHNle2g9bFt0XTtoPWgqcCZyfGgqbSZhO2g9aDw8MTV8aD4+PjE3O2g9aCpnJnJ8aCpmJmE7dV49aDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWM9MDtzd2l0Y2gobyl7Y2FzZSAzOmNePWVbNCpuKzJdPDwxNjtjYXNlIDI6Y149ZVs0Km4rMV08PDg7Y2FzZSAxOmNePWVbNCpuXTtjPWMqcCZyfGMqbSZhO2M9Yzw8MTV8Yz4+PjE3O2M9YypnJnJ8YypmJmE7MSZuP2RePWM6dV49Y310aGlzLmgxPWQ7dGhpcy5oMj11fWhleGRpZ2VzdCgpe2xldCB0PXRoaXMuaDEsZT10aGlzLmgyO3RePWU+Pj4xO3Q9Mzk4MTgwNjc5Nyp0JnJ8MzYwNDUqdCZhO2U9NDI4MzU0MzUxMSplJnJ8KDI5NTAxNjM3OTcqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTt0PTQ0NDk4NDQwMyp0JnJ8NjA0OTkqdCZhO2U9MzMwMTg4MjM2NiplJnJ8KDMxMjA0Mzc4OTMqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTtjb25zdCBzPSh0Pj4+MCkudG9TdHJpbmcoMTYpLGk9KGU+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIHMucGFkU3RhcnQoOCwiMCIpK2kucGFkU3RhcnQoOCwiMCIpfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Gb250TG9hZGVyPWUuRm9udEZhY2VPYmplY3Q9dm9pZCAwO3ZhciBpPXMoMSk7ZS5Gb250TG9hZGVyPWNsYXNzIEZvbnRMb2FkZXJ7Y29uc3RydWN0b3Ioe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnQsb3duZXJEb2N1bWVudDplPWdsb2JhbFRoaXMuZG9jdW1lbnQsc3R5bGVFbGVtZW50OnM9bnVsbH0pe3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPXQ7dGhpcy5fZG9jdW1lbnQ9ZTt0aGlzLm5hdGl2ZUZvbnRGYWNlcz1bXTt0aGlzLnN0eWxlRWxlbWVudD1udWxsO3RoaXMubG9hZGluZ1JlcXVlc3RzPVtdO3RoaXMubG9hZFRlc3RGb250SWQ9MH1hZGROYXRpdmVGb250RmFjZSh0KXt0aGlzLm5hdGl2ZUZvbnRGYWNlcy5wdXNoKHQpO3RoaXMuX2RvY3VtZW50LmZvbnRzLmFkZCh0KX1pbnNlcnRSdWxlKHQpe2lmKCF0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpfWNvbnN0IGU9dGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7ZS5pbnNlcnRSdWxlKHQsZS5jc3NSdWxlcy5sZW5ndGgpfWNsZWFyKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO3RoaXMubmF0aXZlRm9udEZhY2VzLmxlbmd0aD0wO2lmKHRoaXMuc3R5bGVFbGVtZW50KXt0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKTt0aGlzLnN0eWxlRWxlbWVudD1udWxsfX1hc3luYyBiaW5kKHQpe2lmKHQuYXR0YWNoZWR8fHQubWlzc2luZ0ZpbGUpcmV0dXJuO3QuYXR0YWNoZWQ9ITA7aWYodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKXtjb25zdCBlPXQuY3JlYXRlTmF0aXZlRm9udEZhY2UoKTtpZihlKXt0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO3RyeXthd2FpdCBlLmxvYWRlZH1jYXRjaChzKXt0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZSh7ZmVhdHVyZUlkOmkuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZE5hdGl2ZX0pOygwLGkud2FybikoYEZhaWxlZCB0byBsb2FkIGZvbnQgJyR7ZS5mYW1pbHl9JzogJyR7c30nLmApO3QuZGlzYWJsZUZvbnRGYWNlPSEwO3Rocm93IHN9fXJldHVybn1jb25zdCBlPXQuY3JlYXRlRm9udEZhY2VSdWxlKCk7aWYoZSl7dGhpcy5pbnNlcnRSdWxlKGUpO2lmKHRoaXMuaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQpcmV0dXJuO2F3YWl0IG5ldyBQcm9taXNlKChlPT57Y29uc3Qgcz10aGlzLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayhlKTt0aGlzLl9wcmVwYXJlRm9udExvYWRFdmVudCh0LHMpfSkpfX1nZXQgaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZCgpe2NvbnN0IHQ9ISF0aGlzLl9kb2N1bWVudD8uZm9udHM7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLHQpfWdldCBpc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCgpe2xldCB0PSExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yKXQ9ITA7ZWxzZXsvTW96aWxsYVwvNS4wLio/cnY6KFxkKykuKj8gR2Vja28vLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk/LlsxXT49MTQmJih0PSEwKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLHQpfV9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KXtjb25zdHtsb2FkaW5nUmVxdWVzdHM6ZX09dGhpcyxzPXtkb25lOiExLGNvbXBsZXRlOmZ1bmN0aW9uIGNvbXBsZXRlUmVxdWVzdCgpeygwLGkuYXNzZXJ0KSghcy5kb25lLCJjb21wbGV0ZVJlcXVlc3QoKSBjYW5ub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3MuZG9uZT0hMDtmb3IoO2UubGVuZ3RoPjAmJmVbMF0uZG9uZTspe2NvbnN0IHQ9ZS5zaGlmdCgpO3NldFRpbWVvdXQodC5jYWxsYmFjaywwKX19LGNhbGxiYWNrOnR9O2UucHVzaChzKTtyZXR1cm4gc31nZXQgX2xvYWRUZXN0Rm9udCgpe2NvbnN0IHQ9YXRvYigiVDFSVVR3QUxBSUFBQXdBd1EwWkdJREh0Wmc0QUFBT1lBQUFBZ1VaR1ZFMWxrelp3QUFBRUhBQUFBQnhIUkVWR0FCUUFGUUFBQkRnQUFBQWVUMU12TWxZTll3a0FBQUVnQUFBQVlHTnRZWEFCRFFMVUFBQUNOQUFBQVVKb1pXRmsveFZGRFFBQUFMd0FBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtRnRaVmptZEg0QUFBR0FBQUFBc1hCdmMzVC9oZ0F6QUFBRGVBQUFBQ0FBQVFBQUFBRUFBTFpSRnNSZkR6ejFBQXNENkFBQUFBRE9CT1RMQUFBQUFNNEtIRHdBQUFBQUErZ0RJUUFBQUFnQUFnQUFBQUFBQUFBQkFBQURJUUFBQUZvRDZBQUFBQUFENkFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBTVFFQ0FBQUNBQVlKQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFGQm1SV1FBd0FBdUFDNERJUDg0QUZvRElRQUFBQUFBQVFBQUFBQUFBQUFBQUNBQUlBQUJBQUFBRGdDdUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBQUFBRUFBUUFBQUFFQUFBQUFBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRQUFBQU1BQVFRSkFBQUFBZ0FCQUFNQUFRUUpBQUVBQWdBQkFBTUFBUVFKQUFJQUFnQUJBQU1BQVFRSkFBTUFBZ0FCQUFNQUFRUUpBQVFBQWdBQkFBTUFBUVFKQUFVQUFnQUJBQU1BQVFRSkFBWUFBZ0FCV0FCWUFBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjQS9nWEJJd01BWXVMK256NXRRWGtENWozQ0JMbkVRQUNBUUVCSVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlBQUFCQVFBQUR3QUNBUUVFRS90M0RvdjZmQUg2ZkFUK2ZQcDgrbndIRG9zTUN2bTFDdm0xREF6NmZCUUFBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnQUJBQUFBQUFBQUFBQUQ2QUFBQUFBQUFBPT0iKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2xvYWRUZXN0Rm9udCIsdCl9X3ByZXBhcmVGb250TG9hZEV2ZW50KHQsZSl7ZnVuY3Rpb24gaW50MzIodCxlKXtyZXR1cm4gdC5jaGFyQ29kZUF0KGUpPDwyNHx0LmNoYXJDb2RlQXQoZSsxKTw8MTZ8dC5jaGFyQ29kZUF0KGUrMik8PDh8MjU1JnQuY2hhckNvZGVBdChlKzMpfWZ1bmN0aW9uIHNwbGljZVN0cmluZyh0LGUscyxpKXtyZXR1cm4gdC5zdWJzdHJpbmcoMCxlKStpK3Quc3Vic3RyaW5nKGUrcyl9bGV0IHMsbjtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Iud2lkdGg9MTtyLmhlaWdodD0xO2NvbnN0IGE9ci5nZXRDb250ZXh0KCIyZCIpO2xldCBvPTA7Y29uc3QgbD1gbHQke0RhdGUubm93KCl9JHt0aGlzLmxvYWRUZXN0Rm9udElkKyt9YDtsZXQgYz10aGlzLl9sb2FkVGVzdEZvbnQ7Yz1zcGxpY2VTdHJpbmcoYyw5NzYsbC5sZW5ndGgsbCk7Y29uc3QgaD0xNDgyMTg0NzkyO2xldCBkPWludDMyKGMsMTYpO2ZvcihzPTAsbj1sLmxlbmd0aC0zO3M8bjtzKz00KWQ9ZC1oK2ludDMyKGwscyl8MDtzPGwubGVuZ3RoJiYoZD1kLWgraW50MzIobCsiWFhYIixzKXwwKTtjPXNwbGljZVN0cmluZyhjLDE2LDQsKDAsaS5zdHJpbmczMikoZCkpO2NvbnN0IHU9YEBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiIke2x9IjtzcmM6JHtgdXJsKGRhdGE6Zm9udC9vcGVudHlwZTtiYXNlNjQsJHtidG9hKGMpfSk7YH19YDt0aGlzLmluc2VydFJ1bGUodSk7Y29uc3QgcD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7cC5zdHlsZS53aWR0aD1wLnN0eWxlLmhlaWdodD0iMTBweCI7cC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3Auc3R5bGUudG9wPXAuc3R5bGUubGVmdD0iMHB4Ijtmb3IoY29uc3QgZSBvZlt0LmxvYWRlZE5hbWUsbF0pe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QudGV4dENvbnRlbnQ9IkhpIjt0LnN0eWxlLmZvbnRGYW1pbHk9ZTtwLmFwcGVuZCh0KX10aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZChwKTshZnVuY3Rpb24gaXNGb250UmVhZHkodCxlKXtpZigrK28+MzApeygwLGkud2FybikoIkxvYWQgdGVzdCBmb250IG5ldmVyIGxvYWRlZC4iKTtlKCk7cmV0dXJufWEuZm9udD0iMzBweCAiK3Q7YS5maWxsVGV4dCgiLiIsMCwyMCk7YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXT4wP2UoKTpzZXRUaW1lb3V0KGlzRm9udFJlYWR5LmJpbmQobnVsbCx0LGUpKX0obCwoKCk9PntwLnJlbW92ZSgpO2UuY29tcGxldGUoKX0pKX19O2UuRm9udEZhY2VPYmplY3Q9Y2xhc3MgRm9udEZhY2VPYmplY3R7Y29uc3RydWN0b3IodCx7aXNFdmFsU3VwcG9ydGVkOmU9ITAsZGlzYWJsZUZvbnRGYWNlOnM9ITEsaWdub3JlRXJyb3JzOmk9ITEsb25VbnN1cHBvcnRlZEZlYXR1cmU6bixmb250UmVnaXN0cnk6cj1udWxsfSl7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHQpdGhpc1tlXT10W2VdO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09ZTt0aGlzLmRpc2FibGVGb250RmFjZT0hMD09PXM7dGhpcy5pZ25vcmVFcnJvcnM9ITA9PT1pO3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPW47dGhpcy5mb250UmVnaXN0cnk9cn1jcmVhdGVOYXRpdmVGb250RmFjZSgpe2lmKCF0aGlzLmRhdGF8fHRoaXMuZGlzYWJsZUZvbnRGYWNlKXJldHVybiBudWxsO2xldCB0O2lmKHRoaXMuY3NzRm9udEluZm8pe2NvbnN0IGU9e3dlaWdodDp0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O3RoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUmJihlLnN0eWxlPWBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWdgKTt0PW5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksdGhpcy5kYXRhLGUpfWVsc2UgdD1uZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLHRoaXMuZGF0YSx7fSk7dGhpcy5mb250UmVnaXN0cnk/LnJlZ2lzdGVyRm9udCh0aGlzKTtyZXR1cm4gdH1jcmVhdGVGb250RmFjZVJ1bGUoKXtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtjb25zdCB0PSgwLGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxlPWB1cmwoZGF0YToke3RoaXMubWltZXR5cGV9O2Jhc2U2NCwke2J0b2EodCl9KTtgO2xldCBzO2lmKHRoaXMuY3NzRm9udEluZm8pe2xldCB0PWBmb250LXdlaWdodDogJHt0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O2A7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHQrPWBmb250LXN0eWxlOiBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWc7YCk7cz1gQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IiR7dGhpcy5jc3NGb250SW5mby5mb250RmFtaWx5fSI7JHt0fXNyYzoke2V9fWB9ZWxzZSBzPWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHt0aGlzLmxvYWRlZE5hbWV9IjtzcmM6JHtlfX1gO3RoaXMuZm9udFJlZ2lzdHJ5Py5yZWdpc3RlckZvbnQodGhpcyxlKTtyZXR1cm4gc31nZXRQYXRoR2VuZXJhdG9yKHQsZSl7aWYodm9pZCAwIT09dGhpcy5jb21waWxlZEdseXBoc1tlXSlyZXR1cm4gdGhpcy5jb21waWxlZEdseXBoc1tlXTtsZXQgczt0cnl7cz10LmdldCh0aGlzLmxvYWRlZE5hbWUrIl9wYXRoXyIrZSl9Y2F0Y2godCl7aWYoIXRoaXMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUoe2ZlYXR1cmVJZDppLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEdldFBhdGh9KTsoMCxpLndhcm4pKGBnZXRQYXRoR2VuZXJhdG9yIC0gaWdub3JpbmcgY2hhcmFjdGVyOiAiJHt0fSIuYCk7cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXt9fWlmKHRoaXMuaXNFdmFsU3VwcG9ydGVkJiZpLkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCBzPXZvaWQgMCE9PWUuYXJncz9lLmFyZ3Muam9pbigiLCIpOiIiO3QucHVzaCgiYy4iLGUuY21kLCIoIixzLCIpO1xuIil9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09bmV3IEZ1bmN0aW9uKCJjIiwic2l6ZSIsdC5qb2luKCIiKSl9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgaSBvZiBzKXsic2NhbGUiPT09aS5jbWQmJihpLmFyZ3M9W2UsLWVdKTt0W2kuY21kXS5hcHBseSh0LGkuYXJncyl9fX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQ2FudmFzR3JhcGhpY3M9dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpLHI9cygxMSksYT1zKDEzKSxvPXMoMTIpO2NvbnN0IGw9NDA5NixjPW8uaXNOb2RlSlMmJiJ1bmRlZmluZWQiPT10eXBlb2YgUGF0aDJEPy0xOjFlMyxoPTE2O2NsYXNzIENhY2hlZENhbnZhc2Vze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FudmFzRmFjdG9yeT10O3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRDYW52YXModCxlLHMpe2xldCBpO2lmKHZvaWQgMCE9PXRoaXMuY2FjaGVbdF0pe2k9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkucmVzZXQoaSxlLHMpfWVsc2V7aT10aGlzLmNhbnZhc0ZhY3RvcnkuY3JlYXRlKGUscyk7dGhpcy5jYWNoZVt0XT1pfXJldHVybiBpfWRlbGV0ZSh0KXtkZWxldGUgdGhpcy5jYWNoZVt0XX1jbGVhcigpe2Zvcihjb25zdCB0IGluIHRoaXMuY2FjaGUpe2NvbnN0IGU9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkuZGVzdHJveShlKTtkZWxldGUgdGhpcy5jYWNoZVt0XX19fWZ1bmN0aW9uIGRyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh0LGUscyxpLHIsYSxvLGwsYyxoKXtjb25zdFtkLHUscCxnLG0sZl09KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KTtpZigwPT09dSYmMD09PXApe2NvbnN0IG49bypkK20sYj1NYXRoLnJvdW5kKG4pLEE9bCpnK2YsXz1NYXRoLnJvdW5kKEEpLHY9KG8rYykqZCttLHk9TWF0aC5hYnMoTWF0aC5yb3VuZCh2KS1iKXx8MSxTPShsK2gpKmcrZix4PU1hdGguYWJzKE1hdGgucm91bmQoUyktXyl8fDE7dC5zZXRUcmFuc2Zvcm0oTWF0aC5zaWduKGQpLDAsMCxNYXRoLnNpZ24oZyksYixfKTt0LmRyYXdJbWFnZShlLHMsaSxyLGEsMCwwLHkseCk7dC5zZXRUcmFuc2Zvcm0oZCx1LHAsZyxtLGYpO3JldHVyblt5LHhdfWlmKDA9PT1kJiYwPT09Zyl7Y29uc3Qgbj1sKnArbSxiPU1hdGgucm91bmQobiksQT1vKnUrZixfPU1hdGgucm91bmQoQSksdj0obCtoKSpwK20seT1NYXRoLmFicyhNYXRoLnJvdW5kKHYpLWIpfHwxLFM9KG8rYykqdStmLHg9TWF0aC5hYnMoTWF0aC5yb3VuZChTKS1fKXx8MTt0LnNldFRyYW5zZm9ybSgwLE1hdGguc2lnbih1KSxNYXRoLnNpZ24ocCksMCxiLF8pO3QuZHJhd0ltYWdlKGUscyxpLHIsYSwwLDAseCx5KTt0LnNldFRyYW5zZm9ybShkLHUscCxnLG0sZik7cmV0dXJuW3gseV19dC5kcmF3SW1hZ2UoZSxzLGkscixhLG8sbCxjLGgpO3JldHVybltNYXRoLmh5cG90KGQsdSkqYyxNYXRoLmh5cG90KHAsZykqaF19Y2xhc3MgQ2FudmFzRXh0cmFTdGF0ZXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYWxwaGFJc1NoYXBlPSExO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLnRleHRNYXRyaXg9aS5JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmZvbnRNYXRyaXg9aS5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLmxlYWRpbmc9MDt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPSIjMDAwMDAwIjt0aGlzLnN0cm9rZUNvbG9yPSIjMDAwMDAwIjt0aGlzLnBhdHRlcm5GaWxsPSExO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5hY3RpdmVTTWFzaz1udWxsO3RoaXMudHJhbnNmZXJNYXBzPW51bGw7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsdCxlXSl9Y2xvbmUoKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5jbGlwQm94PXRoaXMuY2xpcEJveC5zbGljZSgpO3JldHVybiB0fXNldEN1cnJlbnRQb2ludCh0LGUpe3RoaXMueD10O3RoaXMueT1lfXVwZGF0ZVBhdGhNaW5NYXgodCxlLHMpe1tlLHNdPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGUpO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblkscyk7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCxlKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHMpfXVwZGF0ZVJlY3RNaW5NYXgodCxlKXtjb25zdCBzPWkuVXRpbC5hcHBseVRyYW5zZm9ybShlLHQpLG49aS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiksdCk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxzWzBdLG5bMF0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksc1sxXSxuWzFdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHNbMF0sblswXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxzWzFdLG5bMV0pfXVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsZSl7aS5VdGlsLnNjYWxlTWluTWF4KHQsZSk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlWzBdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLGVbMV0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksZVsyXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxlWzNdKX11cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCxlLHMsbixyLGEsbyxsLGMsaCl7Y29uc3QgZD1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxzLG4scixhLG8sbCxjKTtpZihoKXtoWzBdPU1hdGgubWluKGhbMF0sZFswXSxkWzJdKTtoWzFdPU1hdGgubWF4KGhbMV0sZFswXSxkWzJdKTtoWzJdPU1hdGgubWluKGhbMl0sZFsxXSxkWzNdKTtoWzNdPU1hdGgubWF4KGhbM10sZFsxXSxkWzNdKX1lbHNlIHRoaXMudXBkYXRlUmVjdE1pbk1heCh0LGQpfWdldFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe2NvbnN0IHM9W3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV07aWYodD09PXIuUGF0aFR5cGUuU1RST0tFKXtlfHwoMCxpLnVucmVhY2hhYmxlKSgiU3Ryb2tlIGJvdW5kaW5nIGJveCBtdXN0IGluY2x1ZGUgdHJhbnNmb3JtLiIpO2NvbnN0IHQ9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLG49dFswXSp0aGlzLmxpbmVXaWR0aC8yLHI9dFsxXSp0aGlzLmxpbmVXaWR0aC8yO3NbMF0tPW47c1sxXS09cjtzWzJdKz1uO3NbM10rPXJ9cmV0dXJuIHN9dXBkYXRlQ2xpcEZyb21QYXRoKCl7Y29uc3QgdD1pLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnN0YXJ0TmV3UGF0aEFuZENsaXBCb3godHx8WzAsMCwwLDBdKX1pc0VtcHR5Q2xpcCgpe3JldHVybiB0aGlzLm1pblg9PT0xLzB9c3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0KXt0aGlzLmNsaXBCb3g9dDt0aGlzLm1pblg9MS8wO3RoaXMubWluWT0xLzA7dGhpcy5tYXhYPTA7dGhpcy5tYXhZPTB9Z2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe3JldHVybiBpLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCh0LGUpKX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VEYXRhKHQsZSxzPW51bGwpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEYXRhJiZlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKXt0LnB1dEltYWdlRGF0YShlLDAsMCk7cmV0dXJufWNvbnN0IG49ZS5oZWlnaHQscj1lLndpZHRoLGE9biVoLG89KG4tYSkvaCxsPTA9PT1hP286bysxLGM9dC5jcmVhdGVJbWFnZURhdGEocixoKTtsZXQgZCx1PTA7Y29uc3QgcD1lLmRhdGEsZz1jLmRhdGE7bGV0IG0sZixiLEEsXyx2LHksUztpZihzKXN3aXRjaChzLmxlbmd0aCl7Y2FzZSAxOl89c1swXTt2PXNbMF07eT1zWzBdO1M9c1swXTticmVhaztjYXNlIDQ6Xz1zWzBdO3Y9c1sxXTt5PXNbMl07Uz1zWzNdfWlmKGUua2luZD09PWkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXtjb25zdCBlPXAuYnl0ZUxlbmd0aCxzPW5ldyBVaW50MzJBcnJheShnLmJ1ZmZlciwwLGcuYnl0ZUxlbmd0aD4+Miksbj1zLmxlbmd0aCxBPXIrNz4+MztsZXQgXz00Mjk0OTY3Mjk1LHY9aS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtTJiYyNTU9PT1TWzBdJiYwPT09U1syNTVdJiYoW18sdl09W3YsX10pO2ZvcihtPTA7bTxsO20rKyl7Yj1tPG8/aDphO2Q9MDtmb3IoZj0wO2Y8YjtmKyspe2NvbnN0IHQ9ZS11O2xldCBpPTA7Y29uc3Qgbj10PkE/cjo4KnQtNyxhPS04Jm47bGV0IG89MCxsPTA7Zm9yKDtpPGE7aSs9OCl7bD1wW3UrK107c1tkKytdPTEyOCZsP186djtzW2QrK109NjQmbD9fOnY7c1tkKytdPTMyJmw/Xzp2O3NbZCsrXT0xNiZsP186djtzW2QrK109OCZsP186djtzW2QrK109NCZsP186djtzW2QrK109MiZsP186djtzW2QrK109MSZsP186dn1mb3IoO2k8bjtpKyspe2lmKDA9PT1vKXtsPXBbdSsrXTtvPTEyOH1zW2QrK109bCZvP186djtvPj49MX19Zm9yKDtkPG47KXNbZCsrXT0wO3QucHV0SW1hZ2VEYXRhKGMsMCxtKmgpfX1lbHNlIGlmKGUua2luZD09PWkuSW1hZ2VLaW5kLlJHQkFfMzJCUFApe2NvbnN0IGU9ISEoX3x8dnx8eSk7Zj0wO0E9cipoKjQ7Zm9yKG09MDttPG87bSsrKXtnLnNldChwLnN1YmFycmF5KHUsdStBKSk7dSs9QTtpZihlKWZvcihsZXQgdD0wO3Q8QTt0Kz00KXtfJiYoZ1t0KzBdPV9bZ1t0KzBdXSk7diYmKGdbdCsxXT12W2dbdCsxXV0pO3kmJihnW3QrMl09eVtnW3QrMl1dKX10LnB1dEltYWdlRGF0YShjLDAsZik7Zis9aH1pZihtPGwpe0E9ciphKjQ7Zy5zZXQocC5zdWJhcnJheSh1LHUrQSkpO2lmKGUpZm9yKGxldCB0PTA7dDxBO3QrPTQpe18mJihnW3QrMF09X1tnW3QrMF1dKTt2JiYoZ1t0KzFdPXZbZ1t0KzFdXSk7eSYmKGdbdCsyXT15W2dbdCsyXV0pfXQucHV0SW1hZ2VEYXRhKGMsMCxmKX19ZWxzZXtpZihlLmtpbmQhPT1pLkltYWdlS2luZC5SR0JfMjRCUFApdGhyb3cgbmV3IEVycm9yKGBiYWQgaW1hZ2Uga2luZDogJHtlLmtpbmR9YCk7e2NvbnN0IGU9ISEoX3x8dnx8eSk7Yj1oO0E9cipiO2ZvcihtPTA7bTxsO20rKyl7aWYobT49byl7Yj1hO0E9cipifWQ9MDtmb3IoZj1BO2YtLTspe2dbZCsrXT1wW3UrK107Z1tkKytdPXBbdSsrXTtnW2QrK109cFt1KytdO2dbZCsrXT0yNTV9aWYoZSlmb3IobGV0IHQ9MDt0PGQ7dCs9NCl7XyYmKGdbdCswXT1fW2dbdCswXV0pO3YmJihnW3QrMV09dltnW3QrMV1dKTt5JiYoZ1t0KzJdPXlbZ1t0KzJdXSl9dC5wdXRJbWFnZURhdGEoYywwLG0qaCl9fX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKHQsZSl7aWYoZS5iaXRtYXApe3QuZHJhd0ltYWdlKGUuYml0bWFwLDAsMCk7cmV0dXJufWNvbnN0IHM9ZS5oZWlnaHQsaT1lLndpZHRoLG49cyVoLHI9KHMtbikvaCxvPTA9PT1uP3I6cisxLGw9dC5jcmVhdGVJbWFnZURhdGEoaSxoKTtsZXQgYz0wO2NvbnN0IGQ9ZS5kYXRhLHU9bC5kYXRhO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IHM9ZTxyP2g6bjsoe3NyY1BvczpjfT0oMCxhLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzpkLHNyY1BvczpjLGRlc3Q6dSx3aWR0aDppLGhlaWdodDpzfSkpO3QucHV0SW1hZ2VEYXRhKGwsMCxlKmgpfX1mdW5jdGlvbiBjb3B5Q3R4U3RhdGUodCxlKXtjb25zdCBzPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiXTtmb3IoY29uc3QgaSBvZiBzKXZvaWQgMCE9PXRbaV0mJihlW2ldPXRbaV0pO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe2Uuc2V0TGluZURhc2godC5nZXRMaW5lRGFzaCgpKTtlLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR9fWZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQsZSl7dC5zdHJva2VTdHlsZT10LmZpbGxTdHlsZT1lfHwiIzAwMDAwMCI7dC5maWxsUnVsZT0ibm9uemVybyI7dC5nbG9iYWxBbHBoYT0xO3QubGluZVdpZHRoPTE7dC5saW5lQ2FwPSJidXR0Ijt0LmxpbmVKb2luPSJtaXRlciI7dC5taXRlckxpbWl0PTEwO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5mb250PSIxMHB4IHNhbnMtc2VyaWYiO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe3Quc2V0TGluZURhc2goW10pO3QubGluZURhc2hPZmZzZXQ9MH19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQmFja2Ryb3AodCxlLHMsaSl7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IHI9MztyPG47cis9NCl7Y29uc3Qgbj10W3JdO2lmKDA9PT1uKXt0W3ItM109ZTt0W3ItMl09czt0W3ItMV09aX1lbHNlIGlmKG48MjU1KXtjb25zdCBhPTI1NS1uO3Rbci0zXT10W3ItM10qbitlKmE+Pjg7dFtyLTJdPXRbci0yXSpuK3MqYT4+ODt0W3ItMV09dFtyLTFdKm4raSphPj44fX19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQWxwaGEodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9cz9zW3Rbbl1dOnRbbl07ZVtuXT1lW25dKmkqLjAwMzkyMTU2ODYyNzQ1MDk4fDB9fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9NzcqdFtuLTNdKzE1Mip0W24tMl0rMjgqdFtuLTFdO2Vbbl09cz9lW25dKnNbaT4+OF0+Pjg6ZVtuXSppPj4xNn19ZnVuY3Rpb24gY29tcG9zZVNNYXNrKHQsZSxzLGkpe2NvbnN0IG49aVswXSxyPWlbMV0sYT1pWzJdLW4sbz1pWzNdLXI7aWYoMCE9PWEmJjAhPT1vKXshZnVuY3Rpb24gZ2VuZXJpY0NvbXBvc2VTTWFzayh0LGUscyxpLG4scixhLG8sbCxjLGgpe2NvbnN0IGQ9ISFyLHU9ZD9yWzBdOjAscD1kP3JbMV06MCxnPWQ/clsyXTowO2xldCBtO209Ikx1bWlub3NpdHkiPT09bj9jb21wb3NlU01hc2tMdW1pbm9zaXR5OmNvbXBvc2VTTWFza0FscGhhO2NvbnN0IGY9TWF0aC5taW4oaSxNYXRoLmNlaWwoMTA0ODU3Ni9zKSk7Zm9yKGxldCBuPTA7bjxpO24rPWYpe2NvbnN0IHI9TWF0aC5taW4oZixpLW4pLGI9dC5nZXRJbWFnZURhdGEoby1jLG4rKGwtaCkscyxyKSxBPWUuZ2V0SW1hZ2VEYXRhKG8sbitsLHMscik7ZCYmY29tcG9zZVNNYXNrQmFja2Ryb3AoYi5kYXRhLHUscCxnKTttKGIuZGF0YSxBLmRhdGEsYSk7ZS5wdXRJbWFnZURhdGEoQSxvLG4rbCl9fShlLmNvbnRleHQscyxhLG8sZS5zdWJ0eXBlLGUuYmFja2Ryb3AsZS50cmFuc2Zlck1hcCxuLHIsZS5vZmZzZXRYLGUub2Zmc2V0WSk7dC5zYXZlKCk7dC5nbG9iYWxBbHBoYT0xO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3QuZHJhd0ltYWdlKHMuY2FudmFzLDAsMCk7dC5yZXN0b3JlKCl9fWZ1bmN0aW9uIGdldEltYWdlU21vb3RoaW5nRW5hYmxlZCh0LGUpe2NvbnN0IHM9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHQpO3NbMF09TWF0aC5mcm91bmQoc1swXSk7c1sxXT1NYXRoLmZyb3VuZChzWzFdKTtjb25zdCByPU1hdGguZnJvdW5kKChnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpKm4uUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTKTtyZXR1cm4gdm9pZCAwIT09ZT9lOnNbMF08PXJ8fHNbMV08PXJ9Y29uc3QgZD1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLHU9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxwPXt9LGc9e307Y2xhc3MgQ2FudmFzR3JhcGhpY3N7Y29uc3RydWN0b3IodCxlLHMsaSxuLHIsYSl7dGhpcy5jdHg9dDt0aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMuc3RhdGVTdGFjaz1bXTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMucmVzPW51bGw7dGhpcy54b2Jqcz1udWxsO3RoaXMuY29tbW9uT2Jqcz1lO3RoaXMub2Jqcz1zO3RoaXMuY2FudmFzRmFjdG9yeT1pO3RoaXMuZ3JvdXBTdGFjaz1bXTt0aGlzLnByb2Nlc3NpbmdUeXBlMz1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybT1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZ3JvdXBMZXZlbD0wO3RoaXMuc21hc2tTdGFjaz1bXTt0aGlzLnNtYXNrQ291bnRlcj0wO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5zdXNwZW5kZWRDdHg9bnVsbDt0aGlzLmNvbnRlbnRWaXNpYmxlPSEwO3RoaXMubWFya2VkQ29udGVudFN0YWNrPVtdO3RoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnPW47dGhpcy5jYWNoZWRDYW52YXNlcz1uZXcgQ2FjaGVkQ2FudmFzZXModGhpcy5jYW52YXNGYWN0b3J5KTt0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXA7dGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPXI7dGhpcy52aWV3cG9ydFNjYWxlPTE7dGhpcy5vdXRwdXRTY2FsZVg9MTt0aGlzLm91dHB1dFNjYWxlWT0xO3RoaXMuYmFja2dyb3VuZENvbG9yPWE/LmJhY2tncm91bmR8fG51bGw7dGhpcy5mb3JlZ3JvdW5kQ29sb3I9YT8uZm9yZWdyb3VuZHx8bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXA9bmV3IE1hcH1nZXRPYmplY3QodCxlPW51bGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzLmdldCh0KTp0aGlzLm9ianMuZ2V0KHQpOmV9YmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06dCx2aWV3cG9ydDplLHRyYW5zcGFyZW5jeTpzPSExLGJhY2tncm91bmQ6aT1udWxsfSl7Y29uc3Qgcj10aGlzLmN0eC5jYW52YXMud2lkdGgsYT10aGlzLmN0eC5jYW52YXMuaGVpZ2h0LG89aXx8IiNmZmZmZmYiO3RoaXMuY3R4LnNhdmUoKTtpZih0aGlzLmZvcmVncm91bmRDb2xvciYmdGhpcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmZvcmVncm91bmRDb2xvcjtjb25zdCB0PXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuY3R4LmZpbGxTdHlsZTt0aGlzLmN0eC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3I7Y29uc3QgZT10aGlzLmJhY2tncm91bmRDb2xvcj10aGlzLmN0eC5maWxsU3R5bGU7bGV0IHM9ITAsaT1vO3RoaXMuY3R4LmZpbGxTdHlsZT1vO2k9dGhpcy5jdHguZmlsbFN0eWxlO3M9InN0cmluZyI9PXR5cGVvZiBpJiYvXiNbMC05QS1GYS1mXXs2fSQvLnRlc3QoaSk7aWYoIiMwMDAwMDAiPT09dCYmIiNmZmZmZmYiPT09ZXx8dD09PWV8fCFzKXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGw7ZWxzZXtjb25zdFtzLHIsYV09KDAsbi5nZXRSR0IpKGkpLG5ld0NvbXA9dD0+KHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOigodCsuMDU1KS8xLjA1NSkqKjIuNCxvPU1hdGgucm91bmQoLjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKHIpKy4wNzIyKm5ld0NvbXAoYSkpO3RoaXMuc2VsZWN0Q29sb3I9KHMsaSxuKT0+e2NvbnN0IHI9LjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKGkpKy4wNzIyKm5ld0NvbXAobik7cmV0dXJuIE1hdGgucm91bmQocik9PT1vP2U6dH19fXRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcnx8bzt0aGlzLmN0eC5maWxsUmVjdCgwLDAscixhKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYocyl7Y29uc3QgdD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygidHJhbnNwYXJlbnQiLHIsYSk7dGhpcy5jb21wb3NpdGVDdHg9dGhpcy5jdHg7dGhpcy50cmFuc3BhcmVudENhbnZhcz10LmNhbnZhczt0aGlzLmN0eD10LmNvbnRleHQ7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnRyYW5zZm9ybSguLi4oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY29tcG9zaXRlQ3R4KSl9dGhpcy5jdHguc2F2ZSgpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTtpZih0KXt0aGlzLmN0eC50cmFuc2Zvcm0oLi4udCk7dGhpcy5vdXRwdXRTY2FsZVg9dFswXTt0aGlzLm91dHB1dFNjYWxlWT10WzBdfXRoaXMuY3R4LnRyYW5zZm9ybSguLi5lLnRyYW5zZm9ybSk7dGhpcy52aWV3cG9ydFNjYWxlPWUuc2NhbGU7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpfWV4ZWN1dGVPcGVyYXRvckxpc3QodCxlLHMsbil7Y29uc3Qgcj10LmFyZ3NBcnJheSxhPXQuZm5BcnJheTtsZXQgbz1lfHwwO2NvbnN0IGw9ci5sZW5ndGg7aWYobD09PW8pcmV0dXJuIG87Y29uc3QgYz1sLW8+MTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLGg9Yz9EYXRlLm5vdygpKzE1OjA7bGV0IGQ9MDtjb25zdCB1PXRoaXMuY29tbW9uT2JqcyxwPXRoaXMub2JqcztsZXQgZztmb3IoOzspe2lmKHZvaWQgMCE9PW4mJm89PT1uLm5leHRCcmVha1BvaW50KXtuLmJyZWFrSXQobyxzKTtyZXR1cm4gb31nPWFbb107aWYoZyE9PWkuT1BTLmRlcGVuZGVuY3kpdGhpc1tnXS5hcHBseSh0aGlzLHJbb10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgcltvXSl7Y29uc3QgZT10LnN0YXJ0c1dpdGgoImdfIik/dTpwO2lmKCFlLmhhcyh0KSl7ZS5nZXQodCxzKTtyZXR1cm4gb319bysrO2lmKG89PT1sKXJldHVybiBvO2lmKGMmJisrZD4xMCl7aWYoRGF0ZS5ub3coKT5oKXtzKCk7cmV0dXJuIG99ZD0wfX19I3N0KCl7Zm9yKDt0aGlzLnN0YXRlU3RhY2subGVuZ3RofHx0aGlzLmluU01hc2tNb2RlOyl0aGlzLnJlc3RvcmUoKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYodGhpcy50cmFuc3BhcmVudENhbnZhcyl7dGhpcy5jdHg9dGhpcy5jb21wb3NpdGVDdHg7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguZHJhd0ltYWdlKHRoaXMudHJhbnNwYXJlbnRDYW52YXMsMCwwKTt0aGlzLmN0eC5yZXN0b3JlKCk7dGhpcy50cmFuc3BhcmVudENhbnZhcz1udWxsfX1lbmREcmF3aW5nKCl7dGhpcy4jc3QoKTt0aGlzLmNhY2hlZENhbnZhc2VzLmNsZWFyKCk7dGhpcy5jYWNoZWRQYXR0ZXJucy5jbGVhcigpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAudmFsdWVzKCkpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50JiYoZS53aWR0aD1lLmhlaWdodD0wKTt0LmNsZWFyKCl9dGhpcy5fY2FjaGVkQml0bWFwc01hcC5jbGVhcigpfV9zY2FsZUltYWdlKHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQ7bGV0IG4scixhPU1hdGgubWF4KE1hdGguaHlwb3QoZVswXSxlWzFdKSwxKSxvPU1hdGgubWF4KE1hdGguaHlwb3QoZVsyXSxlWzNdKSwxKSxsPXMsYz1pLGg9InByZXNjYWxlMSI7Zm9yKDthPjImJmw+MXx8bz4yJiZjPjE7KXtsZXQgZT1sLHM9YztpZihhPjImJmw+MSl7ZT1NYXRoLmNlaWwobC8yKTthLz1sL2V9aWYobz4yJiZjPjEpe3M9TWF0aC5jZWlsKGMvMik7by89Yy9zfW49dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoaCxlLHMpO3I9bi5jb250ZXh0O3IuY2xlYXJSZWN0KDAsMCxlLHMpO3IuZHJhd0ltYWdlKHQsMCwwLGwsYywwLDAsZSxzKTt0PW4uY2FudmFzO2w9ZTtjPXM7aD0icHJlc2NhbGUxIj09PWg/InByZXNjYWxlMiI6InByZXNjYWxlMSJ9cmV0dXJue2ltZzp0LHBhaW50V2lkdGg6bCxwYWludEhlaWdodDpjfX1fY3JlYXRlTWFza0NhbnZhcyh0KXtjb25zdCBlPXRoaXMuY3R4LHt3aWR0aDpzLGhlaWdodDphfT10LG89dGhpcy5jdXJyZW50LmZpbGxDb2xvcixsPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCxjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7bGV0IGgsZCx1LHA7aWYoKHQuYml0bWFwfHx0LmRhdGEpJiZ0LmNvdW50PjEpe2NvbnN0IGU9dC5iaXRtYXB8fHQuZGF0YS5idWZmZXI7ZD1KU09OLnN0cmluZ2lmeShsP2M6W2Muc2xpY2UoMCw0KSxvXSk7aD10aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmdldChlKTtpZighaCl7aD1uZXcgTWFwO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXAuc2V0KGUsaCl9Y29uc3Qgcz1oLmdldChkKTtpZihzJiYhbCl7cmV0dXJue2NhbnZhczpzLG9mZnNldFg6TWF0aC5yb3VuZChNYXRoLm1pbihjWzBdLGNbMl0pK2NbNF0pLG9mZnNldFk6TWF0aC5yb3VuZChNYXRoLm1pbihjWzFdLGNbM10pK2NbNV0pfX11PXN9aWYoIXUpe3A9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoIm1hc2tDYW52YXMiLHMsYSk7cHV0QmluYXJ5SW1hZ2VNYXNrKHAuY29udGV4dCx0KX1sZXQgZz1pLlV0aWwudHJhbnNmb3JtKGMsWzEvcywwLDAsLTEvYSwwLDBdKTtnPWkuVXRpbC50cmFuc2Zvcm0oZyxbMSwwLDAsMSwwLC1hXSk7Y29uc3QgbT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sZyksZj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsYV0sZyksYj1pLlV0aWwubm9ybWFsaXplUmVjdChbbVswXSxtWzFdLGZbMF0sZlsxXV0pLEE9TWF0aC5yb3VuZChiWzJdLWJbMF0pfHwxLF89TWF0aC5yb3VuZChiWzNdLWJbMV0pfHwxLHY9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImZpbGxDYW52YXMiLEEsXykseT12LmNvbnRleHQsUz1NYXRoLm1pbihtWzBdLGZbMF0pLHg9TWF0aC5taW4obVsxXSxmWzFdKTt5LnRyYW5zbGF0ZSgtUywteCk7eS50cmFuc2Zvcm0oLi4uZyk7aWYoIXUpe3U9dGhpcy5fc2NhbGVJbWFnZShwLmNhbnZhcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKSh5KSk7dT11LmltZztoJiZsJiZoLnNldChkLHUpfXkuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh5LHUsMCwwLHUud2lkdGgsdS5oZWlnaHQsMCwwLHMsYSk7eS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiI7Y29uc3QgRT1pLlV0aWwudHJhbnNmb3JtKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKHkpLFsxLDAsMCwxLC1TLC14XSk7eS5maWxsU3R5bGU9bD9vLmdldFBhdHRlcm4oZSx0aGlzLEUsci5QYXRoVHlwZS5GSUxMKTpvO3kuZmlsbFJlY3QoMCwwLHMsYSk7aWYoaCYmIWwpe3RoaXMuY2FjaGVkQ2FudmFzZXMuZGVsZXRlKCJmaWxsQ2FudmFzIik7aC5zZXQoZCx2LmNhbnZhcyl9cmV0dXJue2NhbnZhczp2LmNhbnZhcyxvZmZzZXRYOk1hdGgucm91bmQoUyksb2Zmc2V0WTpNYXRoLnJvdW5kKHgpfX1zZXRMaW5lV2lkdGgodCl7dCE9PXRoaXMuY3VycmVudC5saW5lV2lkdGgmJih0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwpO3RoaXMuY3VycmVudC5saW5lV2lkdGg9dDt0aGlzLmN0eC5saW5lV2lkdGg9dH1zZXRMaW5lQ2FwKHQpe3RoaXMuY3R4LmxpbmVDYXA9ZFt0XX1zZXRMaW5lSm9pbih0KXt0aGlzLmN0eC5saW5lSm9pbj11W3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdHgubWl0ZXJMaW1pdD10fXNldERhc2godCxlKXtjb25zdCBzPXRoaXMuY3R4O2lmKHZvaWQgMCE9PXMuc2V0TGluZURhc2gpe3Muc2V0TGluZURhc2godCk7cy5saW5lRGFzaE9mZnNldD1lfX1zZXRSZW5kZXJpbmdJbnRlbnQodCl7fXNldEZsYXRuZXNzKHQpe31zZXRHU3RhdGUodCl7Zm9yKGNvbnN0W2Usc11vZiB0KXN3aXRjaChlKXtjYXNlIkxXIjp0aGlzLnNldExpbmVXaWR0aChzKTticmVhaztjYXNlIkxDIjp0aGlzLnNldExpbmVDYXAocyk7YnJlYWs7Y2FzZSJMSiI6dGhpcy5zZXRMaW5lSm9pbihzKTticmVhaztjYXNlIk1MIjp0aGlzLnNldE1pdGVyTGltaXQocyk7YnJlYWs7Y2FzZSJEIjp0aGlzLnNldERhc2goc1swXSxzWzFdKTticmVhaztjYXNlIlJJIjp0aGlzLnNldFJlbmRlcmluZ0ludGVudChzKTticmVhaztjYXNlIkZMIjp0aGlzLnNldEZsYXRuZXNzKHMpO2JyZWFrO2Nhc2UiRm9udCI6dGhpcy5zZXRGb250KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJDQSI6dGhpcy5jdXJyZW50LnN0cm9rZUFscGhhPXM7YnJlYWs7Y2FzZSJjYSI6dGhpcy5jdXJyZW50LmZpbGxBbHBoYT1zO3RoaXMuY3R4Lmdsb2JhbEFscGhhPXM7YnJlYWs7Y2FzZSJCTSI6dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPXM7YnJlYWs7Y2FzZSJTTWFzayI6dGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrPXM/dGhpcy50ZW1wU01hc2s6bnVsbDt0aGlzLnRlbXBTTWFzaz1udWxsO3RoaXMuY2hlY2tTTWFza1N0YXRlKCk7YnJlYWs7Y2FzZSJUUiI6dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcz1zfX1nZXQgaW5TTWFza01vZGUoKXtyZXR1cm4hIXRoaXMuc3VzcGVuZGVkQ3R4fWNoZWNrU01hc2tTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5pblNNYXNrTW9kZTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJiF0P3RoaXMuYmVnaW5TTWFza01vZGUoKTohdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrJiZ0JiZ0aGlzLmVuZFNNYXNrTW9kZSgpfWJlZ2luU01hc2tNb2RlKCl7aWYodGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luU01hc2tNb2RlIGNhbGxlZCB3aGlsZSBhbHJlYWR5IGluIHNtYXNrIG1vZGUiKTtjb25zdCB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQscz0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhzLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9aS5jb250ZXh0O2NvbnN0IHI9dGhpcy5jdHg7ci5zZXRUcmFuc2Zvcm0oLi4uKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLnN1c3BlbmRlZEN0eCkpO2NvcHlDdHhTdGF0ZSh0aGlzLnN1c3BlbmRlZEN0eCxyKTshZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlO3QuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlO3QuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZTt0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlO3QuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZTt0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm07dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtO3QuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm07dC5fX29yaWdpbmFsQ2xpcD10LmNsaXA7dC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvO3QuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbzt0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbzt0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdDt0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGg7dC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoO3QuX3JlbW92ZU1pcnJvcmluZz0oKT0+e3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlO3QucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlO3Qucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZTt0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlO3QudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZTt0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm07dC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtO3QucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm07dC5jbGlwPXQuX19vcmlnaW5hbENsaXA7dC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvO3QubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbzt0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbzt0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdDt0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGg7dC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoO2RlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9O3Quc2F2ZT1mdW5jdGlvbiBjdHhTYXZlKCl7ZS5zYXZlKCk7dGhpcy5fX29yaWdpbmFsU2F2ZSgpfTt0LnJlc3RvcmU9ZnVuY3Rpb24gY3R4UmVzdG9yZSgpe2UucmVzdG9yZSgpO3RoaXMuX19vcmlnaW5hbFJlc3RvcmUoKX07dC50cmFuc2xhdGU9ZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQscyl7ZS50cmFuc2xhdGUodCxzKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2xhdGUodCxzKX07dC5zY2FsZT1mdW5jdGlvbiBjdHhTY2FsZSh0LHMpe2Uuc2NhbGUodCxzKTt0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LHMpfTt0LnRyYW5zZm9ybT1mdW5jdGlvbiBjdHhUcmFuc2Zvcm0odCxzLGksbixyLGEpe2UudHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnNldFRyYW5zZm9ybT1mdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpe2Uuc2V0VHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnJlc2V0VHJhbnNmb3JtPWZ1bmN0aW9uIGN0eFJlc2V0VHJhbnNmb3JtKCl7ZS5yZXNldFRyYW5zZm9ybSgpO3RoaXMuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtKCl9O3Qucm90YXRlPWZ1bmN0aW9uIGN0eFJvdGF0ZSh0KXtlLnJvdGF0ZSh0KTt0aGlzLl9fb3JpZ2luYWxSb3RhdGUodCl9O3QuY2xpcD1mdW5jdGlvbiBjdHhSb3RhdGUodCl7ZS5jbGlwKHQpO3RoaXMuX19vcmlnaW5hbENsaXAodCl9O3QubW92ZVRvPWZ1bmN0aW9uKHQscyl7ZS5tb3ZlVG8odCxzKTt0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxzKX07dC5saW5lVG89ZnVuY3Rpb24odCxzKXtlLmxpbmVUbyh0LHMpO3RoaXMuX19vcmlnaW5hbExpbmVUbyh0LHMpfTt0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxzLGksbixyLGEpe2UuYmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSk7dGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSl9O3QucmVjdD1mdW5jdGlvbih0LHMsaSxuKXtlLnJlY3QodCxzLGksbik7dGhpcy5fX29yaWdpbmFsUmVjdCh0LHMsaSxuKX07dC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpO3RoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfTt0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCk7dGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShyLHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX1lbmRTTWFza01vZGUoKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCk7Y29weUN0eFN0YXRlKHRoaXMuY3R4LHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLmN0eD10aGlzLnN1c3BlbmRlZEN0eDt0aGlzLnN1c3BlbmRlZEN0eD1udWxsfWNvbXBvc2UodCl7aWYoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaylyZXR1cm47aWYodCl7dFswXT1NYXRoLmZsb29yKHRbMF0pO3RbMV09TWF0aC5mbG9vcih0WzFdKTt0WzJdPU1hdGguY2VpbCh0WzJdKTt0WzNdPU1hdGguY2VpbCh0WzNdKX1lbHNlIHQ9WzAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodF07Y29uc3QgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7Y29tcG9zZVNNYXNrKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCk7dGhpcy5jdHgucmVzdG9yZSgpfXNhdmUoKXtpZih0aGlzLmluU01hc2tNb2RlKXtjb3B5Q3R4U3RhdGUodGhpcy5jdHgsdGhpcy5zdXNwZW5kZWRDdHgpO3RoaXMuc3VzcGVuZGVkQ3R4LnNhdmUoKX1lbHNlIHRoaXMuY3R4LnNhdmUoKTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXswPT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCYmdGhpcy5pblNNYXNrTW9kZSYmdGhpcy5lbmRTTWFza01vZGUoKTtpZigwIT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCl7dGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCk7Y29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LHRoaXMuY3R4KX1lbHNlIHRoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsfX10cmFuc2Zvcm0odCxlLHMsaSxuLHIpe3RoaXMuY3R4LnRyYW5zZm9ybSh0LGUscyxpLG4scik7dGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH1jb25zdHJ1Y3RQYXRoKHQsZSxzKXtjb25zdCByPXRoaXMuY3R4LGE9dGhpcy5jdXJyZW50O2xldCBvLGwsYz1hLngsaD1hLnk7Y29uc3QgZD0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHIpLHU9MD09PWRbMF0mJjA9PT1kWzNdfHwwPT09ZFsxXSYmMD09PWRbMl0scD11P3Muc2xpY2UoMCk6bnVsbDtmb3IobGV0IHM9MCxuPTAsZz10Lmxlbmd0aDtzPGc7cysrKXN3aXRjaCgwfHRbc10pe2Nhc2UgaS5PUFMucmVjdGFuZ2xlOmM9ZVtuKytdO2g9ZVtuKytdO2NvbnN0IHQ9ZVtuKytdLHM9ZVtuKytdLGc9Yyt0LG09aCtzO3IubW92ZVRvKGMsaCk7aWYoMD09PXR8fDA9PT1zKXIubGluZVRvKGcsbSk7ZWxzZXtyLmxpbmVUbyhnLGgpO3IubGluZVRvKGcsbSk7ci5saW5lVG8oYyxtKX11fHxhLnVwZGF0ZVJlY3RNaW5NYXgoZCxbYyxoLGcsbV0pO3IuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSBpLk9QUy5tb3ZlVG86Yz1lW24rK107aD1lW24rK107ci5tb3ZlVG8oYyxoKTt1fHxhLnVwZGF0ZVBhdGhNaW5NYXgoZCxjLGgpO2JyZWFrO2Nhc2UgaS5PUFMubGluZVRvOmM9ZVtuKytdO2g9ZVtuKytdO3IubGluZVRvKGMsaCk7dXx8YS51cGRhdGVQYXRoTWluTWF4KGQsYyxoKTticmVhaztjYXNlIGkuT1BTLmN1cnZlVG86bz1jO2w9aDtjPWVbbis0XTtoPWVbbis1XTtyLmJlemllckN1cnZlVG8oZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10sYyxoLHApO24rPTY7YnJlYWs7Y2FzZSBpLk9QUy5jdXJ2ZVRvMjpvPWM7bD1oO3IuYmV6aWVyQ3VydmVUbyhjLGgsZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsYyxoLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10scCk7Yz1lW24rMl07aD1lW24rM107bis9NDticmVhaztjYXNlIGkuT1BTLmN1cnZlVG8zOm89YztsPWg7Yz1lW24rMl07aD1lW24rM107ci5iZXppZXJDdXJ2ZVRvKGVbbl0sZVtuKzFdLGMsaCxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGMsaCxjLGgscCk7bis9NDticmVhaztjYXNlIGkuT1BTLmNsb3NlUGF0aDpyLmNsb3NlUGF0aCgpfXUmJmEudXBkYXRlU2NhbGluZ1BhdGhNaW5NYXgoZCxwKTthLnNldEN1cnJlbnRQb2ludChjLGgpfWNsb3NlUGF0aCgpe3RoaXMuY3R4LmNsb3NlUGF0aCgpfXN0cm9rZSh0KXt0PXZvaWQgMD09PXR8fHQ7Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcjtlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5zdHJva2VBbHBoYTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKWlmKCJvYmplY3QiPT10eXBlb2YgcyYmcz8uZ2V0UGF0dGVybil7ZS5zYXZlKCk7ZS5zdHJva2VTdHlsZT1zLmdldFBhdHRlcm4oZSx0aGlzLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLHIuUGF0aFR5cGUuU1RST0tFKTt0aGlzLnJlc2NhbGVBbmRTdHJva2UoITEpO2UucmVzdG9yZSgpfWVsc2UgdGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCEwKTt0JiZ0aGlzLmNvbnN1bWVQYXRoKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpO2UuZ2xvYmFsQWxwaGE9dGhpcy5jdXJyZW50LmZpbGxBbHBoYX1jbG9zZVN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5zdHJva2UoKX1maWxsKHQpe3Q9dm9pZCAwPT09dHx8dDtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LmZpbGxDb2xvcjtsZXQgaT0hMTtpZih0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwpe2Uuc2F2ZSgpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTtpPSEwfWNvbnN0IGE9dGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlJiZudWxsIT09YSlpZih0aGlzLnBlbmRpbmdFT0ZpbGwpe2UuZmlsbCgiZXZlbm9kZCIpO3RoaXMucGVuZGluZ0VPRmlsbD0hMX1lbHNlIGUuZmlsbCgpO2kmJmUucmVzdG9yZSgpO3QmJnRoaXMuY29uc3VtZVBhdGgoYSl9ZW9GaWxsKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbCgpfWZpbGxTdHJva2UoKXt0aGlzLmZpbGwoITEpO3RoaXMuc3Ryb2tlKCExKTt0aGlzLmNvbnN1bWVQYXRoKCl9ZW9GaWxsU3Ryb2tlKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmZpbGxTdHJva2UoKX1lbmRQYXRoKCl7dGhpcy5jb25zdW1lUGF0aCgpfWNsaXAoKXt0aGlzLnBlbmRpbmdDbGlwPXB9ZW9DbGlwKCl7dGhpcy5wZW5kaW5nQ2xpcD1nfWJlZ2luVGV4dCgpe3RoaXMuY3VycmVudC50ZXh0TWF0cml4PWkuSURFTlRJVFlfTUFUUklYO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH1lbmRUZXh0KCl7Y29uc3QgdD10aGlzLnBlbmRpbmdUZXh0UGF0aHMsZT10aGlzLmN0eDtpZih2b2lkIDAhPT10KXtlLnNhdmUoKTtlLmJlZ2luUGF0aCgpO2Zvcihjb25zdCBzIG9mIHQpe2Uuc2V0VHJhbnNmb3JtKC4uLnMudHJhbnNmb3JtKTtlLnRyYW5zbGF0ZShzLngscy55KTtzLmFkZFRvUGF0aChlLHMuZm9udFNpemUpfWUucmVzdG9yZSgpO2UuY2xpcCgpO2UuYmVnaW5QYXRoKCk7ZGVsZXRlIHRoaXMucGVuZGluZ1RleHRQYXRoc31lbHNlIGUuYmVnaW5QYXRoKCl9c2V0Q2hhclNwYWNpbmcodCl7dGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nPXR9c2V0V29yZFNwYWNpbmcodCl7dGhpcy5jdXJyZW50LndvcmRTcGFjaW5nPXR9c2V0SFNjYWxlKHQpe3RoaXMuY3VycmVudC50ZXh0SFNjYWxlPXQvMTAwfXNldExlYWRpbmcodCl7dGhpcy5jdXJyZW50LmxlYWRpbmc9LXR9c2V0Rm9udCh0LGUpe2NvbnN0IHM9dGhpcy5jb21tb25PYmpzLmdldCh0KSxuPXRoaXMuY3VycmVudDtpZighcyl0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgZm9udCBmb3IgJHt0fWApO24uZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVg7MCE9PW4uZm9udE1hdHJpeFswXSYmMCE9PW4uZm9udE1hdHJpeFszXXx8KDAsaS53YXJuKSgiSW52YWxpZCBmb250IG1hdHJpeCBmb3IgZm9udCAiK3QpO2lmKGU8MCl7ZT0tZTtuLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBuLmZvbnREaXJlY3Rpb249MTt0aGlzLmN1cnJlbnQuZm9udD1zO3RoaXMuY3VycmVudC5mb250U2l6ZT1lO2lmKHMuaXNUeXBlM0ZvbnQpcmV0dXJuO2NvbnN0IHI9cy5sb2FkZWROYW1lfHwic2Fucy1zZXJpZiI7bGV0IGE9Im5vcm1hbCI7cy5ibGFjaz9hPSI5MDAiOnMuYm9sZCYmKGE9ImJvbGQiKTtjb25zdCBvPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiLGw9YCIke3J9IiwgJHtzLmZhbGxiYWNrTmFtZX1gO2xldCBjPWU7ZTwxNj9jPTE2OmU+MTAwJiYoYz0xMDApO3RoaXMuY3VycmVudC5mb250U2l6ZVNjYWxlPWUvYzt0aGlzLmN0eC5mb250PWAke299ICR7YX0gJHtjfXB4ICR7bH1gfXNldFRleHRSZW5kZXJpbmdNb2RlKHQpe3RoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZT10fXNldFRleHRSaXNlKHQpe3RoaXMuY3VycmVudC50ZXh0UmlzZT10fW1vdmVUZXh0KHQsZSl7dGhpcy5jdXJyZW50Lng9dGhpcy5jdXJyZW50LmxpbmVYKz10O3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWSs9ZX1zZXRMZWFkaW5nTW92ZVRleHQodCxlKXt0aGlzLnNldExlYWRpbmcoLWUpO3RoaXMubW92ZVRleHQodCxlKX1zZXRUZXh0TWF0cml4KHQsZSxzLGksbixyKXt0aGlzLmN1cnJlbnQudGV4dE1hdHJpeD1bdCxlLHMsaSxuLHJdO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9TWF0aC5oeXBvdCh0LGUpO3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wO3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfW5leHRMaW5lKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX1wYWludENoYXIodCxlLHMscil7Y29uc3QgYT10aGlzLmN0eCxvPXRoaXMuY3VycmVudCxsPW8uZm9udCxjPW8udGV4dFJlbmRlcmluZ01vZGUsaD1vLmZvbnRTaXplL28uZm9udFNpemVTY2FsZSxkPWMmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLLHU9ISEoYyZpLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpLHA9by5wYXR0ZXJuRmlsbCYmIWwubWlzc2luZ0ZpbGU7bGV0IGc7KGwuZGlzYWJsZUZvbnRGYWNlfHx1fHxwKSYmKGc9bC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2Jqcyx0KSk7aWYobC5kaXNhYmxlRm9udEZhY2V8fHApe2Euc2F2ZSgpO2EudHJhbnNsYXRlKGUscyk7YS5iZWdpblBhdGgoKTtnKGEsaCk7ciYmYS5zZXRUcmFuc2Zvcm0oLi4ucik7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuZmlsbCgpO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuc3Ryb2tlKCk7YS5yZXN0b3JlKCl9ZWxzZXtkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5maWxsVGV4dCh0LGUscyk7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5zdHJva2VUZXh0KHQsZSxzKX1pZih1KXsodGhpcy5wZW5kaW5nVGV4dFBhdGhzfHwodGhpcy5wZW5kaW5nVGV4dFBhdGhzPVtdKSkucHVzaCh7dHJhbnNmb3JtOigwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoYSkseDplLHk6cyxmb250U2l6ZTpoLGFkZFRvUGF0aDpnfSl9fWdldCBpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCgpe2NvbnN0e2NvbnRleHQ6dH09dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIiwxMCwxMCk7dC5zY2FsZSgxLjUsMSk7dC5maWxsVGV4dCgiSSIsMCwxMCk7Y29uc3QgZT10LmdldEltYWdlRGF0YSgwLDAsMTAsMTApLmRhdGE7bGV0IHM9ITE7Zm9yKGxldCB0PTM7dDxlLmxlbmd0aDt0Kz00KWlmKGVbdF0+MCYmZVt0XTwyNTUpe3M9ITA7YnJlYWt9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIixzKX1zaG93VGV4dCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxzPWUuZm9udDtpZihzLmlzVHlwZTNGb250KXJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7Y29uc3QgYT1lLmZvbnRTaXplO2lmKDA9PT1hKXJldHVybjtjb25zdCBvPXRoaXMuY3R4LGw9ZS5mb250U2l6ZVNjYWxlLGM9ZS5jaGFyU3BhY2luZyxoPWUud29yZFNwYWNpbmcsZD1lLmZvbnREaXJlY3Rpb24sdT1lLnRleHRIU2NhbGUqZCxwPXQubGVuZ3RoLGc9cy52ZXJ0aWNhbCxtPWc/MTotMSxmPXMuZGVmYXVsdFZNZXRyaWNzLGI9YSplLmZvbnRNYXRyaXhbMF0sQT1lLnRleHRSZW5kZXJpbmdNb2RlPT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiYhcy5kaXNhYmxlRm9udEZhY2UmJiFlLnBhdHRlcm5GaWxsO28uc2F2ZSgpO28udHJhbnNmb3JtKC4uLmUudGV4dE1hdHJpeCk7by50cmFuc2xhdGUoZS54LGUueStlLnRleHRSaXNlKTtkPjA/by5zY2FsZSh1LC0xKTpvLnNjYWxlKHUsMSk7bGV0IF87aWYoZS5wYXR0ZXJuRmlsbCl7by5zYXZlKCk7Y29uc3QgdD1lLmZpbGxDb2xvci5nZXRQYXR0ZXJuKG8sdGhpcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShvKSxyLlBhdGhUeXBlLkZJTEwpO189KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShvKTtvLnJlc3RvcmUoKTtvLmZpbGxTdHlsZT10fWxldCB2PWUubGluZVdpZHRoO2NvbnN0IHk9ZS50ZXh0TWF0cml4U2NhbGU7aWYoMD09PXl8fDA9PT12KXtjb25zdCB0PWUudGV4dFJlbmRlcmluZ01vZGUmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLO3QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmdCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fCh2PXRoaXMuZ2V0U2luZ2xlUGl4ZWxXaWR0aCgpKX1lbHNlIHYvPXk7aWYoMSE9PWwpe28uc2NhbGUobCxsKTt2Lz1sfW8ubGluZVdpZHRoPXY7bGV0IFMseD0wO2ZvcihTPTA7UzxwOysrUyl7Y29uc3QgZT10W1NdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7eCs9bSplKmEvMWUzO2NvbnRpbnVlfWxldCBpPSExO2NvbnN0IG49KGUuaXNTcGFjZT9oOjApK2Mscj1lLmZvbnRDaGFyLHU9ZS5hY2NlbnQ7bGV0IHAsdix5LEU9ZS53aWR0aDtpZihnKXtjb25zdCB0PWUudm1ldHJpY3x8ZixzPS0oZS52bWV0cmljP3RbMV06LjUqRSkqYixpPXRbMl0qYjtFPXQ/LXRbMF06RTtwPXMvbDt2PSh4K2kpL2x9ZWxzZXtwPXgvbDt2PTB9aWYocy5yZW1lYXN1cmUmJkU+MCl7Y29uc3QgdD0xZTMqby5tZWFzdXJlVGV4dChyKS53aWR0aC9hKmw7aWYoRTx0JiZ0aGlzLmlzRm9udFN1YnBpeGVsQUFFbmFibGVkKXtjb25zdCBlPUUvdDtpPSEwO28uc2F2ZSgpO28uc2NhbGUoZSwxKTtwLz1lfWVsc2UgRSE9PXQmJihwKz0oRS10KS8yZTMqYS9sKX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlJiYoZS5pc0luRm9udHx8cy5taXNzaW5nRmlsZSkpaWYoQSYmIXUpby5maWxsVGV4dChyLHAsdik7ZWxzZXt0aGlzLnBhaW50Q2hhcihyLHAsdixfKTtpZih1KXtjb25zdCB0PXArYSp1Lm9mZnNldC54L2wsZT12LWEqdS5vZmZzZXQueS9sO3RoaXMucGFpbnRDaGFyKHUuZm9udENoYXIsdCxlLF8pfX15PWc/RSpiLW4qZDpFKmIrbipkO3grPXk7aSYmby5yZXN0b3JlKCl9Zz9lLnktPXg6ZS54Kz14KnU7by5yZXN0b3JlKCk7dGhpcy5jb21wb3NlKCl9c2hvd1R5cGUzVGV4dCh0KXtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LG49cy5mb250LHI9cy5mb250U2l6ZSxhPXMuZm9udERpcmVjdGlvbixvPW4udmVydGljYWw/MTotMSxsPXMuY2hhclNwYWNpbmcsYz1zLndvcmRTcGFjaW5nLGg9cy50ZXh0SFNjYWxlKmEsZD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVgsdT10Lmxlbmd0aDtsZXQgcCxnLG0sZjtpZighKHMudGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSkmJjAhPT1yKXt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO2Uuc2F2ZSgpO2UudHJhbnNmb3JtKC4uLnMudGV4dE1hdHJpeCk7ZS50cmFuc2xhdGUocy54LHMueSk7ZS5zY2FsZShoLGEpO2ZvcihwPTA7cDx1OysrcCl7Zz10W3BdO2lmKCJudW1iZXIiPT10eXBlb2YgZyl7Zj1vKmcqci8xZTM7dGhpcy5jdHgudHJhbnNsYXRlKGYsMCk7cy54Kz1mKmg7Y29udGludWV9Y29uc3QgYT0oZy5pc1NwYWNlP2M6MCkrbCx1PW4uY2hhclByb2NPcGVyYXRvckxpc3RbZy5vcGVyYXRvckxpc3RJZF07aWYoIXUpeygwLGkud2FybikoYFR5cGUzIGNoYXJhY3RlciAiJHtnLm9wZXJhdG9yTGlzdElkfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb250aW51ZX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt0aGlzLnByb2Nlc3NpbmdUeXBlMz1nO3RoaXMuc2F2ZSgpO2Uuc2NhbGUocixyKTtlLnRyYW5zZm9ybSguLi5kKTt0aGlzLmV4ZWN1dGVPcGVyYXRvckxpc3QodSk7dGhpcy5yZXN0b3JlKCl9bT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2cud2lkdGgsMF0sZClbMF0qcithO2UudHJhbnNsYXRlKG0sMCk7cy54Kz1tKmh9ZS5yZXN0b3JlKCk7dGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbH19c2V0Q2hhcldpZHRoKHQsZSl7fXNldENoYXJXaWR0aEFuZEJvdW5kcyh0LGUscyxpLG4scil7dGhpcy5jdHgucmVjdChzLGksbi1zLHItaSk7dGhpcy5jdHguY2xpcCgpO3RoaXMuZW5kUGF0aCgpfWdldENvbG9yTl9QYXR0ZXJuKHQpe2xldCBlO2lmKCJUaWxpbmdQYXR0ZXJuIj09PXRbMF0pe2NvbnN0IHM9dFsxXSxpPXRoaXMuYmFzZVRyYW5zZm9ybXx8KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksYT17Y3JlYXRlQ2FudmFzR3JhcGhpY3M6dD0+bmV3IENhbnZhc0dyYXBoaWNzKHQsdGhpcy5jb21tb25PYmpzLHRoaXMub2Jqcyx0aGlzLmNhbnZhc0ZhY3RvcnkpfTtlPW5ldyByLlRpbGluZ1BhdHRlcm4odCxzLHRoaXMuY3R4LGEsaSl9ZWxzZSBlPXRoaXMuX2dldFBhdHRlcm4odFsxXSx0WzJdKTtyZXR1cm4gZX1zZXRTdHJva2VDb2xvck4oKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dGhpcy5nZXRDb2xvck5fUGF0dGVybihhcmd1bWVudHMpfXNldEZpbGxDb2xvck4oKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITB9c2V0U3Ryb2tlUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguc3Ryb2tlU3R5bGU9bjt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9bn1zZXRGaWxsUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguZmlsbFN0eWxlPW47dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1uO3RoaXMuY3VycmVudC5wYXR0ZXJuRmlsbD0hMX1fZ2V0UGF0dGVybih0LGU9bnVsbCl7bGV0IHM7aWYodGhpcy5jYWNoZWRQYXR0ZXJucy5oYXModCkpcz10aGlzLmNhY2hlZFBhdHRlcm5zLmdldCh0KTtlbHNle3M9KDAsci5nZXRTaGFkaW5nUGF0dGVybikodGhpcy5vYmpzLmdldCh0KSk7dGhpcy5jYWNoZWRQYXR0ZXJucy5zZXQodCxzKX1lJiYocy5tYXRyaXg9ZSk7cmV0dXJuIHN9c2hhZGluZ0ZpbGwodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dGhpcy5jdHg7dGhpcy5zYXZlKCk7Y29uc3Qgcz10aGlzLl9nZXRQYXR0ZXJuKHQpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5TSEFESU5HKTtjb25zdCBhPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpO2lmKGEpe2NvbnN0IHQ9ZS5jYW52YXMscz10LndpZHRoLG49dC5oZWlnaHQscj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sYSksbz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsbl0sYSksbD1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsMF0sYSksYz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3Msbl0sYSksaD1NYXRoLm1pbihyWzBdLG9bMF0sbFswXSxjWzBdKSxkPU1hdGgubWluKHJbMV0sb1sxXSxsWzFdLGNbMV0pLHU9TWF0aC5tYXgoclswXSxvWzBdLGxbMF0sY1swXSkscD1NYXRoLm1heChyWzFdLG9bMV0sbFsxXSxjWzFdKTt0aGlzLmN0eC5maWxsUmVjdChoLGQsdS1oLHAtZCl9ZWxzZSB0aGlzLmN0eC5maWxsUmVjdCgtMWUxMCwtMWUxMCwyZTEwLDJlMTApO3RoaXMuY29tcG9zZSh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnJlc3RvcmUoKX1iZWdpbklubGluZUltYWdlKCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlIil9YmVnaW5JbWFnZURhdGEoKXsoMCxpLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhIil9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5zYXZlKCk7dGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmJhc2VUcmFuc2Zvcm0pO0FycmF5LmlzQXJyYXkodCkmJjY9PT10Lmxlbmd0aCYmdGhpcy50cmFuc2Zvcm0oLi4udCk7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO2lmKGUpe2NvbnN0IHQ9ZVsyXS1lWzBdLHM9ZVszXS1lWzFdO3RoaXMuY3R4LnJlY3QoZVswXSxlWzFdLHQscyk7dGhpcy5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksZSk7dGhpcy5jbGlwKCk7dGhpcy5lbmRQYXRoKCl9fX1wYWludEZvcm1YT2JqZWN0RW5kKCl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5yZXN0b3JlKCk7dGhpcy5iYXNlVHJhbnNmb3JtPXRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnBvcCgpfX1iZWdpbkdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjt0aGlzLnNhdmUoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLmVuZFNNYXNrTW9kZSgpO3RoaXMuY3VycmVudC5hY3RpdmVTTWFzaz1udWxsfWNvbnN0IGU9dGhpcy5jdHg7dC5pc29sYXRlZHx8KDAsaS5pbmZvKSgiVE9ETzogU3VwcG9ydCBub24taXNvbGF0ZWQgZ3JvdXBzLiIpO3Qua25vY2tvdXQmJigwLGkud2FybikoIktub2Nrb3V0IGdyb3VwcyBub3Qgc3VwcG9ydGVkLiIpO2NvbnN0IHM9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTt0Lm1hdHJpeCYmZS50cmFuc2Zvcm0oLi4udC5tYXRyaXgpO2lmKCF0LmJib3gpdGhyb3cgbmV3IEVycm9yKCJCb3VuZGluZyBib3ggaXMgcmVxdWlyZWQuIik7bGV0IHI9aS5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQuYmJveCwoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpKTtjb25zdCBhPVswLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0XTtyPWkuVXRpbC5pbnRlcnNlY3QocixhKXx8WzAsMCwwLDBdO2NvbnN0IG89TWF0aC5mbG9vcihyWzBdKSxjPU1hdGguZmxvb3IoclsxXSk7bGV0IGg9TWF0aC5tYXgoTWF0aC5jZWlsKHJbMl0pLW8sMSksZD1NYXRoLm1heChNYXRoLmNlaWwoclszXSktYywxKSx1PTEscD0xO2lmKGg+bCl7dT1oL2w7aD1sfWlmKGQ+bCl7cD1kL2w7ZD1sfXRoaXMuY3VycmVudC5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsaCxkXSk7bGV0IGc9Imdyb3VwQXQiK3RoaXMuZ3JvdXBMZXZlbDt0LnNtYXNrJiYoZys9Il9zbWFza18iK3RoaXMuc21hc2tDb3VudGVyKyslMik7Y29uc3QgbT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhnLGgsZCksZj1tLmNvbnRleHQ7Zi5zY2FsZSgxL3UsMS9wKTtmLnRyYW5zbGF0ZSgtbywtYyk7Zi50cmFuc2Zvcm0oLi4ucyk7aWYodC5zbWFzayl0aGlzLnNtYXNrU3RhY2sucHVzaCh7Y2FudmFzOm0uY2FudmFzLGNvbnRleHQ6ZixvZmZzZXRYOm8sb2Zmc2V0WTpjLHNjYWxlWDp1LHNjYWxlWTpwLHN1YnR5cGU6dC5zbWFzay5zdWJ0eXBlLGJhY2tkcm9wOnQuc21hc2suYmFja2Ryb3AsdHJhbnNmZXJNYXA6dC5zbWFzay50cmFuc2Zlck1hcHx8bnVsbCxzdGFydFRyYW5zZm9ybUludmVyc2U6bnVsbH0pO2Vsc2V7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UudHJhbnNsYXRlKG8sYyk7ZS5zY2FsZSh1LHApO2Uuc2F2ZSgpfWNvcHlDdHhTdGF0ZShlLGYpO3RoaXMuY3R4PWY7dGhpcy5zZXRHU3RhdGUoW1siQk0iLCJzb3VyY2Utb3ZlciJdLFsiY2EiLDFdLFsiQ0EiLDFdXSk7dGhpcy5ncm91cFN0YWNrLnB1c2goZSk7dGhpcy5ncm91cExldmVsKyt9ZW5kR3JvdXAodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO3RoaXMuZ3JvdXBMZXZlbC0tO2NvbnN0IGU9dGhpcy5jdHgscz10aGlzLmdyb3VwU3RhY2sucG9wKCk7dGhpcy5jdHg9czt0aGlzLmN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7aWYodC5zbWFzayl7dGhpcy50ZW1wU01hc2s9dGhpcy5zbWFza1N0YWNrLnBvcCgpO3RoaXMucmVzdG9yZSgpfWVsc2V7dGhpcy5jdHgucmVzdG9yZSgpO2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7dGhpcy5yZXN0b3JlKCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSguLi50KTtjb25zdCBzPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF0sdCk7dGhpcy5jdHguZHJhd0ltYWdlKGUuY2FudmFzLDAsMCk7dGhpcy5jdHgucmVzdG9yZSgpO3RoaXMuY29tcG9zZShzKX19YmVnaW5Bbm5vdGF0aW9uKHQsZSxzLHIsYSl7dGhpcy4jc3QoKTtyZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCx0aGlzLmZvcmVncm91bmRDb2xvcik7dGhpcy5jdHguc2F2ZSgpO3RoaXMuc2F2ZSgpO3RoaXMuYmFzZVRyYW5zZm9ybSYmdGhpcy5jdHguc2V0VHJhbnNmb3JtKC4uLnRoaXMuYmFzZVRyYW5zZm9ybSk7aWYoQXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoKXtjb25zdCByPWVbMl0tZVswXSxvPWVbM10tZVsxXTtpZihhJiZ0aGlzLmFubm90YXRpb25DYW52YXNNYXApeyhzPXMuc2xpY2UoKSlbNF0tPWVbMF07c1s1XS09ZVsxXTsoZT1lLnNsaWNlKCkpWzBdPWVbMV09MDtlWzJdPXI7ZVszXT1vO2NvbnN0W2EsbF09aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpKSx7dmlld3BvcnRTY2FsZTpjfT10aGlzLGg9TWF0aC5jZWlsKHIqdGhpcy5vdXRwdXRTY2FsZVgqYyksZD1NYXRoLmNlaWwobyp0aGlzLm91dHB1dFNjYWxlWSpjKTt0aGlzLmFubm90YXRpb25DYW52YXM9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShoLGQpO2NvbnN0e2NhbnZhczp1LGNvbnRleHQ6cH09dGhpcy5hbm5vdGF0aW9uQ2FudmFzO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCx1KTt0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9cDt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oYSwwLDAsLWwsMCxvKmwpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKX1lbHNle3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTt0aGlzLmN0eC5yZWN0KGVbMF0sZVsxXSxyLG8pO3RoaXMuY3R4LmNsaXAoKTt0aGlzLmVuZFBhdGgoKX19dGhpcy5jdXJyZW50PW5ldyBDYW52YXNFeHRyYVN0YXRlKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTt0aGlzLnRyYW5zZm9ybSguLi5zKTt0aGlzLnRyYW5zZm9ybSguLi5yKX1lbmRBbm5vdGF0aW9uKCl7aWYodGhpcy5hbm5vdGF0aW9uQ2FudmFzKXt0aGlzLmN0eD10aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg7ZGVsZXRlIHRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eDtkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzfX1wYWludEltYWdlTWFza1hPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC5jb3VudDsodD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCkpLmNvdW50PWU7Y29uc3Qgcz10aGlzLmN0eCxpPXRoaXMucHJvY2Vzc2luZ1R5cGUzO2lmKGkpe3ZvaWQgMD09PWkuY29tcGlsZWQmJihpLmNvbXBpbGVkPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHQpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnN9PXQ7aWYoZT5jfHxzPmMpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxuPWUrMTtsZXQgcixhLG8sbD1uZXcgVWludDhBcnJheShuKihzKzEpKTtjb25zdCBoPWUrNyYtODtsZXQgZD1uZXcgVWludDhBcnJheShoKnMpLHU9MDtmb3IoY29uc3QgZSBvZiB0LmRhdGEpe2xldCB0PTEyODtmb3IoO3Q+MDspe2RbdSsrXT1lJnQ/MDoyNTU7dD4+PTF9fWxldCBwPTA7dT0wO2lmKDAhPT1kW3VdKXtsWzBdPTE7KytwfWZvcihhPTE7YTxlO2ErKyl7aWYoZFt1XSE9PWRbdSsxXSl7bFthXT1kW3VdPzI6MTsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW2FdPTI7KytwfWZvcihyPTE7cjxzO3IrKyl7dT1yKmg7bz1yKm47aWYoZFt1LWhdIT09ZFt1XSl7bFtvXT1kW3VdPzE6ODsrK3B9bGV0IHQ9KGRbdV0/NDowKSsoZFt1LWhdPzg6MCk7Zm9yKGE9MTthPGU7YSsrKXt0PSh0Pj4yKSsoZFt1KzFdPzQ6MCkrKGRbdS1oKzFdPzg6MCk7aWYoaVt0XSl7bFtvK2FdPWlbdF07KytwfXUrK31pZihkW3UtaF0hPT1kW3VdKXtsW28rYV09ZFt1XT8yOjQ7KytwfWlmKHA+MWUzKXJldHVybiBudWxsfXU9aCoocy0xKTtvPXIqbjtpZigwIT09ZFt1XSl7bFtvXT04OysrcH1mb3IoYT0xO2E8ZTthKyspe2lmKGRbdV0hPT1kW3UrMV0pe2xbbythXT1kW3VdPzQ6ODsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW28rYV09NDsrK3B9aWYocD4xZTMpcmV0dXJuIG51bGw7Y29uc3QgZz1uZXcgSW50MzJBcnJheShbMCxuLC0xLDAsLW4sMCwwLDAsMV0pLG09bmV3IFBhdGgyRDtmb3Iocj0wO3AmJnI8PXM7cisrKXtsZXQgdD1yKm47Y29uc3Qgcz10K2U7Zm9yKDt0PHMmJiFsW3RdOyl0Kys7aWYodD09PXMpY29udGludWU7bS5tb3ZlVG8odCVuLHIpO2NvbnN0IGk9dDtsZXQgYT1sW3RdO2Rve2NvbnN0IGU9Z1thXTtkb3t0Kz1lfXdoaWxlKCFsW3RdKTtjb25zdCBzPWxbdF07aWYoNSE9PXMmJjEwIT09cyl7YT1zO2xbdF09MH1lbHNle2E9cyY1MSphPj40O2xbdF0mPWE+PjJ8YTw8Mn1tLmxpbmVUbyh0JW4sdC9ufDApO2xbdF18fC0tcH13aGlsZShpIT09dCk7LS1yfWQ9bnVsbDtsPW51bGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3Quc2F2ZSgpO3Quc2NhbGUoMS9lLC0xL3MpO3QudHJhbnNsYXRlKDAsLXMpO3QuZmlsbChtKTt0LmJlZ2luUGF0aCgpO3QucmVzdG9yZSgpfX0odCkpO2lmKGkuY29tcGlsZWQpe2kuY29tcGlsZWQocyk7cmV0dXJufX1jb25zdCBuPXRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCkscj1uLmNhbnZhcztzLnNhdmUoKTtzLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7cy5kcmF3SW1hZ2UocixuLm9mZnNldFgsbi5vZmZzZXRZKTtzLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQodCxlLHM9MCxyPTAsYSxvKXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCk7Y29uc3QgbD10aGlzLmN0eDtsLnNhdmUoKTtjb25zdCBjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7bC50cmFuc2Zvcm0oZSxzLHIsYSwwLDApO2NvbnN0IGg9dGhpcy5fY3JlYXRlTWFza0NhbnZhcyh0KTtsLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCs9Mil7Y29uc3Qgbj1pLlV0aWwudHJhbnNmb3JtKGMsW2UscyxyLGEsb1t0XSxvW3QrMV1dKSxbZCx1XT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sbik7bC5kcmF3SW1hZ2UoaC5jYW52YXMsZCx1KX1sLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RHcm91cCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5maWxsQ29sb3IsaT10aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3R7ZGF0YTp0LHdpZHRoOm8saGVpZ2h0OmwsdHJhbnNmb3JtOmN9PWEsaD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsbyxsKSxkPWguY29udGV4dDtkLnNhdmUoKTtwdXRCaW5hcnlJbWFnZU1hc2soZCx0aGlzLmdldE9iamVjdCh0LGEpKTtkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLWluIjtkLmZpbGxTdHlsZT1pP3MuZ2V0UGF0dGVybihkLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTpzO2QuZmlsbFJlY3QoMCwwLG8sbCk7ZC5yZXN0b3JlKCk7ZS5zYXZlKCk7ZS50cmFuc2Zvcm0oLi4uYyk7ZS5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoZSxoLmNhbnZhcywwLDAsbyxsLDAsLTEsMSwxKTtlLnJlc3RvcmUoKX10aGlzLmNvbXBvc2UoKX1wYWludEltYWdlWE9iamVjdCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsaS53YXJuKSgiRGVwZW5kZW50IGltYWdlIGlzbid0IHJlYWR5IHlldCIpfXBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KHQsZSxzLG4pe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCByPXRoaXMuZ2V0T2JqZWN0KHQpO2lmKCFyKXsoMCxpLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iik7cmV0dXJufWNvbnN0IGE9ci53aWR0aCxvPXIuaGVpZ2h0LGw9W107Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCs9MilsLnB1c2goe3RyYW5zZm9ybTpbZSwwLDAscyxuW3RdLG5bdCsxXV0seDowLHk6MCx3OmEsaDpvfSk7dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHIsbCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC53aWR0aCxzPXQuaGVpZ2h0LGk9dGhpcy5jdHg7dGhpcy5zYXZlKCk7aS5zY2FsZSgxL2UsLTEvcyk7bGV0IHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpcj10O2Vsc2V7Y29uc3QgaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaW5saW5lSW1hZ2UiLGUscyk7cHV0QmluYXJ5SW1hZ2VEYXRhKGkuY29udGV4dCx0LHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMpO3I9aS5jYW52YXN9Y29uc3QgYT10aGlzLl9zY2FsZUltYWdlKHIsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoaSkpO2kuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhpLGEuaW1nLDAsMCxhLnBhaW50V2lkdGgsYS5wYWludEhlaWdodCwwLC1zLGUscyk7dGhpcy5jb21wb3NlKCk7dGhpcy5yZXN0b3JlKCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCh0LGUpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBzPXRoaXMuY3R4LGk9dC53aWR0aCxuPXQuaGVpZ2h0LHI9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixpLG4pO3B1dEJpbmFyeUltYWdlRGF0YShyLmNvbnRleHQsdCx0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzKTtmb3IoY29uc3QgdCBvZiBlKXtzLnNhdmUoKTtzLnRyYW5zZm9ybSguLi50LnRyYW5zZm9ybSk7cy5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMocyxyLmNhbnZhcyx0LngsdC55LHQudyx0LmgsMCwtMSwxLDEpO3MucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3RoaXMuY29tcG9zZSgpfX1tYXJrUG9pbnQodCl7fW1hcmtQb2ludFByb3BzKHQsZSl7fWJlZ2luTWFya2VkQ29udGVudCh0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9YmVnaW5NYXJrZWRDb250ZW50UHJvcHModCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWVuZE1hcmtlZENvbnRlbnQoKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWJlZ2luQ29tcGF0KCl7fWVuZENvbXBhdCgpe31jb25zdW1lUGF0aCh0KXtjb25zdCBlPXRoaXMuY3VycmVudC5pc0VtcHR5Q2xpcCgpO3RoaXMucGVuZGluZ0NsaXAmJnRoaXMuY3VycmVudC51cGRhdGVDbGlwRnJvbVBhdGgoKTt0aGlzLnBlbmRpbmdDbGlwfHx0aGlzLmNvbXBvc2UodCk7Y29uc3Qgcz10aGlzLmN0eDtpZih0aGlzLnBlbmRpbmdDbGlwKXtlfHwodGhpcy5wZW5kaW5nQ2xpcD09PWc/cy5jbGlwKCJldmVub2RkIik6cy5jbGlwKCkpO3RoaXMucGVuZGluZ0NsaXA9bnVsbH10aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7cy5iZWdpblBhdGgoKX1nZXRTaW5nbGVQaXhlbFdpZHRoKCl7aWYoIXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGgpe2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PXRbMV0mJjA9PT10WzJdKXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9MS9NYXRoLm1pbihNYXRoLmFicyh0WzBdKSxNYXRoLmFicyh0WzNdKSk7ZWxzZXtjb25zdCBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLHM9TWF0aC5oeXBvdCh0WzBdLHRbMl0pLGk9TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgocyxpKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH1nZXRTY2FsZUZvclN0cm9raW5nKCl7aWYoIXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcpe2NvbnN0e2xpbmVXaWR0aDp0fT10aGlzLmN1cnJlbnQsZT0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtsZXQgcyxpO2lmKDA9PT1lWzFdJiYwPT09ZVsyXSl7Y29uc3Qgbj1NYXRoLmFicyhlWzBdKSxyPU1hdGguYWJzKGVbM10pO2lmKDA9PT10KXtzPTEvbjtpPTEvcn1lbHNle2NvbnN0IGU9bip0LGE9cip0O3M9ZTwxPzEvZToxO2k9YTwxPzEvYToxfX1lbHNle2NvbnN0IG49TWF0aC5hYnMoZVswXSplWzNdLWVbMl0qZVsxXSkscj1NYXRoLmh5cG90KGVbMF0sZVsxXSksYT1NYXRoLmh5cG90KGVbMl0sZVszXSk7aWYoMD09PXQpe3M9YS9uO2k9ci9ufWVsc2V7Y29uc3QgZT10Km47cz1hPmU/YS9lOjE7aT1yPmU/ci9lOjF9fXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9W3MsaV19cmV0dXJuIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmd9cmVzY2FsZUFuZFN0cm9rZSh0KXtjb25zdHtjdHg6ZX09dGhpcyx7bGluZVdpZHRoOnN9PXRoaXMuY3VycmVudCxbaSxyXT10aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKTtlLmxpbmVXaWR0aD1zfHwxO2lmKDE9PT1pJiYxPT09cil7ZS5zdHJva2UoKTtyZXR1cm59bGV0IGEsbyxsO2lmKHQpe2E9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTtvPWUuZ2V0TGluZURhc2goKS5zbGljZSgpO2w9ZS5saW5lRGFzaE9mZnNldH1lLnNjYWxlKGkscik7Y29uc3QgYz1NYXRoLm1heChpLHIpO2Uuc2V0TGluZURhc2goZS5nZXRMaW5lRGFzaCgpLm1hcCgodD0+dC9jKSkpO2UubGluZURhc2hPZmZzZXQvPWM7ZS5zdHJva2UoKTtpZih0KXtlLnNldFRyYW5zZm9ybSguLi5hKTtlLnNldExpbmVEYXNoKG8pO2UubGluZURhc2hPZmZzZXQ9bH19aXNDb250ZW50VmlzaWJsZSgpe2ZvcihsZXQgdD10aGlzLm1hcmtlZENvbnRlbnRTdGFjay5sZW5ndGgtMTt0Pj0wO3QtLSlpZighdGhpcy5tYXJrZWRDb250ZW50U3RhY2tbdF0udmlzaWJsZSlyZXR1cm4hMTtyZXR1cm4hMH19ZS5DYW52YXNHcmFwaGljcz1DYW52YXNHcmFwaGljcztmb3IoY29uc3QgdCBpbiBpLk9QUyl2b2lkIDAhPT1DYW52YXNHcmFwaGljcy5wcm90b3R5cGVbdF0mJihDYW52YXNHcmFwaGljcy5wcm90b3R5cGVbaS5PUFNbdF1dPUNhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UaWxpbmdQYXR0ZXJuPWUuUGF0aFR5cGU9dm9pZCAwO2UuZ2V0U2hhZGluZ1BhdHRlcm49ZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCl7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtjYXNlIk1lc2giOnJldHVybiBuZXcgTWVzaFNoYWRpbmdQYXR0ZXJuKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgRHVtbXlTaGFkaW5nUGF0dGVybn10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSVIgdHlwZTogJHt0WzBdfWApfTt2YXIgaT1zKDEpLG49cyg2KSxyPXMoMTIpO2NvbnN0IGE9e0ZJTEw6IkZpbGwiLFNUUk9LRToiU3Ryb2tlIixTSEFESU5HOiJTaGFkaW5nIn07ZS5QYXRoVHlwZT1hO2Z1bmN0aW9uIGFwcGx5Qm91bmRpbmdCb3godCxlKXtpZighZXx8ci5pc05vZGVKUylyZXR1cm47Y29uc3Qgcz1lWzJdLWVbMF0saT1lWzNdLWVbMV0sbj1uZXcgUGF0aDJEO24ucmVjdChlWzBdLGVbMV0scyxpKTt0LmNsaXAobil9Y2xhc3MgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nUGF0dGVybiYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nUGF0dGVybi4iKX1nZXRQYXR0ZXJuKCl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGF0dGVybmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fdHlwZT10WzFdO3RoaXMuX2Jib3g9dFsyXTt0aGlzLl9jb2xvclN0b3BzPXRbM107dGhpcy5fcDA9dFs0XTt0aGlzLl9wMT10WzVdO3RoaXMuX3IwPXRbNl07dGhpcy5fcjE9dFs3XTt0aGlzLm1hdHJpeD1udWxsfV9jcmVhdGVHcmFkaWVudCh0KXtsZXQgZTsiYXhpYWwiPT09dGhpcy5fdHlwZT9lPXQuY3JlYXRlTGluZWFyR3JhZGllbnQodGhpcy5fcDBbMF0sdGhpcy5fcDBbMV0sdGhpcy5fcDFbMF0sdGhpcy5fcDFbMV0pOiJyYWRpYWwiPT09dGhpcy5fdHlwZSYmKGU9dC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9yMCx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSx0aGlzLl9yMSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NvbG9yU3RvcHMpZS5hZGRDb2xvclN0b3AodFswXSx0WzFdKTtyZXR1cm4gZX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2xldCBvO2lmKHI9PT1hLlNUUk9LRXx8cj09PWEuRklMTCl7Y29uc3QgYT1lLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveChyLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpfHxbMCwwLDAsMF0sbD1NYXRoLmNlaWwoYVsyXS1hWzBdKXx8MSxjPU1hdGguY2VpbChhWzNdLWFbMV0pfHwxLGg9ZS5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoInBhdHRlcm4iLGwsYywhMCksZD1oLmNvbnRleHQ7ZC5jbGVhclJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC5iZWdpblBhdGgoKTtkLnJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC50cmFuc2xhdGUoLWFbMF0sLWFbMV0pO3M9aS5VdGlsLnRyYW5zZm9ybShzLFsxLDAsMCwxLGFbMF0sYVsxXV0pO2QudHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7dGhpcy5tYXRyaXgmJmQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KTthcHBseUJvdW5kaW5nQm94KGQsdGhpcy5fYmJveCk7ZC5maWxsU3R5bGU9dGhpcy5fY3JlYXRlR3JhZGllbnQoZCk7ZC5maWxsKCk7bz10LmNyZWF0ZVBhdHRlcm4oaC5jYW52YXMsIm5vLXJlcGVhdCIpO2NvbnN0IHU9bmV3IERPTU1hdHJpeChzKTtvLnNldFRyYW5zZm9ybSh1KX1lbHNle2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtvPXRoaXMuX2NyZWF0ZUdyYWRpZW50KHQpfXJldHVybiBvfX1mdW5jdGlvbiBkcmF3VHJpYW5nbGUodCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPWUuY29vcmRzLGM9ZS5jb2xvcnMsaD10LmRhdGEsZD00KnQud2lkdGg7bGV0IHU7aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9aWYobFtpKzFdPmxbbisxXSl7dT1pO2k9bjtuPXU7dT1hO2E9bztvPXV9aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9Y29uc3QgcD0obFtzXStlLm9mZnNldFgpKmUuc2NhbGVYLGc9KGxbcysxXStlLm9mZnNldFkpKmUuc2NhbGVZLG09KGxbaV0rZS5vZmZzZXRYKSplLnNjYWxlWCxmPShsW2krMV0rZS5vZmZzZXRZKSplLnNjYWxlWSxiPShsW25dK2Uub2Zmc2V0WCkqZS5zY2FsZVgsQT0obFtuKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVk7aWYoZz49QSlyZXR1cm47Y29uc3QgXz1jW3JdLHY9Y1tyKzFdLHk9Y1tyKzJdLFM9Y1thXSx4PWNbYSsxXSxFPWNbYSsyXSxDPWNbb10sUD1jW28rMV0sVD1jW28rMl0sdz1NYXRoLnJvdW5kKGcpLGs9TWF0aC5yb3VuZChBKTtsZXQgRixNLFIsRCxJLE8sTCxOO2ZvcihsZXQgdD13O3Q8PWs7dCsrKXtpZih0PGYpe2xldCBlO2U9dDxnPzA6KGctdCkvKGctZik7Rj1wLShwLW0pKmU7TT1fLShfLVMpKmU7Uj12LSh2LXgpKmU7RD15LSh5LUUpKmV9ZWxzZXtsZXQgZTtlPXQ+QT8xOmY9PT1BPzA6KGYtdCkvKGYtQSk7Rj1tLShtLWIpKmU7TT1TLShTLUMpKmU7Uj14LSh4LVApKmU7RD1FLShFLVQpKmV9bGV0IGU7ZT10PGc/MDp0PkE/MTooZy10KS8oZy1BKTtJPXAtKHAtYikqZTtPPV8tKF8tQykqZTtMPXYtKHYtUCkqZTtOPXktKHktVCkqZTtjb25zdCBzPU1hdGgucm91bmQoTWF0aC5taW4oRixJKSksaT1NYXRoLnJvdW5kKE1hdGgubWF4KEYsSSkpO2xldCBuPWQqdCs0KnM7Zm9yKGxldCB0PXM7dDw9aTt0Kyspe2U9KEYtdCkvKEYtSSk7ZTwwP2U9MDplPjEmJihlPTEpO2hbbisrXT1NLShNLU8pKmV8MDtoW24rK109Ui0oUi1MKSplfDA7aFtuKytdPUQtKEQtTikqZXwwO2hbbisrXT0yNTV9fX1mdW5jdGlvbiBkcmF3RmlndXJlKHQsZSxzKXtjb25zdCBpPWUuY29vcmRzLG49ZS5jb2xvcnM7bGV0IHIsYTtzd2l0Y2goZS50eXBlKXtjYXNlImxhdHRpY2UiOmNvbnN0IG89ZS52ZXJ0aWNlc1BlclJvdyxsPU1hdGguZmxvb3IoaS5sZW5ndGgvbyktMSxjPW8tMTtmb3Iocj0wO3I8bDtyKyspe2xldCBlPXIqbztmb3IobGV0IHI9MDtyPGM7cisrLGUrKyl7ZHJhd1RyaWFuZ2xlKHQscyxpW2VdLGlbZSsxXSxpW2Urb10sbltlXSxuW2UrMV0sbltlK29dKTtkcmF3VHJpYW5nbGUodCxzLGlbZStvKzFdLGlbZSsxXSxpW2Urb10sbltlK28rMV0sbltlKzFdLG5bZStvXSl9fWJyZWFrO2Nhc2UidHJpYW5nbGVzIjpmb3Iocj0wLGE9aS5sZW5ndGg7cjxhO3IrPTMpZHJhd1RyaWFuZ2xlKHQscyxpW3JdLGlbcisxXSxpW3IrMl0sbltyXSxuW3IrMV0sbltyKzJdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBmaWd1cmUiKX19Y2xhc3MgTWVzaFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fY29vcmRzPXRbMl07dGhpcy5fY29sb3JzPXRbM107dGhpcy5fZmlndXJlcz10WzRdO3RoaXMuX2JvdW5kcz10WzVdO3RoaXMuX2Jib3g9dFs3XTt0aGlzLl9iYWNrZ3JvdW5kPXRbOF07dGhpcy5tYXRyaXg9bnVsbH1fY3JlYXRlTWVzaENhbnZhcyh0LGUscyl7Y29uc3QgaT1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksbj1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1sxXSkscj1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzJdKS1pLGE9TWF0aC5jZWlsKHRoaXMuX2JvdW5kc1szXSktbixvPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhyKnRbMF0qMS4xKSksM2UzKSxsPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhhKnRbMV0qMS4xKSksM2UzKSxjPXIvbyxoPWEvbCxkPXtjb29yZHM6dGhpcy5fY29vcmRzLGNvbG9yczp0aGlzLl9jb2xvcnMsb2Zmc2V0WDotaSxvZmZzZXRZOi1uLHNjYWxlWDoxL2Msc2NhbGVZOjEvaH0sdT1vKzQscD1sKzQsZz1zLmdldENhbnZhcygibWVzaCIsdSxwLCExKSxtPWcuY29udGV4dCxmPW0uY3JlYXRlSW1hZ2VEYXRhKG8sbCk7aWYoZSl7Y29uc3QgdD1mLmRhdGE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cys9NCl7dFtzXT1lWzBdO3RbcysxXT1lWzFdO3RbcysyXT1lWzJdO3RbcyszXT0yNTV9fWZvcihjb25zdCB0IG9mIHRoaXMuX2ZpZ3VyZXMpZHJhd0ZpZ3VyZShmLHQsZCk7bS5wdXRJbWFnZURhdGEoZiwyLDIpO3JldHVybntjYW52YXM6Zy5jYW52YXMsb2Zmc2V0WDppLTIqYyxvZmZzZXRZOm4tMipoLHNjYWxlWDpjLHNjYWxlWTpofX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtsZXQgbztpZihyPT09YS5TSEFESU5HKW89aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpO2Vsc2V7bz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZS5iYXNlVHJhbnNmb3JtKTtpZih0aGlzLm1hdHJpeCl7Y29uc3QgdD1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpO289W29bMF0qdFswXSxvWzFdKnRbMV1dfX1jb25zdCBsPXRoaXMuX2NyZWF0ZU1lc2hDYW52YXMobyxyPT09YS5TSEFESU5HP251bGw6dGhpcy5fYmFja2dyb3VuZCxlLmNhY2hlZENhbnZhc2VzKTtpZihyIT09YS5TSEFESU5HKXt0LnNldFRyYW5zZm9ybSguLi5lLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiZ0LnRyYW5zZm9ybSguLi50aGlzLm1hdHJpeCl9dC50cmFuc2xhdGUobC5vZmZzZXRYLGwub2Zmc2V0WSk7dC5zY2FsZShsLnNjYWxlWCxsLnNjYWxlWSk7cmV0dXJuIHQuY3JlYXRlUGF0dGVybihsLmNhbnZhcywibm8tcmVwZWF0Iil9fWNsYXNzIER1bW15U2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Z2V0UGF0dGVybigpe3JldHVybiJob3RwaW5rIn19Y29uc3Qgbz0xLGw9MjtjbGFzcyBUaWxpbmdQYXR0ZXJue3N0YXRpYyBnZXQgTUFYX1BBVFRFUk5fU0laRSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJNQVhfUEFUVEVSTl9TSVpFIiwzZTMpfWNvbnN0cnVjdG9yKHQsZSxzLGksbil7dGhpcy5vcGVyYXRvckxpc3Q9dFsyXTt0aGlzLm1hdHJpeD10WzNdfHxbMSwwLDAsMSwwLDBdO3RoaXMuYmJveD10WzRdO3RoaXMueHN0ZXA9dFs1XTt0aGlzLnlzdGVwPXRbNl07dGhpcy5wYWludFR5cGU9dFs3XTt0aGlzLnRpbGluZ1R5cGU9dFs4XTt0aGlzLmNvbG9yPWU7dGhpcy5jdHg9czt0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pO3RoaXMuYmFzZVRyYW5zZm9ybT1ufWNyZWF0ZVBhdHRlcm5DYW52YXModCl7Y29uc3QgZT10aGlzLm9wZXJhdG9yTGlzdCxzPXRoaXMuYmJveCxyPXRoaXMueHN0ZXAsYT10aGlzLnlzdGVwLG89dGhpcy5wYWludFR5cGUsbD10aGlzLnRpbGluZ1R5cGUsYz10aGlzLmNvbG9yLGg9dGhpcy5jYW52YXNHcmFwaGljc0ZhY3Rvcnk7KDAsaS5pbmZvKSgiVGlsaW5nVHlwZTogIitsKTtjb25zdCBkPXNbMF0sdT1zWzFdLHA9c1syXSxnPXNbM10sbT1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLGY9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksYj1bbVswXSpmWzBdLG1bMV0qZlsxXV0sQT10aGlzLmdldFNpemVBbmRTY2FsZShyLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxiWzBdKSxfPXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsdGhpcy5jdHguY2FudmFzLmhlaWdodCxiWzFdKSx2PXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIixBLnNpemUsXy5zaXplLCEwKSx5PXYuY29udGV4dCxTPWguY3JlYXRlQ2FudmFzR3JhcGhpY3MoeSk7Uy5ncm91cExldmVsPXQuZ3JvdXBMZXZlbDt0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLG8sYyk7bGV0IHg9ZCxFPXUsQz1wLFA9ZztpZihkPDApe3g9MDtDKz1NYXRoLmFicyhkKX1pZih1PDApe0U9MDtQKz1NYXRoLmFicyh1KX15LnRyYW5zbGF0ZSgtQS5zY2FsZSp4LC1fLnNjYWxlKkUpO1MudHJhbnNmb3JtKEEuc2NhbGUsMCwwLF8uc2NhbGUsMCwwKTt5LnNhdmUoKTt0aGlzLmNsaXBCYm94KFMseCxFLEMsUCk7Uy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoUy5jdHgpO1MuZXhlY3V0ZU9wZXJhdG9yTGlzdChlKTtTLmVuZERyYXdpbmcoKTtyZXR1cm57Y2FudmFzOnYuY2FudmFzLHNjYWxlWDpBLnNjYWxlLHNjYWxlWTpfLnNjYWxlLG9mZnNldFg6eCxvZmZzZXRZOkV9fWdldFNpemVBbmRTY2FsZSh0LGUscyl7dD1NYXRoLmFicyh0KTtjb25zdCBpPU1hdGgubWF4KFRpbGluZ1BhdHRlcm4uTUFYX1BBVFRFUk5fU0laRSxlKTtsZXQgbj1NYXRoLmNlaWwodCpzKTtuPj1pP249aTpzPW4vdDtyZXR1cm57c2NhbGU6cyxzaXplOm59fWNsaXBCYm94KHQsZSxzLGkscil7Y29uc3QgYT1pLWUsbz1yLXM7dC5jdHgucmVjdChlLHMsYSxvKTt0LmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQuY3R4KSxbZSxzLGkscl0pO3QuY2xpcCgpO3QuZW5kUGF0aCgpfXNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LGUscyl7Y29uc3Qgbj10LmN0eCxyPXQuY3VycmVudDtzd2l0Y2goZSl7Y2FzZSBvOmNvbnN0IHQ9dGhpcy5jdHg7bi5maWxsU3R5bGU9dC5maWxsU3R5bGU7bi5zdHJva2VTdHlsZT10LnN0cm9rZVN0eWxlO3IuZmlsbENvbG9yPXQuZmlsbFN0eWxlO3Iuc3Ryb2tlQ29sb3I9dC5zdHJva2VTdHlsZTticmVhaztjYXNlIGw6Y29uc3QgYT1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtuLmZpbGxTdHlsZT1hO24uc3Ryb2tlU3R5bGU9YTtyLmZpbGxDb2xvcj1hO3Iuc3Ryb2tlQ29sb3I9YTticmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAke2V9YCl9fWdldFBhdHRlcm4odCxlLHMsbil7bGV0IHI9cztpZihuIT09YS5TSEFESU5HKXtyPWkuVXRpbC50cmFuc2Zvcm0ocixlLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiYocj1pLlV0aWwudHJhbnNmb3JtKHIsdGhpcy5tYXRyaXgpKX1jb25zdCBvPXRoaXMuY3JlYXRlUGF0dGVybkNhbnZhcyhlKTtsZXQgbD1uZXcgRE9NTWF0cml4KHIpO2w9bC50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSk7bD1sLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7Y29uc3QgYz10LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsInJlcGVhdCIpO2Muc2V0VHJhbnNmb3JtKGwpO3JldHVybiBjfX1lLlRpbGluZ1BhdHRlcm49VGlsaW5nUGF0dGVybn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5pc05vZGVKUz12b2lkIDA7Y29uc3Qgcz0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7ZS5pc05vZGVKUz1zfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuYXBwbHlNYXNrSW1hZ2VEYXRhPWZ1bmN0aW9uIGFwcGx5TWFza0ltYWdlRGF0YSh7c3JjOnQsc3JjUG9zOmU9MCxkZXN0OnMsZGVzdFBvczpuPTAsd2lkdGg6cixoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOm89ITF9KXtjb25zdCBsPWkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsaF09bz9bMCxsXTpbbCwwXSxkPXI+PjMsdT03JnIscD10Lmxlbmd0aDtzPW5ldyBVaW50MzJBcnJheShzLmJ1ZmZlcik7Zm9yKGxldCBpPTA7aTxhO2krKyl7Zm9yKGNvbnN0IGk9ZStkO2U8aTtlKyspe2NvbnN0IGk9ZTxwP3RbZV06MjU1O3NbbisrXT0xMjgmaT9oOmM7c1tuKytdPTY0Jmk/aDpjO3NbbisrXT0zMiZpP2g6YztzW24rK109MTYmaT9oOmM7c1tuKytdPTgmaT9oOmM7c1tuKytdPTQmaT9oOmM7c1tuKytdPTImaT9oOmM7c1tuKytdPTEmaT9oOmN9aWYoMD09PXUpY29udGludWU7Y29uc3QgaT1lPHA/dFtlKytdOjI1NTtmb3IobGV0IHQ9MDt0PHU7dCsrKXNbbisrXT1pJjE8PDctdD9oOmN9cmV0dXJue3NyY1BvczplLGRlc3RQb3M6bn19O3ZhciBpPXMoMSl9LCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2UuR2xvYmFsV29ya2VyT3B0aW9ucz1zO3Mud29ya2VyUG9ydD12b2lkIDA9PT1zLndvcmtlclBvcnQ/bnVsbDpzLndvcmtlclBvcnQ7cy53b3JrZXJTcmM9dm9pZCAwPT09cy53b3JrZXJTcmM/IiI6cy53b3JrZXJTcmN9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIGk9cygxKTtjb25zdCBuPTEscj0yLGE9MSxvPTIsbD0zLGM9NCxoPTUsZD02LHU9NyxwPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbih0KXt0IGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCgwLGkudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgaS5BYm9ydEV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgaS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLlVua25vd25FcnJvckV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQudG9TdHJpbmcoKSl9fWUuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuc291cmNlTmFtZT10O3RoaXMudGFyZ2V0TmFtZT1lO3RoaXMuY29tT2JqPXM7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPXQ9Pntjb25zdCBlPXQuZGF0YTtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQscz10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFzKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1uKXMucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PXIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtzLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgdD10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QoaShlLmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnQsdGFyZ2V0TmFtZTphLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTppfSl9KSwoZnVuY3Rpb24oaSl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0LHRhcmdldE5hbWU6YSxjYWxsYmFjazpyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKGkpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsoZSk6aShlLmRhdGEpfTtzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbih0LGUpe2NvbnN0IHM9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKHNbdF0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke3R9ImApO3NbdF09ZX1zZW5kKHQsZSxzKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOnQsZGF0YTplfSxzKX1zZW5kV2l0aFByb21pc2UodCxlLHMpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKysscj0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6bixkYXRhOmV9LHMpfWNhdGNoKHQpe3IucmVqZWN0KHQpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0odCxlLHMsbil7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsbD10aGlzLnRhcmdldE5hbWUsYz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpzPT57Y29uc3QgYT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6cyxzdGFydENhbGw6YSxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxhY3Rpb246dCxzdHJlYW1JZDpyLGRhdGE6ZSxkZXNpcmVkU2l6ZTpzLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gYS5wcm9taXNlfSxwdWxsOnQ9Pntjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5wdWxsQ2FsbD1lO2MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmwsc3RyZWFtOmQsc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplfSk7cmV0dXJuIGUucHJvbWlzZX0sY2FuY2VsOnQ9PnsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgZT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD1lO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06YSxzdHJlYW1JZDpyLHJlYXNvbjp3cmFwUmVhc29uKHQpfSk7cmV0dXJuIGUucHJvbWlzZX19LHMpfV9jcmVhdGVTdHJlYW1TaW5rKHQpe2NvbnN0IGU9dC5zdHJlYW1JZCxzPXRoaXMuc291cmNlTmFtZSxuPXQuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLGE9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl0sZD17ZW5xdWV1ZSh0LGE9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBsPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09YTtpZihsPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpjLHN0cmVhbUlkOmUsY2h1bms6dH0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06bCxzdHJlYW1JZDplfSk7ZGVsZXRlIGEuc3RyZWFtU2lua3NbZV19fSxlcnJvcih0KXsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX19LHNpbmtDYXBhYmlsaXR5OigwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O2Quc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2QucmVhZHk9ZC5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbZV09ZDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShvKHQuZGF0YSxkKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpwLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnAsc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KXtjb25zdCBlPXQuc3RyZWFtSWQscz10aGlzLnNvdXJjZU5hbWUsbj10LnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbZV0sbT10aGlzLnN0cmVhbVNpbmtzW2VdO3N3aXRjaCh0LnN0cmVhbSl7Y2FzZSBwOnQuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIHU6dC5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIGQ6aWYoIW0pe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnUsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSk7YnJlYWt9bS5kZXNpcmVkU2l6ZTw9MCYmdC5kZXNpcmVkU2l6ZT4wJiZtLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTttLmRlc2lyZWRTaXplPXQuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobS5vblB1bGwmJm0ub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTp1LHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX0pKTticmVhaztjYXNlIGM6KDAsaS5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKHQuY2h1bmspO2JyZWFrO2Nhc2UgbDooMCxpLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgaDooMCxpLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbih0LnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyxlKTticmVhaztjYXNlIG86dC5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgYTppZighbSlicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShtLm9uQ2FuY2VsJiZtLm9uQ2FuY2VsKHdyYXBSZWFzb24odC5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpO20uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTttLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW2VdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKHQsZSl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFt0LnN0YXJ0Q2FsbCYmdC5zdGFydENhbGwucHJvbWlzZSx0LnB1bGxDYWxsJiZ0LnB1bGxDYWxsLnByb21pc2UsdC5jYW5jZWxDYWxsJiZ0LmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2VdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1ldGFkYXRhPXZvaWQgMDt2YXIgaT1zKDEpO2UuTWV0YWRhdGE9Y2xhc3MgTWV0YWRhdGF7I2l0OyNudDtjb25zdHJ1Y3Rvcih7cGFyc2VkRGF0YTp0LHJhd0RhdGE6ZX0pe3RoaXMuI2l0PXQ7dGhpcy4jbnQ9ZX1nZXRSYXcoKXtyZXR1cm4gdGhpcy4jbnR9Z2V0KHQpe3JldHVybiB0aGlzLiNpdC5nZXQodCk/P251bGx9Z2V0QWxsKCl7cmV0dXJuKDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLiNpdCl9aGFzKHQpe3JldHVybiB0aGlzLiNpdC5oYXModCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk9wdGlvbmFsQ29udGVudENvbmZpZz12b2lkIDA7dmFyIGk9cygxKSxuPXMoOCk7Y29uc3Qgcj1TeW1ib2woIklOVEVSTkFMIik7Y2xhc3MgT3B0aW9uYWxDb250ZW50R3JvdXB7I3J0PSEwO2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uYW1lPXQ7dGhpcy5pbnRlbnQ9ZX1nZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNydH1fc2V0VmlzaWJsZSh0LGUpe3QhPT1yJiYoMCxpLnVucmVhY2hhYmxlKSgiSW50ZXJuYWwgbWV0aG9kIGBfc2V0VmlzaWJsZWAgY2FsbGVkLiIpO3RoaXMuI3J0PWV9fWUuT3B0aW9uYWxDb250ZW50Q29uZmlnPWNsYXNzIE9wdGlvbmFsQ29udGVudENvbmZpZ3sjYXQ9bnVsbDsjb3Q9bmV3IE1hcDsjbHQ9bnVsbDsjY3Q9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hbWU9bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDtpZihudWxsIT09dCl7dGhpcy5uYW1lPXQubmFtZTt0aGlzLmNyZWF0b3I9dC5jcmVhdG9yO3RoaXMuI2N0PXQub3JkZXI7Zm9yKGNvbnN0IGUgb2YgdC5ncm91cHMpdGhpcy4jb3Quc2V0KGUuaWQsbmV3IE9wdGlvbmFsQ29udGVudEdyb3VwKGUubmFtZSxlLmludGVudCkpO2lmKCJPRkYiPT09dC5iYXNlU3RhdGUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jb3QudmFsdWVzKCkpdC5fc2V0VmlzaWJsZShyLCExKTtmb3IoY29uc3QgZSBvZiB0Lm9uKXRoaXMuI290LmdldChlKS5fc2V0VmlzaWJsZShyLCEwKTtmb3IoY29uc3QgZSBvZiB0Lm9mZil0aGlzLiNvdC5nZXQoZSkuX3NldFZpc2libGUociwhMSk7dGhpcy4jbHQ9dGhpcy5nZXRIYXNoKCl9fSNodCh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKGU8MilyZXR1cm4hMDtjb25zdCBzPXRbMF07Zm9yKGxldCBuPTE7bjxlO24rKyl7Y29uc3QgZT10W25dO2xldCByO2lmKEFycmF5LmlzQXJyYXkoZSkpcj10aGlzLiNodChlKTtlbHNle2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9cj10aGlzLiNvdC5nZXQoZSkudmlzaWJsZX1zd2l0Y2gocyl7Y2FzZSJBbmQiOmlmKCFyKXJldHVybiExO2JyZWFrO2Nhc2UiT3IiOmlmKHIpcmV0dXJuITA7YnJlYWs7Y2FzZSJOb3QiOnJldHVybiFyO2RlZmF1bHQ6cmV0dXJuITB9fXJldHVybiJBbmQiPT09c31pc1Zpc2libGUodCl7aWYoMD09PXRoaXMuI290LnNpemUpcmV0dXJuITA7aWYoIXQpeygwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGRlZmluZWQuIik7cmV0dXJuITB9aWYoIk9DRyI9PT10LnR5cGUpe2lmKCF0aGlzLiNvdC5oYXModC5pZCkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke3QuaWR9YCk7cmV0dXJuITB9cmV0dXJuIHRoaXMuI290LmdldCh0LmlkKS52aXNpYmxlfWlmKCJPQ01EIj09PXQudHlwZSl7aWYodC5leHByZXNzaW9uKXJldHVybiB0aGlzLiNodCh0LmV4cHJlc3Npb24pO2lmKCF0LnBvbGljeXx8IkFueU9uIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZih0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMH1yZXR1cm4hMX1pZigiQWxsT24iPT09dC5wb2xpY3kpe2Zvcihjb25zdCBlIG9mIHQuaWRzKXtpZighdGhpcy4jb3QuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfWlmKCF0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMX1yZXR1cm4hMH1pZigiQW55T2ZmIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZighdGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITB9cmV0dXJuITF9aWYoIkFsbE9mZiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYodGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITF9cmV0dXJuITB9KDAsaS53YXJuKShgVW5rbm93biBvcHRpb25hbCBjb250ZW50IHBvbGljeSAke3QucG9saWN5fS5gKTtyZXR1cm4hMH0oMCxpLndhcm4pKGBVbmtub3duIGdyb3VwIHR5cGUgJHt0LnR5cGV9LmApO3JldHVybiEwfXNldFZpc2liaWxpdHkodCxlPSEwKXtpZih0aGlzLiNvdC5oYXModCkpe3RoaXMuI290LmdldCh0KS5fc2V0VmlzaWJsZShyLCEhZSk7dGhpcy4jYXQ9bnVsbH1lbHNlKDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7dH1gKX1nZXQgaGFzSW5pdGlhbFZpc2liaWxpdHkoKXtyZXR1cm4gdGhpcy5nZXRIYXNoKCk9PT10aGlzLiNsdH1nZXRPcmRlcigpe3JldHVybiB0aGlzLiNvdC5zaXplP3RoaXMuI2N0P3RoaXMuI2N0LnNsaWNlKCk6Wy4uLnRoaXMuI290LmtleXMoKV06bnVsbH1nZXRHcm91cHMoKXtyZXR1cm4gdGhpcy4jb3Quc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jb3QpOm51bGx9Z2V0R3JvdXAodCl7cmV0dXJuIHRoaXMuI290LmdldCh0KXx8bnVsbH1nZXRIYXNoKCl7aWYobnVsbCE9PXRoaXMuI2F0KXJldHVybiB0aGlzLiNhdDtjb25zdCB0PW5ldyBuLk11cm11ckhhc2gzXzY0O2Zvcihjb25zdFtlLHNdb2YgdGhpcy4jb3QpdC51cGRhdGUoYCR7ZX06JHtzLnZpc2libGV9YCk7cmV0dXJuIHRoaXMuI2F0PXQuaGV4ZGlnZXN0KCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkRhdGFUcmFuc3BvcnRTdHJlYW09dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFte2NvbnN0cnVjdG9yKHQsZSl7KDAsaS5hc3NlcnQpKGUsJ1BERkRhdGFUcmFuc3BvcnRTdHJlYW0gLSBtaXNzaW5nIHJlcXVpcmVkICJwZGZEYXRhUmFuZ2VUcmFuc3BvcnQiIGFyZ3VtZW50LicpO3RoaXMuX3F1ZXVlZENodW5rcz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmU9dC5wcm9ncmVzc2l2ZURvbmV8fCExO3RoaXMuX2NvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXQuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV8fG51bGw7Y29uc3Qgcz10LmluaXRpYWxEYXRhO2lmKHM/Lmxlbmd0aD4wKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KHMpLmJ1ZmZlcjt0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KX10aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hdC5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IXQuZGlzYWJsZVJhbmdlO3RoaXMuX2NvbnRlbnRMZW5ndGg9dC5sZW5ndGg7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlYWRlcnM9W107dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFJhbmdlTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25SZWNlaXZlRGF0YSh7YmVnaW46dCxjaHVuazplfSl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25Qcm9ncmVzcyh7bG9hZGVkOnQsdG90YWw6ZX0pfSkpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcigodD0+e3RoaXMuX29uUmVjZWl2ZURhdGEoe2NodW5rOnR9KX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIoKCgpPT57dGhpcy5fb25Qcm9ncmVzc2l2ZURvbmUoKX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQudHJhbnNwb3J0UmVhZHkoKX1fb25SZWNlaXZlRGF0YSh0KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQuY2h1bmspLmJ1ZmZlcjtpZih2b2lkIDA9PT10LmJlZ2luKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKGUpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKGUpO2Vsc2V7Y29uc3Qgcz10aGlzLl9yYW5nZVJlYWRlcnMuc29tZSgoZnVuY3Rpb24ocyl7aWYocy5fYmVnaW4hPT10LmJlZ2luKXJldHVybiExO3MuX2VucXVldWUoZSk7cmV0dXJuITB9KSk7KDAsaS5hc3NlcnQpKHMsIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuIil9fWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfV9vblByb2dyZXNzKHQpe3ZvaWQgMD09PXQudG90YWw/dGhpcy5fcmFuZ2VSZWFkZXJzWzBdPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZH0pOnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9X29uUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LnByb2dyZXNzaXZlRG9uZSgpO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT0hMH1fcmVtb3ZlUmFuZ2VSZWFkZXIodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlYWRlcnMuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9yYW5nZVJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkRhdGFUcmFuc3BvcnRTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rczt0aGlzLl9xdWV1ZWRDaHVua3M9bnVsbDtyZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcz1uZXcgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpO3RoaXMuX3JhbmdlUmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX07Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMuX3N0cmVhbT10O3RoaXMuX2RvbmU9c3x8ITE7dGhpcy5fZmlsZW5hbWU9KDAsbi5pc1BkZkZpbGUpKGkpP2k6bnVsbDt0aGlzLl9xdWV1ZWRDaHVua3M9ZXx8W107dGhpcy5fbG9hZGVkPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcXVldWVkQ2h1bmtzKXRoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMuX3JlcXVlc3RzPVtdO3RoaXMuX2hlYWRlcnNSZWFkeT1Qcm9taXNlLnJlc29sdmUoKTt0Ll9mdWxsUmVxdWVzdFJlYWRlcj10aGlzO3RoaXMub25Qcm9ncmVzcz1udWxsfV9lbnF1ZXVlKHQpe2lmKCF0aGlzLl9kb25lKXtpZih0aGlzLl9yZXF1ZXN0cy5sZW5ndGg+MCl7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KX1lbHNlIHRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpO3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RofX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1JhbmdlU3VwcG9ydGVkfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9zdHJlYW0uX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5fY29udGVudExlbmd0aH1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfXByb2dyZXNzaXZlRG9uZSgpe3RoaXMuX2RvbmV8fCh0aGlzLl9kb25lPSEwKX19Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXt0aGlzLl9zdHJlYW09dDt0aGlzLl9iZWdpbj1lO3RoaXMuX2VuZD1zO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fZG9uZT0hMTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1fZW5xdWV1ZSh0KXtpZighdGhpcy5fZG9uZSl7aWYoMD09PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCl0aGlzLl9xdWV1ZWRDaHVuaz10O2Vsc2V7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9dGhpcy5fZG9uZT0hMDt0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmspe2NvbnN0IHQ9dGhpcy5fcXVldWVkQ2h1bms7dGhpcy5fcXVldWVkQ2h1bms9bnVsbDtyZXR1cm57dmFsdWU6dCxkb25lOiExfX1pZih0aGlzLl9kb25lKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07Y29uc3QgdD0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fc3RyZWFtLl9yZW1vdmVSYW5nZVJlYWRlcih0aGlzKX19fSwodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlhmYVRleHQ9dm9pZCAwO2NsYXNzIFhmYVRleHR7c3RhdGljIHRleHRDb250ZW50KHQpe2NvbnN0IGU9W10scz17aXRlbXM6ZSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX07IWZ1bmN0aW9uIHdhbGsodCl7aWYoIXQpcmV0dXJuO2xldCBzPW51bGw7Y29uc3QgaT10Lm5hbWU7aWYoIiN0ZXh0Ij09PWkpcz10LnZhbHVlO2Vsc2V7aWYoIVhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGkpKXJldHVybjt0Py5hdHRyaWJ1dGVzPy50ZXh0Q29udGVudD9zPXQuYXR0cmlidXRlcy50ZXh0Q29udGVudDp0LnZhbHVlJiYocz10LnZhbHVlKX1udWxsIT09cyYmZS5wdXNoKHtzdHI6c30pO2lmKHQuY2hpbGRyZW4pZm9yKGNvbnN0IGUgb2YgdC5jaGlsZHJlbil3YWxrKGUpfSh0KTtyZXR1cm4gc31zdGF0aWMgc2hvdWxkQnVpbGRUZXh0KHQpe3JldHVybiEoInRleHRhcmVhIj09PXR8fCJpbnB1dCI9PT10fHwib3B0aW9uIj09PXR8fCJzZWxlY3QiPT09dCl9fWUuWGZhVGV4dD1YZmFUZXh0fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuTm9kZUNhbnZhc0ZhY3Rvcnk9ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO3ZhciBpPXMoNyk7Y29uc3QgZmV0Y2hEYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUscyk9PntyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKCh0LGkpPT57IXQmJmk/ZShuZXcgVWludDhBcnJheShpKSk6cyhuZXcgRXJyb3IodCkpfSkpfSkpfTtjbGFzcyBOb2RlQ2FudmFzRmFjdG9yeSBleHRlbmRzIGkuQmFzZUNhbnZhc0ZhY3Rvcnl7X2NyZWF0ZUNhbnZhcyh0LGUpe3JldHVybiByZXF1aXJlKCJjYW52YXMiKS5jcmVhdGVDYW52YXModCxlKX19ZS5Ob2RlQ2FudmFzRmFjdG9yeT1Ob2RlQ2FudmFzRmFjdG9yeTtjbGFzcyBOb2RlQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0KS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLk5vZGVDTWFwUmVhZGVyRmFjdG9yeT1Ob2RlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQpfX1lLk5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpLHI9cygyMiksYT1zKDIzKTtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yTGF5ZXJ7I2R0OyN1dD0hMTsjcHQ9dGhpcy5wb2ludGVydXAuYmluZCh0aGlzKTsjZ3Q9dGhpcy5wb2ludGVyZG93bi5iaW5kKHRoaXMpOyNtdD1uZXcgTWFwOyNmdD0hMTsjYnQ9ITE7I0F0O3N0YXRpYyBfaW5pdGlhbGl6ZWQ9ITE7Y29uc3RydWN0b3IodCl7aWYoIUFubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQpe0Fubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQ9ITA7ci5GcmVlVGV4dEVkaXRvci5pbml0aWFsaXplKHQubDEwbik7YS5JbmtFZGl0b3IuaW5pdGlhbGl6ZSh0LmwxMG4pfXQudWlNYW5hZ2VyLnJlZ2lzdGVyRWRpdG9yVHlwZXMoW3IuRnJlZVRleHRFZGl0b3IsYS5JbmtFZGl0b3JdKTt0aGlzLiNBdD10LnVpTWFuYWdlcjt0aGlzLmFubm90YXRpb25TdG9yYWdlPXQuYW5ub3RhdGlvblN0b3JhZ2U7dGhpcy5wYWdlSW5kZXg9dC5wYWdlSW5kZXg7dGhpcy5kaXY9dC5kaXY7dGhpcy4jZHQ9dC5hY2Nlc3NpYmlsaXR5TWFuYWdlcjt0aGlzLiNBdC5hZGRMYXllcih0aGlzKX11cGRhdGVUb29sYmFyKHQpe3RoaXMuI0F0LnVwZGF0ZVRvb2xiYXIodCl9dXBkYXRlTW9kZSh0PXRoaXMuI0F0LmdldE1vZGUoKSl7dGhpcy4jX3QoKTtpZih0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspe3RoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpO3RoaXMuZGlzYWJsZUNsaWNrKCl9ZWxzZSB0aGlzLmVuYWJsZUNsaWNrKCk7dGhpcy4jQXQudW5zZWxlY3RBbGwoKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJmcmVlVGV4dEVkaXRpbmciLHQ9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJpbmtFZGl0aW5nIix0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspfWFkZElua0VkaXRvcklmTmVlZGVkKHQpe2lmKCF0JiZ0aGlzLiNBdC5nZXRNb2RlKCkhPT1uLkFubm90YXRpb25FZGl0b3JUeXBlLklOSylyZXR1cm47aWYoIXQpZm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpaWYodC5pc0VtcHR5KCkpe3Quc2V0SW5CYWNrZ3JvdW5kKCk7cmV0dXJufXRoaXMuI3Z0KHtvZmZzZXRYOjAsb2Zmc2V0WTowfSkuc2V0SW5CYWNrZ3JvdW5kKCl9c2V0RWRpdGluZ1N0YXRlKHQpe3RoaXMuI0F0LnNldEVkaXRpbmdTdGF0ZSh0KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNBdC5hZGRDb21tYW5kcyh0KX1lbmFibGUoKXt0aGlzLmRpdi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIjtmb3IoY29uc3QgdCBvZiB0aGlzLiNtdC52YWx1ZXMoKSl0LmVuYWJsZUVkaXRpbmcoKX1kaXNhYmxlKCl7dGhpcy5kaXYuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSI7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5kaXNhYmxlRWRpdGluZygpfXNldEFjdGl2ZUVkaXRvcih0KXt0aGlzLiNBdC5nZXRBY3RpdmUoKSE9PXQmJnRoaXMuI0F0LnNldEFjdGl2ZUVkaXRvcih0KX1lbmFibGVDbGljaygpe3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNndCk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNwdCl9ZGlzYWJsZUNsaWNrKCl7dGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI2d0KTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuI3B0KX1hdHRhY2godCl7dGhpcy4jbXQuc2V0KHQuaWQsdCl9ZGV0YWNoKHQpe3RoaXMuI210LmRlbGV0ZSh0LmlkKTt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdil9cmVtb3ZlKHQpe3RoaXMuI0F0LnJlbW92ZUVkaXRvcih0KTt0aGlzLmRldGFjaCh0KTt0aGlzLmFubm90YXRpb25TdG9yYWdlLnJlbW92ZSh0LmlkKTt0LmRpdi5zdHlsZS5kaXNwbGF5PSJub25lIjtzZXRUaW1lb3V0KCgoKT0+e3QuZGl2LnN0eWxlLmRpc3BsYXk9IiI7dC5kaXYucmVtb3ZlKCk7dC5pc0F0dGFjaGVkVG9ET009ITE7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkmJnRoaXMuI0F0LmZvY3VzTWFpbkNvbnRhaW5lcigpfSksMCk7dGhpcy4jYnR8fHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpfSN5dCh0KXtpZih0LnBhcmVudCE9PXRoaXMpe3RoaXMuYXR0YWNoKHQpO3QucGFnZUluZGV4PXRoaXMucGFnZUluZGV4O3QucGFyZW50Py5kZXRhY2godCk7dC5wYXJlbnQ9dGhpcztpZih0LmRpdiYmdC5pc0F0dGFjaGVkVG9ET00pe3QuZGl2LnJlbW92ZSgpO3RoaXMuZGl2LmFwcGVuZCh0LmRpdil9fX1hZGQodCl7dGhpcy4jeXQodCk7dGhpcy4jQXQuYWRkRWRpdG9yKHQpO3RoaXMuYXR0YWNoKHQpO2lmKCF0LmlzQXR0YWNoZWRUb0RPTSl7Y29uc3QgZT10LnJlbmRlcigpO3RoaXMuZGl2LmFwcGVuZChlKTt0LmlzQXR0YWNoZWRUb0RPTT0hMH10aGlzLm1vdmVFZGl0b3JJbkRPTSh0KTt0Lm9uY2VBZGRlZCgpO3RoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KX1tb3ZlRWRpdG9ySW5ET00odCl7dGhpcy4jZHQ/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX1hZGRUb0Fubm90YXRpb25TdG9yYWdlKHQpe3QuaXNFbXB0eSgpfHx0aGlzLmFubm90YXRpb25TdG9yYWdlLmhhcyh0LmlkKXx8dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmlkLHQpfWFkZE9yUmVidWlsZCh0KXt0Lm5lZWRzVG9CZVJlYnVpbHQoKT90LnJlYnVpbGQoKTp0aGlzLmFkZCh0KX1hZGRBTmV3RWRpdG9yKHQpe3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOigpPT57dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITB9KX1hZGRVbmRvYWJsZUVkaXRvcih0KXt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLmFkZE9yUmVidWlsZCh0KX0sdW5kbzooKT0+e3QucmVtb3ZlKCl9LG11c3RFeGVjOiExfSl9Z2V0TmV4dElkKCl7cmV0dXJuIHRoaXMuI0F0LmdldElkKCl9I1N0KHQpe3N3aXRjaCh0aGlzLiNBdC5nZXRNb2RlKCkpe2Nhc2Ugbi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDpyZXR1cm4gbmV3IHIuRnJlZVRleHRFZGl0b3IodCk7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpyZXR1cm4gbmV3IGEuSW5rRWRpdG9yKHQpfXJldHVybiBudWxsfWRlc2VyaWFsaXplKHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlKXtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIHIuRnJlZVRleHRFZGl0b3IuZGVzZXJpYWxpemUodCx0aGlzKTtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBhLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMpfXJldHVybiBudWxsfSN2dCh0KXtjb25zdCBlPXRoaXMuZ2V0TmV4dElkKCkscz10aGlzLiNTdCh7cGFyZW50OnRoaXMsaWQ6ZSx4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0pO3MmJnRoaXMuYWRkKHMpO3JldHVybiBzfXNldFNlbGVjdGVkKHQpe3RoaXMuI0F0LnNldFNlbGVjdGVkKHQpfXRvZ2dsZVNlbGVjdGVkKHQpe3RoaXMuI0F0LnRvZ2dsZVNlbGVjdGVkKHQpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuI0F0LmlzU2VsZWN0ZWQodCl9dW5zZWxlY3QodCl7dGhpcy4jQXQudW5zZWxlY3QodCl9cG9pbnRlcnVwKHQpe2NvbnN0IGU9aS5LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7aWYoISgwIT09dC5idXR0b258fHQuY3RybEtleSYmZSkmJnQudGFyZ2V0PT09dGhpcy5kaXYmJnRoaXMuI2Z0KXt0aGlzLiNmdD0hMTt0aGlzLiN1dD90aGlzLiN2dCh0KTp0aGlzLiN1dD0hMH19cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSlyZXR1cm47aWYodC50YXJnZXQhPT10aGlzLmRpdilyZXR1cm47dGhpcy4jZnQ9ITA7Y29uc3Qgcz10aGlzLiNBdC5nZXRBY3RpdmUoKTt0aGlzLiN1dD0hc3x8cy5pc0VtcHR5KCl9ZHJvcCh0KXtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKSxzPXRoaXMuI0F0LmdldEVkaXRvcihlKTtpZighcylyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO3QuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiO3RoaXMuI3l0KHMpO2NvbnN0IGk9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LmNsaWVudFgtaS54LHI9dC5jbGllbnRZLWkueTtzLnRyYW5zbGF0ZShuLXMuc3RhcnRYLHItcy5zdGFydFkpO3RoaXMubW92ZUVkaXRvckluRE9NKHMpO3MuZGl2LmZvY3VzKCl9ZHJhZ292ZXIodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWRlc3Ryb3koKXt0aGlzLiNBdC5nZXRBY3RpdmUoKT8ucGFyZW50PT09dGhpcyYmdGhpcy4jQXQuc2V0QWN0aXZlRWRpdG9yKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuI210LnZhbHVlcygpKXt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdik7dC5pc0F0dGFjaGVkVG9ET009ITE7dC5kaXYucmVtb3ZlKCk7dC5wYXJlbnQ9bnVsbH10aGlzLmRpdj1udWxsO3RoaXMuI210LmNsZWFyKCk7dGhpcy4jQXQucmVtb3ZlTGF5ZXIodGhpcyl9I190KCl7dGhpcy4jYnQ9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5pc0VtcHR5KCkmJnQucmVtb3ZlKCk7dGhpcy4jYnQ9ITF9cmVuZGVyKHQpe3RoaXMudmlld3BvcnQ9dC52aWV3cG9ydDsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnb3ZlciIsImRyb3AiXSk7dGhpcy5zZXREaW1lbnNpb25zKCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jQXQuZ2V0RWRpdG9ycyh0aGlzLnBhZ2VJbmRleCkpdGhpcy5hZGQodCk7dGhpcy51cGRhdGVNb2RlKCl9dXBkYXRlKHQpe3RoaXMuI0F0LmNvbW1pdE9yUmVtb3ZlKCk7dGhpcy52aWV3cG9ydD10LnZpZXdwb3J0O3RoaXMuc2V0RGltZW5zaW9ucygpO3RoaXMudXBkYXRlTW9kZSgpfWdldCBzY2FsZUZhY3Rvcigpe3JldHVybiB0aGlzLnZpZXdwb3J0LnNjYWxlfWdldCBwYWdlRGltZW5zaW9ucygpe2NvbnN0W3QsZSxzLGldPXRoaXMudmlld3BvcnQudmlld0JveDtyZXR1cm5bcy10LGktZV19Z2V0IHZpZXdwb3J0QmFzZURpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQ7cmV0dXJuIHMlMTgwPT0wP1t0LGVdOltlLHRdfXNldERpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQsaT1zJTE4MCE9MCxuPU1hdGguZmxvb3IodCkrInB4IixyPU1hdGguZmxvb3IoZSkrInB4Ijt0aGlzLmRpdi5zdHlsZS53aWR0aD1pP3I6bjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9aT9uOnI7dGhpcy5kaXYuc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLHMpfX1lLkFubm90YXRpb25FZGl0b3JMYXllcj1Bbm5vdGF0aW9uRWRpdG9yTGF5ZXJ9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5GcmVlVGV4dEVkaXRvcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNSkscj1zKDQpO2NsYXNzIEZyZWVUZXh0RWRpdG9yIGV4dGVuZHMgci5Bbm5vdGF0aW9uRWRpdG9yeyN4dD10aGlzLmVkaXRvckRpdkJsdXIuYmluZCh0aGlzKTsjRXQ9dGhpcy5lZGl0b3JEaXZGb2N1cy5iaW5kKHRoaXMpOyNDdD10aGlzLmVkaXRvckRpdklucHV0LmJpbmQodGhpcyk7I1B0PXRoaXMuZWRpdG9yRGl2S2V5ZG93bi5iaW5kKHRoaXMpOyNUdDsjd3Q9IiI7I2t0PWAke3RoaXMuaWR9LWVkaXRvcmA7I0Z0PSExOyNNdDtzdGF0aWMgX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQ9IiI7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX2ludGVybmFsUGFkZGluZz0wO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0Rm9udFNpemU9MTA7c3RhdGljIF9rZXlib2FyZE1hbmFnZXI9bmV3IG4uS2V5Ym9hcmRNYW5hZ2VyKFtbWyJjdHJsK0VudGVyIiwibWFjK21ldGErRW50ZXIiLCJFc2NhcGUiLCJtYWMrRXNjYXBlIl0sRnJlZVRleHRFZGl0b3IucHJvdG90eXBlLmNvbW1pdE9yUmVtb3ZlXV0pO3N0YXRpYyBfdHlwZT0iZnJlZXRleHQiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6ImZyZWVUZXh0RWRpdG9yIn0pO3RoaXMuI1R0PXQuY29sb3J8fEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3J8fHIuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcjt0aGlzLiNNdD10LmZvbnRTaXplfHxGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplfXN0YXRpYyBpbml0aWFsaXplKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGU9PltlLHQuZ2V0KGUpXSkpKTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLl9pbnRlcm5hbFBhZGRpbmc9cGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoIi0tZnJlZXRleHQtcGFkZGluZyIpKX1zdGF0aWMgdXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3I9ZX19dXBkYXRlUGFyYW1zKHQsZSl7c3dpdGNoKHQpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOnRoaXMuI1J0KGUpO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjp0aGlzLiNEdChlKX19c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLHRoaXMuI010XSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUix0aGlzLiNUdF1dfSNSdCh0KXtjb25zdCBzZXRGb250c2l6ZT10PT57dGhpcy5lZGl0b3JEaXYuc3R5bGUuZm9udFNpemU9YGNhbGMoJHt0fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3RoaXMudHJhbnNsYXRlKDAsLSh0LXRoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik7dGhpcy4jTXQ9dDt0aGlzLiNJdCgpfSxlPXRoaXMuI010O3RoaXMucGFyZW50LmFkZENvbW1hbmRzKHtjbWQ6KCk9PntzZXRGb250c2l6ZSh0KX0sdW5kbzooKT0+e3NldEZvbnRzaXplKGUpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy4jVHQ7dGhpcy5wYXJlbnQuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuI1R0PXQ7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9dH0sdW5kbzooKT0+e3RoaXMuI1R0PWU7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9ZX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SLG92ZXJ3cml0ZUlmU2FtZVR5cGU6ITAsa2VlcFVuZG86ITB9KX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bLUZyZWVUZXh0RWRpdG9yLl9pbnRlcm5hbFBhZGRpbmcqdGhpcy5wYXJlbnQuc2NhbGVGYWN0b3IsLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nK3RoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcl19cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtudWxsIT09dGhpcy5kaXYmJih0aGlzLmlzQXR0YWNoZWRUb0RPTXx8dGhpcy5wYXJlbnQuYWRkKHRoaXMpKX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLmlzSW5FZGl0TW9kZSgpKXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITEpO3RoaXMucGFyZW50LnVwZGF0ZVRvb2xiYXIoaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCk7c3VwZXIuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LnJlbW92ZSgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMDt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KX19ZGlzYWJsZUVkaXRNb2RlKCl7aWYodGhpcy5pc0luRWRpdE1vZGUoKSl7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTtzdXBlci5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LmFkZCgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdGhpcy4ja3QpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KTt0aGlzLmRpdi5mb2N1cygpO3RoaXMuaXNFZGl0aW5nPSExO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEVkaXRpbmciKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3QudGFyZ2V0IT09dGhpcy5lZGl0b3JEaXYmJnRoaXMuZWRpdG9yRGl2LmZvY3VzKCl9b25jZUFkZGVkKCl7aWYoIXRoaXMud2lkdGgpe3RoaXMuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLmVkaXRvckRpdi5mb2N1cygpfX1pc0VtcHR5KCl7cmV0dXJuIXRoaXMuZWRpdG9yRGl2fHwiIj09PXRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dC50cmltKCl9cmVtb3ZlKCl7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIik7c3VwZXIucmVtb3ZlKCl9I090KCl7Y29uc3QgdD10aGlzLmVkaXRvckRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQ7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCB0PXMuZmlyc3RDaGlsZDsiI3RleHQiPT09dD8ubm9kZU5hbWU/ZS5wdXNoKHQuZGF0YSk6ZS5wdXNoKCIiKX1yZXR1cm4gZS5qb2luKCJcbiIpfSNJdCgpe2NvbnN0W3QsZV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxzPXRoaXMuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMud2lkdGg9cy53aWR0aC90O3RoaXMuaGVpZ2h0PXMuaGVpZ2h0L2V9Y29tbWl0KCl7c3VwZXIuY29tbWl0KCk7aWYoIXRoaXMuI0Z0KXt0aGlzLiNGdD0hMDt0aGlzLnBhcmVudC5hZGRVbmRvYWJsZUVkaXRvcih0aGlzKX10aGlzLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuI3d0PXRoaXMuI090KCkudHJpbUVuZCgpO3RoaXMuI0l0KCl9c2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKXtyZXR1cm4gdGhpcy5pc0luRWRpdE1vZGUoKX1kYmxjbGljayh0KXt0aGlzLmVuYWJsZUVkaXRNb2RlKCk7dGhpcy5lZGl0b3JEaXYuZm9jdXMoKX1rZXlkb3duKHQpe2lmKHQudGFyZ2V0PT09dGhpcy5kaXYmJiJFbnRlciI9PT10LmtleSl7dGhpcy5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZWRpdG9yRGl2LmZvY3VzKCl9fWVkaXRvckRpdktleWRvd24odCl7RnJlZVRleHRFZGl0b3IuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9ZWRpdG9yRGl2Rm9jdXModCl7dGhpcy5pc0VkaXRpbmc9ITB9ZWRpdG9yRGl2Qmx1cih0KXt0aGlzLmlzRWRpdGluZz0hMX1lZGl0b3JEaXZJbnB1dCh0KXt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LnRvZ2dsZSgiZnJlZVRleHRFZGl0aW5nIix0aGlzLmlzRW1wdHkoKSl9ZGlzYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7dGhpcy5lZGl0b3JEaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIpfWVuYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZXh0Ym94Iik7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIsITApfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO3RoaXMuZWRpdG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuZWRpdG9yRGl2LmNsYXNzTmFtZT0iaW50ZXJuYWwiO3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuI2t0KTt0aGlzLmVuYWJsZUVkaXRpbmcoKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5lZGl0b3JEaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIpLnRoZW4oKHQ9PnRoaXMuZWRpdG9yRGl2Py5zZXRBdHRyaWJ1dGUoImRlZmF1bHQtY29udGVudCIsdCkpKTt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITA7Y29uc3R7c3R5bGU6c309dGhpcy5lZGl0b3JEaXY7cy5mb250U2l6ZT1gY2FsYygke3RoaXMuI010fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3MuY29sb3I9dGhpcy4jVHQ7dGhpcy5kaXYuYXBwZW5kKHRoaXMuZWRpdG9yRGl2KTt0aGlzLm92ZXJsYXlEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5vdmVybGF5RGl2LmNsYXNzTGlzdC5hZGQoIm92ZXJsYXkiLCJlbmFibGVkIik7dGhpcy5kaXYuYXBwZW5kKHRoaXMub3ZlcmxheURpdik7KDAsbi5iaW5kRXZlbnRzKSh0aGlzLHRoaXMuZGl2LFsiZGJsY2xpY2siLCJrZXlkb3duIl0pO2lmKHRoaXMud2lkdGgpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLnNldEF0KHQqcyxlKmksdGhpcy53aWR0aCpzLHRoaXMuaGVpZ2h0KmkpO2Zvcihjb25zdCB0IG9mIHRoaXMuI3d0LnNwbGl0KCJcbiIpKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuYXBwZW5kKHQ/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7dGhpcy5lZGl0b3JEaXYuYXBwZW5kKGUpfXRoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITF9ZWxzZXt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwfXJldHVybiB0aGlzLmRpdn1nZXQgY29udGVudERpdigpe3JldHVybiB0aGlzLmVkaXRvckRpdn1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPXN1cGVyLmRlc2VyaWFsaXplKHQsZSk7cy4jTXQ9dC5mb250U2l6ZTtzLiNUdD1pLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpO3MuI3d0PXQudmFsdWU7cmV0dXJuIHN9c2VyaWFsaXplKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIG51bGw7Y29uc3QgdD1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnRoaXMucGFyZW50LnNjYWxlRmFjdG9yLGU9dGhpcy5nZXRSZWN0KHQsdCkscz1yLkFubm90YXRpb25FZGl0b3IuX2NvbG9yTWFuYWdlci5jb252ZXJ0KGdldENvbXB1dGVkU3R5bGUodGhpcy5lZGl0b3JEaXYpLmNvbG9yKTtyZXR1cm57YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCxjb2xvcjpzLGZvbnRTaXplOnRoaXMuI010LHZhbHVlOnRoaXMuI3d0LHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDplLHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLkZyZWVUZXh0RWRpdG9yPUZyZWVUZXh0RWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuSW5rRWRpdG9yPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZml0Q3VydmUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpdEN1cnZlfX0pO3ZhciBpPXMoMSksbj1zKDQpLHI9cygyNCksYT1zKDUpO2NvbnN0IG89MTY7Y2xhc3MgSW5rRWRpdG9yIGV4dGVuZHMgbi5Bbm5vdGF0aW9uRWRpdG9yeyNMdD0wOyNOdD0wOyNCdD0wOyNqdD10aGlzLmNhbnZhc1BvaW50ZXJtb3ZlLmJpbmQodGhpcyk7I1V0PXRoaXMuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQodGhpcyk7I3F0PXRoaXMuY2FudmFzUG9pbnRlcnVwLmJpbmQodGhpcyk7I1d0PXRoaXMuY2FudmFzUG9pbnRlcmRvd24uYmluZCh0aGlzKTsjR3Q9ITE7I0h0PSExOyN6dD1udWxsOyNWdD1udWxsOyNYdD0wOyMkdD0wOyNZdD1udWxsO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0T3BhY2l0eT0xO3N0YXRpYyBfZGVmYXVsdFRoaWNrbmVzcz0xO3N0YXRpYyBfbDEwblByb21pc2U7c3RhdGljIF90eXBlPSJpbmsiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6Imlua0VkaXRvciJ9KTt0aGlzLmNvbG9yPXQuY29sb3J8fG51bGw7dGhpcy50aGlja25lc3M9dC50aGlja25lc3N8fG51bGw7dGhpcy5vcGFjaXR5PXQub3BhY2l0eXx8bnVsbDt0aGlzLnBhdGhzPVtdO3RoaXMuYmV6aWVyUGF0aDJEPVtdO3RoaXMuY3VycmVudFBhdGg9W107dGhpcy5zY2FsZUZhY3Rvcj0xO3RoaXMudHJhbnNsYXRpb25YPXRoaXMudHJhbnNsYXRpb25ZPTA7dGhpcy54PTA7dGhpcy55PTB9c3RhdGljIGluaXRpYWxpemUodCl7dGhpcy5fbDEwblByb21pc2U9bmV3IE1hcChbImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiLCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIl0ubWFwKChlPT5bZSx0LmdldChlKV0pKSl9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcj1lO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWTpJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5PWUvMTAwfX11cGRhdGVQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6dGhpcy4jS3QoZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjp0aGlzLiNEdChlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6dGhpcy4jSnQoZSl9fXN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLElua0VkaXRvci5fZGVmYXVsdENvbG9yfHxuLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLE1hdGgucm91bmQoMTAwKklua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLHRoaXMudGhpY2tuZXNzfHxJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUix0aGlzLmNvbG9yfHxJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoodGhpcy5vcGFjaXR5Pz9JbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXX0jS3QodCl7Y29uc3QgZT10aGlzLnRoaWNrbmVzczt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy50aGlja25lc3M9dDt0aGlzLiNRdCgpfSx1bmRvOigpPT57dGhpcy50aGlja25lc3M9ZTt0aGlzLiNRdCgpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy5jb2xvcjt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5jb2xvcj10O3RoaXMuI1p0KCl9LHVuZG86KCk9Pnt0aGlzLmNvbG9yPWU7dGhpcy4jWnQoKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUixvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0p0KHQpe3QvPTEwMDtjb25zdCBlPXRoaXMub3BhY2l0eTt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5vcGFjaXR5PXQ7dGhpcy4jWnQoKX0sdW5kbzooKT0+e3RoaXMub3BhY2l0eT1lO3RoaXMuI1p0KCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtpZihudWxsIT09dGhpcy5kaXYpe2lmKCF0aGlzLmNhbnZhcyl7dGhpcy4jdGUoKTt0aGlzLiNlZSgpfWlmKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSl7dGhpcy5wYXJlbnQuYWRkKHRoaXMpO3RoaXMuI3NlKCl9dGhpcy4jUXQoKX19cmVtb3ZlKCl7aWYobnVsbCE9PXRoaXMuY2FudmFzKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5yZW1vdmUoKTt0aGlzLmNhbnZhcz1udWxsO3RoaXMuI1Z0LmRpc2Nvbm5lY3QoKTt0aGlzLiNWdD1udWxsO3N1cGVyLnJlbW92ZSgpfX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLiNHdCYmbnVsbCE9PXRoaXMuY2FudmFzKXtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jV3QpO3RoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jcXQpfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMpe3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCk7dGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNXdCk7dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNxdCl9fW9uY2VBZGRlZCgpe3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5wYXRocy5sZW5ndGh8fDE9PT10aGlzLnBhdGhzLmxlbmd0aCYmMD09PXRoaXMucGF0aHNbMF0ubGVuZ3RofSNpZSgpe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmUscm90YXRpb246c309dGhpcy5wYXJlbnQudmlld3BvcnQ7c3dpdGNoKHMpe2Nhc2UgOTA6cmV0dXJuWzAsdCx0LGVdO2Nhc2UgMTgwOnJldHVyblt0LGUsdCxlXTtjYXNlIDI3MDpyZXR1cm5bZSwwLHQsZV07ZGVmYXVsdDpyZXR1cm5bMCwwLHQsZV19fSNuZSgpe3RoaXMuY3R4LmxpbmVXaWR0aD10aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvci90aGlzLnNjYWxlRmFjdG9yO3RoaXMuY3R4LmxpbmVDYXA9InJvdW5kIjt0aGlzLmN0eC5saW5lSm9pbj0icm91bmQiO3RoaXMuY3R4Lm1pdGVyTGltaXQ9MTA7dGhpcy5jdHguc3Ryb2tlU3R5bGU9YCR7dGhpcy5jb2xvcn0keygwLGEub3BhY2l0eVRvSGV4KSh0aGlzLm9wYWNpdHkpfWB9I3JlKHQsZSl7dGhpcy5pc0VkaXRpbmc9ITA7aWYoIXRoaXMuI0h0KXt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMudGhpY2tuZXNzfHw9SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzO3RoaXMuY29sb3J8fD1JbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yO3RoaXMub3BhY2l0eT8/PUlua0VkaXRvci5fZGVmYXVsdE9wYWNpdHl9dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTt0aGlzLiN6dD1udWxsO3RoaXMuI25lKCk7dGhpcy5jdHguYmVnaW5QYXRoKCk7dGhpcy5jdHgubW92ZVRvKHQsZSk7dGhpcy4jWXQ9KCk9PntpZih0aGlzLiNZdCl7aWYodGhpcy4jenQpe2lmKHRoaXMuaXNFbXB0eSgpKXt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KX1lbHNlIHRoaXMuI1p0KCk7dGhpcy5jdHgubGluZVRvKC4uLnRoaXMuI3p0KTt0aGlzLiN6dD1udWxsO3RoaXMuY3R4LnN0cm9rZSgpfXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy4jWXQpfX07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLiNZdCl9I2FlKHQsZSl7Y29uc3RbcyxpXT10aGlzLmN1cnJlbnRQYXRoLmF0KC0xKTtpZih0IT09c3x8ZSE9PWkpe3RoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSk7dGhpcy4jenQ9W3QsZV19fSNvZSh0LGUpe3RoaXMuY3R4LmNsb3NlUGF0aCgpO3RoaXMuI1l0PW51bGw7dD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHRoaXMuY2FudmFzLndpZHRoKTtlPU1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5jYW52YXMuaGVpZ2h0KTtjb25zdFtzLGldPXRoaXMuY3VycmVudFBhdGguYXQoLTEpO3Q9PT1zJiZlPT09aXx8dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTtsZXQgbjtpZigxIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpbj0oMCxyLmZpdEN1cnZlKSh0aGlzLmN1cnJlbnRQYXRoLDMwLG51bGwpO2Vsc2V7Y29uc3Qgcz1bdCxlXTtuPVtbcyxzLnNsaWNlKCkscy5zbGljZSgpLHNdXX1jb25zdCBhPUlua0VkaXRvci4jbGUobik7dGhpcy5jdXJyZW50UGF0aC5sZW5ndGg9MDt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5wYXRocy5wdXNoKG4pO3RoaXMuYmV6aWVyUGF0aDJELnB1c2goYSk7dGhpcy5yZWJ1aWxkKCl9LHVuZG86KCk9Pnt0aGlzLnBhdGhzLnBvcCgpO3RoaXMuYmV6aWVyUGF0aDJELnBvcCgpO2lmKDA9PT10aGlzLnBhdGhzLmxlbmd0aCl0aGlzLnJlbW92ZSgpO2Vsc2V7aWYoIXRoaXMuY2FudmFzKXt0aGlzLiN0ZSgpO3RoaXMuI2VlKCl9dGhpcy4jUXQoKX19LG11c3RFeGVjOiEwfSl9I1p0KCl7aWYodGhpcy5pc0VtcHR5KCkpe3RoaXMuI2NlKCk7cmV0dXJufXRoaXMuI25lKCk7Y29uc3R7Y2FudmFzOnQsY3R4OmV9PXRoaXM7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KTt0aGlzLiNjZSgpO2Zvcihjb25zdCB0IG9mIHRoaXMuYmV6aWVyUGF0aDJEKWUuc3Ryb2tlKHQpfWNvbW1pdCgpe2lmKCF0aGlzLiNHdCl7c3VwZXIuY29tbWl0KCk7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuI0d0PSEwO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIik7dGhpcy4jUXQoITApO3RoaXMucGFyZW50LmFkZElua0VkaXRvcklmTmVlZGVkKCEwKTt0aGlzLnBhcmVudC5tb3ZlRWRpdG9ySW5ET00odGhpcyk7dGhpcy5kaXYuZm9jdXMoKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3RoaXMuZW5hYmxlRWRpdE1vZGUoKX1jYW52YXNQb2ludGVyZG93bih0KXtpZigwPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJiF0aGlzLiNHdCl7dGhpcy5zZXRJbkZvcmVncm91bmQoKTsibW91c2UiIT09dC50eXBlJiZ0aGlzLmRpdi5mb2N1cygpO3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix0aGlzLiNVdCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuI2p0KTt0aGlzLiNyZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX19Y2FudmFzUG9pbnRlcm1vdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLiNhZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX1jYW52YXNQb2ludGVydXAodCl7aWYoMD09PXQuYnV0dG9uJiZ0aGlzLmlzSW5FZGl0TW9kZSgpJiYwIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy4jaGUodCk7dGhpcy5zZXRJbkJhY2tncm91bmQoKX19Y2FudmFzUG9pbnRlcmxlYXZlKHQpe3RoaXMuI2hlKHQpO3RoaXMuc2V0SW5CYWNrZ3JvdW5kKCl9I2hlKHQpe3RoaXMuI29lKHQub2Zmc2V0WCx0Lm9mZnNldFkpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdGhpcy4jVXQpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLiNqdCk7dGhpcy5wYXJlbnQuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0aGlzKX0jdGUoKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5jbGFzc05hbWU9Imlua0VkaXRvckNhbnZhcyI7SW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiKS50aGVuKCh0PT50aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSkpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmNhbnZhcyk7dGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKX0jZWUoKXtsZXQgdD1udWxsO3RoaXMuI1Z0PW5ldyBSZXNpemVPYnNlcnZlcigoZT0+e2NvbnN0IHM9ZVswXS5jb250ZW50UmVjdDtpZihzLndpZHRoJiZzLmhlaWdodCl7bnVsbCE9PXQmJmNsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5maXhEaW1zKCk7dD1udWxsfSksMTAwKTt0aGlzLnNldERpbWVuc2lvbnMocy53aWR0aCxzLmhlaWdodCl9fSkpO3RoaXMuI1Z0Lm9ic2VydmUodGhpcy5kaXYpfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO0lua0VkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5kaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtjb25zdFtzLGksbixyXT10aGlzLiNpZSgpO3RoaXMuc2V0QXQocyxpLDAsMCk7dGhpcy5zZXREaW1zKG4scik7dGhpcy4jdGUoKTtpZih0aGlzLndpZHRoKXtjb25zdFtzLGldPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy5zZXRBdCh0KnMsZSppLHRoaXMud2lkdGgqcyx0aGlzLmhlaWdodCppKTt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMuc2V0RGltcyh0aGlzLndpZHRoKnMsdGhpcy5oZWlnaHQqaSk7dGhpcy4jWnQoKTt0aGlzLiNkZSgpO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZXt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIik7dGhpcy5lbmFibGVFZGl0TW9kZSgpfXRoaXMuI2VlKCk7cmV0dXJuIHRoaXMuZGl2fSNzZSgpe2lmKCF0aGlzLiNIdClyZXR1cm47Y29uc3RbdCxlXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMuY2FudmFzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKnQpO3RoaXMuY2FudmFzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQqZSk7dGhpcy4jY2UoKX1zZXREaW1lbnNpb25zKHQsZSl7Y29uc3Qgcz1NYXRoLnJvdW5kKHQpLGk9TWF0aC5yb3VuZChlKTtpZih0aGlzLiNYdD09PXMmJnRoaXMuIyR0PT09aSlyZXR1cm47dGhpcy4jWHQ9czt0aGlzLiMkdD1pO3RoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7aWYodGhpcy4jTHQmJk1hdGguYWJzKHRoaXMuI0x0LXQvZSk+LjAxKXtlPU1hdGguY2VpbCh0L3RoaXMuI0x0KTt0aGlzLnNldERpbXModCxlKX1jb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy53aWR0aD10L247dGhpcy5oZWlnaHQ9ZS9yO3RoaXMuI0d0JiZ0aGlzLiN1ZSh0LGUpO3RoaXMuI3NlKCk7dGhpcy4jWnQoKTt0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn0jdWUodCxlKXtjb25zdCBzPXRoaXMuI3BlKCksaT0odC1zKS90aGlzLiNCdCxuPShlLXMpL3RoaXMuI050O3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4oaSxuKX0jY2UoKXtjb25zdCB0PXRoaXMuI3BlKCkvMjt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0odGhpcy5zY2FsZUZhY3RvciwwLDAsdGhpcy5zY2FsZUZhY3Rvcix0aGlzLnRyYW5zbGF0aW9uWCp0aGlzLnNjYWxlRmFjdG9yK3QsdGhpcy50cmFuc2xhdGlvblkqdGhpcy5zY2FsZUZhY3Rvcit0KX1zdGF0aWMjbGUodCl7Y29uc3QgZT1uZXcgUGF0aDJEO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3RbaSxuLHIsYV09dFtzXTswPT09cyYmZS5tb3ZlVG8oLi4uaSk7ZS5iZXppZXJDdXJ2ZVRvKG5bMF0sblsxXSxyWzBdLHJbMV0sYVswXSxhWzFdKX1yZXR1cm4gZX0jZ2UodCxlLHMsaSl7Y29uc3Qgbj1bXSxyPXRoaXMudGhpY2tuZXNzLzI7bGV0IGEsbztmb3IoY29uc3QgbCBvZiB0aGlzLnBhdGhzKXthPVtdO289W107Zm9yKGxldCBuPTAsYz1sLmxlbmd0aDtuPGM7bisrKXtjb25zdFtjLGgsZCx1XT1sW25dLHA9dCooY1swXStlKStyLGc9aS10KihjWzFdK3MpLXIsbT10KihoWzBdK2UpK3IsZj1pLXQqKGhbMV0rcyktcixiPXQqKGRbMF0rZSkrcixBPWktdCooZFsxXStzKS1yLF89dCoodVswXStlKStyLHY9aS10Kih1WzFdK3MpLXI7aWYoMD09PW4pe2EucHVzaChwLGcpO28ucHVzaChwLGcpfWEucHVzaChtLGYsYixBLF8sdik7dGhpcy4jbWUocCxnLG0sZixiLEEsXyx2LDQsbyl9bi5wdXNoKHtiZXppZXI6YSxwb2ludHM6b30pfXJldHVybiBufSNtZSh0LGUscyxpLG4scixhLG8sbCxjKXtpZih0aGlzLiNmZSh0LGUscyxpLG4scixhLG8pKWMucHVzaChhLG8pO2Vsc2V7Zm9yKGxldCBoPTE7aDxsLTE7aCsrKXtjb25zdCBkPWgvbCx1PTEtZDtsZXQgcD1kKnQrdSpzLGc9ZCplK3UqaSxtPWQqcyt1Km4sZj1kKmkrdSpyO3A9ZCpwK3UqbTtnPWQqZyt1KmY7bT1kKm0rdSooZCpuK3UqYSk7Zj1kKmYrdSooZCpyK3Uqbyk7cD1kKnArdSptO2c9ZCpnK3UqZjtjLnB1c2gocCxnKX1jLnB1c2goYSxvKX19I2ZlKHQsZSxzLGksbixyLGEsbyl7Y29uc3QgbD0oMypzLTIqdC1hKSoqMixjPSgzKmktMiplLW8pKioyLGg9KDMqbi10LTIqYSkqKjIsZD0oMypyLWUtMipvKSoqMjtyZXR1cm4gTWF0aC5tYXgobCxoKStNYXRoLm1heChjLGQpPD0xMH0jYmUoKXtsZXQgdD0xLzAsZT0tMS8wLHM9MS8wLG49LTEvMDtmb3IoY29uc3QgciBvZiB0aGlzLnBhdGhzKWZvcihjb25zdFthLG8sbCxjXW9mIHIpe2NvbnN0IHI9aS5VdGlsLmJlemllckJvdW5kaW5nQm94KC4uLmEsLi4ubywuLi5sLC4uLmMpO3Q9TWF0aC5taW4odCxyWzBdKTtzPU1hdGgubWluKHMsclsxXSk7ZT1NYXRoLm1heChlLHJbMl0pO249TWF0aC5tYXgobixyWzNdKX1yZXR1cm5bdCxzLGUsbl19I3BlKCl7cmV0dXJuIHRoaXMuI0d0P01hdGguY2VpbCh0aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik6MH0jUXQodD0hMSl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuO2lmKCF0aGlzLiNHdCl7dGhpcy4jWnQoKTtyZXR1cm59Y29uc3QgZT10aGlzLiNiZSgpLHM9dGhpcy4jcGUoKTt0aGlzLiNCdD1NYXRoLm1heChvLGVbMl0tZVswXSk7dGhpcy4jTnQ9TWF0aC5tYXgobyxlWzNdLWVbMV0pO2NvbnN0IGk9TWF0aC5jZWlsKHMrdGhpcy4jQnQqdGhpcy5zY2FsZUZhY3Rvciksbj1NYXRoLmNlaWwocyt0aGlzLiNOdCp0aGlzLnNjYWxlRmFjdG9yKSxbcixhXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMud2lkdGg9aS9yO3RoaXMuaGVpZ2h0PW4vYTt0aGlzLiNMdD1pL247dGhpcy4jZGUoKTtjb25zdCBsPXRoaXMudHJhbnNsYXRpb25YLGM9dGhpcy50cmFuc2xhdGlvblk7dGhpcy50cmFuc2xhdGlvblg9LWVbMF07dGhpcy50cmFuc2xhdGlvblk9LWVbMV07dGhpcy4jc2UoKTt0aGlzLiNadCgpO3RoaXMuI1h0PWk7dGhpcy4jJHQ9bjt0aGlzLnNldERpbXMoaSxuKTtjb25zdCBoPXQ/cy90aGlzLnNjYWxlRmFjdG9yLzI6MDt0aGlzLnRyYW5zbGF0ZShsLXRoaXMudHJhbnNsYXRpb25YLWgsYy10aGlzLnRyYW5zbGF0aW9uWS1oKX0jZGUoKXtjb25zdHtzdHlsZTp0fT10aGlzLmRpdjtpZih0aGlzLiNMdD49MSl7dC5taW5IZWlnaHQ9IjE2cHgiO3QubWluV2lkdGg9YCR7TWF0aC5yb3VuZCh0aGlzLiNMdCpvKX1weGB9ZWxzZXt0Lm1pbldpZHRoPSIxNnB4Ijt0Lm1pbkhlaWdodD1gJHtNYXRoLnJvdW5kKG8vdGhpcy4jTHQpfXB4YH19c3RhdGljIGRlc2VyaWFsaXplKHQsZSl7Y29uc3Qgcz1zdXBlci5kZXNlcmlhbGl6ZSh0LGUpO3MudGhpY2tuZXNzPXQudGhpY2tuZXNzO3MuY29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTtzLm9wYWNpdHk9dC5vcGFjaXR5O2NvbnN0W24scl09ZS5wYWdlRGltZW5zaW9ucyxhPXMud2lkdGgqbixsPXMuaGVpZ2h0KnIsYz1lLnNjYWxlRmFjdG9yLGg9dC50aGlja25lc3MvMjtzLiNMdD1hL2w7cy4jR3Q9ITA7cy4jWHQ9TWF0aC5yb3VuZChhKTtzLiMkdD1NYXRoLnJvdW5kKGwpO2Zvcihjb25zdHtiZXppZXI6ZX1vZiB0LnBhdGhzKXtjb25zdCB0PVtdO3MucGF0aHMucHVzaCh0KTtsZXQgaT1jKihlWzBdLWgpLG49YyoobC1lWzFdLWgpO2ZvcihsZXQgcz0yLHI9ZS5sZW5ndGg7czxyO3MrPTYpe2NvbnN0IHI9YyooZVtzXS1oKSxhPWMqKGwtZVtzKzFdLWgpLG89YyooZVtzKzJdLWgpLGQ9YyoobC1lW3MrM10taCksdT1jKihlW3MrNF0taCkscD1jKihsLWVbcys1XS1oKTt0LnB1c2goW1tpLG5dLFtyLGFdLFtvLGRdLFt1LHBdXSk7aT11O249cH1jb25zdCByPXRoaXMuI2xlKHQpO3MuYmV6aWVyUGF0aDJELnB1c2gocil9Y29uc3QgZD1zLiNiZSgpO3MuI0J0PU1hdGgubWF4KG8sZFsyXS1kWzBdKTtzLiNOdD1NYXRoLm1heChvLGRbM10tZFsxXSk7cy4jdWUoYSxsKTtyZXR1cm4gc31zZXJpYWxpemUoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZ2V0UmVjdCgwLDApLGU9dGhpcy5yb3RhdGlvbiUxODA9PTA/dFszXS10WzFdOnRbMl0tdFswXSxzPW4uQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5jdHguc3Ryb2tlU3R5bGUpO3JldHVybnthbm5vdGF0aW9uVHlwZTppLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyxjb2xvcjpzLHRoaWNrbmVzczp0aGlzLnRoaWNrbmVzcyxvcGFjaXR5OnRoaXMub3BhY2l0eSxwYXRoczp0aGlzLiNnZSh0aGlzLnNjYWxlRmFjdG9yL3RoaXMucGFyZW50LnNjYWxlRmFjdG9yLHRoaXMudHJhbnNsYXRpb25YLHRoaXMudHJhbnNsYXRpb25ZLGUpLHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDp0LHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLklua0VkaXRvcj1JbmtFZGl0b3J9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5maXRDdXJ2ZT12b2lkIDA7Y29uc3QgaT1zKDI1KTtlLmZpdEN1cnZlPWl9LHQ9PntmdW5jdGlvbiBmaXRDdWJpYyh0LGUscyxpLG4pe3ZhciByLGEsbyxsLGMsaCxkLHUscCxnLG0sZixiO2lmKDI9PT10Lmxlbmd0aCl7Zj1tYXRocy52ZWN0b3JMZW4obWF0aHMuc3VidHJhY3QodFswXSx0WzFdKSkvMztyZXR1cm5bcj1bdFswXSxtYXRocy5hZGRBcnJheXModFswXSxtYXRocy5tdWxJdGVtcyhlLGYpKSxtYXRocy5hZGRBcnJheXModFsxXSxtYXRocy5tdWxJdGVtcyhzLGYpKSx0WzFdXV19YT1mdW5jdGlvbiBjaG9yZExlbmd0aFBhcmFtZXRlcml6ZSh0KXt2YXIgZSxzLGksbj1bXTt0LmZvckVhY2goKCh0LHIpPT57ZT1yP3MrbWF0aHMudmVjdG9yTGVuKG1hdGhzLnN1YnRyYWN0KHQsaSkpOjA7bi5wdXNoKGUpO3M9ZTtpPXR9KSk7cmV0dXJuIG49bi5tYXAoKHQ9PnQvcykpfSh0KTtbcixsLGhdPWdlbmVyYXRlQW5kUmVwb3J0KHQsYSxhLGUscyxuKTtpZigwPT09bHx8bDxpKXJldHVybltyXTtpZihsPGkqaSl7bz1hO2M9bDtkPWg7Zm9yKGI9MDtiPDIwO2IrKyl7bz1yZXBhcmFtZXRlcml6ZShyLHQsbyk7W3IsbCxoXT1nZW5lcmF0ZUFuZFJlcG9ydCh0LGEsbyxlLHMsbik7aWYobDxpKXJldHVybltyXTtpZihoPT09ZCl7bGV0IHQ9bC9jO2lmKHQ+Ljk5OTkmJnQ8MS4wMDAxKWJyZWFrfWM9bDtkPWh9fW09W107aWYoKHU9bWF0aHMuc3VidHJhY3QodFtoLTFdLHRbaCsxXSkpLmV2ZXJ5KCh0PT4wPT09dCkpKXt1PW1hdGhzLnN1YnRyYWN0KHRbaC0xXSx0W2hdKTtbdVswXSx1WzFdXT1bLXVbMV0sdVswXV19cD1tYXRocy5ub3JtYWxpemUodSk7Zz1tYXRocy5tdWxJdGVtcyhwLC0xKTtyZXR1cm4gbT0obT1tLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKDAsaCsxKSxlLHAsaSxuKSkpLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKGgpLGcscyxpLG4pKX1mdW5jdGlvbiBnZW5lcmF0ZUFuZFJlcG9ydCh0LGUscyxpLG4scil7dmFyIGEsbyxsO2E9ZnVuY3Rpb24gZ2VuZXJhdGVCZXppZXIodCxlLHMsaSl7dmFyIG4scixhLG8sbCxjLGgsZCx1LHAsZyxtLGYsYixBLF8sdix5PXRbMF0sUz10W3QubGVuZ3RoLTFdO249W3ksbnVsbCxudWxsLFNdO3I9bWF0aHMuemVyb3NfWHgyeDIoZS5sZW5ndGgpO2ZvcihmPTAsYj1lLmxlbmd0aDtmPGI7ZisrKXt2PTEtKF89ZVtmXSk7KGE9cltmXSlbMF09bWF0aHMubXVsSXRlbXMocywzKl8qKHYqdikpO2FbMV09bWF0aHMubXVsSXRlbXMoaSwzKnYqKF8qXykpfW89W1swLDBdLFswLDBdXTtsPVswLDBdO2ZvcihmPTAsYj10Lmxlbmd0aDtmPGI7ZisrKXtfPWVbZl07YT1yW2ZdO29bMF1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMF0pO29bMF1bMV0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMV0rPW1hdGhzLmRvdChhWzFdLGFbMV0pO0E9bWF0aHMuc3VidHJhY3QodFtmXSxiZXppZXIucShbeSx5LFMsU10sXykpO2xbMF0rPW1hdGhzLmRvdChhWzBdLEEpO2xbMV0rPW1hdGhzLmRvdChhWzFdLEEpfWM9b1swXVswXSpvWzFdWzFdLW9bMV1bMF0qb1swXVsxXTtoPW9bMF1bMF0qbFsxXS1vWzFdWzBdKmxbMF07ZD1sWzBdKm9bMV1bMV0tbFsxXSpvWzBdWzFdO3U9MD09PWM/MDpkL2M7cD0wPT09Yz8wOmgvYzttPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdCh5LFMpKTtpZih1PChnPTFlLTYqbSl8fHA8Zyl7blsxXT1tYXRocy5hZGRBcnJheXMoeSxtYXRocy5tdWxJdGVtcyhzLG0vMykpO25bMl09bWF0aHMuYWRkQXJyYXlzKFMsbWF0aHMubXVsSXRlbXMoaSxtLzMpKX1lbHNle25bMV09bWF0aHMuYWRkQXJyYXlzKHksbWF0aHMubXVsSXRlbXMocyx1KSk7blsyXT1tYXRocy5hZGRBcnJheXMoUyxtYXRocy5tdWxJdGVtcyhpLHApKX1yZXR1cm4gbn0odCxzLGksbik7W28sbF09ZnVuY3Rpb24gY29tcHV0ZU1heEVycm9yKHQsZSxzKXt2YXIgaSxuLHIsYSxvLGwsYyxoO249MDtyPU1hdGguZmxvb3IodC5sZW5ndGgvMik7Y29uc3QgZD1tYXBUdG9SZWxhdGl2ZURpc3RhbmNlcyhlLDEwKTtmb3Iobz0wLGw9dC5sZW5ndGg7bzxsO28rKyl7Yz10W29dO2g9ZmluZF90KGUsc1tvXSxkLDEwKTtpZigoaT0oYT1tYXRocy5zdWJ0cmFjdChiZXppZXIucShlLGgpLGMpKVswXSphWzBdK2FbMV0qYVsxXSk+bil7bj1pO3I9b319cmV0dXJuW24scl19KHQsYSxlKTtyJiZyKHtiZXo6YSxwb2ludHM6dCxwYXJhbXM6ZSxtYXhFcnI6byxtYXhQb2ludDpsfSk7cmV0dXJuW2EsbyxsXX1mdW5jdGlvbiByZXBhcmFtZXRlcml6ZSh0LGUscyl7cmV0dXJuIHMubWFwKCgocyxpKT0+bmV3dG9uUmFwaHNvblJvb3RGaW5kKHQsZVtpXSxzKSkpfWZ1bmN0aW9uIG5ld3RvblJhcGhzb25Sb290RmluZCh0LGUscyl7dmFyIGk9bWF0aHMuc3VidHJhY3QoYmV6aWVyLnEodCxzKSxlKSxuPWJlemllci5xcHJpbWUodCxzKSxyPW1hdGhzLm11bE1hdHJpeChpLG4pLGE9bWF0aHMuc3VtKG1hdGhzLnNxdWFyZUl0ZW1zKG4pKSsyKm1hdGhzLm11bE1hdHJpeChpLGJlemllci5xcHJpbWVwcmltZSh0LHMpKTtyZXR1cm4gMD09PWE/czpzLXIvYX12YXIgbWFwVHRvUmVsYXRpdmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHMsaT1bMF0sbj10WzBdLHI9MCxhPTE7YTw9ZTthKyspe3M9YmV6aWVyLnEodCxhL2UpO3IrPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdChzLG4pKTtpLnB1c2gocik7bj1zfXJldHVybiBpPWkubWFwKCh0PT50L3IpKX07ZnVuY3Rpb24gZmluZF90KHQsZSxzLGkpe2lmKGU8MClyZXR1cm4gMDtpZihlPjEpcmV0dXJuIDE7Zm9yKHZhciBuLHIsYSxvLGw9MTtsPD1pO2wrKylpZihlPD1zW2xdKXthPShsLTEpL2k7cj1sL2k7bz0oZS0obj1zW2wtMV0pKS8oc1tsXS1uKSooci1hKSthO2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIGNyZWF0ZVRhbmdlbnQodCxlKXtyZXR1cm4gbWF0aHMubm9ybWFsaXplKG1hdGhzLnN1YnRyYWN0KHQsZSkpfWNsYXNzIG1hdGhze3N0YXRpYyB6ZXJvc19YeDJ4Mih0KXtmb3IodmFyIGU9W107dC0tOyllLnB1c2goWzAsMF0pO3JldHVybiBlfXN0YXRpYyBtdWxJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dCplKSl9c3RhdGljIG11bE1hdHJpeCh0LGUpe3JldHVybiB0LnJlZHVjZSgoKHQscyxpKT0+dCtzKmVbaV0pLDApfXN0YXRpYyBzdWJ0cmFjdCh0LGUpe3JldHVybiB0Lm1hcCgoKHQscyk9PnQtZVtzXSkpfXN0YXRpYyBhZGRBcnJheXModCxlKXtyZXR1cm4gdC5tYXAoKCh0LHMpPT50K2Vbc10pKX1zdGF0aWMgYWRkSXRlbXModCxlKXtyZXR1cm4gdC5tYXAoKHQ9PnQrZSkpfXN0YXRpYyBzdW0odCl7cmV0dXJuIHQucmVkdWNlKCgodCxlKT0+dCtlKSl9c3RhdGljIGRvdCh0LGUpe3JldHVybiBtYXRocy5tdWxNYXRyaXgodCxlKX1zdGF0aWMgdmVjdG9yTGVuKHQpe3JldHVybiBNYXRoLmh5cG90KC4uLnQpfXN0YXRpYyBkaXZJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dC9lKSl9c3RhdGljIHNxdWFyZUl0ZW1zKHQpe3JldHVybiB0Lm1hcCgodD0+dCp0KSl9c3RhdGljIG5vcm1hbGl6ZSh0KXtyZXR1cm4gdGhpcy5kaXZJdGVtcyh0LHRoaXMudmVjdG9yTGVuKHQpKX19Y2xhc3MgYmV6aWVye3N0YXRpYyBxKHQsZSl7dmFyIHM9MS1lLGk9bWF0aHMubXVsSXRlbXModFswXSxzKnMqcyksbj1tYXRocy5tdWxJdGVtcyh0WzFdLDMqcypzKmUpLHI9bWF0aHMubXVsSXRlbXModFsyXSwzKnMqZSplKSxhPW1hdGhzLm11bEl0ZW1zKHRbM10sZSplKmUpO3JldHVybiBtYXRocy5hZGRBcnJheXMobWF0aHMuYWRkQXJyYXlzKGksbiksbWF0aHMuYWRkQXJyYXlzKHIsYSkpfXN0YXRpYyBxcHJpbWUodCxlKXt2YXIgcz0xLWUsaT1tYXRocy5tdWxJdGVtcyhtYXRocy5zdWJ0cmFjdCh0WzFdLHRbMF0pLDMqcypzKSxuPW1hdGhzLm11bEl0ZW1zKG1hdGhzLnN1YnRyYWN0KHRbMl0sdFsxXSksNipzKmUpLHI9bWF0aHMubXVsSXRlbXMobWF0aHMuc3VidHJhY3QodFszXSx0WzJdKSwzKmUqZSk7cmV0dXJuIG1hdGhzLmFkZEFycmF5cyhtYXRocy5hZGRBcnJheXMoaSxuKSxyKX1zdGF0aWMgcXByaW1lcHJpbWUodCxlKXtyZXR1cm4gbWF0aHMuYWRkQXJyYXlzKG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzJdLG1hdGhzLm11bEl0ZW1zKHRbMV0sMikpLHRbMF0pLDYqKDEtZSkpLG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzNdLG1hdGhzLm11bEl0ZW1zKHRbMl0sMikpLHRbMV0pLDYqZSkpfX10LmV4cG9ydHM9ZnVuY3Rpb24gZml0Q3VydmUodCxlLHMpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO3QuZm9yRWFjaCgoZT0+e2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLnNvbWUoKHQ9PiJudW1iZXIiIT10eXBlb2YgdCkpfHxlLmxlbmd0aCE9PXRbMF0ubGVuZ3RoKXRocm93IEVycm9yKCJFYWNoIHBvaW50IHNob3VsZCBiZSBhbiBhcnJheSBvZiBudW1iZXJzLiBFYWNoIHBvaW50IHNob3VsZCBoYXZlIHRoZSBzYW1lIGFtb3VudCBvZiBudW1iZXJzLiIpfSkpO2lmKCh0PXQuZmlsdGVyKCgoZSxzKT0+MD09PXN8fCFlLmV2ZXJ5KCgoZSxpKT0+ZT09PXRbcy0xXVtpXSkpKSkpLmxlbmd0aDwyKXJldHVybltdO2NvbnN0IGk9dC5sZW5ndGgsbj1jcmVhdGVUYW5nZW50KHRbMV0sdFswXSkscj1jcmVhdGVUYW5nZW50KHRbaS0yXSx0W2ktMV0pO3JldHVybiBmaXRDdWJpYyh0LG4scixlLHMpfTt0LmV4cG9ydHMuZml0Q3ViaWM9Zml0Q3ViaWM7dC5leHBvcnRzLmNyZWF0ZVRhbmdlbnQ9Y3JlYXRlVGFuZ2VudH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25MYXllcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNikscj1zKDMpLGE9cygyNyksbz1zKDI4KTtjb25zdCBsPTFlMyxjPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIGdldFJlY3REaW1zKHQpe3JldHVybnt3aWR0aDp0WzJdLXRbMF0saGVpZ2h0OnRbM10tdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5e3N0YXRpYyBjcmVhdGUodCl7c3dpdGNoKHQuZGF0YS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBpLkFubm90YXRpb25UeXBlLkxJTks6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlRFWFQ6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLldJREdFVDpzd2l0Y2godC5kYXRhLmZpZWxkVHlwZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJCdG4iOnJldHVybiB0LmRhdGEucmFkaW9CdXR0b24/bmV3IFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk6dC5kYXRhLmNoZWNrQm94P25ldyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpOm5ldyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KX1yZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT1BVUDpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkZSRUVURVhUOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuTElORTpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVQVJFOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNJUkNMRTpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNBUkVUOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuSU5LOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlBPTFlHT046cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RBTVA6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbkVsZW1lbnQodCk7ZGVmYXVsdDpyZXR1cm4gbmV3IEFubm90YXRpb25FbGVtZW50KHQpfX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCx7aXNSZW5kZXJhYmxlOmU9ITEsaWdub3JlQm9yZGVyOnM9ITEsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6aT0hMX09e30pe3RoaXMuaXNSZW5kZXJhYmxlPWU7dGhpcy5kYXRhPXQuZGF0YTt0aGlzLmxheWVyPXQubGF5ZXI7dGhpcy5wYWdlPXQucGFnZTt0aGlzLnZpZXdwb3J0PXQudmlld3BvcnQ7dGhpcy5saW5rU2VydmljZT10LmxpbmtTZXJ2aWNlO3RoaXMuZG93bmxvYWRNYW5hZ2VyPXQuZG93bmxvYWRNYW5hZ2VyO3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoPXQuaW1hZ2VSZXNvdXJjZXNQYXRoO3RoaXMucmVuZGVyRm9ybXM9dC5yZW5kZXJGb3Jtczt0aGlzLnN2Z0ZhY3Rvcnk9dC5zdmdGYWN0b3J5O3RoaXMuYW5ub3RhdGlvblN0b3JhZ2U9dC5hbm5vdGF0aW9uU3RvcmFnZTt0aGlzLmVuYWJsZVNjcmlwdGluZz10LmVuYWJsZVNjcmlwdGluZzt0aGlzLmhhc0pTQWN0aW9ucz10Lmhhc0pTQWN0aW9uczt0aGlzLl9maWVsZE9iamVjdHM9dC5maWVsZE9iamVjdHM7dGhpcy5fbW91c2VTdGF0ZT10Lm1vdXNlU3RhdGU7ZSYmKHRoaXMuY29udGFpbmVyPXRoaXMuX2NyZWF0ZUNvbnRhaW5lcihzKSk7aSYmKHRoaXMucXVhZHJpbGF0ZXJhbHM9dGhpcy5fY3JlYXRlUXVhZHJpbGF0ZXJhbHMocykpfV9jcmVhdGVDb250YWluZXIodD0hMSl7Y29uc3QgZT10aGlzLmRhdGEscz10aGlzLnBhZ2Usbj10aGlzLnZpZXdwb3J0LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIpLHt3aWR0aDphLGhlaWdodDpvfT1nZXRSZWN0RGltcyhlLnJlY3QpLFtsLGMsaCxkXT1uLnZpZXdCb3gsdT1oLWwscD1kLWM7ci5zZXRBdHRyaWJ1dGUoImRhdGEtYW5ub3RhdGlvbi1pZCIsZS5pZCk7Y29uc3QgZz1pLlV0aWwubm9ybWFsaXplUmVjdChbZS5yZWN0WzBdLHMudmlld1szXS1lLnJlY3RbMV0rcy52aWV3WzFdLGUucmVjdFsyXSxzLnZpZXdbM10tZS5yZWN0WzNdK3Mudmlld1sxXV0pO2lmKCF0JiZlLmJvcmRlclN0eWxlLndpZHRoPjApe3Iuc3R5bGUuYm9yZGVyV2lkdGg9YCR7ZS5ib3JkZXJTdHlsZS53aWR0aH1weGA7Y29uc3QgdD1lLmJvcmRlclN0eWxlLmhvcml6b250YWxDb3JuZXJSYWRpdXMscz1lLmJvcmRlclN0eWxlLnZlcnRpY2FsQ29ybmVyUmFkaXVzO2lmKHQ+MHx8cz4wKXtjb25zdCBlPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke3N9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9ZX1lbHNlIGlmKHRoaXMgaW5zdGFuY2VvZiBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KXtjb25zdCB0PWBjYWxjKCR7YX1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke299cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9dH1zd2l0Y2goZS5ib3JkZXJTdHlsZS5zdHlsZSl7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ6ci5zdHlsZS5ib3JkZXJTdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDpyLnN0eWxlLmJvcmRlclN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ6KDAsaS53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGJldmVsZWQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDooMCxpLndhcm4pKCJVbmltcGxlbWVudGVkIGJvcmRlciBzdHlsZTogaW5zZXQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkU6ci5zdHlsZS5ib3JkZXJCb3R0b21TdHlsZT0ic29saWQifWNvbnN0IG49ZS5ib3JkZXJDb2xvcnx8bnVsbDtuP3Iuc3R5bGUuYm9yZGVyQ29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvcigwfG5bMF0sMHxuWzFdLDB8blsyXSk6ci5zdHlsZS5ib3JkZXJXaWR0aD0wfXIuc3R5bGUubGVmdD0xMDAqKGdbMF0tbCkvdSsiJSI7ci5zdHlsZS50b3A9MTAwKihnWzFdLWMpL3ArIiUiO2NvbnN0e3JvdGF0aW9uOm19PWU7aWYoZS5oYXNPd25DYW52YXN8fDA9PT1tKXtyLnN0eWxlLndpZHRoPTEwMCphL3UrIiUiO3Iuc3R5bGUuaGVpZ2h0PTEwMCpvL3ArIiUifWVsc2UgdGhpcy5zZXRSb3RhdGlvbihtLHIpO3JldHVybiByfXNldFJvdGF0aW9uKHQsZT10aGlzLmNvbnRhaW5lcil7Y29uc3RbcyxpLG4scl09dGhpcy52aWV3cG9ydC52aWV3Qm94LGE9bi1zLG89ci1pLHt3aWR0aDpsLGhlaWdodDpjfT1nZXRSZWN0RGltcyh0aGlzLmRhdGEucmVjdCk7bGV0IGgsZDtpZih0JTE4MD09MCl7aD0xMDAqbC9hO2Q9MTAwKmMvb31lbHNle2g9MTAwKmMvYTtkPTEwMCpsL299ZS5zdHlsZS53aWR0aD1gJHtofSVgO2Uuc3R5bGUuaGVpZ2h0PWAke2R9JWA7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsKDM2MC10KSUzNjApfWdldCBfY29tbW9uQWN0aW9ucygpe2NvbnN0IHNldENvbG9yPSh0LGUscyk9Pntjb25zdCBpPXMuZGV0YWlsW3RdO3MudGFyZ2V0LnN0eWxlW2VdPWEuQ29sb3JDb252ZXJ0ZXJzW2Ake2lbMF19X0hUTUxgXShpLnNsaWNlKDEpKX07cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9jb21tb25BY3Rpb25zIix7ZGlzcGxheTp0PT57Y29uc3QgZT10LmRldGFpbC5kaXNwbGF5JTI9PTE7dGhpcy5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1lPyJoaWRkZW4iOiJ2aXNpYmxlIjt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7aGlkZGVuOmUscHJpbnQ6MD09PXQuZGV0YWlsLmRpc3BsYXl8fDM9PT10LmRldGFpbC5kaXNwbGF5fSl9LHByaW50OnQ9Pnt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7cHJpbnQ6dC5kZXRhaWwucHJpbnR9KX0saGlkZGVuOnQ9Pnt0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PXQuZGV0YWlsLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSI7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQse2hpZGRlbjp0LmRldGFpbC5oaWRkZW59KX0sZm9jdXM6dD0+e3NldFRpbWVvdXQoKCgpPT50LnRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMX0pKSwwKX0sdXNlck5hbWU6dD0+e3QudGFyZ2V0LnRpdGxlPXQuZGV0YWlsLnVzZXJOYW1lfSxyZWFkb25seTp0PT57dC5kZXRhaWwucmVhZG9ubHk/dC50YXJnZXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpOnQudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKX0scmVxdWlyZWQ6dD0+e3RoaXMuX3NldFJlcXVpcmVkKHQudGFyZ2V0LHQuZGV0YWlsLnJlcXVpcmVkKX0sYmdDb2xvcjp0PT57c2V0Q29sb3IoImJnQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmaWxsQ29sb3I6dD0+e3NldENvbG9yKCJmaWxsQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmZ0NvbG9yOnQ9PntzZXRDb2xvcigiZmdDb2xvciIsImNvbG9yIix0KX0sdGV4dENvbG9yOnQ9PntzZXRDb2xvcigidGV4dENvbG9yIiwiY29sb3IiLHQpfSxib3JkZXJDb2xvcjp0PT57c2V0Q29sb3IoImJvcmRlckNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxzdHJva2VDb2xvcjp0PT57c2V0Q29sb3IoInN0cm9rZUNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxyb3RhdGlvbjp0PT57Y29uc3QgZT10LmRldGFpbC5yb3RhdGlvbjt0aGlzLnNldFJvdGF0aW9uKGUpO3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtyb3RhdGlvbjplfSl9fSl9X2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveCh0LGUpe2NvbnN0IHM9dGhpcy5fY29tbW9uQWN0aW9ucztmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhlLmRldGFpbCkpeyh0W2ldfHxzW2ldKT8uKGUpfX1fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlModCl7aWYoIXRoaXMuZW5hYmxlU2NyaXB0aW5nKXJldHVybjtjb25zdCBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UuZ2V0UmF3VmFsdWUodGhpcy5kYXRhLmlkKTtpZighZSlyZXR1cm47Y29uc3Qgcz10aGlzLl9jb21tb25BY3Rpb25zO2Zvcihjb25zdFtpLG5db2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IHI9c1tpXTtpZihyKXtyKHtkZXRhaWw6e1tpXTpufSx0YXJnZXQ6dH0pO2RlbGV0ZSBlW2ldfX19X2NyZWF0ZVF1YWRyaWxhdGVyYWxzKHQ9ITEpe2lmKCF0aGlzLmRhdGEucXVhZFBvaW50cylyZXR1cm4gbnVsbDtjb25zdCBlPVtdLHM9dGhpcy5kYXRhLnJlY3Q7Zm9yKGNvbnN0IHMgb2YgdGhpcy5kYXRhLnF1YWRQb2ludHMpe3RoaXMuZGF0YS5yZWN0PVtzWzJdLngsc1syXS55LHNbMV0ueCxzWzFdLnldO2UucHVzaCh0aGlzLl9jcmVhdGVDb250YWluZXIodCkpfXRoaXMuZGF0YS5yZWN0PXM7cmV0dXJuIGV9X2NyZWF0ZVBvcHVwKHQsZSl7bGV0IHM9dGhpcy5jb250YWluZXI7aWYodGhpcy5xdWFkcmlsYXRlcmFscyl7dD10fHx0aGlzLnF1YWRyaWxhdGVyYWxzO3M9dGhpcy5xdWFkcmlsYXRlcmFsc1swXX1pZighdCl7KHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7cy5hcHBlbmQodCl9Y29uc3QgaT1uZXcgUG9wdXBFbGVtZW50KHtjb250YWluZXI6cyx0cmlnZ2VyOnQsY29sb3I6ZS5jb2xvcix0aXRsZU9iajplLnRpdGxlT2JqLG1vZGlmaWNhdGlvbkRhdGU6ZS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOmUuY29udGVudHNPYmoscmljaFRleHQ6ZS5yaWNoVGV4dCxoaWRlV3JhcHBlcjohMH0pLnJlbmRlcigpO2kuc3R5bGUubGVmdD0iMTAwJSI7cy5hcHBlbmQoaSl9X3JlbmRlclF1YWRyaWxhdGVyYWxzKHQpe2Zvcihjb25zdCBlIG9mIHRoaXMucXVhZHJpbGF0ZXJhbHMpZS5jbGFzc05hbWU9dDtyZXR1cm4gdGhpcy5xdWFkcmlsYXRlcmFsc31yZW5kZXIoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBBbm5vdGF0aW9uRWxlbWVudC5yZW5kZXJgIGNhbGxlZCIpfV9nZXRFbGVtZW50c0J5TmFtZSh0LGU9bnVsbCl7Y29uc3Qgcz1bXTtpZih0aGlzLl9maWVsZE9iamVjdHMpe2NvbnN0IG49dGhpcy5fZmllbGRPYmplY3RzW3RdO2lmKG4pZm9yKGNvbnN0e3BhZ2U6dCxpZDpyLGV4cG9ydFZhbHVlczphfW9mIG4pe2lmKC0xPT09dCljb250aW51ZTtpZihyPT09ZSljb250aW51ZTtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgYT9hOm51bGwsbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1lbGVtZW50LWlkPSIke3J9Il1gKTshb3x8Yy5oYXMobyk/cy5wdXNoKHtpZDpyLGV4cG9ydFZhbHVlOm4sZG9tRWxlbWVudDpvfSk6KDAsaS53YXJuKShgX2dldEVsZW1lbnRzQnlOYW1lIC0gZWxlbWVudCBub3QgYWxsb3dlZDogJHtyfWApfXJldHVybiBzfWZvcihjb25zdCBpIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKXtjb25zdHtleHBvcnRWYWx1ZTp0fT1pLG49aS5nZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIpO24hPT1lJiYoYy5oYXMoaSkmJnMucHVzaCh7aWQ6bixleHBvcnRWYWx1ZTp0LGRvbUVsZW1lbnQ6aX0pKX1yZXR1cm4gc31zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3IucGxhdGZvcm06IiI7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBsYXRmb3JtIix7aXNXaW46dC5pbmNsdWRlcygiV2luIiksaXNNYWM6dC5pbmNsdWRlcygiTWFjIil9KX19Y2xhc3MgTGlua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCxlPW51bGwpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6ISFlPy5pZ25vcmVCb3JkZXIsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KTt0aGlzLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHl9cmVuZGVyKCl7Y29uc3R7ZGF0YTp0LGxpbmtTZXJ2aWNlOmV9PXRoaXMscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsdC5pZCk7bGV0IGk9ITE7aWYodC51cmwpe2UuYWRkTGlua0F0dHJpYnV0ZXMocyx0LnVybCx0Lm5ld1dpbmRvdyk7aT0hMH1lbHNlIGlmKHQuYWN0aW9uKXt0aGlzLl9iaW5kTmFtZWRBY3Rpb24ocyx0LmFjdGlvbik7aT0hMH1lbHNlIGlmKHQuYXR0YWNobWVudCl7dGhpcy5fYmluZEF0dGFjaG1lbnQocyx0LmF0dGFjaG1lbnQpO2k9ITB9ZWxzZSBpZih0LnNldE9DR1N0YXRlKXt0aGlzLiNBZShzLHQuc2V0T0NHU3RhdGUpO2k9ITB9ZWxzZSBpZih0LmRlc3Qpe3RoaXMuX2JpbmRMaW5rKHMsdC5kZXN0KTtpPSEwfWVsc2V7aWYodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dGhpcy5fYmluZEpTQWN0aW9uKHMsdCk7aT0hMH1pZih0LnJlc2V0Rm9ybSl7dGhpcy5fYmluZFJlc2V0Rm9ybUFjdGlvbihzLHQucmVzZXRGb3JtKTtpPSEwfWVsc2UgaWYodGhpcy5pc1Rvb2x0aXBPbmx5JiYhaSl7dGhpcy5fYmluZExpbmsocywiIik7aT0hMH19aWYodGhpcy5xdWFkcmlsYXRlcmFscylyZXR1cm4gdGhpcy5fcmVuZGVyUXVhZHJpbGF0ZXJhbHMoImxpbmtBbm5vdGF0aW9uIikubWFwKCgodCxlKT0+e2NvbnN0IGk9MD09PWU/czpzLmNsb25lTm9kZSgpO3QuYXBwZW5kKGkpO3JldHVybiB0fSkpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ibGlua0Fubm90YXRpb24iO2kmJnRoaXMuY29udGFpbmVyLmFwcGVuZChzKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2JpbmRMaW5rKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO3Qub25jbGljaz0oKT0+e2UmJnRoaXMubGlua1NlcnZpY2UuZ29Ub0Rlc3RpbmF0aW9uKGUpO3JldHVybiExfTsoZXx8IiI9PT1lKSYmKHQuY2xhc3NOYW1lPSJpbnRlcm5hbExpbmsiKX1fYmluZE5hbWVkQWN0aW9uKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRBdHRhY2htZW50KHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmRvd25sb2FkTWFuYWdlcj8ub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLGUuY29udGVudCxlLmZpbGVuYW1lKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9I0FlKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVTZXRPQ0dTdGF0ZShlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRKU0FjdGlvbih0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7Y29uc3Qgcz1uZXcgTWFwKFtbIkFjdGlvbiIsIm9uY2xpY2siXSxbIk1vdXNlIFVwIiwib25tb3VzZXVwIl0sWyJNb3VzZSBEb3duIiwib25tb3VzZWRvd24iXV0pO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuYWN0aW9ucykpe2NvbnN0IG49cy5nZXQoaSk7biYmKHRbbl09KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZS5pZCxuYW1lOml9fSk7cmV0dXJuITF9KX10Lm9uY2xpY2t8fCh0Lm9uY2xpY2s9KCk9PiExKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIn1fYmluZFJlc2V0Rm9ybUFjdGlvbih0LGUpe2NvbnN0IHM9dC5vbmNsaWNrO3N8fCh0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIjtpZih0aGlzLl9maWVsZE9iamVjdHMpdC5vbmNsaWNrPSgpPT57cz8uKCk7Y29uc3R7ZmllbGRzOnQscmVmczpuLGluY2x1ZGU6cn09ZSxhPVtdO2lmKDAhPT10Lmxlbmd0aHx8MCE9PW4ubGVuZ3RoKXtjb25zdCBlPW5ldyBTZXQobik7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgdD10aGlzLl9maWVsZE9iamVjdHNbc118fFtdO2Zvcihjb25zdHtpZDpzfW9mIHQpZS5hZGQocyl9Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKWZvcihjb25zdCBzIG9mIHQpZS5oYXMocy5pZCk9PT1yJiZhLnB1c2gocyl9ZWxzZSBmb3IoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkT2JqZWN0cykpYS5wdXNoKC4uLnQpO2NvbnN0IG89dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxsPVtdO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0e2lkOmV9PXQ7bC5wdXNoKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2UidGV4dCI6e2NvbnN0IHM9dC5kZWZhdWx0VmFsdWV8fCIiO28uc2V0VmFsdWUoZSx7dmFsdWU6c30pO2JyZWFrfWNhc2UiY2hlY2tib3giOmNhc2UicmFkaW9idXR0b24iOntjb25zdCBzPXQuZGVmYXVsdFZhbHVlPT09dC5leHBvcnRWYWx1ZXM7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9Y2FzZSJjb21ib2JveCI6Y2FzZSJsaXN0Ym94Ijp7Y29uc3Qgcz10LmRlZmF1bHRWYWx1ZXx8IiI7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9ZGVmYXVsdDpjb250aW51ZX1jb25zdCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWVsZW1lbnQtaWQ9IiR7ZX0iXWApO3MmJihjLmhhcyhzKT9zLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNldGZvcm0iKSk6KDAsaS53YXJuKShgX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAke2V9YCkpfXRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ImFwcCIsaWRzOmwsbmFtZToiUmVzZXRGb3JtIn19KTtyZXR1cm4hMX07ZWxzZXsoMCxpLndhcm4pKCdfYmluZFJlc2V0Rm9ybUFjdGlvbiAtICJyZXNldEZvcm0iIGFjdGlvbiBub3Qgc3VwcG9ydGVkLCBlbnN1cmUgdGhhdCB0aGUgYGZpZWxkT2JqZWN0c2AgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO3N8fCh0Lm9uY2xpY2s9KCk9PiExKX19fWNsYXNzIFRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ0ZXh0QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTt0LnNyYz10aGlzLmltYWdlUmVzb3VyY2VzUGF0aCsiYW5ub3RhdGlvbi0iK3RoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkrIi5zdmciO3QuYWx0PSJbe3t0eXBlfX0gQW5ub3RhdGlvbl0iO3QuZGF0YXNldC5sMTBuSWQ9InRleHRfYW5ub3RhdGlvbl90eXBlIjt0LmRhdGFzZXQubDEwbkFyZ3M9SlNPTi5zdHJpbmdpZnkoe3R5cGU6dGhpcy5kYXRhLm5hbWV9KTt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKHQsdGhpcy5kYXRhKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e3JlbmRlcigpe3RoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJih0aGlzLmNvbnRhaW5lci50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2dldEtleU1vZGlmaWVyKHQpe2NvbnN0e2lzV2luOmUsaXNNYWM6c309QW5ub3RhdGlvbkVsZW1lbnQucGxhdGZvcm07cmV0dXJuIGUmJnQuY3RybEtleXx8cyYmdC5tZXRhS2V5fV9zZXRFdmVudExpc3RlbmVyKHQsZSxzLGkpe2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6dGhpcy5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpfX0pfSkpfV9zZXRFdmVudExpc3RlbmVycyh0LGUscyl7Zm9yKGNvbnN0W2ksbl1vZiBlKSgiQWN0aW9uIj09PW58fHRoaXMuZGF0YS5hY3Rpb25zPy5bbl0pJiZ0aGlzLl9zZXRFdmVudExpc3RlbmVyKHQsaSxuLHMpfV9zZXRCYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yfHxudWxsO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPW51bGw9PT1lPyJ0cmFuc3BhcmVudCI6aS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLGVbMV0sZVsyXSl9X3NldFRleHRTdHlsZSh0KXtjb25zdCBlPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0se2ZvbnRDb2xvcjpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8OSxyPXQuc3R5bGU7bGV0IGE7Y29uc3Qgcm91bmRUb09uZURlY2ltYWw9dD0+TWF0aC5yb3VuZCgxMCp0KS8xMDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGU9dC8oTWF0aC5yb3VuZCh0LyhpLkxJTkVfRkFDVE9SKm4pKXx8MSk7YT1NYXRoLm1pbihuLHJvdW5kVG9PbmVEZWNpbWFsKGUvaS5MSU5FX0ZBQ1RPUikpfWVsc2V7Y29uc3QgdD1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTthPU1hdGgubWluKG4scm91bmRUb09uZURlY2ltYWwodC9pLkxJTkVfRkFDVE9SKSl9ci5mb250U2l6ZT1gY2FsYygke2F9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5jb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtudWxsIT09dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQmJihyLnRleHRBbGlnbj1lW3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50XSl9X3NldFJlcXVpcmVkKHQsZSl7ZT90LnNldEF0dHJpYnV0ZSgicmVxdWlyZWQiLCEwKTp0LnJlbW92ZUF0dHJpYnV0ZSgicmVxdWlyZWQiKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsZSl9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWV9KX1zZXRQcm9wZXJ0eU9uU2libGluZ3ModCxlLHMsaSl7Y29uc3Qgbj10aGlzLmFubm90YXRpb25TdG9yYWdlO2Zvcihjb25zdCByIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSl7ci5kb21FbGVtZW50JiYoci5kb21FbGVtZW50W2VdPXMpO24uc2V0VmFsdWUoci5pZCx7W2ldOnN9KX19cmVuZGVyKCl7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0idGV4dFdpZGdldEFubm90YXRpb24iO2xldCBzPW51bGw7aWYodGhpcy5yZW5kZXJGb3Jtcyl7Y29uc3QgaT10LmdldFZhbHVlKGUse3ZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfSk7bGV0IG49aS5mb3JtYXR0ZWRWYWx1ZXx8aS52YWx1ZXx8IiI7Y29uc3Qgcj10LmdldFZhbHVlKGUse2NoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVufSkuY2hhckxpbWl0O3ImJm4ubGVuZ3RoPnImJihuPW4uc2xpY2UoMCxyKSk7Y29uc3QgYT17dXNlclZhbHVlOm4sZm9ybWF0dGVkVmFsdWU6bnVsbCx2YWx1ZU9uRm9jdXM6IiJ9O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtzLnRleHRDb250ZW50PW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYocy5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpfWVsc2V7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3MudHlwZT0idGV4dCI7cy5zZXRBdHRyaWJ1dGUoInZhbHVlIixuKTt0aGlzLmRhdGEuZG9Ob3RTY3JvbGwmJihzLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIil9Yy5hZGQocyk7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7cy5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7cy5uYW1lPXRoaXMuZGF0YS5maWVsZE5hbWU7cy50YWJJbmRleD1sO3RoaXMuX3NldFJlcXVpcmVkKHMsdGhpcy5kYXRhLnJlcXVpcmVkKTtyJiYocy5tYXhMZW5ndGg9cik7cy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGk9Pnt0LnNldFZhbHVlKGUse3ZhbHVlOmkudGFyZ2V0LnZhbHVlfSk7dGhpcy5zZXRQcm9wZXJ0eU9uU2libGluZ3MocywidmFsdWUiLGkudGFyZ2V0LnZhbHVlLCJ2YWx1ZSIpfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPz8iIjtzLnZhbHVlPWEudXNlclZhbHVlPWU7YS5mb3JtYXR0ZWRWYWx1ZT1udWxsfSkpO2xldCBibHVyTGlzdGVuZXI9dD0+e2NvbnN0e2Zvcm1hdHRlZFZhbHVlOmV9PWE7bnVsbCE9ZSYmKHQudGFyZ2V0LnZhbHVlPWUpO3QudGFyZ2V0LnNjcm9sbExlZnQ9MH07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwodD0+e2EudXNlclZhbHVlJiYodC50YXJnZXQudmFsdWU9YS51c2VyVmFsdWUpO2EudmFsdWVPbkZvY3VzPXQudGFyZ2V0LnZhbHVlfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChzPT57Y29uc3QgaT17dmFsdWUocyl7YS51c2VyVmFsdWU9cy5kZXRhaWwudmFsdWU/PyIiO3Quc2V0VmFsdWUoZSx7dmFsdWU6YS51c2VyVmFsdWUudG9TdHJpbmcoKX0pO3MudGFyZ2V0LnZhbHVlPWEudXNlclZhbHVlfSxmb3JtYXR0ZWRWYWx1ZShzKXtjb25zdHtmb3JtYXR0ZWRWYWx1ZTppfT1zLmRldGFpbDthLmZvcm1hdHRlZFZhbHVlPWk7bnVsbCE9aSYmcy50YXJnZXQhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYocy50YXJnZXQudmFsdWU9aSk7dC5zZXRWYWx1ZShlLHtmb3JtYXR0ZWRWYWx1ZTppfSl9LHNlbFJhbmdlKHQpe3QudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKX0sY2hhckxpbWl0OnM9Pntjb25zdHtjaGFyTGltaXQ6aX09cy5kZXRhaWwse3RhcmdldDpufT1zO2lmKDA9PT1pKXtuLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIik7cmV0dXJufW4uc2V0QXR0cmlidXRlKCJtYXhMZW5ndGgiLGkpO2xldCByPWEudXNlclZhbHVlO2lmKHImJiEoci5sZW5ndGg8PWkpKXtyPXIuc2xpY2UoMCxpKTtuLnZhbHVlPWEudXNlclZhbHVlPXI7dC5zZXRWYWx1ZShlLHt2YWx1ZTpyfSk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpyLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6bi5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6bi5zZWxlY3Rpb25FbmR9fSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGkscyl9KSk7cy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e2xldCBzPS0xOyJFc2NhcGUiPT09dC5rZXk/cz0wOiJFbnRlciIhPT10LmtleXx8dGhpcy5kYXRhLm11bHRpTGluZT8iVGFiIj09PXQua2V5JiYocz0zKTpzPTI7aWYoLTE9PT1zKXJldHVybjtjb25zdHt2YWx1ZTppfT10LnRhcmdldDtpZihhLnZhbHVlT25Gb2N1cyE9PWkpe2EudXNlclZhbHVlPWk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OnMsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KX19KSk7Y29uc3QgaT1ibHVyTGlzdGVuZXI7Ymx1ckxpc3RlbmVyPW51bGw7cy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwodD0+e2NvbnN0e3ZhbHVlOnN9PXQudGFyZ2V0O2EudXNlclZhbHVlPXM7dGhpcy5fbW91c2VTdGF0ZS5pc0Rvd24mJmEudmFsdWVPbkZvY3VzIT09cyYmdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpzLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KTtpKHQpfSkpO3RoaXMuZGF0YS5hY3Rpb25zPy5LZXlzdHJva2UmJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCh0PT57Y29uc3R7ZGF0YTpzLHRhcmdldDppfT10LHt2YWx1ZTpuLHNlbGVjdGlvblN0YXJ0OnIsc2VsZWN0aW9uRW5kOmF9PWk7bGV0IG89cixsPWE7c3dpdGNoKHQuaW5wdXRUeXBlKXtjYXNlImRlbGV0ZVdvcmRCYWNrd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcoMCxyKS5tYXRjaCgvXHcqW15cd10qJC8pO3QmJihvLT10WzBdLmxlbmd0aCk7YnJlYWt9Y2FzZSJkZWxldGVXb3JkRm9yd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcocikubWF0Y2goL15bXlx3XSpcdyovKTt0JiYobCs9dFswXS5sZW5ndGgpO2JyZWFrfWNhc2UiZGVsZXRlQ29udGVudEJhY2t3YXJkIjpyPT09YSYmKG8tPTEpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEZvcndhcmQiOnI9PT1hJiYobCs9MSl9dC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2U6c3x8IiIsd2lsbENvbW1pdDohMSxzZWxTdGFydDpvLHNlbEVuZDpsfX0pfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKHMsW1siZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQudmFsdWUpKX1ibHVyTGlzdGVuZXImJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsYmx1ckxpc3RlbmVyKTtpZih0aGlzLmRhdGEuY29tYil7Y29uc3QgdD0odGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0pL3I7cy5jbGFzc0xpc3QuYWRkKCJjb21iIik7cy5zdHlsZS5sZXR0ZXJTcGFjaW5nPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikgLSAxY2gpYH19ZWxzZXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWU7cy5zdHlsZS52ZXJ0aWNhbEFsaWduPSJtaWRkbGUiO3Muc3R5bGUuZGlzcGxheT0idGFibGUtY2VsbCJ9dGhpcy5fc2V0VGV4dFN0eWxlKHMpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihzKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQocyk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXtjb25zdCB0PXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsZT10aGlzLmRhdGEscz1lLmlkO2xldCBpPXQuZ2V0VmFsdWUocyx7dmFsdWU6ZS5leHBvcnRWYWx1ZT09PWUuZmllbGRWYWx1ZX0pLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aT0iT2ZmIiE9PWk7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJidXR0b25XaWRnZXRBbm5vdGF0aW9uIGNoZWNrQm94Ijtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5hZGQobik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIscyk7bi5kaXNhYmxlZD1lLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKG4sdGhpcy5kYXRhLnJlcXVpcmVkKTtuLnR5cGU9ImNoZWNrYm94IjtuLm5hbWU9ZS5maWVsZE5hbWU7aSYmbi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTtuLnNldEF0dHJpYnV0ZSgiZXhwb3J0VmFsdWUiLGUuZXhwb3J0VmFsdWUpO24udGFiSW5kZXg9bDtuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGk9Pntjb25zdHtuYW1lOm4sY2hlY2tlZDpyfT1pLnRhcmdldDtmb3IoY29uc3QgaSBvZiB0aGlzLl9nZXRFbGVtZW50c0J5TmFtZShuLHMpKXtjb25zdCBzPXImJmkuZXhwb3J0VmFsdWU9PT1lLmV4cG9ydFZhbHVlO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPXMpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6c30pfXQuc2V0VmFsdWUocyx7dmFsdWU6cn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZXx8Ik9mZiI7dC50YXJnZXQuY2hlY2tlZD1zPT09ZS5leHBvcnRWYWx1ZX0pKTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3QgaT17dmFsdWUoZSl7ZS50YXJnZXQuY2hlY2tlZD0iT2ZmIiE9PWUuZGV0YWlsLnZhbHVlO3Quc2V0VmFsdWUocyx7dmFsdWU6ZS50YXJnZXQuY2hlY2tlZH0pfX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGksZSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMobixbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9dGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKG4pO3RoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKG4pO3RoaXMuY29udGFpbmVyLmFwcGVuZChuKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiByYWRpb0J1dHRvbiI7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLHM9ZS5pZDtsZXQgaT10LmdldFZhbHVlKHMse3ZhbHVlOmUuZmllbGRWYWx1ZT09PWUuYnV0dG9uVmFsdWV9KS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2k9aSE9PWUuYnV0dG9uVmFsdWU7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2MuYWRkKG4pO24uc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO24uZGlzYWJsZWQ9ZS5yZWFkT25seTt0aGlzLl9zZXRSZXF1aXJlZChuLHRoaXMuZGF0YS5yZXF1aXJlZCk7bi50eXBlPSJyYWRpbyI7bi5uYW1lPWUuZmllbGROYW1lO2kmJm4uc2V0QXR0cmlidXRlKCJjaGVja2VkIiwhMCk7bi50YWJJbmRleD1sO24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoZT0+e2NvbnN0e25hbWU6aSxjaGVja2VkOm59PWUudGFyZ2V0O2Zvcihjb25zdCBlIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGkscykpdC5zZXRWYWx1ZShlLmlkLHt2YWx1ZTohMX0pO3Quc2V0VmFsdWUocyx7dmFsdWU6bn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZTt0LnRhcmdldC5jaGVja2VkPW51bGwhPXMmJnM9PT1lLmJ1dHRvblZhbHVlfSkpO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7Y29uc3QgaT1lLmJ1dHRvblZhbHVlO24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3Qgbj17dmFsdWU6ZT0+e2NvbnN0IG49aT09PWUuZGV0YWlsLnZhbHVlO2Zvcihjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGUudGFyZ2V0Lm5hbWUpKXtjb25zdCBlPW4mJmkuaWQ9PT1zO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPWUpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6ZX0pfX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLGUpfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKG4sW1siY2hhbmdlIiwiVmFsaWRhdGUiXSxbImNoYW5nZSIsIkFjdGlvbiJdLFsiZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQuY2hlY2tlZCkpfXRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBMaW5rQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aWdub3JlQm9yZGVyOnQuZGF0YS5oYXNBcHBlYXJhbmNlfSl9cmVuZGVyKCl7Y29uc3QgdD1zdXBlci5yZW5kZXIoKTt0LmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBwdXNoQnV0dG9uIjt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodC50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtjb25zdCBlPXQubGFzdENoaWxkO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmZSl7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKHQ9Pnt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goe30sdCl9KSl9cmV0dXJuIHR9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNob2ljZVdpZGdldEFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxlPXRoaXMuZGF0YS5pZCxzPXQuZ2V0VmFsdWUoZSx7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2MuYWRkKGkpO2kuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLGUpO2kuZGlzYWJsZWQ9dGhpcy5kYXRhLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKGksdGhpcy5kYXRhLnJlcXVpcmVkKTtpLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZTtpLnRhYkluZGV4PWw7bGV0IG49dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDtpZighdGhpcy5kYXRhLmNvbWJvKXtpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO3RoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApfWkuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPXQudmFsdWU9PT1lfSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO2UudGV4dENvbnRlbnQ9dC5kaXNwbGF5VmFsdWU7ZS52YWx1ZT10LmV4cG9ydFZhbHVlO2lmKHMudmFsdWUuaW5jbHVkZXModC5leHBvcnRWYWx1ZSkpe2Uuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApO249ITF9aS5hcHBlbmQoZSl9bGV0IHI9bnVsbDtpZihuKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3QudmFsdWU9IiAiO3Quc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTt0LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTtpLnByZXBlbmQodCk7cj0oKT0+e3QucmVtb3ZlKCk7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIscik7cj1udWxsfTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKX1jb25zdCBnZXRWYWx1ZT0odCxlKT0+e2NvbnN0IHM9ZT8idmFsdWUiOiJ0ZXh0Q29udGVudCIsaT10LnRhcmdldC5vcHRpb25zO3JldHVybiB0LnRhcmdldC5tdWx0aXBsZT9BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoaSwodD0+dC5zZWxlY3RlZCkpLm1hcCgodD0+dFtzXSkpOi0xPT09aS5zZWxlY3RlZEluZGV4P251bGw6aVtpLnNlbGVjdGVkSW5kZXhdW3NdfSxnZXRJdGVtcz10PT57Y29uc3QgZT10LnRhcmdldC5vcHRpb25zO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwodD0+KHtkaXNwbGF5VmFsdWU6dC50ZXh0Q29udGVudCxleHBvcnRWYWx1ZTp0LnZhbHVlfSkpKX07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtpLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94Iiwocz0+e2NvbnN0IG49e3ZhbHVlKHMpe3I/LigpO2NvbnN0IG49cy5kZXRhaWwudmFsdWUsYT1uZXcgU2V0KEFycmF5LmlzQXJyYXkobik/bjpbbl0pO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPWEuaGFzKHQudmFsdWUpO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUocywhMCl9KX0sbXVsdGlwbGVTZWxlY3Rpb24odCl7aS5tdWx0aXBsZT0hMH0scmVtb3ZlKHMpe2NvbnN0IG49aS5vcHRpb25zLHI9cy5kZXRhaWwucmVtb3ZlO25bcl0uc2VsZWN0ZWQ9ITE7aS5yZW1vdmUocik7aWYobi5sZW5ndGg+MCl7LTE9PT1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwobiwodD0+dC5zZWxlY3RlZCkpJiYoblswXS5zZWxlY3RlZD0hMCl9dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxjbGVhcihzKXtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpudWxsLGl0ZW1zOltdfSl9LGluc2VydChzKXtjb25zdHtpbmRleDpuLGRpc3BsYXlWYWx1ZTpyLGV4cG9ydFZhbHVlOmF9PXMuZGV0YWlsLmluc2VydCxvPWkuY2hpbGRyZW5bbl0sbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtsLnRleHRDb250ZW50PXI7bC52YWx1ZT1hO28/by5iZWZvcmUobCk6aS5hcHBlbmQobCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxpdGVtcyhzKXtjb25zdHtpdGVtczpufT1zLmRldGFpbDtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3R7ZGlzcGxheVZhbHVlOmUsZXhwb3J0VmFsdWU6c309dCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO24udGV4dENvbnRlbnQ9ZTtuLnZhbHVlPXM7aS5hcHBlbmQobil9aS5vcHRpb25zLmxlbmd0aD4wJiYoaS5vcHRpb25zWzBdLnNlbGVjdGVkPSEwKTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApLGl0ZW1zOmdldEl0ZW1zKHMpfSl9LGluZGljZXMocyl7Y29uc3QgaT1uZXcgU2V0KHMuZGV0YWlsLmluZGljZXMpO2Zvcihjb25zdCB0IG9mIHMudGFyZ2V0Lm9wdGlvbnMpdC5zZWxlY3RlZD1pLmhhcyh0LmluZGV4KTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApfSl9LGVkaXRhYmxlKHQpe3QudGFyZ2V0LmRpc2FibGVkPSF0LmRldGFpbC5lZGl0YWJsZX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLHMpfSkpO2kuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChzPT57Y29uc3QgaT1nZXRWYWx1ZShzLCEwKSxuPWdldFZhbHVlKHMsITEpO3Quc2V0VmFsdWUoZSx7dmFsdWU6aX0pO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2VFeDppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsa2V5RG93bjohMX19KX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhpLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXSxbImlucHV0IiwiQWN0aW9uIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9ZWxzZSBpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24ocyl7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKX0pfSkpO3RoaXMuZGF0YS5jb21ibyYmdGhpcy5fc2V0VGV4dFN0eWxlKGkpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihpKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhpKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7c3RhdGljIElHTk9SRV9UWVBFUz1uZXcgU2V0KFsiTGluZSIsIlNxdWFyZSIsIkNpcmNsZSIsIlBvbHlMaW5lIiwiUG9seWdvbiIsIkluayJdKTtjb25zdHJ1Y3Rvcih0KXtjb25zdHtkYXRhOmV9PXQ7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiFQb3B1cEFubm90YXRpb25FbGVtZW50LklHTk9SRV9UWVBFUy5oYXMoZS5wYXJlbnRUeXBlKSYmISEoZS50aXRsZU9iaj8uc3RyfHxlLmNvbnRlbnRzT2JqPy5zdHJ8fGUucmljaFRleHQ/LnN0cil9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InBvcHVwQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmxheWVyLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7dGhpcy5kYXRhLnBhcmVudElkfSJdYCk7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmNvbnRhaW5lcjtjb25zdCBlPW5ldyBQb3B1cEVsZW1lbnQoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOkFycmF5LmZyb20odCksY29sb3I6dGhpcy5kYXRhLmNvbG9yLHRpdGxlT2JqOnRoaXMuZGF0YS50aXRsZU9iaixtb2RpZmljYXRpb25EYXRlOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOnRoaXMuZGF0YS5jb250ZW50c09iaixyaWNoVGV4dDp0aGlzLmRhdGEucmljaFRleHR9KSxzPXRoaXMucGFnZSxuPWkuVXRpbC5ub3JtYWxpemVSZWN0KFt0aGlzLmRhdGEucGFyZW50UmVjdFswXSxzLnZpZXdbM10tdGhpcy5kYXRhLnBhcmVudFJlY3RbMV0rcy52aWV3WzFdLHRoaXMuZGF0YS5wYXJlbnRSZWN0WzJdLHMudmlld1szXS10aGlzLmRhdGEucGFyZW50UmVjdFszXStzLnZpZXdbMV1dKSxyPW5bMF0rdGhpcy5kYXRhLnBhcmVudFJlY3RbMl0tdGhpcy5kYXRhLnBhcmVudFJlY3RbMF0sYT1uWzFdLFtvLGwsYyxoXT10aGlzLnZpZXdwb3J0LnZpZXdCb3gsZD1jLW8sdT1oLWw7dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0xMDAqKHItbykvZCsiJSI7dGhpcy5jb250YWluZXIuc3R5bGUudG9wPTEwMCooYS1sKS91KyIlIjt0aGlzLmNvbnRhaW5lci5hcHBlbmQoZS5yZW5kZXIoKSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEVsZW1lbnR7Y29uc3RydWN0b3IodCl7dGhpcy5jb250YWluZXI9dC5jb250YWluZXI7dGhpcy50cmlnZ2VyPXQudHJpZ2dlcjt0aGlzLmNvbG9yPXQuY29sb3I7dGhpcy50aXRsZU9iaj10LnRpdGxlT2JqO3RoaXMubW9kaWZpY2F0aW9uRGF0ZT10Lm1vZGlmaWNhdGlvbkRhdGU7dGhpcy5jb250ZW50c09iaj10LmNvbnRlbnRzT2JqO3RoaXMucmljaFRleHQ9dC5yaWNoVGV4dDt0aGlzLmhpZGVXcmFwcGVyPXQuaGlkZVdyYXBwZXJ8fCExO3RoaXMucGlubmVkPSExfXJlbmRlcigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InBvcHVwV3JhcHBlciI7dGhpcy5oaWRlRWxlbWVudD10aGlzLmhpZGVXcmFwcGVyP3Q6dGhpcy5jb250YWluZXI7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0icG9wdXAiO2NvbnN0IHM9dGhpcy5jb2xvcjtpZihzKXtjb25zdCB0PS43KigyNTUtc1swXSkrc1swXSxuPS43KigyNTUtc1sxXSkrc1sxXSxyPS43KigyNTUtc1syXSkrc1syXTtlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKDB8dCwwfG4sMHxyKX1jb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7ci5kaXI9dGhpcy50aXRsZU9iai5kaXI7ci50ZXh0Q29udGVudD10aGlzLnRpdGxlT2JqLnN0cjtlLmFwcGVuZChyKTtjb25zdCBhPW4uUERGRGF0ZVN0cmluZy50b0RhdGVPYmplY3QodGhpcy5tb2RpZmljYXRpb25EYXRlKTtpZihhKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LmNsYXNzTmFtZT0icG9wdXBEYXRlIjt0LnRleHRDb250ZW50PSJ7e2RhdGV9fSwge3t0aW1lfX0iO3QuZGF0YXNldC5sMTBuSWQ9ImFubm90YXRpb25fZGF0ZV9zdHJpbmciO3QuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7ZGF0ZTphLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRpbWU6YS50b0xvY2FsZVRpbWVTdHJpbmcoKX0pO2UuYXBwZW5kKHQpfWlmKCF0aGlzLnJpY2hUZXh0Py5zdHJ8fHRoaXMuY29udGVudHNPYmo/LnN0ciYmdGhpcy5jb250ZW50c09iai5zdHIhPT10aGlzLnJpY2hUZXh0LnN0cil7Y29uc3QgdD10aGlzLl9mb3JtYXRDb250ZW50cyh0aGlzLmNvbnRlbnRzT2JqKTtlLmFwcGVuZCh0KX1lbHNle28uWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOnRoaXMucmljaFRleHQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6ZX0pO2UubGFzdENoaWxkLmNsYXNzTmFtZT0icmljaFRleHQgcG9wdXBDb250ZW50In1BcnJheS5pc0FycmF5KHRoaXMudHJpZ2dlcil8fCh0aGlzLnRyaWdnZXI9W3RoaXMudHJpZ2dlcl0pO2Zvcihjb25zdCB0IG9mIHRoaXMudHJpZ2dlcil7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fdG9nZ2xlLmJpbmQodGhpcykpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLl9zaG93LmJpbmQodGhpcywhMSkpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLHRoaXMuX2hpZGUuYmluZCh0aGlzLCExKSl9ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGlkZS5iaW5kKHRoaXMsITApKTt0LmFwcGVuZChlKTtyZXR1cm4gdH1fZm9ybWF0Q29udGVudHMoe3N0cjp0LGRpcjplfSl7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cy5jbGFzc05hbWU9InBvcHVwQ29udGVudCI7cy5kaXI9ZTtjb25zdCBpPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS8pO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlOysrdCl7Y29uc3Qgbj1pW3RdO3MuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKTt0PGUtMSYmcy5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9cmV0dXJuIHN9X3RvZ2dsZSgpe3RoaXMucGlubmVkP3RoaXMuX2hpZGUoITApOnRoaXMuX3Nob3coITApfV9zaG93KHQ9ITEpe3QmJih0aGlzLnBpbm5lZD0hMCk7aWYodGhpcy5oaWRlRWxlbWVudC5oaWRkZW4pe3RoaXMuaGlkZUVsZW1lbnQuaGlkZGVuPSExO3RoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpKzFlM319X2hpZGUodD0hMCl7dCYmKHRoaXMucGlubmVkPSExKTtpZighdGhpcy5oaWRlRWxlbWVudC5oaWRkZW4mJiF0aGlzLnBpbm5lZCl7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7dGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4PXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCktMWUzfX19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pO3RoaXMudGV4dENvbnRlbnQ9dC5kYXRhLnRleHRDb250ZW50fXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iZnJlZVRleHRBbm5vdGF0aW9uIjtpZih0aGlzLnRleHRDb250ZW50KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJhbm5vdGF0aW9uVGV4dENvbnRlbnQiO3Quc2V0QXR0cmlidXRlKCJyb2xlIiwiY29tbWVudCIpO2Zvcihjb25zdCBlIG9mIHRoaXMudGV4dENvbnRlbnQpe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3MudGV4dENvbnRlbnQ9ZTt0LmFwcGVuZChzKX10aGlzLmNvbnRhaW5lci5hcHBlbmQodCl9dGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBMaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmVBbm5vdGF0aW9uIjtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKSxuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6bGluZSIpO24uc2V0QXR0cmlidXRlKCJ4MSIsdC5yZWN0WzJdLXQubGluZUNvb3JkaW5hdGVzWzBdKTtuLnNldEF0dHJpYnV0ZSgieTEiLHQucmVjdFszXS10LmxpbmVDb29yZGluYXRlc1sxXSk7bi5zZXRBdHRyaWJ1dGUoIngyIix0LnJlY3RbMl0tdC5saW5lQ29vcmRpbmF0ZXNbMl0pO24uc2V0QXR0cmlidXRlKCJ5MiIsdC5yZWN0WzNdLXQubGluZUNvb3JkaW5hdGVzWzNdKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LmJvcmRlclN0eWxlLndpZHRofHwxKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKTtuLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50Iik7aS5hcHBlbmQobik7dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3F1YXJlQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0OnN9PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUscywhMCksbj10LmJvcmRlclN0eWxlLndpZHRoLHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7ci5zZXRBdHRyaWJ1dGUoIngiLG4vMik7ci5zZXRBdHRyaWJ1dGUoInkiLG4vMik7ci5zZXRBdHRyaWJ1dGUoIndpZHRoIixlLW4pO3Iuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMtbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsbnx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNpcmNsZUFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApLG49dC5ib3JkZXJTdHlsZS53aWR0aCxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZWxsaXBzZSIpO3Iuc2V0QXR0cmlidXRlKCJjeCIsZS8yKTtyLnNldEF0dHJpYnV0ZSgiY3kiLHMvMik7ci5zZXRBdHRyaWJ1dGUoInJ4IixlLzItbi8yKTtyLnNldEF0dHJpYnV0ZSgicnkiLHMvMi1uLzIpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLG58fDEpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Iuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChyKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dGhpcy5fY3JlYXRlUG9wdXAocix0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWxpbmVBbm5vdGF0aW9uIjt0aGlzLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWxpbmUifXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT10aGlzLmNvbnRhaW5lckNsYXNzTmFtZTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKTtsZXQgbj1bXTtmb3IoY29uc3QgZSBvZiB0LnZlcnRpY2VzKXtjb25zdCBzPWUueC10LnJlY3RbMF0saT10LnJlY3RbM10tZS55O24ucHVzaChzKyIsIitpKX1uPW4uam9pbigiICIpO2NvbnN0IHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7ci5zZXRBdHRyaWJ1dGUoInBvaW50cyIsbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgUG9seWdvbkFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWdvbkFubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5Z29uIn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iY2FyZXRBbm5vdGF0aW9uIjt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIElua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSk7dGhpcy5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSJ9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPXRoaXMuY29udGFpbmVyQ2xhc3NOYW1lO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApO2Zvcihjb25zdCBlIG9mIHQuaW5rTGlzdHMpe2xldCBzPVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9aS54LXQucmVjdFswXSxuPXQucmVjdFszXS1pLnk7cy5wdXNoKGAke2V9LCR7bn1gKX1zPXMuam9pbigiICIpO2NvbnN0IG49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7bi5zZXRBdHRyaWJ1dGUoInBvaW50cyIscyk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7bi5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7aS5hcHBlbmQobil9dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygiaGlnaGxpZ2h0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGxpZ2h0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJlbmRlcigpe3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO2lmKHRoaXMucXVhZHJpbGF0ZXJhbHMpcmV0dXJuIHRoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJ1bmRlcmxpbmVBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ1bmRlcmxpbmVBbm5vdGF0aW9uIjtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3F1aWdnbHlBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzcXVpZ2dseUFubm90YXRpb24iO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3RyaWtlb3V0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3RyaWtlb3V0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTdGFtcEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzdGFtcEFubm90YXRpb24iO3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMH0pO2NvbnN0e2ZpbGVuYW1lOmUsY29udGVudDpzfT10aGlzLmRhdGEuZmlsZTt0aGlzLmZpbGVuYW1lPSgwLG4uZ2V0RmlsZW5hbWVGcm9tVXJsKShlKTt0aGlzLmNvbnRlbnQ9czt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZmlsZWF0dGFjaG1lbnRhbm5vdGF0aW9uIix7c291cmNlOnRoaXMsZmlsZW5hbWU6ZSxjb250ZW50OnN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsdGhpcy5fZG93bmxvYWQuYmluZCh0aGlzKSk7IXRoaXMuZGF0YS5oYXNQb3B1cCYmKHRoaXMuZGF0YS50aXRsZU9iaj8uc3RyfHx0aGlzLmRhdGEuY29udGVudHNPYmo/LnN0cnx8dGhpcy5kYXRhLnJpY2hUZXh0KSYmdGhpcy5fY3JlYXRlUG9wdXAodCx0aGlzLmRhdGEpO3RoaXMuY29udGFpbmVyLmFwcGVuZCh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2Rvd25sb2FkKCl7dGhpcy5kb3dubG9hZE1hbmFnZXI/Lm9wZW5PckRvd25sb2FkRGF0YSh0aGlzLmNvbnRhaW5lcix0aGlzLmNvbnRlbnQsdGhpcy5maWxlbmFtZSl9fWNsYXNzIEFubm90YXRpb25MYXllcntzdGF0aWMjX2UodCxlLHMsaSl7Y29uc3Qgcj10LmZpcnN0Q2hpbGR8fHQ7ci5pZD1gJHtuLkFubm90YXRpb25QcmVmaXh9JHtlfWA7cy5hcHBlbmQodCk7aT8ubW92ZUVsZW1lbnRJbkRPTShzLHQsciwhMSl9c3RhdGljIHJlbmRlcih0KXtjb25zdHthbm5vdGF0aW9uczplLGRpdjpzLHZpZXdwb3J0OmEsYWNjZXNzaWJpbGl0eU1hbmFnZXI6b309dDt0aGlzLiN2ZShzLGEpO2xldCBsPTA7Zm9yKGNvbnN0IGMgb2YgZSl7aWYoYy5hbm5vdGF0aW9uVHlwZSE9PWkuQW5ub3RhdGlvblR5cGUuUE9QVVApe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmV9PWdldFJlY3REaW1zKGMucmVjdCk7aWYodDw9MHx8ZTw9MCljb250aW51ZX1jb25zdCBlPUFubm90YXRpb25FbGVtZW50RmFjdG9yeS5jcmVhdGUoe2RhdGE6YyxsYXllcjpzLHBhZ2U6dC5wYWdlLHZpZXdwb3J0OmEsbGlua1NlcnZpY2U6dC5saW5rU2VydmljZSxkb3dubG9hZE1hbmFnZXI6dC5kb3dubG9hZE1hbmFnZXIsaW1hZ2VSZXNvdXJjZXNQYXRoOnQuaW1hZ2VSZXNvdXJjZXNQYXRofHwiIixyZW5kZXJGb3JtczohMSE9PXQucmVuZGVyRm9ybXMsc3ZnRmFjdG9yeTpuZXcgbi5ET01TVkdGYWN0b3J5LGFubm90YXRpb25TdG9yYWdlOnQuYW5ub3RhdGlvblN0b3JhZ2V8fG5ldyByLkFubm90YXRpb25TdG9yYWdlLGVuYWJsZVNjcmlwdGluZzp0LmVuYWJsZVNjcmlwdGluZyxoYXNKU0FjdGlvbnM6dC5oYXNKU0FjdGlvbnMsZmllbGRPYmplY3RzOnQuZmllbGRPYmplY3RzLG1vdXNlU3RhdGU6dC5tb3VzZVN0YXRlfHx7aXNEb3duOiExfX0pO2lmKGUuaXNSZW5kZXJhYmxlKXtjb25zdCB0PWUucmVuZGVyKCk7Yy5oaWRkZW4mJih0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdCl7ZS5zdHlsZS56SW5kZXg9bCsrO0Fubm90YXRpb25MYXllci4jX2UoZSxjLmlkLHMsbyl9ZWxzZXt0LnN0eWxlLnpJbmRleD1sKys7ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQ/cy5wcmVwZW5kKHQpOkFubm90YXRpb25MYXllci4jX2UodCxjLmlkLHMsbyl9fX10aGlzLiN5ZShzLHQuYW5ub3RhdGlvbkNhbnZhc01hcCl9c3RhdGljIHVwZGF0ZSh0KXtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmUsZGl2OnMsdmlld3BvcnQ6aX09dDt0aGlzLiN2ZShzLGkpO3RoaXMuI3llKHMsZSk7cy5oaWRkZW49ITF9c3RhdGljI3ZlKHQse3dpZHRoOmUsaGVpZ2h0OnMscm90YXRpb246aX0pe2NvbnN0e3N0eWxlOm59PXQscj1pJTE4MCE9MCxhPU1hdGguZmxvb3IoZSkrInB4IixvPU1hdGguZmxvb3IocykrInB4IjtuLndpZHRoPXI/bzphO24uaGVpZ2h0PXI/YTpvO3Quc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLGkpfXN0YXRpYyN5ZSh0LGUpe2lmKGUpe2Zvcihjb25zdFtzLGldb2YgZSl7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7c30iXWApO2lmKCFlKWNvbnRpbnVlO2NvbnN0e2ZpcnN0Q2hpbGQ6bn09ZTtuPyJDQU5WQVMiPT09bi5ub2RlTmFtZT9uLnJlcGxhY2VXaXRoKGkpOm4uYmVmb3JlKGkpOmUuYXBwZW5kKGkpfWUuY2xlYXIoKX19fWUuQW5ub3RhdGlvbkxheWVyPUFubm90YXRpb25MYXllcn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Db2xvckNvbnZlcnRlcnM9dm9pZCAwO2Z1bmN0aW9uIG1ha2VDb2xvckNvbXAodCl7cmV0dXJuIE1hdGguZmxvb3IoMjU1Kk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9ZS5Db2xvckNvbnZlcnRlcnM9Y2xhc3MgQ29sb3JDb252ZXJ0ZXJze3N0YXRpYyBDTVlLX0coW3QsZSxzLGldKXtyZXR1cm5bIkciLDEtTWF0aC5taW4oMSwuMyp0Ky41OSpzKy4xMSplK2kpXX1zdGF0aWMgR19DTVlLKFt0XSl7cmV0dXJuWyJDTVlLIiwwLDAsMCwxLXRdfXN0YXRpYyBHX1JHQihbdF0pe3JldHVyblsiUkdCIix0LHQsdF19c3RhdGljIEdfSFRNTChbdF0pe2NvbnN0IGU9bWFrZUNvbG9yQ29tcCh0KTtyZXR1cm5gIyR7ZX0ke2V9JHtlfWB9c3RhdGljIFJHQl9HKFt0LGUsc10pe3JldHVyblsiRyIsLjMqdCsuNTkqZSsuMTEqc119c3RhdGljIFJHQl9IVE1MKFt0LGUsc10pe3JldHVybmAjJHttYWtlQ29sb3JDb21wKHQpfSR7bWFrZUNvbG9yQ29tcChlKX0ke21ha2VDb2xvckNvbXAocyl9YH1zdGF0aWMgVF9IVE1MKCl7cmV0dXJuIiMwMDAwMDAwMCJ9c3RhdGljIENNWUtfUkdCKFt0LGUscyxpXSl7cmV0dXJuWyJSR0IiLDEtTWF0aC5taW4oMSx0K2kpLDEtTWF0aC5taW4oMSxzK2kpLDEtTWF0aC5taW4oMSxlK2kpXX1zdGF0aWMgQ01ZS19IVE1MKHQpe2NvbnN0IGU9dGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtyZXR1cm4gdGhpcy5SR0JfSFRNTChlKX1zdGF0aWMgUkdCX0NNWUsoW3QsZSxzXSl7Y29uc3QgaT0xLXQsbj0xLWUscj0xLXM7cmV0dXJuWyJDTVlLIixpLG4scixNYXRoLm1pbihpLG4scildfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5YZmFMYXllcj12b2lkIDA7dmFyIGk9cygxOSk7ZS5YZmFMYXllcj1jbGFzcyBYZmFMYXllcntzdGF0aWMgc2V0dXBTdG9yYWdlKHQsZSxzLGksbil7Y29uc3Qgcj1pLmdldFZhbHVlKGUse3ZhbHVlOm51bGx9KTtzd2l0Y2gocy5uYW1lKXtjYXNlInRleHRhcmVhIjpudWxsIT09ci52YWx1ZSYmKHQudGV4dENvbnRlbnQ9ci52YWx1ZSk7aWYoInByaW50Ij09PW4pYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PXMuYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09cy5hdHRyaWJ1dGVzLnR5cGUpe3IudmFsdWU9PT1zLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTpyLnZhbHVlPT09cy5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKTtpZigicHJpbnQiPT09bilicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LmNoZWNrZWQ/dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPbiIpOnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgieGZhT2ZmIil9KX0pKX1lbHNle251bGwhPT1yLnZhbHVlJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIudmFsdWUpO2lmKCJwcmludCI9PT1uKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57aS5zZXRWYWx1ZShlLHt2YWx1ZTp0LnRhcmdldC52YWx1ZX0pfSkpfWJyZWFrO2Nhc2Uic2VsZWN0IjppZihudWxsIT09ci52YWx1ZSlmb3IoY29uc3QgdCBvZiBzLmNoaWxkcmVuKXQuYXR0cmlidXRlcy52YWx1ZT09PXIudmFsdWUmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9ITApO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57Y29uc3Qgcz10LnRhcmdldC5vcHRpb25zLG49LTE9PT1zLnNlbGVjdGVkSW5kZXg/IiI6c1tzLnNlbGVjdGVkSW5kZXhdLnZhbHVlO2kuc2V0VmFsdWUoZSx7dmFsdWU6bn0pfSkpfX1zdGF0aWMgc2V0QXR0cmlidXRlcyh7aHRtbDp0LGVsZW1lbnQ6ZSxzdG9yYWdlOnM9bnVsbCxpbnRlbnQ6aSxsaW5rU2VydmljZTpufSl7Y29uc3R7YXR0cmlidXRlczpyfT1lLGE9dCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50OyJyYWRpbyI9PT1yLnR5cGUmJihyLm5hbWU9YCR7ci5uYW1lfS0ke2l9YCk7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhyKSlpZihudWxsIT1zKXN3aXRjaChlKXtjYXNlImNsYXNzIjpzLmxlbmd0aCYmdC5zZXRBdHRyaWJ1dGUoZSxzLmpvaW4oIiAiKSk7YnJlYWs7Y2FzZSJkYXRhSWQiOmJyZWFrO2Nhc2UiaWQiOnQuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO2JyZWFrO2Nhc2Uic3R5bGUiOk9iamVjdC5hc3NpZ24odC5zdHlsZSxzKTticmVhaztjYXNlInRleHRDb250ZW50Ijp0LnRleHRDb250ZW50PXM7YnJlYWs7ZGVmYXVsdDooIWF8fCJocmVmIiE9PWUmJiJuZXdXaW5kb3ciIT09ZSkmJnQuc2V0QXR0cmlidXRlKGUscyl9YSYmbi5hZGRMaW5rQXR0cmlidXRlcyh0LHIuaHJlZixyLm5ld1dpbmRvdyk7cyYmci5kYXRhSWQmJnRoaXMuc2V0dXBTdG9yYWdlKHQsci5kYXRhSWQsZSxzKX1zdGF0aWMgcmVuZGVyKHQpe2NvbnN0IGU9dC5hbm5vdGF0aW9uU3RvcmFnZSxzPXQubGlua1NlcnZpY2Usbj10LnhmYUh0bWwscj10LmludGVudHx8ImRpc3BsYXkiLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuLm5hbWUpO24uYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmEsZWxlbWVudDpuLGludGVudDpyLGxpbmtTZXJ2aWNlOnN9KTtjb25zdCBvPVtbbiwtMSxhXV0sbD10LmRpdjtsLmFwcGVuZChhKTtpZih0LnZpZXdwb3J0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7bC5zdHlsZS50cmFuc2Zvcm09ZX0icmljaFRleHQiIT09ciYmbC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwieGZhTGF5ZXIgeGZhRm9udCIpO2NvbnN0IGM9W107Zm9yKDtvLmxlbmd0aD4wOyl7Y29uc3RbdCxuLGFdPW8uYXQoLTEpO2lmKG4rMT09PXQuY2hpbGRyZW4ubGVuZ3RoKXtvLnBvcCgpO2NvbnRpbnVlfWNvbnN0IGw9dC5jaGlsZHJlblsrK28uYXQoLTEpWzFdXTtpZihudWxsPT09bCljb250aW51ZTtjb25zdHtuYW1lOmh9PWw7aWYoIiN0ZXh0Ij09PWgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7Yy5wdXNoKHQpO2EuYXBwZW5kKHQpO2NvbnRpbnVlfWxldCBkO2Q9bD8uYXR0cmlidXRlcz8ueG1sbnM/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGwuYXR0cmlidXRlcy54bWxucyxoKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGgpO2EuYXBwZW5kKGQpO2wuYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmQsZWxlbWVudDpsLHN0b3JhZ2U6ZSxpbnRlbnQ6cixsaW5rU2VydmljZTpzfSk7aWYobC5jaGlsZHJlbiYmbC5jaGlsZHJlbi5sZW5ndGg+MClvLnB1c2goW2wsLTEsZF0pO2Vsc2UgaWYobC52YWx1ZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsLnZhbHVlKTtpLlhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGgpJiZjLnB1c2godCk7ZC5hcHBlbmQodCl9fWZvcihjb25zdCB0IG9mIGwucXVlcnlTZWxlY3RvckFsbCgiLnhmYU5vbkludGVyYWN0aXZlIGlucHV0LCAueGZhTm9uSW50ZXJhY3RpdmUgdGV4dGFyZWEiKSl0LnNldEF0dHJpYnV0ZSgicmVhZE9ubHkiLCEwKTtyZXR1cm57dGV4dERpdnM6Y319c3RhdGljIHVwZGF0ZSh0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7dC5kaXYuc3R5bGUudHJhbnNmb3JtPWU7dC5kaXYuaGlkZGVuPSExfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UZXh0TGF5ZXJSZW5kZXJUYXNrPXZvaWQgMDtlLnJlbmRlclRleHRMYXllcj1mdW5jdGlvbiByZW5kZXJUZXh0TGF5ZXIodCl7Y29uc3QgZT1uZXcgVGV4dExheWVyUmVuZGVyVGFzayh7dGV4dENvbnRlbnQ6dC50ZXh0Q29udGVudCx0ZXh0Q29udGVudFN0cmVhbTp0LnRleHRDb250ZW50U3RyZWFtLGNvbnRhaW5lcjp0LmNvbnRhaW5lcix2aWV3cG9ydDp0LnZpZXdwb3J0LHRleHREaXZzOnQudGV4dERpdnMsdGV4dENvbnRlbnRJdGVtc1N0cjp0LnRleHRDb250ZW50SXRlbXNTdHJ9KTtlLl9yZW5kZXIodC50aW1lb3V0KTtyZXR1cm4gZX07dmFyIGk9cygxKTtjb25zdCBuPTMwLHI9bmV3IE1hcDtmdW5jdGlvbiBhcHBlbmRUZXh0KHQsZSxzLGEpe2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLGw9e2FuZ2xlOjAsY2FudmFzV2lkdGg6MCxoYXNUZXh0OiIiIT09ZS5zdHIsaGFzRU9MOmUuaGFzRU9MLGZvbnRTaXplOjB9O3QuX3RleHREaXZzLnB1c2gobyk7Y29uc3QgYz1pLlV0aWwudHJhbnNmb3JtKHQuX3ZpZXdwb3J0LnRyYW5zZm9ybSxlLnRyYW5zZm9ybSk7bGV0IGg9TWF0aC5hdGFuMihjWzFdLGNbMF0pO2NvbnN0IGQ9c1tlLmZvbnROYW1lXTtkLnZlcnRpY2FsJiYoaCs9TWF0aC5QSS8yKTtjb25zdCB1PU1hdGguaHlwb3QoY1syXSxjWzNdKSxwPXUqZnVuY3Rpb24gZ2V0QXNjZW50KHQsZSl7Y29uc3Qgcz1yLmdldCh0KTtpZihzKXJldHVybiBzO2Uuc2F2ZSgpO2UuZm9udD1gMzBweCAke3R9YDtjb25zdCBpPWUubWVhc3VyZVRleHQoIiIpO2xldCBhPWkuZm9udEJvdW5kaW5nQm94QXNjZW50LG89TWF0aC5hYnMoaS5mb250Qm91bmRpbmdCb3hEZXNjZW50KTtpZihhKXtlLnJlc3RvcmUoKTtjb25zdCBzPWEvKGErbyk7ci5zZXQodCxzKTtyZXR1cm4gc31lLnN0cm9rZVN0eWxlPSJyZWQiO2UuY2xlYXJSZWN0KDAsMCxuLG4pO2Uuc3Ryb2tlVGV4dCgiZyIsMCwwKTtsZXQgbD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO289MDtmb3IobGV0IHQ9bC5sZW5ndGgtMS0zO3Q+PTA7dC09NClpZihsW3RdPjApe289TWF0aC5jZWlsKHQvNC9uKTticmVha31lLmNsZWFyUmVjdCgwLDAsbixuKTtlLnN0cm9rZVRleHQoIkEiLDAsbik7bD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO2E9MDtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0Kz00KWlmKGxbdF0+MCl7YT1uLU1hdGguZmxvb3IodC80L24pO2JyZWFrfWUucmVzdG9yZSgpO2lmKGEpe2NvbnN0IGU9YS8oYStvKTtyLnNldCh0LGUpO3JldHVybiBlfXIuc2V0KHQsLjgpO3JldHVybi44fShkLmZvbnRGYW1pbHksYSk7bGV0IGcsbTtpZigwPT09aCl7Zz1jWzRdO209Y1s1XS1wfWVsc2V7Zz1jWzRdK3AqTWF0aC5zaW4oaCk7bT1jWzVdLXAqTWF0aC5jb3MoaCl9by5zdHlsZS5sZWZ0PWAke2d9cHhgO28uc3R5bGUudG9wPWAke219cHhgO28uc3R5bGUuZm9udFNpemU9YCR7dX1weGA7by5zdHlsZS5mb250RmFtaWx5PWQuZm9udEZhbWlseTtsLmZvbnRTaXplPXU7by5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTtvLnRleHRDb250ZW50PWUuc3RyO28uZGlyPWUuZGlyO3QuX2ZvbnRJbnNwZWN0b3JFbmFibGVkJiYoby5kYXRhc2V0LmZvbnROYW1lPWUuZm9udE5hbWUpOzAhPT1oJiYobC5hbmdsZT1oKigxODAvTWF0aC5QSSkpO2xldCBmPSExO2lmKGUuc3RyLmxlbmd0aD4xKWY9ITA7ZWxzZSBpZigiICIhPT1lLnN0ciYmZS50cmFuc2Zvcm1bMF0hPT1lLnRyYW5zZm9ybVszXSl7Y29uc3QgdD1NYXRoLmFicyhlLnRyYW5zZm9ybVswXSkscz1NYXRoLmFicyhlLnRyYW5zZm9ybVszXSk7dCE9PXMmJk1hdGgubWF4KHQscykvTWF0aC5taW4odCxzKT4xLjUmJihmPSEwKX1mJiYoZC52ZXJ0aWNhbD9sLmNhbnZhc1dpZHRoPWUuaGVpZ2h0KnQuX3ZpZXdwb3J0LnNjYWxlOmwuY2FudmFzV2lkdGg9ZS53aWR0aCp0Ll92aWV3cG9ydC5zY2FsZSk7dC5fdGV4dERpdlByb3BlcnRpZXMuc2V0KG8sbCk7dC5fdGV4dENvbnRlbnRTdHJlYW0mJnQuX2xheW91dFRleHQobyl9ZnVuY3Rpb24gcmVuZGVyKHQpe2lmKHQuX2NhbmNlbGVkKXJldHVybjtjb25zdCBlPXQuX3RleHREaXZzLHM9dC5fY2FwYWJpbGl0eTtpZihlLmxlbmd0aD4xZTUpe3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9ZWxzZXtpZighdC5fdGV4dENvbnRlbnRTdHJlYW0pZm9yKGNvbnN0IHMgb2YgZSl0Ll9sYXlvdXRUZXh0KHMpO3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9fWNsYXNzIFRleHRMYXllclJlbmRlclRhc2t7Y29uc3RydWN0b3Ioe3RleHRDb250ZW50OnQsdGV4dENvbnRlbnRTdHJlYW06ZSxjb250YWluZXI6cyx2aWV3cG9ydDpuLHRleHREaXZzOnIsdGV4dENvbnRlbnRJdGVtc1N0cjphfSl7dGhpcy5fdGV4dENvbnRlbnQ9dDt0aGlzLl90ZXh0Q29udGVudFN0cmVhbT1lO3RoaXMuX2NvbnRhaW5lcj1zO3RoaXMuX2RvY3VtZW50PXMub3duZXJEb2N1bWVudDt0aGlzLl92aWV3cG9ydD1uO3RoaXMuX3RleHREaXZzPXJ8fFtdO3RoaXMuX3RleHRDb250ZW50SXRlbXNTdHI9YXx8W107dGhpcy5fZm9udEluc3BlY3RvckVuYWJsZWQ9ISFnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZT1udWxsO3RoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseT1udWxsO3RoaXMuX2xheW91dFRleHRDdHg9bnVsbDt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1uZXcgV2Vha01hcDt0aGlzLl9yZW5kZXJpbmdEb25lPSExO3RoaXMuX2NhbmNlbGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsO3RoaXMuX2JvdW5kcz1bXTt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvPWdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYXBhYmlsaXR5LnByb21pc2UuZmluYWxseSgoKCk9Pnt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1udWxsO2lmKHRoaXMuX2xheW91dFRleHRDdHgpe3RoaXMuX2xheW91dFRleHRDdHguY2FudmFzLndpZHRoPTA7dGhpcy5fbGF5b3V0VGV4dEN0eC5jYW52YXMuaGVpZ2h0PTA7dGhpcy5fbGF5b3V0VGV4dEN0eD1udWxsfX0pKS5jYXRjaCgoKCk9Pnt9KSl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWNhbmNlbCgpe3RoaXMuX2NhbmNlbGVkPSEwO2lmKHRoaXMuX3JlYWRlcil7dGhpcy5fcmVhZGVyLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKS5jYXRjaCgoKCk9Pnt9KSk7dGhpcy5fcmVhZGVyPW51bGx9aWYobnVsbCE9PXRoaXMuX3JlbmRlclRpbWVyKXtjbGVhclRpbWVvdXQodGhpcy5fcmVuZGVyVGltZXIpO3RoaXMuX3JlbmRlclRpbWVyPW51bGx9dGhpcy5fY2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpfV9wcm9jZXNzSXRlbXModCxlKXtmb3IoY29uc3QgcyBvZiB0KWlmKHZvaWQgMCE9PXMuc3RyKXt0aGlzLl90ZXh0Q29udGVudEl0ZW1zU3RyLnB1c2gocy5zdHIpO2FwcGVuZFRleHQodGhpcyxzLGUsdGhpcy5fbGF5b3V0VGV4dEN0eCl9ZWxzZSBpZigiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiPT09cy50eXBlfHwiYmVnaW5NYXJrZWRDb250ZW50Ij09PXMudHlwZSl7Y29uc3QgdD10aGlzLl9jb250YWluZXI7dGhpcy5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFya2VkQ29udGVudCIpO251bGwhPT1zLmlkJiZ0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIsYCR7cy5pZH1gKTt0LmFwcGVuZCh0aGlzLl9jb250YWluZXIpfWVsc2UiZW5kTWFya2VkQ29udGVudCI9PT1zLnR5cGUmJih0aGlzLl9jb250YWluZXI9dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUpfV9sYXlvdXRUZXh0KHQpe2NvbnN0IGU9dGhpcy5fdGV4dERpdlByb3BlcnRpZXMuZ2V0KHQpO2xldCBzPSIiO2lmKDAhPT1lLmNhbnZhc1dpZHRoJiZlLmhhc1RleHQpe2NvbnN0e2ZvbnRGYW1pbHk6aX09dC5zdHlsZSx7Zm9udFNpemU6bn09ZTtpZihuIT09dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZXx8aSE9PXRoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseSl7dGhpcy5fbGF5b3V0VGV4dEN0eC5mb250PWAke24qdGhpcy5fZGV2aWNlUGl4ZWxSYXRpb31weCAke2l9YDt0aGlzLl9sYXlvdXRUZXh0TGFzdEZvbnRTaXplPW47dGhpcy5fbGF5b3V0VGV4dExhc3RGb250RmFtaWx5PWl9Y29uc3R7d2lkdGg6cn09dGhpcy5fbGF5b3V0VGV4dEN0eC5tZWFzdXJlVGV4dCh0LnRleHRDb250ZW50KTtyPjAmJihzPWBzY2FsZVgoJHt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvKmUuY2FudmFzV2lkdGgvcn0pYCl9MCE9PWUuYW5nbGUmJihzPWByb3RhdGUoJHtlLmFuZ2xlfWRlZykgJHtzfWApO3MubGVuZ3RoPjAmJih0LnN0eWxlLnRyYW5zZm9ybT1zKTtlLmhhc1RleHQmJnRoaXMuX2NvbnRhaW5lci5hcHBlbmQodCk7aWYoZS5oYXNFT0wpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTt0LnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO3RoaXMuX2NvbnRhaW5lci5hcHBlbmQodCl9fV9yZW5kZXIodD0wKXtjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7bGV0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3IuaGVpZ2h0PXIud2lkdGg9bjt0aGlzLl9sYXlvdXRUZXh0Q3R4PXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pO2lmKHRoaXMuX3RleHRDb250ZW50KXtjb25zdCB0PXRoaXMuX3RleHRDb250ZW50Lml0ZW1zLHM9dGhpcy5fdGV4dENvbnRlbnQuc3R5bGVzO3RoaXMuX3Byb2Nlc3NJdGVtcyh0LHMpO2UucmVzb2x2ZSgpfWVsc2V7aWYoIXRoaXMuX3RleHRDb250ZW50U3RyZWFtKXRocm93IG5ldyBFcnJvcignTmVpdGhlciAidGV4dENvbnRlbnQiIG5vciAidGV4dENvbnRlbnRTdHJlYW0iIHBhcmFtZXRlcnMgc3BlY2lmaWVkLicpO3tjb25zdCBwdW1wPSgpPT57dGhpcy5fcmVhZGVyLnJlYWQoKS50aGVuKCgoe3ZhbHVlOnQsZG9uZTppfSk9PntpZihpKWUucmVzb2x2ZSgpO2Vsc2V7T2JqZWN0LmFzc2lnbihzLHQuc3R5bGVzKTt0aGlzLl9wcm9jZXNzSXRlbXModC5pdGVtcyxzKTtwdW1wKCl9fSksZS5yZWplY3QpfTt0aGlzLl9yZWFkZXI9dGhpcy5fdGV4dENvbnRlbnRTdHJlYW0uZ2V0UmVhZGVyKCk7cHVtcCgpfX1lLnByb21pc2UudGhlbigoKCk9PntzPW51bGw7dD90aGlzLl9yZW5kZXJUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3JlbmRlcih0aGlzKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsfSksdCk6cmVuZGVyKHRoaXMpfSksdGhpcy5fY2FwYWJpbGl0eS5yZWplY3QpfX1lLlRleHRMYXllclJlbmRlclRhc2s9VGV4dExheWVyUmVuZGVyVGFza30sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlNWR0dyYXBoaWNzPXZvaWQgMDt2YXIgaT1zKDYpLG49cygxKSxyPXMoMTIpO2xldCBhPWNsYXNze2NvbnN0cnVjdG9yKCl7KDAsbi51bnJlYWNoYWJsZSkoIk5vdCBpbXBsZW1lbnRlZDogU1ZHR3JhcGhpY3MiKX19O2UuU1ZHR3JhcGhpY3M9YTt7Y29uc3Qgbz17Zm9udFN0eWxlOiJub3JtYWwiLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZmlsbENvbG9yOiIjMDAwMDAwIn0sbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIixjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixoPVsiYnV0dCIsInJvdW5kIiwic3F1YXJlIl0sZD1bIm1pdGVyIiwicm91bmQiLCJiZXZlbCJdLGNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbih0LGU9IiIscz0hMSl7aWYoVVJMLmNyZWF0ZU9iamVjdFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYhcylyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbdF0se3R5cGU6ZX0pKTtjb25zdCBpPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7bGV0IG49YGRhdGE6JHtlfTtiYXNlNjQsYDtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKz0zKXtjb25zdCByPTI1NSZ0W2VdLGE9MjU1JnRbZSsxXSxvPTI1NSZ0W2UrMl07bis9aVtyPj4yXStpWygzJnIpPDw0fGE+PjRdK2lbZSsxPHM/KDE1JmEpPDwyfG8+PjY6NjRdK2lbZSsyPHM/NjMmbzo2NF19cmV0dXJuIG59LHU9ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KFsxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdKSxlPW5ldyBJbnQzMkFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcz10O2ZvcihsZXQgdD0wO3Q8ODt0Kyspcz0xJnM/Mzk4ODI5MjM4NF5zPj4xJjIxNDc0ODM2NDc6cz4+MSYyMTQ3NDgzNjQ3O2VbdF09c31mdW5jdGlvbiB3cml0ZVBuZ0NodW5rKHQscyxpLG4pe2xldCByPW47Y29uc3QgYT1zLmxlbmd0aDtpW3JdPWE+PjI0JjI1NTtpW3IrMV09YT4+MTYmMjU1O2lbcisyXT1hPj44JjI1NTtpW3IrM109MjU1JmE7cis9NDtpW3JdPTI1NSZ0LmNoYXJDb2RlQXQoMCk7aVtyKzFdPTI1NSZ0LmNoYXJDb2RlQXQoMSk7aVtyKzJdPTI1NSZ0LmNoYXJDb2RlQXQoMik7aVtyKzNdPTI1NSZ0LmNoYXJDb2RlQXQoMyk7cis9NDtpLnNldChzLHIpO3IrPXMubGVuZ3RoO2NvbnN0IG89ZnVuY3Rpb24gY3JjMzIodCxzLGkpe2xldCBuPS0xO2ZvcihsZXQgcj1zO3I8aTtyKyspe2NvbnN0IHM9MjU1JihuXnRbcl0pO249bj4+PjheZVtzXX1yZXR1cm4tMV5ufShpLG4rNCxyKTtpW3JdPW8+PjI0JjI1NTtpW3IrMV09bz4+MTYmMjU1O2lbcisyXT1vPj44JjI1NTtpW3IrM109MjU1Jm99ZnVuY3Rpb24gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl7bGV0IGU9dC5sZW5ndGg7Y29uc3Qgcz02NTUzNSxpPU1hdGguY2VpbChlL3MpLG49bmV3IFVpbnQ4QXJyYXkoMitlKzUqaSs0KTtsZXQgcj0wO25bcisrXT0xMjA7bltyKytdPTE1NjtsZXQgYT0wO2Zvcig7ZT5zOyl7bltyKytdPTA7bltyKytdPTI1NTtuW3IrK109MjU1O25bcisrXT0wO25bcisrXT0wO24uc2V0KHQuc3ViYXJyYXkoYSxhK3MpLHIpO3IrPXM7YSs9cztlLT1zfW5bcisrXT0xO25bcisrXT0yNTUmZTtuW3IrK109ZT4+OCYyNTU7bltyKytdPTI1NSZ+ZTtuW3IrK109KDY1NTM1Jn5lKT4+OCYyNTU7bi5zZXQodC5zdWJhcnJheShhKSxyKTtyKz10Lmxlbmd0aC1hO2NvbnN0IG89ZnVuY3Rpb24gYWRsZXIzMih0LGUscyl7bGV0IGk9MSxuPTA7Zm9yKGxldCByPWU7cjxzOysrcil7aT0oaSsoMjU1JnRbcl0pKSU2NTUyMTtuPShuK2kpJTY1NTIxfXJldHVybiBuPDwxNnxpfSh0LDAsdC5sZW5ndGgpO25bcisrXT1vPj4yNCYyNTU7bltyKytdPW8+PjE2JjI1NTtuW3IrK109bz4+OCYyNTU7bltyKytdPTI1NSZvO3JldHVybiBufWZ1bmN0aW9uIGVuY29kZShlLHMsaSxhKXtjb25zdCBvPWUud2lkdGgsbD1lLmhlaWdodDtsZXQgYyxoLGQ7Y29uc3QgdT1lLmRhdGE7c3dpdGNoKHMpe2Nhc2Ugbi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6aD0wO2M9MTtkPW8rNz4+MzticmVhaztjYXNlIG4uSW1hZ2VLaW5kLlJHQl8yNEJQUDpoPTI7Yz04O2Q9MypvO2JyZWFrO2Nhc2Ugbi5JbWFnZUtpbmQuUkdCQV8zMkJQUDpoPTY7Yz04O2Q9NCpvO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWNvbnN0IHA9bmV3IFVpbnQ4QXJyYXkoKDErZCkqbCk7bGV0IGc9MCxtPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7cFtnKytdPTA7cC5zZXQodS5zdWJhcnJheShtLG0rZCksZyk7bSs9ZDtnKz1kfWlmKHM9PT1uLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCYmYSl7Zz0wO2ZvcihsZXQgdD0wO3Q8bDt0Kyspe2crKztmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbZysrXV49MjU1fX1jb25zdCBmPW5ldyBVaW50OEFycmF5KFtvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsYyxoLDAsMCwwXSksYj1mdW5jdGlvbiBkZWZsYXRlU3luYyh0KXtpZighci5pc05vZGVKUylyZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7dHJ5e2xldCBlO2U9cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKT49OD90OkJ1ZmZlci5mcm9tKHQpO2NvbnN0IHM9cmVxdWlyZSgiemxpYiIpLmRlZmxhdGVTeW5jKGUse2xldmVsOjl9KTtyZXR1cm4gcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/czpuZXcgVWludDhBcnJheShzKX1jYXRjaCh0KXsoMCxuLndhcm4pKCJOb3QgY29tcHJlc3NpbmcgUE5HIGJlY2F1c2UgemxpYi5kZWZsYXRlU3luYyBpcyB1bmF2YWlsYWJsZTogIit0KX1yZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl9KHApLEE9dC5sZW5ndGgrMzYrZi5sZW5ndGgrYi5sZW5ndGgsXz1uZXcgVWludDhBcnJheShBKTtsZXQgdj0wO18uc2V0KHQsdik7dis9dC5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUhEUiIsZixfLHYpO3YrPTEyK2YubGVuZ3RoO3dyaXRlUG5nQ2h1bmsoIklEQVRBIixiLF8sdik7dis9MTIrYi5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUVORCIsbmV3IFVpbnQ4QXJyYXkoMCksXyx2KTtyZXR1cm4gY3JlYXRlT2JqZWN0VVJMKF8sImltYWdlL3BuZyIsaSl9cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRJbWdEYXRhVG9QbmcodCxlLHMpe3JldHVybiBlbmNvZGUodCx2b2lkIDA9PT10LmtpbmQ/bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6dC5raW5kLGUscyl9fSgpO2NsYXNzIFNWR0V4dHJhU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLmZvbnRXZWlnaHQ9by5mb250V2VpZ2h0O3RoaXMuZm9udFNpemU9MDt0aGlzLnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1uLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPW8uZmlsbENvbG9yO3RoaXMuc3Ryb2tlQ29sb3I9IiMwMDAwMDAiO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5saW5lSm9pbj0iIjt0aGlzLmxpbmVDYXA9IiI7dGhpcy5taXRlckxpbWl0PTA7dGhpcy5kYXNoQXJyYXk9W107dGhpcy5kYXNoUGhhc2U9MDt0aGlzLmRlcGVuZGVuY2llcz1bXTt0aGlzLmFjdGl2ZUNsaXBVcmw9bnVsbDt0aGlzLmNsaXBHcm91cD1udWxsO3RoaXMubWFza0lkPSIifWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9c2V0Q3VycmVudFBvaW50KHQsZSl7dGhpcy54PXQ7dGhpcy55PWV9fWZ1bmN0aW9uIG9wTGlzdFRvVHJlZSh0KXtsZXQgZT1bXTtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpaWYoInNhdmUiIT09aS5mbikicmVzdG9yZSI9PT1pLmZuP2U9cy5wb3AoKTplLnB1c2goaSk7ZWxzZXtlLnB1c2goe2ZuSWQ6OTIsZm46Imdyb3VwIixpdGVtczpbXX0pO3MucHVzaChlKTtlPWUuYXQoLTEpLml0ZW1zfXJldHVybiBlfWZ1bmN0aW9uIHBmKHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHQudG9TdHJpbmcoKTtjb25zdCBlPXQudG9GaXhlZCgxMCk7bGV0IHM9ZS5sZW5ndGgtMTtpZigiMCIhPT1lW3NdKXJldHVybiBlO2Rve3MtLX13aGlsZSgiMCI9PT1lW3NdKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCwiLiI9PT1lW3NdP3M6cysxKX1mdW5jdGlvbiBwbSh0KXtpZigwPT09dFs0XSYmMD09PXRbNV0pe2lmKDA9PT10WzFdJiYwPT09dFsyXSlyZXR1cm4gMT09PXRbMF0mJjE9PT10WzNdPyIiOmBzY2FsZSgke3BmKHRbMF0pfSAke3BmKHRbM10pfSlgO2lmKHRbMF09PT10WzNdJiZ0WzFdPT09LXRbMl0pe3JldHVybmByb3RhdGUoJHtwZigxODAqTWF0aC5hY29zKHRbMF0pL01hdGguUEkpfSlgfX1lbHNlIGlmKDE9PT10WzBdJiYwPT09dFsxXSYmMD09PXRbMl0mJjE9PT10WzNdKXJldHVybmB0cmFuc2xhdGUoJHtwZih0WzRdKX0gJHtwZih0WzVdKX0pYDtyZXR1cm5gbWF0cml4KCR7cGYodFswXSl9ICR7cGYodFsxXSl9ICR7cGYodFsyXSl9ICR7cGYodFszXSl9ICR7cGYodFs0XSl9ICR7cGYodFs1XSl9KWB9bGV0IHA9MCxnPTAsbT0wO2UuU1ZHR3JhcGhpY3M9YT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUscz0hMSl7KDAsaS5kZXByZWNhdGVkKSgiVGhlIFNWRyBiYWNrLWVuZCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgKm1heSogYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiIpO3RoaXMuc3ZnRmFjdG9yeT1uZXcgaS5ET01TVkdGYWN0b3J5O3RoaXMuY3VycmVudD1uZXcgU1ZHRXh0cmFTdGF0ZTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLklERU5USVRZX01BVFJJWDt0aGlzLnRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZXh0cmFTdGFjaz1bXTt0aGlzLmNvbW1vbk9ianM9dDt0aGlzLm9ianM9ZTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMuZW1iZWRGb250cz0hMTt0aGlzLmVtYmVkZGVkRm9udHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNzc1N0eWxlPW51bGw7dGhpcy5mb3JjZURhdGFTY2hlbWE9ISFzO3RoaXMuX29wZXJhdG9ySWRNYXBwaW5nPVtdO2Zvcihjb25zdCB0IGluIG4uT1BTKXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nW24uT1BTW3RdXT10fWdldE9iamVjdCh0LGU9bnVsbCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3RhcnRzV2l0aCgiZ18iKT90aGlzLmNvbW1vbk9ianMuZ2V0KHQpOnRoaXMub2Jqcy5nZXQodCk6ZX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMudHJhbnNmb3JtTWF0cml4KTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLmV4dHJhU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXt0aGlzLnRyYW5zZm9ybU1hdHJpeD10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpO3RoaXMuY3VycmVudD10aGlzLmV4dHJhU3RhY2sucG9wKCk7dGhpcy5wZW5kaW5nQ2xpcD1udWxsO3RoaXMudGdycD1udWxsfWdyb3VwKHQpe3RoaXMuc2F2ZSgpO3RoaXMuZXhlY3V0ZU9wVHJlZSh0KTt0aGlzLnJlc3RvcmUoKX1sb2FkRGVwZW5kZW5jaWVzKHQpe2NvbnN0IGU9dC5mbkFycmF5LHM9dC5hcmdzQXJyYXk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKWlmKGVbdF09PT1uLk9QUy5kZXBlbmRlbmN5KWZvcihjb25zdCBlIG9mIHNbdF0pe2NvbnN0IHQ9ZS5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqczp0aGlzLm9ianMscz1uZXcgUHJvbWlzZSgocz0+e3QuZ2V0KGUscyl9KSk7dGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKHMpfXJldHVybiBQcm9taXNlLmFsbCh0aGlzLmN1cnJlbnQuZGVwZW5kZW5jaWVzKX10cmFuc2Zvcm0odCxlLHMsaSxyLGEpe2NvbnN0IG89W3QsZSxzLGkscixhXTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLlV0aWwudHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4LG8pO3RoaXMudGdycD1udWxsfWdldFNWRyh0LGUpe3RoaXMudmlld3BvcnQ9ZTtjb25zdCBzPXRoaXMuX2luaXRpYWxpemUoZSk7cmV0dXJuIHRoaXMubG9hZERlcGVuZGVuY2llcyh0KS50aGVuKCgoKT0+e3RoaXMudHJhbnNmb3JtTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3RoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QodCkpO3JldHVybiBzfSkpfWNvbnZlcnRPcExpc3QodCl7Y29uc3QgZT10aGlzLl9vcGVyYXRvcklkTWFwcGluZyxzPXQuYXJnc0FycmF5LGk9dC5mbkFycmF5LG49W107Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWlbdF07bi5wdXNoKHtmbklkOnIsZm46ZVtyXSxhcmdzOnNbdF19KX1yZXR1cm4gb3BMaXN0VG9UcmVlKG4pfWV4ZWN1dGVPcFRyZWUodCl7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmZuLHM9ZS5mbklkLGk9ZS5hcmdzO3N3aXRjaCgwfHMpe2Nhc2Ugbi5PUFMuYmVnaW5UZXh0OnRoaXMuYmVnaW5UZXh0KCk7YnJlYWs7Y2FzZSBuLk9QUy5kZXBlbmRlbmN5OmJyZWFrO2Nhc2Ugbi5PUFMuc2V0TGVhZGluZzp0aGlzLnNldExlYWRpbmcoaSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6dGhpcy5zZXRMZWFkaW5nTW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldEZvbnQ6dGhpcy5zZXRGb250KGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hvd1RleHQ6Y2FzZSBuLk9QUy5zaG93U3BhY2VkVGV4dDp0aGlzLnNob3dUZXh0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kVGV4dDp0aGlzLmVuZFRleHQoKTticmVhaztjYXNlIG4uT1BTLm1vdmVUZXh0OnRoaXMubW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldENoYXJTcGFjaW5nOnRoaXMuc2V0Q2hhclNwYWNpbmcoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRXb3JkU3BhY2luZzp0aGlzLnNldFdvcmRTcGFjaW5nKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0SFNjYWxlOnRoaXMuc2V0SFNjYWxlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dE1hdHJpeDp0aGlzLnNldFRleHRNYXRyaXgoaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dFJpc2U6dGhpcy5zZXRUZXh0UmlzZShpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlOnRoaXMuc2V0VGV4dFJlbmRlcmluZ01vZGUoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lV2lkdGg6dGhpcy5zZXRMaW5lV2lkdGgoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lSm9pbjp0aGlzLnNldExpbmVKb2luKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0TGluZUNhcDp0aGlzLnNldExpbmVDYXAoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRNaXRlckxpbWl0OnRoaXMuc2V0TWl0ZXJMaW1pdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxSR0JDb2xvcjp0aGlzLnNldEZpbGxSR0JDb2xvcihpWzBdLGlbMV0saVsyXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VSR0JDb2xvcjp0aGlzLnNldFN0cm9rZVJHQkNvbG9yKGlbMF0saVsxXSxpWzJdKTticmVhaztjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yTjp0aGlzLnNldFN0cm9rZUNvbG9yTihpKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvck46dGhpcy5zZXRGaWxsQ29sb3JOKGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hhZGluZ0ZpbGw6dGhpcy5zaGFkaW5nRmlsbChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldERhc2g6dGhpcy5zZXREYXNoKGlbMF0saVsxXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGbGF0bmVzczp0aGlzLnNldEZsYXRuZXNzKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0R1N0YXRlOnRoaXMuc2V0R1N0YXRlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZmlsbDp0aGlzLmZpbGwoKTticmVhaztjYXNlIG4uT1BTLmVvRmlsbDp0aGlzLmVvRmlsbCgpO2JyZWFrO2Nhc2Ugbi5PUFMuc3Ryb2tlOnRoaXMuc3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5maWxsU3Ryb2tlOnRoaXMuZmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9GaWxsU3Ryb2tlOnRoaXMuZW9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbGlwOnRoaXMuY2xpcCgibm9uemVybyIpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9DbGlwOnRoaXMuY2xpcCgiZXZlbm9kZCIpO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOnRoaXMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCk7YnJlYWs7Y2FzZSBuLk9QUy5wYWludEltYWdlWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VNYXNrWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50Rm9ybVhPYmplY3RCZWdpbjp0aGlzLnBhaW50Rm9ybVhPYmplY3RCZWdpbihpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRGb3JtWE9iamVjdEVuZDp0aGlzLnBhaW50Rm9ybVhPYmplY3RFbmQoKTticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDp0aGlzLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VTdHJva2U6dGhpcy5jbG9zZVN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VGaWxsU3Ryb2tlOnRoaXMuY2xvc2VGaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbG9zZUVPRmlsbFN0cm9rZTp0aGlzLmNsb3NlRU9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZTp0aGlzLm5leHRMaW5lKCk7YnJlYWs7Y2FzZSBuLk9QUy50cmFuc2Zvcm06dGhpcy50cmFuc2Zvcm0oaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuY29uc3RydWN0UGF0aDp0aGlzLmNvbnN0cnVjdFBhdGgoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLmVuZFBhdGg6dGhpcy5lbmRQYXRoKCk7YnJlYWs7Y2FzZSA5Mjp0aGlzLmdyb3VwKGUuaXRlbXMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBvcGVyYXRvciAke3R9YCl9fX1zZXRXb3JkU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH1zZXRDaGFyU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH1uZXh0TGluZSgpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9c2V0VGV4dE1hdHJpeCh0LGUscyxpLG4scil7Y29uc3QgYT10aGlzLmN1cnJlbnQ7YS50ZXh0TWF0cml4PWEubGluZU1hdHJpeD1bdCxlLHMsaSxuLHJdO2EudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKTthLng9YS5saW5lWD0wO2EueT1hLmxpbmVZPTA7YS54Y29vcmRzPVtdO2EueWNvb3Jkcz1bXTthLnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTthLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixhLmZvbnRGYW1pbHkpO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIixgJHtwZihhLmZvbnRTaXplKX1weGApO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWEueSkpO2EudHh0RWxlbWVudD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRleHQiKTthLnR4dEVsZW1lbnQuYXBwZW5kKGEudHNwYW4pfWJlZ2luVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QueD10LmxpbmVYPTA7dC55PXQubGluZVk9MDt0LnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dC5saW5lTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3QudGV4dE1hdHJpeFNjYWxlPTE7dC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dC50eHRFbGVtZW50PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dGV4dCIpO3QudHh0Z3JwPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3QueGNvb3Jkcz1bXTt0Lnljb29yZHM9W119bW92ZVRleHQodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtzLng9cy5saW5lWCs9dDtzLnk9cy5saW5lWSs9ZTtzLnhjb29yZHM9W107cy55Y29vcmRzPVtdO3MudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO3MudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLHMuZm9udEZhbWlseSk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLGAke3BmKHMuZm9udFNpemUpfXB4YCk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtcy55KSl9c2hvd1RleHQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz1lLmZvbnQsaT1lLmZvbnRTaXplO2lmKDA9PT1pKXJldHVybjtjb25zdCByPWUuZm9udFNpemVTY2FsZSxhPWUuY2hhclNwYWNpbmcsYz1lLndvcmRTcGFjaW5nLGg9ZS5mb250RGlyZWN0aW9uLGQ9ZS50ZXh0SFNjYWxlKmgsdT1zLnZlcnRpY2FsLHA9dT8xOi0xLGc9cy5kZWZhdWx0Vk1ldHJpY3MsbT1pKmUuZm9udE1hdHJpeFswXTtsZXQgZj0wO2Zvcihjb25zdCBuIG9mIHQpe2lmKG51bGw9PT1uKXtmKz1oKmM7Y29udGludWV9aWYoIm51bWJlciI9PXR5cGVvZiBuKXtmKz1wKm4qaS8xZTM7Y29udGludWV9Y29uc3QgdD0obi5pc1NwYWNlP2M6MCkrYSxvPW4uZm9udENoYXI7bGV0IGwsZCxiLEE9bi53aWR0aDtpZih1KXtsZXQgdDtjb25zdCBlPW4udm1ldHJpY3x8Zzt0PW4udm1ldHJpYz9lWzFdOi41KkE7dD0tdCptO2NvbnN0IHM9ZVsyXSptO0E9ZT8tZVswXTpBO2w9dC9yO2Q9KGYrcykvcn1lbHNle2w9Zi9yO2Q9MH1pZihuLmlzSW5Gb250fHxzLm1pc3NpbmdGaWxlKXtlLnhjb29yZHMucHVzaChlLngrbCk7dSYmZS55Y29vcmRzLnB1c2goLWUueStkKTtlLnRzcGFuLnRleHRDb250ZW50Kz1vfWI9dT9BKm0tdCpoOkEqbSt0Kmg7Zis9Yn1lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUueGNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk7dT9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGUueWNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtZS55KSk7dT9lLnktPWY6ZS54Kz1mKmQ7ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KTtlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsYCR7cGYoZS5mb250U2l6ZSl9cHhgKTtlLmZvbnRTdHlsZSE9PW8uZm9udFN0eWxlJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc3R5bGUiLGUuZm9udFN0eWxlKTtlLmZvbnRXZWlnaHQhPT1vLmZvbnRXZWlnaHQmJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC13ZWlnaHQiLGUuZm9udFdlaWdodCk7Y29uc3QgYj1lLnRleHRSZW5kZXJpbmdNb2RlJm4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztpZihiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMfHxiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSl7ZS5maWxsQ29sb3IhPT1vLmZpbGxDb2xvciYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIixlLmZpbGxDb2xvcik7ZS5maWxsQWxwaGE8MSYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLGUuZmlsbEFscGhhKX1lbHNlIGUudGV4dFJlbmRlcmluZ01vZGU9PT1uLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsInRyYW5zcGFyZW50Iik6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO2lmKGI9PT1uLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRXx8Yj09PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0Upe2NvbnN0IHQ9MS8oZS50ZXh0TWF0cml4U2NhbGV8fDEpO3RoaXMuX3NldFN0cm9rZUF0dHJpYnV0ZXMoZS50c3Bhbix0KX1sZXQgQT1lLnRleHRNYXRyaXg7aWYoMCE9PWUudGV4dFJpc2Upe0E9QS5zbGljZSgpO0FbNV0rPWUudGV4dFJpc2V9ZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsYCR7cG0oQSl9IHNjYWxlKCR7cGYoZCl9LCAtMSlgKTtlLnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMobCwieG1sOnNwYWNlIiwicHJlc2VydmUiKTtlLnR4dEVsZW1lbnQuYXBwZW5kKGUudHNwYW4pO2UudHh0Z3JwLmFwcGVuZChlLnR4dEVsZW1lbnQpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGUudHh0RWxlbWVudCl9c2V0TGVhZGluZ01vdmVUZXh0KHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKTt0aGlzLm1vdmVUZXh0KHQsZSl9YWRkRm9udFN0eWxlKHQpe2lmKCF0LmRhdGEpdGhyb3cgbmV3IEVycm9yKCdhZGRGb250U3R5bGU6IE5vIGZvbnQgZGF0YSBhdmFpbGFibGUsIGVuc3VyZSB0aGF0IHRoZSAiZm9udEV4dHJhUHJvcGVydGllcyIgQVBJIHBhcmFtZXRlciBpcyBzZXQuJyk7aWYoIXRoaXMuY3NzU3R5bGUpe3RoaXMuY3NzU3R5bGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdHlsZSIpO3RoaXMuY3NzU3R5bGUuc2V0QXR0cmlidXRlTlMobnVsbCwidHlwZSIsInRleHQvY3NzIik7dGhpcy5kZWZzLmFwcGVuZCh0aGlzLmNzc1N0eWxlKX1jb25zdCBlPWNyZWF0ZU9iamVjdFVSTCh0LmRhdGEsdC5taW1ldHlwZSx0aGlzLmZvcmNlRGF0YVNjaGVtYSk7dGhpcy5jc3NTdHlsZS50ZXh0Q29udGVudCs9YEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIiR7dC5sb2FkZWROYW1lfSI7IHNyYzogdXJsKCR7ZX0pOyB9XG5gfXNldEZvbnQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz10aGlzLmNvbW1vbk9ianMuZ2V0KHRbMF0pO2xldCBpPXRbMV07ZS5mb250PXM7aWYodGhpcy5lbWJlZEZvbnRzJiYhcy5taXNzaW5nRmlsZSYmIXRoaXMuZW1iZWRkZWRGb250c1tzLmxvYWRlZE5hbWVdKXt0aGlzLmFkZEZvbnRTdHlsZShzKTt0aGlzLmVtYmVkZGVkRm9udHNbcy5sb2FkZWROYW1lXT1zfWUuZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVg7bGV0IHI9Im5vcm1hbCI7cy5ibGFjaz9yPSI5MDAiOnMuYm9sZCYmKHI9ImJvbGQiKTtjb25zdCBhPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiO2lmKGk8MCl7aT0taTtlLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBlLmZvbnREaXJlY3Rpb249MTtlLmZvbnRTaXplPWk7ZS5mb250RmFtaWx5PXMubG9hZGVkTmFtZTtlLmZvbnRXZWlnaHQ9cjtlLmZvbnRTdHlsZT1hO2UudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWUueSkpO2UueGNvb3Jkcz1bXTtlLnljb29yZHM9W119ZW5kVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQudGV4dFJlbmRlcmluZ01vZGUmbi5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHJiZ0LnR4dEVsZW1lbnQ/Lmhhc0NoaWxkTm9kZXMoKSl7dC5lbGVtZW50PXQudHh0RWxlbWVudDt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19c2V0TGluZVdpZHRoKHQpe3Q+MCYmKHRoaXMuY3VycmVudC5saW5lV2lkdGg9dCl9c2V0TGluZUNhcCh0KXt0aGlzLmN1cnJlbnQubGluZUNhcD1oW3RdfXNldExpbmVKb2luKHQpe3RoaXMuY3VycmVudC5saW5lSm9pbj1kW3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdXJyZW50Lm1pdGVyTGltaXQ9dH1zZXRTdHJva2VBbHBoYSh0KXt0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9dH1zZXRTdHJva2VSR0JDb2xvcih0LGUscyl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpfXNldEZpbGxBbHBoYSh0KXt0aGlzLmN1cnJlbnQuZmlsbEFscGhhPXR9c2V0RmlsbFJHQkNvbG9yKHQsZSxzKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpO3RoaXMuY3VycmVudC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dGhpcy5jdXJyZW50Lnhjb29yZHM9W107dGhpcy5jdXJyZW50Lnljb29yZHM9W119c2V0U3Ryb2tlQ29sb3JOKHQpe3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10aGlzLl9tYWtlQ29sb3JOX1BhdHRlcm4odCl9c2V0RmlsbENvbG9yTih0KXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX1zaGFkaW5nRmlsbCh0KXtjb25zdCBlPXRoaXMudmlld3BvcnQud2lkdGgscz10aGlzLnZpZXdwb3J0LmhlaWdodCxpPW4uVXRpbC5pbnZlcnNlVHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4KSxyPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxpKSxhPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCxzXSxpKSxvPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSwwXSxpKSxsPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSxpKSxjPU1hdGgubWluKHJbMF0sYVswXSxvWzBdLGxbMF0pLGg9TWF0aC5taW4oclsxXSxhWzFdLG9bMV0sbFsxXSksZD1NYXRoLm1heChyWzBdLGFbMF0sb1swXSxsWzBdKSx1PU1hdGgubWF4KHJbMV0sYVsxXSxvWzFdLGxbMV0pLHA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixjKTtwLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGgpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLGQtYyk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHUtaCk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIix0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCkpO3RoaXMuY3VycmVudC5maWxsQWxwaGE8MSYmcC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLHRoaXMuY3VycmVudC5maWxsQWxwaGEpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKHApfV9tYWtlQ29sb3JOX1BhdHRlcm4odCl7cmV0dXJuIlRpbGluZ1BhdHRlcm4iPT09dFswXT90aGlzLl9tYWtlVGlsaW5nUGF0dGVybih0KTp0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCl9X21ha2VUaWxpbmdQYXR0ZXJuKHQpe2NvbnN0IGU9dFsxXSxzPXRbMl0saT10WzNdfHxuLklERU5USVRZX01BVFJJWCxbcixhLG8sbF09dFs0XSxjPXRbNV0saD10WzZdLGQ9dFs3XSx1PSJzaGFkaW5nIittKyssW3AsZyxmLGJdPW4uVXRpbC5ub3JtYWxpemVSZWN0KFsuLi5uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3IsYV0saSksLi4ubi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtvLGxdLGkpXSksW0EsX109bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGkpLHY9YypBLHk9aCpfLFM9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpwYXR0ZXJuIik7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsdSk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJwYXR0ZXJuVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHYpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGAke3B9YCk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixgJHtnfWApO2NvbnN0IHg9dGhpcy5zdmcsRT10aGlzLnRyYW5zZm9ybU1hdHJpeCxDPXRoaXMuY3VycmVudC5maWxsQ29sb3IsUD10aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IsVD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGYtcCxiLWcpO3RoaXMuc3ZnPVQ7dGhpcy50cmFuc2Zvcm1NYXRyaXg9aTtpZigyPT09ZCl7Y29uc3QgdD1uLlV0aWwubWFrZUhleENvbG9yKC4uLmUpO3RoaXMuY3VycmVudC5maWxsQ29sb3I9dDt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dH10aGlzLmV4ZWN1dGVPcFRyZWUodGhpcy5jb252ZXJ0T3BMaXN0KHMpKTt0aGlzLnN2Zz14O3RoaXMudHJhbnNmb3JtTWF0cml4PUU7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1DO3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj1QO1MuYXBwZW5kKFQuY2hpbGROb2Rlc1swXSk7dGhpcy5kZWZzLmFwcGVuZChTKTtyZXR1cm5gdXJsKCMke3V9KWB9X21ha2VTaGFkaW5nUGF0dGVybih0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0PXRoaXMub2Jqcy5nZXQodCkpO3N3aXRjaCh0WzBdKXtjYXNlIlJhZGlhbEF4aWFsIjpjb25zdCBlPSJzaGFkaW5nIittKysscz10WzNdO2xldCBpO3N3aXRjaCh0WzFdKXtjYXNlImF4aWFsIjpjb25zdCBzPXRbNF0sbj10WzVdO2k9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpsaW5lYXJHcmFkaWVudCIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLGUpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiZ3JhZGllbnRVbml0cyIsInVzZXJTcGFjZU9uVXNlIik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MSIsc1swXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MSIsc1sxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MiIsblswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MiIsblsxXSk7YnJlYWs7Y2FzZSJyYWRpYWwiOmNvbnN0IHI9dFs0XSxhPXRbNV0sbz10WzZdLGw9dFs3XTtpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmFkaWFsR3JhZGllbnQiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImdyYWRpZW50VW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLGFbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLGFbMV0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsbCk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeCIsclswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeSIsclsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmciIsbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUmFkaWFsQXhpYWwgdHlwZTogJHt0WzFdfWApfWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdG9wIik7ZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJvZmZzZXQiLHRbMF0pO2Uuc2V0QXR0cmlidXRlTlMobnVsbCwic3RvcC1jb2xvciIsdFsxXSk7aS5hcHBlbmQoZSl9dGhpcy5kZWZzLmFwcGVuZChpKTtyZXR1cm5gdXJsKCMke2V9KWA7Y2FzZSJNZXNoIjooMCxuLndhcm4pKCJVbmltcGxlbWVudGVkIHBhdHRlcm4gTWVzaCIpO3JldHVybiBudWxsO2Nhc2UiRHVtbXkiOnJldHVybiJob3RwaW5rIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBJUiB0eXBlOiAke3RbMF19YCl9fXNldERhc2godCxlKXt0aGlzLmN1cnJlbnQuZGFzaEFycmF5PXQ7dGhpcy5jdXJyZW50LmRhc2hQaGFzZT1lfWNvbnN0cnVjdFBhdGgodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtsZXQgaT1zLngscj1zLnksYT1bXSxvPTA7Zm9yKGNvbnN0IHMgb2YgdClzd2l0Y2goMHxzKXtjYXNlIG4uT1BTLnJlY3RhbmdsZTppPWVbbysrXTtyPWVbbysrXTtjb25zdCB0PWkrZVtvKytdLHM9citlW28rK107YS5wdXNoKCJNIixwZihpKSxwZihyKSwiTCIscGYodCkscGYociksIkwiLHBmKHQpLHBmKHMpLCJMIixwZihpKSxwZihzKSwiWiIpO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTSIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMubGluZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTCIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzppPWVbbys0XTtyPWVbbys1XTthLnB1c2goIkMiLHBmKGVbb10pLHBmKGVbbysxXSkscGYoZVtvKzJdKSxwZihlW28rM10pLHBmKGkpLHBmKHIpKTtvKz02O2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzI6YS5wdXNoKCJDIixwZihpKSxwZihyKSxwZihlW29dKSxwZihlW28rMV0pLHBmKGVbbysyXSkscGYoZVtvKzNdKSk7aT1lW28rMl07cj1lW28rM107bys9NDticmVhaztjYXNlIG4uT1BTLmN1cnZlVG8zOmk9ZVtvKzJdO3I9ZVtvKzNdO2EucHVzaCgiQyIscGYoZVtvXSkscGYoZVtvKzFdKSxwZihpKSxwZihyKSxwZihpKSxwZihyKSk7bys9NDticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDphLnB1c2goIloiKX1hPWEuam9pbigiICIpO2lmKHMucGF0aCYmdC5sZW5ndGg+MCYmdFswXSE9PW4uT1BTLnJlY3RhbmdsZSYmdFswXSE9PW4uT1BTLm1vdmVUbylhPXMucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIikrYTtlbHNle3MucGF0aD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnBhdGgiKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChzLnBhdGgpfXMucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixhKTtzLnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKTtzLmVsZW1lbnQ9cy5wYXRoO3Muc2V0Q3VycmVudFBvaW50KGkscil9ZW5kUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QucGF0aD1udWxsO2lmKCF0aGlzLnBlbmRpbmdDbGlwKXJldHVybjtpZighdC5lbGVtZW50KXt0aGlzLnBlbmRpbmdDbGlwPW51bGw7cmV0dXJufWNvbnN0IGU9ImNsaXBwYXRoIitwKysscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmNsaXBQYXRoIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsZSk7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7Y29uc3QgaT10LmVsZW1lbnQuY2xvbmVOb2RlKCEwKTsiZXZlbm9kZCI9PT10aGlzLnBlbmRpbmdDbGlwP2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwiZXZlbm9kZCIpOmkuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwibm9uemVybyIpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDtzLmFwcGVuZChpKTt0aGlzLmRlZnMuYXBwZW5kKHMpO2lmKHQuYWN0aXZlQ2xpcFVybCl7dC5jbGlwR3JvdXA9bnVsbDtmb3IoY29uc3QgdCBvZiB0aGlzLmV4dHJhU3RhY2spdC5jbGlwR3JvdXA9bnVsbDtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsaXAtcGF0aCIsdC5hY3RpdmVDbGlwVXJsKX10LmFjdGl2ZUNsaXBVcmw9YHVybCgjJHtlfSlgO3RoaXMudGdycD1udWxsfWNsaXAodCl7dGhpcy5wZW5kaW5nQ2xpcD10fWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQucGF0aCl7Y29uc3QgZT1gJHt0LnBhdGguZ2V0QXR0cmlidXRlTlMobnVsbCwiZCIpfVpgO3QucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixlKX19c2V0TGVhZGluZyh0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH1zZXRUZXh0UmlzZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH1zZXRUZXh0UmVuZGVyaW5nTW9kZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH1zZXRIU2NhbGUodCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9c2V0UmVuZGVyaW5nSW50ZW50KHQpe31zZXRGbGF0bmVzcyh0KXt9c2V0R1N0YXRlKHQpe2Zvcihjb25zdFtlLHNdb2YgdClzd2l0Y2goZSl7Y2FzZSJMVyI6dGhpcy5zZXRMaW5lV2lkdGgocyk7YnJlYWs7Y2FzZSJMQyI6dGhpcy5zZXRMaW5lQ2FwKHMpO2JyZWFrO2Nhc2UiTEoiOnRoaXMuc2V0TGluZUpvaW4ocyk7YnJlYWs7Y2FzZSJNTCI6dGhpcy5zZXRNaXRlckxpbWl0KHMpO2JyZWFrO2Nhc2UiRCI6dGhpcy5zZXREYXNoKHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJSSSI6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQocyk7YnJlYWs7Y2FzZSJGTCI6dGhpcy5zZXRGbGF0bmVzcyhzKTticmVhaztjYXNlIkZvbnQiOnRoaXMuc2V0Rm9udChzKTticmVhaztjYXNlIkNBIjp0aGlzLnNldFN0cm9rZUFscGhhKHMpO2JyZWFrO2Nhc2UiY2EiOnRoaXMuc2V0RmlsbEFscGhhKHMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBncmFwaGljIHN0YXRlIG9wZXJhdG9yICR7ZX1gKX19ZmlsbCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHQuZmlsbENvbG9yKTt0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5Iix0LmZpbGxBbHBoYSk7dGhpcy5lbmRQYXRoKCl9fXN0cm9rZSgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LmVsZW1lbnQpO3QuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO3RoaXMuZW5kUGF0aCgpfX1fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LGU9MSl7Y29uc3Qgcz10aGlzLmN1cnJlbnQ7bGV0IGk9cy5kYXNoQXJyYXk7MSE9PWUmJmkubGVuZ3RoPjAmJihpPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSp0fSkpKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZSIscy5zdHJva2VDb2xvcik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utb3BhY2l0eSIscy5zdHJva2VBbHBoYSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbWl0ZXJsaW1pdCIscGYocy5taXRlckxpbWl0KSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWNhcCIscy5saW5lQ2FwKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1saW5lam9pbiIscy5saW5lSm9pbik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLHBmKGUqcy5saW5lV2lkdGgpKyJweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hhcnJheSIsaS5tYXAocGYpLmpvaW4oIiAiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtZGFzaG9mZnNldCIscGYoZSpzLmRhc2hQaGFzZSkrInB4Iil9ZW9GaWxsKCl7dGhpcy5jdXJyZW50LmVsZW1lbnQ/LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt0aGlzLmZpbGwoKX1maWxsU3Ryb2tlKCl7dGhpcy5zdHJva2UoKTt0aGlzLmZpbGwoKX1lb0ZpbGxTdHJva2UoKXt0aGlzLmN1cnJlbnQuZWxlbWVudD8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwiZXZlbm9kZCIpO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLnN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZW9GaWxsU3Ryb2tlKCl9cGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCl7Y29uc3QgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxcHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsIjFweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5jdXJyZW50LmZpbGxDb2xvcik7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQodCl9cGFpbnRJbWFnZVhPYmplY3QodCl7Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsbi53YXJuKShgRGVwZW5kZW50IGltYWdlIHdpdGggb2JqZWN0IElEICR7dH0gaXMgbm90IHJlYWR5IHlldGApfXBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQsbj11KHQsdGhpcy5mb3JjZURhdGFTY2hlbWEsISFlKSxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLCIwIik7ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihpKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9cjt0aGlzLmNsaXAoIm5vbnplcm8iKTtjb25zdCBhPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6aW1hZ2UiKTthLnNldEF0dHJpYnV0ZU5TKGMsInhsaW5rOmhyZWYiLG4pO2Euc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTthLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1pKSk7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykrInB4Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKGkpKyJweCIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixgc2NhbGUoJHtwZigxL3MpfSAke3BmKC0xL2kpfSlgKTtlP2UuYXBwZW5kKGEpOnRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpfXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTtpZihlLmJpdG1hcCl7KDAsbi53YXJuKSgicGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBJbWFnZUJpdG1hcCBzdXBwb3J0IGlzIG5vdCBpbXBsZW1lbnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZGAgQVBJIHBhcmFtZXRlciBpcyBkaXNhYmxlZC4iKTtyZXR1cm59Y29uc3Qgcz10aGlzLmN1cnJlbnQsaT1lLndpZHRoLHI9ZS5oZWlnaHQsYT1zLmZpbGxDb2xvcjtzLm1hc2tJZD0ibWFzayIrZysrO2NvbnN0IG89dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIscy5tYXNrSWQpO2NvbnN0IGw9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixwZihpKSk7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKHIpKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGEpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwibWFzayIsYHVybCgjJHtzLm1hc2tJZH0pYCk7dGhpcy5kZWZzLmFwcGVuZChvKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChsKTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUsbyl9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7aWYoZSl7Y29uc3QgdD1lWzJdLWVbMF0scz1lWzNdLWVbMV0saT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGVbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYodCkpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihzKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9aTt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe31faW5pdGlhbGl6ZSh0KXtjb25zdCBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCkscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChzKTt0aGlzLmRlZnM9cztjb25zdCBpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixwbSh0LnRyYW5zZm9ybSkpO2UuYXBwZW5kKGkpO3RoaXMuc3ZnPWk7cmV0dXJuIGV9X2Vuc3VyZUNsaXBHcm91cCgpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXtjb25zdCB0PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybCk7dGhpcy5zdmcuYXBwZW5kKHQpO3RoaXMuY3VycmVudC5jbGlwR3JvdXA9dH1yZXR1cm4gdGhpcy5jdXJyZW50LmNsaXBHcm91cH1fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKXtpZighdGhpcy50Z3JwKXt0aGlzLnRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTt0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybD90aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKTp0aGlzLnN2Zy5hcHBlbmQodGhpcy50Z3JwKX1yZXR1cm4gdGhpcy50Z3JwfX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGTm9kZVN0cmVhbT12b2lkIDA7dmFyIGk9cygxKSxuPXMoMzIpO2NvbnN0IHI9cmVxdWlyZSgiZnMiKSxhPXJlcXVpcmUoImh0dHAiKSxvPXJlcXVpcmUoImh0dHBzIiksbD1yZXF1aXJlKCJ1cmwiKSxjPS9eZmlsZTpcL1wvXC9bYS16QS1aXTpcLy87ZS5QREZOb2RlU3RyZWFtPWNsYXNzIFBERk5vZGVTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLnVybD1mdW5jdGlvbiBwYXJzZVVybCh0KXtjb25zdCBlPWwucGFyc2UodCk7aWYoImZpbGU6Ij09PWUucHJvdG9jb2x8fGUuaG9zdClyZXR1cm4gZTtpZigvXlthLXpdOlsvXFxdL2kudGVzdCh0KSlyZXR1cm4gbC5wYXJzZShgZmlsZTovLy8ke3R9YCk7ZS5ob3N0fHwoZS5wcm90b2NvbD0iZmlsZToiKTtyZXR1cm4gZX0odC51cmwpO3RoaXMuaXNIdHRwPSJodHRwOiI9PT10aGlzLnVybC5wcm90b2NvbHx8Imh0dHBzOiI9PT10aGlzLnVybC5wcm90b2NvbDt0aGlzLmlzRnNVcmw9ImZpbGU6Ij09PXRoaXMudXJsLnByb3RvY29sO3RoaXMuaHR0cEhlYWRlcnM9dGhpcy5pc0h0dHAmJnQuaHR0cEhlYWRlcnN8fHt9O3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1nZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uX2xvYWRlZD8/MH1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTm9kZVN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPXRoaXMuaXNGc1VybD9uZXcgUERGTm9kZVN0cmVhbUZzRnVsbFJlYWRlcih0aGlzKTpuZXcgUERGTm9kZVN0cmVhbUZ1bGxSZWFkZXIodGhpcyk7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKHQsZSl7aWYoZTw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5pc0ZzVXJsP25ldyBQREZOb2RlU3RyZWFtRnNSYW5nZVJlYWRlcih0aGlzLHQsZSk6bmV3IFBERk5vZGVTdHJlYW1SYW5nZVJlYWRlcih0aGlzLHQsZSk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIEJhc2VGdWxsUmVhZGVye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3VybD10LnVybDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3QgZT10LnNvdXJjZTt0aGlzLl9jb250ZW50TGVuZ3RoPWUubGVuZ3RoO3RoaXMuX2xvYWRlZD0wO3RoaXMuX2ZpbGVuYW1lPW51bGw7dGhpcy5fZGlzYWJsZVJhbmdlPWUuZGlzYWJsZVJhbmdlfHwhMTt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW07dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2U7dGhpcy5fcmVhZGFibGVTdHJlYW09bnVsbDt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5PSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGFibGVTdHJlYW0/dGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0KTp0aGlzLl9lcnJvcih0KX1fZXJyb3IodCl7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9X3NldFJlYWRhYmxlU3RyZWFtKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtPXQ7dC5vbigicmVhZGFibGUiLCgoKT0+e3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlbmQiLCgoKT0+e3QuZGVzdHJveSgpO3RoaXMuX2RvbmU9ITA7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfSkpO3Qub24oImVycm9yIiwodD0+e3RoaXMuX2Vycm9yKHQpfSkpOyF0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5faXNSYW5nZVN1cHBvcnRlZCYmdGhpcy5fZXJyb3IobmV3IGkuQWJvcnRFeGNlcHRpb24oInN0cmVhbWluZyBpcyBkaXNhYmxlZCIpKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWNsYXNzIEJhc2VSYW5nZVJlYWRlcntjb25zdHJ1Y3Rvcih0KXt0aGlzLl91cmw9dC51cmw7dGhpcy5fZG9uZT0hMTt0aGlzLl9zdG9yZWRFcnJvcj1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2xvYWRlZD0wO3RoaXMuX3JlYWRhYmxlU3RyZWFtPW51bGw7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtjb25zdCBlPXQuc291cmNlO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW19Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fWNsYXNzIFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7Y29uc3QgaGFuZGxlUmVzcG9uc2U9ZT0+e2lmKDQwND09PWUuc3RhdHVzQ29kZSl7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtyZXR1cm59dGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKGUpO2NvbnN0IGdldFJlc3BvbnNlSGVhZGVyPXQ9PnRoaXMuX3JlYWRhYmxlU3RyZWFtLmhlYWRlcnNbdC50b0xvd2VyQ2FzZSgpXSx7YWxsb3dSYW5nZVJlcXVlc3RzOnMsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dC5pc0h0dHAscmFuZ2VDaHVua1NpemU6dGhpcy5fcmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOnRoaXMuX2Rpc2FibGVSYW5nZX0pO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9czt0aGlzLl9jb250ZW50TGVuZ3RoPXJ8fHRoaXMuX2NvbnRlbnRMZW5ndGg7dGhpcy5fZmlsZW5hbWU9KDAsbi5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcil9O3RoaXMuX3JlcXVlc3Q9bnVsbDsiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sP3RoaXMuX3JlcXVlc3Q9YS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCx0Lmh0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHQuaHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKTt0aGlzLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KX0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtUmFuZ2VSZWFkZXIgZXh0ZW5kcyBCYXNlUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3N1cGVyKHQpO3RoaXMuX2h0dHBIZWFkZXJzPXt9O2Zvcihjb25zdCBlIGluIHQuaHR0cEhlYWRlcnMpe2NvbnN0IHM9dC5odHRwSGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYodGhpcy5faHR0cEhlYWRlcnNbZV09cyl9dGhpcy5faHR0cEhlYWRlcnMuUmFuZ2U9YGJ5dGVzPSR7ZX0tJHtzLTF9YDtjb25zdCBoYW5kbGVSZXNwb25zZT10PT57aWYoNDA0IT09dC5zdGF0dXNDb2RlKXRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHQpO2Vsc2V7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10fX07dGhpcy5fcmVxdWVzdD1udWxsOyJodHRwOiI9PT10aGlzLl91cmwucHJvdG9jb2w/dGhpcy5fcmVxdWVzdD1hLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk7dGhpcy5fcmVxdWVzdC5vbigiZXJyb3IiLCh0PT57dGhpcy5fc3RvcmVkRXJyb3I9dH0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtRnNGdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7bGV0IGU9ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuX3VybC5wYXRoKTtjLnRlc3QodGhpcy5fdXJsLmhyZWYpJiYoZT1lLnJlcGxhY2UoL15cLy8sIiIpKTtyLmxzdGF0KGUsKCh0LHMpPT57aWYodCl7IkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oYE1pc3NpbmcgUERGICIke2V9Ii5gKSk7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9ZWxzZXt0aGlzLl9jb250ZW50TGVuZ3RoPXMuc2l6ZTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShyLmNyZWF0ZVJlYWRTdHJlYW0oZSkpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX19KSl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc1JhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXtzdXBlcih0KTtsZXQgaT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO2MudGVzdCh0aGlzLl91cmwuaHJlZikmJihpPWkucmVwbGFjZSgvXlwvLywiIikpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHIuY3JlYXRlUmVhZFN0cmVhbShpLHtzdGFydDplLGVuZDpzLTF9KSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3I9ZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LGUpe2lmKDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6IikpcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInK2UrJyIuJyk7cmV0dXJuIG5ldyBpLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihgVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgKCR7dH0pIHdoaWxlIHJldHJpZXZpbmcgUERGICIke2V9Ii5gLHQpfTtlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXI9ZnVuY3Rpb24gZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcih0KXtjb25zdCBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXtsZXQgdD0oMCxuLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYodC5pbmNsdWRlcygiJSIpKXRyeXt0PWRlY29kZVVSSUNvbXBvbmVudCh0KX1jYXRjaCh0KXt9aWYoKDAsci5pc1BkZkZpbGUpKHQpKXJldHVybiB0fXJldHVybiBudWxsfTtlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHtnZXRSZXNwb25zZUhlYWRlcjp0LGlzSHR0cDplLHJhbmdlQ2h1bmtTaXplOnMsZGlzYWJsZVJhbmdlOml9KXtjb25zdCBuPXthbGxvd1JhbmdlUmVxdWVzdHM6ITEsc3VnZ2VzdGVkTGVuZ3RoOnZvaWQgMH0scj1wYXJzZUludCh0KCJDb250ZW50LUxlbmd0aCIpLDEwKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm4gbjtuLnN1Z2dlc3RlZExlbmd0aD1yO2lmKHI8PTIqcylyZXR1cm4gbjtpZihpfHwhZSlyZXR1cm4gbjtpZigiYnl0ZXMiIT09dCgiQWNjZXB0LVJhbmdlcyIpKXJldHVybiBuO2lmKCJpZGVudGl0eSIhPT0odCgiQ29udGVudC1FbmNvZGluZyIpfHwiaWRlbnRpdHkiKSlyZXR1cm4gbjtuLmFsbG93UmFuZ2VSZXF1ZXN0cz0hMDtyZXR1cm4gbn07ZS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzPWZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VTdGF0dXModCl7cmV0dXJuIDIwMD09PXR8fDIwNj09PXR9O3ZhciBpPXMoMSksbj1zKDMzKSxyPXMoNil9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5nZXRGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXI9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKHQpe2xldCBlPSEwLHM9dG9QYXJhbVJlZ0V4cCgiZmlsZW5hbWVcXCoiLCJpIikuZXhlYyh0KTtpZihzKXtzPXNbMV07bGV0IHQ9cmZjMjYxNnVucXVvdGUocyk7dD11bmVzY2FwZSh0KTt0PXJmYzU5ODdkZWNvZGUodCk7dD1yZmMyMDQ3ZGVjb2RlKHQpO3JldHVybiBmaXh1cEVuY29kaW5nKHQpfXM9ZnVuY3Rpb24gcmZjMjIzMWdldHBhcmFtKHQpe2NvbnN0IGU9W107bGV0IHM7Y29uc3QgaT10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZVxcKigoPyEwXFxkKVxcZCspKFxcKj8pIiwiaWciKTtmb3IoO251bGwhPT0ocz1pLmV4ZWModCkpOyl7bGV0Wyx0LGksbl09czt0PXBhcnNlSW50KHQsMTApO2lmKHQgaW4gZSl7aWYoMD09PXQpYnJlYWt9ZWxzZSBlW3RdPVtpLG5dfWNvbnN0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aCYmdCBpbiBlOysrdCl7bGV0W3MsaV09ZVt0XTtpPXJmYzI2MTZ1bnF1b3RlKGkpO2lmKHMpe2k9dW5lc2NhcGUoaSk7MD09PXQmJihpPXJmYzU5ODdkZWNvZGUoaSkpfW4ucHVzaChpKX1yZXR1cm4gbi5qb2luKCIiKX0odCk7aWYocyl7cmV0dXJuIGZpeHVwRW5jb2RpbmcocmZjMjA0N2RlY29kZShzKSl9cz10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZSIsImkiKS5leGVjKHQpO2lmKHMpe3M9c1sxXTtsZXQgdD1yZmMyNjE2dW5xdW90ZShzKTt0PXJmYzIwNDdkZWNvZGUodCk7cmV0dXJuIGZpeHVwRW5jb2RpbmcodCl9ZnVuY3Rpb24gdG9QYXJhbVJlZ0V4cCh0LGUpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefDspXFxzKiIrdCsnXFxzKj1cXHMqKFteIjtcXHNdW147XFxzXSp8Iig/OlteIlxcXFxdfFxcXFwiPykrIj8pJyxlKX1mdW5jdGlvbiB0ZXh0ZGVjb2RlKHQscyl7aWYodCl7aWYoIS9eW1x4MDAtXHhGRl0rJC8udGVzdChzKSlyZXR1cm4gczt0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxyPSgwLGkuc3RyaW5nVG9CeXRlcykocyk7cz1uLmRlY29kZShyKTtlPSExfWNhdGNoKHQpe319cmV0dXJuIHN9ZnVuY3Rpb24gZml4dXBFbmNvZGluZyh0KXtpZihlJiYvW1x4ODAtXHhmZl0vLnRlc3QodCkpe3Q9dGV4dGRlY29kZSgidXRmLTgiLHQpO2UmJih0PXRleHRkZWNvZGUoImlzby04ODU5LTEiLHQpKX1yZXR1cm4gdH1mdW5jdGlvbiByZmMyNjE2dW5xdW90ZSh0KXtpZih0LnN0YXJ0c1dpdGgoJyInKSl7Y29uc3QgZT10LnNsaWNlKDEpLnNwbGl0KCdcXCInKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgcz1lW3RdLmluZGV4T2YoJyInKTtpZigtMSE9PXMpe2VbdF09ZVt0XS5zbGljZSgwLHMpO2UubGVuZ3RoPXQrMX1lW3RdPWVbdF0ucmVwbGFjZSgvXFwoLikvZywiJDEiKX10PWUuam9pbignIicpfXJldHVybiB0fWZ1bmN0aW9uIHJmYzU5ODdkZWNvZGUodCl7Y29uc3QgZT10LmluZGV4T2YoIiciKTtpZigtMT09PWUpcmV0dXJuIHQ7cmV0dXJuIHRleHRkZWNvZGUodC5zbGljZSgwLGUpLHQuc2xpY2UoZSsxKS5yZXBsYWNlKC9eW14nXSonLywiIikpfWZ1bmN0aW9uIHJmYzIwNDdkZWNvZGUodCl7cmV0dXJuIXQuc3RhcnRzV2l0aCgiPT8iKXx8L1tceDAwLVx4MTlceDgwLVx4ZmZdLy50ZXN0KHQpP3Q6dC5yZXBsYWNlKC89XD8oW1x3LV0qKVw/KFtRcUJiXSlcPygoPzpbXj9dfFw/KD8hPSkpKilcPz0vZywoZnVuY3Rpb24odCxlLHMsaSl7aWYoInEiPT09c3x8IlEiPT09cylyZXR1cm4gdGV4dGRlY29kZShlLGk9KGk9aS5yZXBsYWNlKC9fL2csIiAiKSkucmVwbGFjZSgvPShbMC05YS1mQS1GXXsyfSkvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSkpO3RyeXtpPWF0b2IoaSl9Y2F0Y2godCl7fXJldHVybiB0ZXh0ZGVjb2RlKGUsaSl9KSl9cmV0dXJuIiJ9O3ZhciBpPXMoMSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7Y2xhc3MgTmV0d29ya01hbmFnZXJ7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLnVybD10O3RoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QodCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmZS5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5nZXRYaHI9ZS5nZXRYaHJ8fGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2dldFhocigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O3RoaXMuY3VyclhocklkPTA7dGhpcy5wZW5kaW5nUmVxdWVzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXF1ZXN0UmFuZ2UodCxlLHMpe2NvbnN0IGk9e2JlZ2luOnQsZW5kOmV9O2Zvcihjb25zdCB0IGluIHMpaVt0XT1zW3RdO3JldHVybiB0aGlzLnJlcXVlc3QoaSl9cmVxdWVzdEZ1bGwodCl7cmV0dXJuIHRoaXMucmVxdWVzdCh0KX1yZXF1ZXN0KHQpe2NvbnN0IGU9dGhpcy5nZXRYaHIoKSxzPXRoaXMuY3VyclhocklkKyssaT10aGlzLnBlbmRpbmdSZXF1ZXN0c1tzXT17eGhyOmV9O2Uub3BlbigiR0VUIix0aGlzLnVybCk7ZS53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7Zm9yKGNvbnN0IHQgaW4gdGhpcy5odHRwSGVhZGVycyl7Y29uc3Qgcz10aGlzLmh0dHBIZWFkZXJzW3RdO3ZvaWQgMCE9PXMmJmUuc2V0UmVxdWVzdEhlYWRlcih0LHMpfWlmKHRoaXMuaXNIdHRwJiYiYmVnaW4iaW4gdCYmImVuZCJpbiB0KXtlLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIixgYnl0ZXM9JHt0LmJlZ2lufS0ke3QuZW5kLTF9YCk7aS5leHBlY3RlZFN0YXR1cz0yMDZ9ZWxzZSBpLmV4cGVjdGVkU3RhdHVzPTIwMDtlLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Qub25FcnJvciYmKGUub25lcnJvcj1mdW5jdGlvbihzKXt0Lm9uRXJyb3IoZS5zdGF0dXMpfSk7ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyxzKTtlLm9ucHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcyxzKTtpLm9uSGVhZGVyc1JlY2VpdmVkPXQub25IZWFkZXJzUmVjZWl2ZWQ7aS5vbkRvbmU9dC5vbkRvbmU7aS5vbkVycm9yPXQub25FcnJvcjtpLm9uUHJvZ3Jlc3M9dC5vblByb2dyZXNzO2Uuc2VuZChudWxsKTtyZXR1cm4gc31vblByb2dyZXNzKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtzJiZzLm9uUHJvZ3Jlc3M/LihlKX1vblN0YXRlQ2hhbmdlKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtpZighcylyZXR1cm47Y29uc3Qgbj1zLnhocjtpZihuLnJlYWR5U3RhdGU+PTImJnMub25IZWFkZXJzUmVjZWl2ZWQpe3Mub25IZWFkZXJzUmVjZWl2ZWQoKTtkZWxldGUgcy5vbkhlYWRlcnNSZWNlaXZlZH1pZig0IT09bi5yZWFkeVN0YXRlKXJldHVybjtpZighKHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpKXJldHVybjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07aWYoMD09PW4uc3RhdHVzJiZ0aGlzLmlzSHR0cCl7cy5vbkVycm9yPy4obi5zdGF0dXMpO3JldHVybn1jb25zdCByPW4uc3RhdHVzfHwyMDA7aWYoISgyMDA9PT1yJiYyMDY9PT1zLmV4cGVjdGVkU3RhdHVzKSYmciE9PXMuZXhwZWN0ZWRTdGF0dXMpe3Mub25FcnJvcj8uKG4uc3RhdHVzKTtyZXR1cm59Y29uc3QgYT1mdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcih0KXtjb25zdCBlPXQucmVzcG9uc2U7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6KDAsaS5zdHJpbmdUb0J5dGVzKShlKS5idWZmZXJ9KG4pO2lmKDIwNj09PXIpe2NvbnN0IHQ9bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1SYW5nZSIpLGU9L2J5dGVzIChcZCspLShcZCspXC8oXGQrKS8uZXhlYyh0KTtzLm9uRG9uZSh7YmVnaW46cGFyc2VJbnQoZVsxXSwxMCksY2h1bms6YX0pfWVsc2UgYT9zLm9uRG9uZSh7YmVnaW46MCxjaHVuazphfSk6cy5vbkVycm9yPy4obi5zdGF0dXMpfWdldFJlcXVlc3RYaHIodCl7cmV0dXJuIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocn1pc1BlbmRpbmdSZXF1ZXN0KHQpe3JldHVybiB0IGluIHRoaXMucGVuZGluZ1JlcXVlc3RzfWFib3J0UmVxdWVzdCh0KXtjb25zdCBlPXRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07ZS5hYm9ydCgpfX1lLlBERk5ldHdvcmtTdHJlYW09Y2xhc3MgUERGTmV0d29ya1N0cmVhbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9zb3VyY2U9dDt0aGlzLl9tYW5hZ2VyPW5ldyBOZXR3b3JrTWFuYWdlcih0LnVybCx7aHR0cEhlYWRlcnM6dC5odHRwSGVhZGVycyx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9KTt0aGlzLl9yYW5nZUNodW5rU2l6ZT10LnJhbmdlQ2h1bmtTaXplO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zcGxpY2UoZSwxKX1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0aGlzLl9zb3VyY2UpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2NvbnN0IHM9bmV3IFBERk5ldHdvcmtTdHJlYW1SYW5nZVJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0LGUpO3Mub25DbG9zZWQ9dGhpcy5fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQuYmluZCh0aGlzKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGTmV0d29ya1N0cmVhbUZ1bGxSZXF1ZXN0UmVhZGVye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IHM9e29uSGVhZGVyc1JlY2VpdmVkOnRoaXMuX29uSGVhZGVyc1JlY2VpdmVkLmJpbmQodGhpcyksb25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ZS51cmw7dGhpcy5fZnVsbFJlcXVlc3RJZD10LnJlcXVlc3RGdWxsKHMpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9kaXNhYmxlUmFuZ2U9ZS5kaXNhYmxlUmFuZ2V8fCExO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5sZW5ndGg7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2NhY2hlZENodW5rcz1bXTt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLl9maWxlbmFtZT1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsfV9vbkhlYWRlcnNSZWNlaXZlZCgpe2NvbnN0IHQ9dGhpcy5fZnVsbFJlcXVlc3RJZCxlPXRoaXMuX21hbmFnZXIuZ2V0UmVxdWVzdFhocih0KSxnZXRSZXNwb25zZUhlYWRlcj10PT5lLmdldFJlc3BvbnNlSGVhZGVyKHQpLHthbGxvd1JhbmdlUmVxdWVzdHM6cyxzdWdnZXN0ZWRMZW5ndGg6aX09KDAsbi52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOmdldFJlc3BvbnNlSGVhZGVyLGlzSHR0cDp0aGlzLl9tYW5hZ2VyLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7cyYmKHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITApO3RoaXMuX2NvbnRlbnRMZW5ndGg9aXx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0KTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlc29sdmUoKX1fb25Eb25lKHQpe2lmKHQpaWYodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjApe3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dC5jaHVuayxkb25lOiExfSl9ZWxzZSB0aGlzLl9jYWNoZWRDaHVua3MucHVzaCh0LmNodW5rKTt0aGlzLl9kb25lPSEwO2lmKCEodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfX1fb25FcnJvcih0KXt0aGlzLl9zdG9yZWRFcnJvcj0oMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQsdGhpcy5fdXJsKTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZWplY3QodGhpcy5fc3RvcmVkRXJyb3IpO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX2NhY2hlZENodW5rcy5sZW5ndGg9MH1fb25Qcm9ncmVzcyh0KXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQubGVuZ3RoQ29tcHV0YWJsZT90LnRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucHJvbWlzZX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fY2FjaGVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7dGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCk7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19Y2xhc3MgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscyl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IGk9e29uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPXQudXJsO3RoaXMuX3JlcXVlc3RJZD10LnJlcXVlc3RSYW5nZShlLHMsaSk7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLm9uQ2xvc2VkPW51bGx9X2Nsb3NlKCl7dGhpcy5vbkNsb3NlZD8uKHRoaXMpfV9vbkRvbmUodCl7Y29uc3QgZT10LmNodW5rO2lmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wKXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOmUsZG9uZTohMX0pfWVsc2UgdGhpcy5fcXVldWVkQ2h1bms9ZTt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9jbG9zZSgpfV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsfV9vblByb2dyZXNzKHQpe3RoaXMuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHRoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWR9KX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYobnVsbCE9PXRoaXMuX3F1ZXVlZENodW5rKXtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpO3RoaXMuX2Nsb3NlKCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkZldGNoU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7ZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsZSxzKXtyZXR1cm57bWV0aG9kOiJHRVQiLGhlYWRlcnM6dCxzaWduYWw6cy5zaWduYWwsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6ZT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIixyZWRpcmVjdDoiZm9sbG93In19ZnVuY3Rpb24gY3JlYXRlSGVhZGVycyh0KXtjb25zdCBlPW5ldyBIZWFkZXJzO2Zvcihjb25zdCBzIGluIHQpe2NvbnN0IGk9dFtzXTt2b2lkIDAhPT1pJiZlLmFwcGVuZChzLGkpfXJldHVybiBlfWUuUERGRmV0Y2hTdHJlYW09Y2xhc3MgUERGRmV0Y2hTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLmlzSHR0cD0vXmh0dHBzPzovaS50ZXN0KHQudXJsKTt0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZ0Lmh0dHBIZWFkZXJzfHx7fTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkZldGNoU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IFBERkZldGNoU3RyZWFtUmVhZGVyKHRoaXMpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2lmKGU8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBQREZGZXRjaFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGRmV0Y2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fc3RyZWFtPXQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbG9hZGVkPTA7dGhpcy5fZmlsZW5hbWU9bnVsbDtjb25zdCBlPXQuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hZS5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWUuZGlzYWJsZVJhbmdlO3RoaXMuX2hlYWRlcnM9Y3JlYXRlSGVhZGVycyh0aGlzLl9zdHJlYW0uaHR0cEhlYWRlcnMpO2NvbnN0IHM9ZS51cmw7ZmV0Y2gocyxjcmVhdGVGZXRjaE9wdGlvbnModGhpcy5faGVhZGVycyx0aGlzLl93aXRoQ3JlZGVudGlhbHMsdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbigodD0+e2lmKCEoMCxuLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSl0aHJvdygwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMscyk7dGhpcy5fcmVhZGVyPXQuYm9keS5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCk7Y29uc3QgZ2V0UmVzcG9uc2VIZWFkZXI9ZT0+dC5oZWFkZXJzLmdldChlKSx7YWxsb3dSYW5nZVJlcXVlc3RzOmUsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dGhpcy5fc3RyZWFtLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9cnx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTshdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuY2FuY2VsKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJTdHJlYW1pbmcgaXMgZGlzYWJsZWQuIikpfSkpLmNhdGNoKHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGVyPy5jYW5jZWwodCk7dGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCl9fWNsYXNzIFBERkZldGNoU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuX3N0cmVhbT10O3RoaXMuX3JlYWRlcj1udWxsO3RoaXMuX2xvYWRlZD0wO2NvbnN0IHI9dC5zb3VyY2U7dGhpcy5fd2l0aENyZWRlbnRpYWxzPXIud2l0aENyZWRlbnRpYWxzfHwhMTt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFyLmRpc2FibGVTdHJlYW07dGhpcy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5faGVhZGVycz1jcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7dGhpcy5faGVhZGVycy5hcHBlbmQoIlJhbmdlIixgYnl0ZXM9JHtlfS0ke3MtMX1gKTtjb25zdCBhPXIudXJsO2ZldGNoKGEsY3JlYXRlRmV0Y2hPcHRpb25zKHRoaXMuX2hlYWRlcnMsdGhpcy5fd2l0aENyZWRlbnRpYWxzLHRoaXMuX2Fib3J0Q29udHJvbGxlcikpLnRoZW4oKHQ9PntpZighKDAsbi52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLGEpO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTt0aGlzLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpfSkpLmNhdGNoKHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRlcj8uY2FuY2VsKHQpO3RoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX19XSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KXt2YXIgZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gZS5leHBvcnRzO3ZhciBzPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XT17ZXhwb3J0czp7fX07X193ZWJwYWNrX21vZHVsZXNfX1t0XShzLHMuZXhwb3J0cyxfX3dfcGRmanNfcmVxdWlyZV9fKTtyZXR1cm4gcy5leHBvcnRzfXZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9OygoKT0+e3ZhciB0PV9fd2VicGFja19leHBvcnRzX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkFubm90YXRpb25FZGl0b3JMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbkVkaXRvclR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25MYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQW5ub3RhdGlvbkxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uTW9kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbk1vZGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNNYXBDb21wcmVzc2lvblR5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkNNYXBDb21wcmVzc2lvblR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkdsb2JhbFdvcmtlck9wdGlvbnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkdsb2JhbFdvcmtlck9wdGlvbnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkludmFsaWRQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkludmFsaWRQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk1pc3NpbmdQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLk1pc3NpbmdQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk9QUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuT1BTfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZEYXRhUmFuZ2VUcmFuc3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLlBERkRhdGFSYW5nZVRyYW5zcG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGRGF0ZVN0cmluZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUERGRGF0ZVN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGV29ya2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5QREZXb3JrZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBhc3N3b3JkUmVzcG9uc2VzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5QYXNzd29yZFJlc3BvbnNlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGVybWlzc2lvbkZsYWciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlBlcm1pc3Npb25GbGFnfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQaXhlbHNQZXJJbmNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5QaXhlbHNQZXJJbmNofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiU1ZHR3JhcGhpY3MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoLlNWR0dyYXBoaWNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVTlNVUFBPUlRFRF9GRUFUVVJFUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVU5TVVBQT1JURURfRkVBVFVSRVN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVdGlsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5VdGlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJWZXJib3NpdHlMZXZlbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVmVyYm9zaXR5TGV2ZWx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlhmYUxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5YZmFMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYnVpbGQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJ1aWxkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldERvY3VtZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXREb2N1bWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0RmlsZW5hbWVGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFBkZkZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRYZmFQYWdlVmlld3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmdldFhmYVBhZ2VWaWV3cG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNQZGZGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc1BkZkZpbGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRTY3JpcHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmxvYWRTY3JpcHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlbmRlclRleHRMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVuZGVyVGV4dExheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFkb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLnNoYWRvd319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMudmVyc2lvbn19KTt2YXIgZT1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLHM9X193X3BkZmpzX3JlcXVpcmVfXygyKSxpPV9fd19wZGZqc19yZXF1aXJlX18oNiksbj1fX3dfcGRmanNfcmVxdWlyZV9fKDIxKSxyPV9fd19wZGZqc19yZXF1aXJlX18oNSksYT1fX3dfcGRmanNfcmVxdWlyZV9fKDI2KSxvPV9fd19wZGZqc19yZXF1aXJlX18oMTQpLGw9X193X3BkZmpzX3JlcXVpcmVfXygxMiksYz1fX3dfcGRmanNfcmVxdWlyZV9fKDI5KSxoPV9fd19wZGZqc19yZXF1aXJlX18oMzApLGQ9X193X3BkZmpzX3JlcXVpcmVfXygyOCk7aWYobC5pc05vZGVKUyl7Y29uc3R7UERGTm9kZVN0cmVhbTp0fT1fX3dfcGRmanNfcmVxdWlyZV9fKDMxKTsoMCxzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5KSgoZT0+bmV3IHQoZSkpKX1lbHNle2NvbnN0e1BERk5ldHdvcmtTdHJlYW06dH09X193X3BkZmpzX3JlcXVpcmVfXygzNCkse1BERkZldGNoU3RyZWFtOmV9PV9fd19wZGZqc19yZXF1aXJlX18oMzUpOygwLHMuc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkpKChzPT4oMCxpLmlzVmFsaWRGZXRjaFVybCkocy51cmwpP25ldyBlKHMpOm5ldyB0KHMpKSl9fSkoKTtyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfX30pKCkpKTs=",A2e=`data:text/javascript;base64,${B2e}`,_2e=`data:text/javascript;base64,${Q2e}`,$2e=He({name:"VueOfficePdf",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"}},emits:["rendered","error"],setup(n,{emit:e}){let t=null;const i=Ne([]),a=Ne(0);function l(){return l2e(A2e).then(()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=_2e})}function o(){return window.pdfjsLib?Promise.resolve():l()}function r(){if(!n.src){a.value=0;return}window.pdfjsLib.getDocument({url:oz(n.src),cMapUrl:`${n.staticFileUrl.endsWith("/")?n.staticFileUrl:n.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0}).promise.then(b=>{t=b,a.value=t.numPages,f(1)}).catch(b=>{e("error",b)})}function f(v){t.getPage(v).then(b=>{const Z=b.getViewport({scale:window.devicePixelRatio}),p=i.value[v-1];p.width=Z.width,p.height=Z.height,Z.width>document.documentElement.clientWidth?p.style.width="100%":p.style.width=Math.floor(Z.width)+"px";const y=p.getContext("2d");b.render({canvasContext:y,viewport:Z}).promise.then(()=>{a.value>v?f(v+1):e("rendered")}).catch(m=>{e("error",m)})}).catch(b=>{e("error",b)})}return Kt(()=>{n.src&&o().then(r)}),rt(()=>n.src,()=>{o().then(r)}),{rootRef:i,numPages:a}}}),q2e={class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"}},eve={key:0,class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function tve(n,e,t,i,a,l){return kl(),oc("div",q2e,[n.numPages?(kl(),oc("div",eve,[(kl(!0),oc(ln,null,r4(n.numPages,o=>(kl(),oc("canvas",{ref_for:!0,ref:"rootRef",key:o,style:{width:"100%"}}))),128))])):xb("",!0)],512)}const Gm=qu($2e,[["render",tve]]);Gm.install=function(n){n.component(Gm.name,Gm)};const nve={__name:"PdfDemo",setup(n){return(e,t)=>(kl(),Lo(eN,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf"},{default:pa(i=>[D(mi(Gm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},ive={__name:"App",setup(n){const e=Ne("DOCX");return Kt(()=>{}),(t,i)=>{const a=as("a-tab-pane"),l=as("a-tabs");return kl(),Lo(l,{activeKey:e.value,"onUpdate:activeKey":i[0]||(i[0]=o=>e.value=o)},{default:pa(()=>[D(a,{key:"DOCX",tab:"docx文件预览"},{default:pa(()=>[D(Vpe)]),_:1}),D(a,{key:"EXCEL",tab:"excel文件预览"},{default:pa(()=>[D(P2e)]),_:1}),D(a,{key:"PDF",tab:"pdf文件预览"},{default:pa(()=>[D(nve)]),_:1})]),_:1},8,["activeKey"])}}},lve=qu(ive,[["__scopeId","data-v-e7b8d128"]]),ave=xR(lve);ave.use(dpe).mount("#app")});export default rve(); +}`;var Cn=lI(function(){return ai(ze,tn+"return "+Xt).apply(t,Qe)});if(Cn.source=Xt,Iy(Cn))throw Cn;return Cn}function HO(z){return ri(z).toLowerCase()}function PO(z){return ri(z).toUpperCase()}function QO(z,j,A){if(z=ri(z),z&&(A||j===t))return fN(z);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=cr(j),ze=bN(fe,Ye),Qe=mN(fe,Ye)+1;return Bo(fe,ze,Qe).join("")}function BO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.slice(0,yN(z)+1);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=mN(fe,cr(j))+1;return Bo(fe,0,Ye).join("")}function AO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.replace(ot,"");if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=bN(fe,cr(j));return Bo(fe,Ye).join("")}function _O(z,j){var A=w,fe=C;if(Vi(j)){var Ye="separator"in j?j.separator:Ye;A="length"in j?xn(j.length):A,fe="omission"in j?Ya(j.omission):fe}z=ri(z);var ze=z.length;if(Sc(z)){var Qe=cr(z);ze=Qe.length}if(A>=ze)return z;var $e=A-zc(fe);if($e<1)return fe;var at=Qe?Bo(Qe,0,$e).join(""):z.slice(0,$e);if(Ye===t)return at+fe;if(Qe&&($e+=at.length-$e),Yy(Ye)){if(z.slice($e).search(Ye)){var vt,Wt=at;for(Ye.global||(Ye=jp(Ye.source,ri(Pt.exec(Ye))+"g")),Ye.lastIndex=0;vt=Ye.exec(Wt);)var Xt=vt.index;at=at.slice(0,Xt===t?$e:Xt)}}else if(z.indexOf(Ya(Ye),$e)!=$e){var Jt=at.lastIndexOf(Ye);Jt>-1&&(at=at.slice(0,Jt))}return at+fe}function $O(z){return z=ri(z),z&&Ue.test(z)?z.replace(Ce,wz):z}var qO=Uc(function(z,j,A){return z+(A?" ":"")+j.toUpperCase()}),Vy=aM("toUpperCase");function iI(z,j,A){return z=ri(z),j=A?t:j,j===t?Xz(z)?Lz(z):Xi(z):z.match(j)||[]}var lI=kn(function(z,j){try{return yi(z,t,j)}catch(A){return Iy(A)?A:new Mn(A)}}),ej=so(function(z,j){return Zi(j,function(A){A=zr(A),ro(z,A,Ny(z[A],z))}),z});function tj(z){var j=z==null?0:z.length,A=mn();return z=j?Ee(z,function(fe){if(typeof fe[1]!="function")throw new Ea(o);return[A(fe[0]),fe[1]]}):[],kn(function(fe){for(var Ye=-1;++YeY)return[];var A=U,fe=Cl(z,U);j=mn(j),z-=U;for(var Ye=Uo(fe,j);++A0||j<0)?new En(A):(z<0?A=A.takeRight(-z):z&&(A=A.drop(z)),j!==t&&(j=xn(j),A=j<0?A.dropRight(-j):A.take(j-z)),A)},En.prototype.takeRightWhile=function(z){return this.reverse().takeWhile(z).reverse()},En.prototype.toArray=function(){return this.take(U)},Cr(En.prototype,function(z,j){var A=/^(?:filter|find|map|reject)|While$/.test(j),fe=/^(?:head|last)$/.test(j),Ye=Le[fe?"take"+(j=="last"?"Right":""):j],ze=fe||/^find/.test(j);Ye&&(Le.prototype[j]=function(){var Qe=this.__wrapped__,$e=fe?[1]:arguments,at=Qe instanceof En,vt=$e[0],Wt=at||Vn(Qe),Xt=function(On){var Bn=Ye.apply(Le,st([On],$e));return fe&&Jt?Bn[0]:Bn};Wt&&A&&typeof vt=="function"&&vt.length!=1&&(at=Wt=!1);var Jt=this.__chain__,tn=!!this.__actions__.length,yn=ze&&!Jt,Cn=at&&!tn;if(!ze&&Wt){Qe=Cn?Qe:new En(this);var Zn=z.apply(Qe,$e);return Zn.__actions__.push({func:Tf,args:[Xt],thisArg:t}),new Ka(Zn,Jt)}return yn&&Cn?z.apply(this,$e):(Zn=this.thru(Xt),yn?fe?Zn.value()[0]:Zn.value():Zn)})}),Zi(["pop","push","shift","sort","splice","unshift"],function(z){var j=lf[z],A=/^(?:push|sort|unshift)$/.test(z)?"tap":"thru",fe=/^(?:pop|shift)$/.test(z);Le.prototype[z]=function(){var Ye=arguments;if(fe&&!this.__chain__){var ze=this.value();return j.apply(Vn(ze)?ze:[],Ye)}return this[A](function(Qe){return j.apply(Vn(Qe)?Qe:[],Ye)})}}),Cr(En.prototype,function(z,j){var A=Le[j];if(A){var fe=A.name+"";ci.call(Dc,fe)||(Dc[fe]=[]),Dc[fe].push({name:j,func:A})}}),Dc[If(t,G).name]=[{name:"wrapper",func:t}],En.prototype.clone=$z,En.prototype.reverse=qz,En.prototype.value=ek,Le.prototype.at=VJ,Le.prototype.chain=LJ,Le.prototype.commit=RJ,Le.prototype.next=TJ,Le.prototype.plant=CJ,Le.prototype.reverse=SJ,Le.prototype.toJSON=Le.prototype.valueOf=Le.prototype.value=zJ,Le.prototype.first=Le.prototype.head,id&&(Le.prototype[id]=xJ),Le},kc=Rz();sn?((sn.exports=kc)._=kc,Jn._=kc):Lt._=kc}).call(vn)})(C2e,Th);const S2e=Th;function bz(n){n=n.replace("#","");for(var e=n.match(/../g),t=0;t<3;t++)e[t]=parseInt(e[t],16);return e}function mz(n,e,t){for(var i=[n.toString(16),e.toString(16),t.toString(16)],a=0;a<3;a++)i[a].length==1&&(i[a]="0"+i[a]);return"#"+i.join("")}function z2e(n,e){for(var t=bz(n),i=0;i<3;i++)t[i]=Math.floor(t[i]*(1-e));return mz(t[0],t[1],t[2])}function k2e(n,e){for(var t=bz(n),i=0;i<3;i++)t[i]=Math.floor((255-t[i])*e+t[i]);return mz(t[0],t[1],t[2])}const o2=["#FFFFFF","#000000","#BFBFBF","#323232","#4472C4","#ED7D31","#A5A5A5","#FFC000","#5B9BD5","#71AD47"];let F2e=80;function RL(n,e={}){return J2e(dz(n),e)}function J2e(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t.arrayBuffer())}function D2e(n){try{return new pW.Workbook().xlsx.load(n)}catch(e){return console.warn(e),Promise.reject(e)}}function O2e(n,e,t){for(let i=0;i<(n.columns||[]).length;i++)e.cols[i.toString()]={},n.columns[i].width?e.cols[i.toString()].width=n.columns[i].width*6:e.cols[i.toString()].width=F2e;e.cols.len=Math.max(Object.keys(e.cols).length,t.minColLength||0)}function j2e(n){if(typeof n.value=="number")return n.value+"";let e="";if(n.value&&n.value.result)e=n.value.result;else if(n.value&&n.value.richText)for(let t in n.value.richText)e+=n.value.richText[t].text;else e=n.value;return e}function s2(n){if(typeof n=="object")return"#000000";if(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(n))return n.startsWith("#")?n:"#"+n;n=n.trim().toLowerCase();let e={};try{let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e.r=parseInt(t[2],16),e.g=parseInt(t[3],16),e.b=parseInt(t[4],16),e.a=parseInt(t[1],16)/255,rn(`rgba(${e.r}, ${e.g}, ${e.b}, ${e.a})`).toHexString()}catch(t){console.warn(t)}}function c2(n,e){return n>9?"#C7C9CC":typeof e>"u"?o2[n]:e>0?k2e(o2[n],e):z2e(o2[n],Math.abs(e))}function U2e(n){n.style=Th.cloneDeep(n.style);let e=null;n.style.fill&&n.style.fill.fgColor&&(n.style.fill.fgColor.argb?e=s2(n.style.fill.fgColor.argb):n.style.fill.fgColor.hasOwnProperty("theme")?e=c2(n.style.fill.fgColor.theme,n.style.fill.fgColor.tint):e="#C7C9CC"),e&&(n.style.bgcolor=e);let t=null;if(n.style.font&&n.style.font.color&&(n.style.font.color.argb?t=s2(n.style.font.color.argb):n.style.font.color.hasOwnProperty("theme")?t=c2(n.style.font.color.theme,n.style.font.color.tint):t="#000000"),t&&(n.style.color=t),n.style.alignment&&(n.style.alignment.horizontal&&(n.style.align=n.style.alignment.horizontal),n.style.alignment.vertical&&(n.style.valign=n.style.alignment.vertical)),n.style.alignment&&n.style.alignment.wrapText&&(n.style.textwrap=!0),n.style.border){let i={};Object.keys(n.style.border).forEach(a=>{let l=n.style.border[a],o="#000000";typeof l.color=="string"?o=l.color:l.color&&(l.color.argb?o=s2(l.color.argb):l.color.hasOwnProperty("theme")&&(o=c2(l.color.theme,l.color.tint))),i[a]=[l.style||"thin",o]}),n.style.border2={...n.style.border},n.style.border=i}return n.style}function E2e(n,e){let t=[];return n.eachSheet(i=>{let a={name:i.name,styles:[],rows:{},cols:{},merges:[],media:[]},l=[];for(let o in i._merges){a.merges.push(i._merges[o].shortRange);let r={};r.startAddress=i._merges[o].tl,r.endAddress=i._merges[o].br,r.YRange=i._merges[o].model.bottom-i._merges[o].model.top,r.XRange=i._merges[o].model.right-i._merges[o].model.left,l.push(r)}O2e(i,a,e),(i._rows||[]).forEach((o,r)=>{a.rows[r]={cells:{}},o.height&&(a.rows[r].height=o.height),(o._cells||[]).forEach((f,v)=>{a.rows[r].cells[v]={};let b=S2e.find(l,function(Z){return Z.startAddress==f._address});b&&f.master.address!=b.startAddress||(b&&(a.rows[r].cells[v].merge=[b.YRange,b.XRange]),a.rows[r].cells[v].text=j2e(f),a.styles.push(U2e(f)),a.rows[r].cells[v].style=a.styles.length-1)})}),a._media&&(a.media=a._media),t.push(a)}),{workbookData:t,workbookSource:n,medias:n.media||[]}}let Zm=[];function Rb(n,e,t,i){t&&t._media.length&&t._media.forEach(a=>{let{imageId:l,range:o,type:r}=a;if(r==="image"){let f=K2e(t,o,i);H2e(n,l,e[l],f)}})}let vm=60,Wm=25,u2=80,d2=24,Ur=window.devicePixelRatio;function K2e(n,e,t){var u,s,h,c,W,M,I,w,C,x,R,g,S,L;let{tl:i={},br:a={}}=e,{nativeCol:l,nativeColOff:o,nativeRow:r,nativeRowOff:f}=i,v=vm,b=Wm;for(let V=0;V{let l=0,o=0,r=a.width,f=a.height,v=i.x,b=i.y,Z=i.width,p=i.height,y=Z/r,X=p/f;if(v{})}function P2e(n,e){return new Promise((t,i)=>{if(Zm[n])return t(Zm[n]);const{buffer:a,extension:l}=e.buffer;let o=new Blob([a],{type:"image/"+l}),r=URL.createObjectURL(o),f=new Image;f.src=r,f.onload=function(){t(f),Zm[n]=f},f.onerror=function(v){i(v)}})}const Q2e=He({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({minColLength:20})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null),i=Ne(null);let a={_worksheets:[]},l=[],o=1,r=null,f=null,v=null;function b(Z){D2e(Z).then(p=>{if(!p._worksheets||p._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");const{workbookData:y,medias:X,workbookSource:m}=E2e(p,n.options);l=X,a=m,v=null,o=1,TL(),f.loadData(y),Rb(r,l,a._worksheets[o],v),e("rendered")}).catch(p=>{console.warn(p),l=[],a={_worksheets:[]},TL(),f.loadData({}),e("error",p)})}return Kt(()=>{window.xs=f=new uz(i.value,{mode:"read",showToolbar:!1,view:{height:()=>t.value.clientHeight||300,width:()=>t.value.clientWidth||300},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60}}).loadData({});let Z=f.bottombar.swapFunc;f.bottombar.swapFunc=function(m){Z.call(f.bottombar,m),o=m+1,setTimeout(()=>{f.reRender(),Rb(r,l,a._worksheets[o],v)})};let p=f.sheet.editor.clear;f.sheet.editor.clear=function(...m){p.apply(f.sheet.editor,m),setTimeout(()=>{Rb(r,l,a._worksheets[o],v)})};let y=f.sheet.editor.setOffset;f.sheet.editor.setOffset=function(...m){y.apply(f.sheet.editor,m),v=m[0],Rb(r,l,a._worksheets[o],v)},r=i.value.querySelector("canvas").getContext("2d"),n.src&&RL(n.src,n.requestOptions).then(b).catch(m=>{f.loadData({}),e("error",m)})}),rt(()=>n.src,()=>{n.src?RL(n.src).then(b).catch(Z=>{f.loadData({}),e("error",Z)}):f.loadData({})}),{wrapperRef:t,rootRef:i}}}),B2e={class:"vue-office-excel",ref:"wrapperRef"},A2e={class:"vue-office-excel-main",ref:"rootRef"};function _2e(n,e,t,i,a,l){return kl(),oc("div",B2e,[ju("div",A2e,null,512)],512)}const Gm=ed(Q2e,[["render",_2e]]);Gm.install=function(n){n.component(Gm.name,Gm)};const $2e={__name:"ExcelDemo",setup(n){function e(){Ic.hideLoading()}function t(i){console.log("出差",i),Ic.hideLoading()}return(i,a)=>{const l=hR("loading");return kl(),Lo(nN,{accept:".xlsx",placeholder:"请输入xlsx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.xlsx"},{default:pa(o=>[cl(D(mi(Gm),{src:o.src,style:{flex:"1",height:"0"},onRendered:e,onError:t},null,8,["src"]),[[l,!0]])]),_:1})}}},q2e="LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KIWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT1bLChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNiksbz1hKDY5KSxjPWEoNjMpLGw9YSgxMDApLGg9YSgxMDEpLHU9YSgxMDIpO2NsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19dC5Xb3JrZXJUYXNrPVdvcmtlclRhc2s7Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGE9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uIHdwaFNldHVwVGVzdCh0KXtpZighYSl7YT0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KSk7ZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24gd3BoQ29uZmlndXJlKGUpeygwLHIuc2V0VmVyYm9zaXR5TGV2ZWwpKGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBEb2MoZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxkPSExLGY9bnVsbDtjb25zdCBnPVtdLHA9KDAsci5nZXRWZXJib3NpdHlMZXZlbCkoKSx7ZG9jSWQ6bSxhcGlWZXJzaW9uOmJ9PWUseT0iMy4wLjI3OSI7aWYoYiE9PXkpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Yn0iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiMy4wLjI3OSIuYCk7Y29uc3Qgdz1bXTtmb3IoY29uc3QgZSBpbltdKXcucHVzaChlKTtpZih3Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIit3LmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVhZGFibGVTdHJlYW0pe2NvbnN0IGU9IlRoZSBicm93c2VyL2Vudmlyb25tZW50IGxhY2tzIG5hdGl2ZSBzdXBwb3J0IGZvciBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgdGhlIFBERi5qcyBsaWJyYXJ5IChlLmcuIGBSZWFkYWJsZVN0cmVhbWApOyAiO2lmKGwuaXNOb2RlSlMpdGhyb3cgbmV3IEVycm9yKGUrInBsZWFzZSB1c2UgYSBgbGVnYWN5YC1idWlsZCBpbnN0ZWFkLiIpO3Rocm93IG5ldyBFcnJvcihlKyJwbGVhc2UgdXBkYXRlIHRvIGEgc3VwcG9ydGVkIGJyb3dzZXIuIil9Y29uc3QgUz1tKyJfd29ya2VyIjtsZXQgeD1uZXcgaC5NZXNzYWdlSGFuZGxlcihTLG0sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7Zy5wdXNoKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtjb25zdCB0PWcuaW5kZXhPZihlKTtnLnNwbGljZSh0LDEpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbYS5sb2FkWGZhRm9udHMoeCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGEubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbcixuXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOm4saHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm4sbGVuZ3RoOmksZG9jQmFzZVVybDpvLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDtpZihlKXt0cnl7ZD1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIobSxlLHQseCxsLGMsbyk7aC5yZXNvbHZlKGQpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXJldHVybiBoLnByb21pc2V9bGV0IGcscD1bXTt0cnl7Zz1uZXcgdS5QREZXb3JrZXJTdHJlYW0oeCl9Y2F0Y2goZSl7aC5yZWplY3QoZSk7cmV0dXJuIGgucHJvbWlzZX1jb25zdCBiPWcuZ2V0RnVsbFJlYWRlcigpO2IuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoYi5pc1JhbmdlU3VwcG9ydGVkKXthPWF8fGIuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7ZD1uZXcgcy5OZXR3b3JrUGRmTWFuYWdlcihtLGcse21zZ0hhbmRsZXI6eCxwYXNzd29yZDp0LGxlbmd0aDpiLmNvbnRlbnRMZW5ndGgsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm59LGwsYyxvKTtmb3IoY29uc3QgZSBvZiBwKWQuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtwPVtdO2gucmVzb2x2ZShkKTtmPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtmPW51bGx9KSk7bGV0IHk9MDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTpufSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihuKXtkfHxmdW5jdGlvbigpe2NvbnN0IGU9KDAsci5hcnJheXNUb0J5dGVzKShwKTtpJiZlLmxlbmd0aCE9PWkmJigwLHIud2FybikoInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO3RyeXtkPW5ldyBzLkxvY2FsUGRmTWFuYWdlcihtLGUsdCx4LGwsYyxvKTtoLnJlc29sdmUoZCl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9cD1bXX0oKTtmPW51bGw7cmV0dXJufXkrPSgwLHIuYXJyYXlCeXRlTGVuZ3RoKShlKTtiLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHx4LnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnksdG90YWw6TWF0aC5tYXgoeSxiLmNvbnRlbnRMZW5ndGh8fDApfSk7ZD9kLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6cC5wdXNoKGUpO2IucmVhZCgpLnRoZW4ocmVhZENodW5rLGEpfWNhdGNoKGUpe2EoZSl9fTtiLnJlYWQoKS50aGVuKHJlYWRDaHVuayxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7Zj1udWxsfSkpO2Y9ZnVuY3Rpb24oZSl7Zy5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGgucHJvbWlzZX14Lm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCx1c2VyVW5pdDphLHZpZXc6cn19KSl9KSl9KSk7eC5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD1uLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbiB3cGhTZXR1cEdldERlc3RpbmF0aW9ucyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0RGVzdGluYXRpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7eC5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxhYmVscyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7eC5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxheW91dChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7eC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbiB3cGhTZXR1cEdldFBhZ2VNb2RlKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7eC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO3gub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7eC5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbiB3cGhTZXR1cEdldEF0dGFjaG1lbnRzKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7eC5vbigiR2V0SmF2YVNjcmlwdCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0SmF2YVNjcmlwdChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSk7eC5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREb2NKU0FjdGlvbnMoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7eC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO3gub24oIkdldE91dGxpbmUiLChmdW5jdGlvbiB3cGhTZXR1cEdldE91dGxpbmUoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7eC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7eC5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO3gub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRNZXRhZGF0YShlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTt4Lm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0TWFya0luZm8oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTt4Lm9uKCJHZXREYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREYXRhKGUpe3JldHVybiBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTt4Lm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoeCxyLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpfSkpfSkpfSkpO3gub24oIkdldEZpZWxkT2JqZWN0cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiZmllbGRPYmplY3RzIil9KSk7eC5vbigiSGFzSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pKTt4Lm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KSk7eC5vbigiU2F2ZURvY3VtZW50IiwoZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6cyxmaWxlbmFtZTpvfSl7Y29uc3QgbD1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygieHJlZiIpLGEuZW5zdXJlRG9jKCJzdGFydFhSZWYiKV0saD1lP251bGw6KDAsaS5nZXROZXdBbm5vdGF0aW9uc01hcCkocyk7aWYoaClmb3IoY29uc3RbZSx0XW9mIGgpbC5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChhPT57Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2V9YCk7cmV0dXJuIGEuc2F2ZU5ld0Fubm90YXRpb25zKHgscix0KS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2socil9KSl9KSkpO2lmKGUpbC5wdXNoKGEuc2VyaWFsaXplWGZhRGF0YShzKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKWwucHVzaChhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7cmV0dXJuIHQuc2F2ZSh4LGEscykuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSkpfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwobCkudGhlbigoZnVuY3Rpb24oW3QsYSxpLHMsbCwuLi5oXSl7bGV0IHU9W10sZD1udWxsO2lmKGUpe2Q9aFswXTtpZighZClyZXR1cm4gdC5ieXRlc31lbHNle3U9aC5mbGF0KDIpO2lmKDA9PT11Lmxlbmd0aClyZXR1cm4gdC5ieXRlc31jb25zdCBmPWEgaW5zdGFuY2VvZiBuLkRpY3QmJmEuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgZz1udWxsLHA9ITE7aWYoQXJyYXkuaXNBcnJheShmKSl7Zm9yKGxldCBlPTAsdD1mLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09ZltlXSl7Zz1mW2UrMV07aT1udWxsO3A9ITB9bnVsbD09PWcmJihnPXMuZ2V0TmV3UmVmKCkpfWVsc2UgaWYoZil7aT1udWxsOygwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpfWxldCBtPU9iamVjdC5jcmVhdGUobnVsbCk7aWYocy50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1zLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO209e3Jvb3RSZWY6cy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6cy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpzLmdldE5ld1JlZigpLGluZm9SZWY6cy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOnMudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmwsZmlsZW5hbWU6b319cy5yZXNldE5ld1JlZigpO3JldHVybigwLGMuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6dC5ieXRlcyx4cmVmSW5mbzptLG5ld1JlZnM6dSx4cmVmOnMsaGFzWGZhOiEhZix4ZmFEYXRhc2V0c1JlZjpnLGhhc1hmYURhdGFzZXRzRW50cnk6cCxhY3JvRm9ybVJlZjppLGFjcm9Gb3JtOmEseGZhRGF0YTpkfSl9KSl9KSk7eC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBSZW5kZXJQYWdlKGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7bn1gKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjp4LHNpbms6dCx0YXNrOmksaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7cyYmKDAsci5pbmZvKShgcGFnZT0ke24rMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTt4Lm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uIHdwaEV4dHJhY3RUZXh0KGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIituKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjp4LHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ZS5pbmNsdWRlTWFya2VkQ29udGVudCxjb21iaW5lVGV4dEl0ZW1zOmUuY29tYmluZVRleHRJdGVtc30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtzJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktcykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbiB3cGhHZXRTdHJ1Y3RUcmVlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7eC5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQseCl9KSk7eC5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uIHdwaENsZWFudXAoZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KSk7eC5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24gd3BoVGVybWluYXRlKGUpe2Q9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWEuY2xlYW51cCgpO3QucHVzaChlKTthPW51bGx9ZWxzZSgwLG8uY2xlYXJHbG9iYWxDYWNoZXMpKCk7ZiYmZihuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBnKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXt4LmRlc3Ryb3koKTt4PW51bGx9KSl9KSk7eC5vbigiUmVhZHkiLChmdW5jdGlvbiB3cGhSZWFkeSh0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTt4LnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIHIuUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7eC5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTt4LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBlIGluc3RhbmNlb2Ygci5JbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5NaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVua25vd25FcnJvckV4Y2VwdGlvbj94LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6eC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgaS5YUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCEwKS50aGVuKG9uU3VjY2VzcyxvbkZhaWx1cmUpfSkpOm9uRmFpbHVyZShlKX0pKX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Z2V0UGRmTWFuYWdlcihlKS50aGVuKChmdW5jdGlvbihlKXtpZihkKXtlLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWE9ZTthLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9Pnt4LnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBTfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgaC5NZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1Xb3JrZXJNZXNzYWdlSGFuZGxlcjsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmIWwuaXNOb2RlSlMmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBlfShzZWxmKSYmV29ya2VyTWVzc2FnZUhhbmRsZXIuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5TdHJlYW1UeXBlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlBlcm1pc3Npb25GbGFnPXQuUGFzc3dvcmRSZXNwb25zZXM9dC5QYXNzd29yZEV4Y2VwdGlvbj10LlBhZ2VBY3Rpb25FdmVudFR5cGU9dC5PUFM9dC5NaXNzaW5nUERGRXhjZXB0aW9uPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRm9udFR5cGU9dC5GZWF0dXJlVGVzdD10LkZPTlRfSURFTlRJVFlfTUFUUklYPXQuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9dC5DTWFwQ29tcHJlc3Npb25UeXBlPXQuQmFzZUV4Y2VwdGlvbj10LkFubm90YXRpb25UeXBlPXQuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXQuQW5ub3RhdGlvblJldmlld1N0YXRlPXQuQW5ub3RhdGlvblJlcGx5VHlwZT10LkFubm90YXRpb25Nb2RlPXQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXQuQW5ub3RhdGlvbkZsYWc9dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXQuQW5ub3RhdGlvbkVkaXRvclR5cGU9dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PXQuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT10LkFib3J0RXhjZXB0aW9uPXZvaWQgMDt0LmFycmF5Qnl0ZUxlbmd0aD1hcnJheUJ5dGVMZW5ndGg7dC5hcnJheXNUb0J5dGVzPWZ1bmN0aW9uIGFycmF5c1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigxPT09dCYmZVswXWluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZVswXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYSs9YXJyYXlCeXRlTGVuZ3RoKGVbcl0pO2xldCByPTA7Y29uc3Qgbj1uZXcgVWludDhBcnJheShhKTtmb3IobGV0IGE9MDthPHQ7YSsrKXtsZXQgdD1lW2FdO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwodD0ic3RyaW5nIj09dHlwZW9mIHQ/c3RyaW5nVG9CeXRlcyh0KTpuZXcgVWludDhBcnJheSh0KSk7Y29uc3QgaT10LmJ5dGVMZW5ndGg7bi5zZXQodCxyKTtyKz1pfXJldHVybiBufTt0LmFzc2VydD1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX07dC5ieXRlc1RvU3RyaW5nPWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmdm9pZCAwIT09ZS5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQ7bis9YSl7Y29uc3QgaT1NYXRoLm1pbihuK2EsdCkscz1lLnN1YmFycmF5KG4saSk7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9O3QuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNldHRsZWQiLHtnZXQ6KCk9PnR9KTtlLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7ZS5yZXNvbHZlPWZ1bmN0aW9uKGUpe3Q9ITA7YShlKX07ZS5yZWplY3Q9ZnVuY3Rpb24oZSl7dD0hMDtyKGUpfX0pKTtyZXR1cm4gZX07dC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoYSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihhLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dCYmdC5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaChlKXt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe2lmKCFlKXJldHVybiExO3N3aXRjaChlLnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpKXJldHVybiByfWNhdGNoKGUpe31yZXR1cm4gbnVsbH07dC5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfTt0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfTt0LmdldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIHJ9O3QuaW5mbz1mdW5jdGlvbiBpbmZvKGUpe3I+PWEuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9O3QuaXNBcnJheUJ1ZmZlcj1mdW5jdGlvbiBpc0FycmF5QnVmZmVyKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJnZvaWQgMCE9PWUuYnl0ZUxlbmd0aH07dC5pc0FycmF5RXF1YWw9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaWYoZVthXSE9PXRbYV0pcmV0dXJuITE7cmV0dXJuITB9O3QuaXNBc2NpaT1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX07dC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uIG9iamVjdEZyb21NYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSl0W2FdPXI7cmV0dXJuIHR9O3Qub2JqZWN0U2l6ZT1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9O3Quc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHI9ZSl9O3Quc2hhZG93PXNoYWRvdzt0LnN0cmluZzMyPWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfTt0LnN0cmluZ1RvQnl0ZXM9c3RyaW5nVG9CeXRlczt0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0OyLDviI9PT1lWzBdJiYiw78iPT09ZVsxXT90PSJ1dGYtMTZiZSI6IsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdP3Q9InV0Zi0xNmxlIjoiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHI9c3RyaW5nVG9CeXRlcyhlKTtyZXR1cm4gYS5kZWNvZGUocil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9c1tlLmNoYXJDb2RlQXQoYSldO3QucHVzaChyP1N0cmluZy5mcm9tQ2hhckNvZGUocik6ZS5jaGFyQXQoYSkpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGMTZCRVN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1VURjE2QkVTdHJpbmcoZSl7Y29uc3QgdD1bIsO+w78iXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIHQuam9pbigiIil9O3Quc3RyaW5nVG9VVEY4U3RyaW5nPXN0cmluZ1RvVVRGOFN0cmluZzt0LnVucmVhY2hhYmxlPXVucmVhY2hhYmxlO3QudXRmOFN0cmluZ1RvU3RyaW5nPWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX07dC53YXJuPXdhcm47dC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXTt0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF07dC5MSU5FX0ZBQ1RPUj0xLjM1O3QuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzU7dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxBTk5PVEFUSU9OU19GT1JNUzoxNixBTk5PVEFUSU9OU19TVE9SQUdFOjMyLEFOTk9UQVRJT05TX0RJU0FCTEU6NjQsT1BMSVNUOjI1Nn07dC5Bbm5vdGF0aW9uTW9kZT17RElTQUJMRTowLEVOQUJMRToxLEVOQUJMRV9GT1JNUzoyLEVOQUJMRV9TVE9SQUdFOjN9O3QuQW5ub3RhdGlvbkVkaXRvclByZWZpeD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyI7dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT17RElTQUJMRTotMSxOT05FOjAsRlJFRVRFWFQ6MyxJTks6MTV9O3QuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9e0ZSRUVURVhUX1NJWkU6MSxGUkVFVEVYVF9DT0xPUjoyLEZSRUVURVhUX09QQUNJVFk6MyxJTktfQ09MT1I6MTEsSU5LX1RISUNLTkVTUzoxMixJTktfT1BBQ0lUWToxM307dC5QZXJtaXNzaW9uRmxhZz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fTt0LlRleHRSZW5kZXJpbmdNb2RlPXtGSUxMOjAsU1RST0tFOjEsRklMTF9TVFJPS0U6MixJTlZJU0lCTEU6MyxGSUxMX0FERF9UT19QQVRIOjQsU1RST0tFX0FERF9UT19QQVRIOjUsRklMTF9TVFJPS0VfQUREX1RPX1BBVEg6NixBRERfVE9fUEFUSDo3LEZJTExfU1RST0tFX01BU0s6MyxBRERfVE9fUEFUSF9GTEFHOjR9O3QuSW1hZ2VLaW5kPXtHUkFZU0NBTEVfMUJQUDoxLFJHQl8yNEJQUDoyLFJHQkFfMzJCUFA6M307dC5Bbm5vdGF0aW9uVHlwZT17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9O3QuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXtNQVJLRUQ6Ik1hcmtlZCIsUkVWSUVXOiJSZXZpZXcifTt0LkFubm90YXRpb25NYXJrZWRTdGF0ZT17TUFSS0VEOiJNYXJrZWQiLFVOTUFSS0VEOiJVbm1hcmtlZCJ9O3QuQW5ub3RhdGlvblJldmlld1N0YXRlPXtBQ0NFUFRFRDoiQWNjZXB0ZWQiLFJFSkVDVEVEOiJSZWplY3RlZCIsQ0FOQ0VMTEVEOiJDYW5jZWxsZWQiLENPTVBMRVRFRDoiQ29tcGxldGVkIixOT05FOiJOb25lIn07dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn07dC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn07dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9O3QuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn07dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In07dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07dC5TdHJlYW1UeXBlPXtVTktOT1dOOiJVTktOT1dOIixGTEFURToiRkxBVEUiLExaVzoiTFpXIixEQ1Q6IkRDVCIsSlBYOiJKUFgiLEpCSUc6IkpCSUciLEE4NToiQTg1IixBSFg6IkFIWCIsQ0NGOiJDQ0YiLFJMWDoiUkxYIn07dC5Gb250VHlwZT17VU5LTk9XTjoiVU5LTk9XTiIsVFlQRTE6IlRZUEUxIixUWVBFMVNUQU5EQVJEOiJUWVBFMVNUQU5EQVJEIixUWVBFMUM6IlRZUEUxQyIsQ0lERk9OVFRZUEUwOiJDSURGT05UVFlQRTAiLENJREZPTlRUWVBFMEM6IkNJREZPTlRUWVBFMEMiLFRSVUVUWVBFOiJUUlVFVFlQRSIsQ0lERk9OVFRZUEUyOiJDSURGT05UVFlQRTIiLFRZUEUzOiJUWVBFMyIsT1BFTlRZUEU6Ik9QRU5UWVBFIixUWVBFMDoiVFlQRTAiLE1NVFlQRTE6Ik1NVFlQRTEifTtjb25zdCBhPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9O3QuVmVyYm9zaXR5TGV2ZWw9YTt0LkNNYXBDb21wcmVzc2lvblR5cGU9e05PTkU6MCxCSU5BUlk6MX07dC5PUFM9e2RlcGVuZGVuY3k6MSxzZXRMaW5lV2lkdGg6MixzZXRMaW5lQ2FwOjMsc2V0TGluZUpvaW46NCxzZXRNaXRlckxpbWl0OjUsc2V0RGFzaDo2LHNldFJlbmRlcmluZ0ludGVudDo3LHNldEZsYXRuZXNzOjgsc2V0R1N0YXRlOjksc2F2ZToxMCxyZXN0b3JlOjExLHRyYW5zZm9ybToxMixtb3ZlVG86MTMsbGluZVRvOjE0LGN1cnZlVG86MTUsY3VydmVUbzI6MTYsY3VydmVUbzM6MTcsY2xvc2VQYXRoOjE4LHJlY3RhbmdsZToxOSxzdHJva2U6MjAsY2xvc2VTdHJva2U6MjEsZmlsbDoyMixlb0ZpbGw6MjMsZmlsbFN0cm9rZToyNCxlb0ZpbGxTdHJva2U6MjUsY2xvc2VGaWxsU3Ryb2tlOjI2LGNsb3NlRU9GaWxsU3Ryb2tlOjI3LGVuZFBhdGg6MjgsY2xpcDoyOSxlb0NsaXA6MzAsYmVnaW5UZXh0OjMxLGVuZFRleHQ6MzIsc2V0Q2hhclNwYWNpbmc6MzMsc2V0V29yZFNwYWNpbmc6MzQsc2V0SFNjYWxlOjM1LHNldExlYWRpbmc6MzYsc2V0Rm9udDozNyxzZXRUZXh0UmVuZGVyaW5nTW9kZTozOCxzZXRUZXh0UmlzZTozOSxtb3ZlVGV4dDo0MCxzZXRMZWFkaW5nTW92ZVRleHQ6NDEsc2V0VGV4dE1hdHJpeDo0MixuZXh0TGluZTo0MyxzaG93VGV4dDo0NCxzaG93U3BhY2VkVGV4dDo0NSxuZXh0TGluZVNob3dUZXh0OjQ2LG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OjQ3LHNldENoYXJXaWR0aDo0OCxzZXRDaGFyV2lkdGhBbmRCb3VuZHM6NDksc2V0U3Ryb2tlQ29sb3JTcGFjZTo1MCxzZXRGaWxsQ29sb3JTcGFjZTo1MSxzZXRTdHJva2VDb2xvcjo1MixzZXRTdHJva2VDb2xvck46NTMsc2V0RmlsbENvbG9yOjU0LHNldEZpbGxDb2xvck46NTUsc2V0U3Ryb2tlR3JheTo1NixzZXRGaWxsR3JheTo1NyxzZXRTdHJva2VSR0JDb2xvcjo1OCxzZXRGaWxsUkdCQ29sb3I6NTksc2V0U3Ryb2tlQ01ZS0NvbG9yOjYwLHNldEZpbGxDTVlLQ29sb3I6NjEsc2hhZGluZ0ZpbGw6NjIsYmVnaW5JbmxpbmVJbWFnZTo2MyxiZWdpbkltYWdlRGF0YTo2NCxlbmRJbmxpbmVJbWFnZTo2NSxwYWludFhPYmplY3Q6NjYsbWFya1BvaW50OjY3LG1hcmtQb2ludFByb3BzOjY4LGJlZ2luTWFya2VkQ29udGVudDo2OSxiZWdpbk1hcmtlZENvbnRlbnRQcm9wczo3MCxlbmRNYXJrZWRDb250ZW50OjcxLGJlZ2luQ29tcGF0OjcyLGVuZENvbXBhdDo3MyxwYWludEZvcm1YT2JqZWN0QmVnaW46NzQscGFpbnRGb3JtWE9iamVjdEVuZDo3NSxiZWdpbkdyb3VwOjc2LGVuZEdyb3VwOjc3LGJlZ2luQW5ub3RhdGlvbjo4MCxlbmRBbm5vdGF0aW9uOjgxLHBhaW50SW1hZ2VNYXNrWE9iamVjdDo4MyxwYWludEltYWdlTWFza1hPYmplY3RHcm91cDo4NCxwYWludEltYWdlWE9iamVjdDo4NSxwYWludElubGluZUltYWdlWE9iamVjdDo4NixwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOjg3LHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Ojg4LHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDo4OSxwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6OTAsY29uc3RydWN0UGF0aDo5MX07dC5VTlNVUFBPUlRFRF9GRUFUVVJFUz17Zm9ybXM6ImZvcm1zIixqYXZhU2NyaXB0OiJqYXZhU2NyaXB0IixzaWduYXR1cmVzOiJzaWduYXR1cmVzIixzbWFzazoic21hc2siLHNoYWRpbmdQYXR0ZXJuOiJzaGFkaW5nUGF0dGVybiIsZXJyb3JUaWxpbmdQYXR0ZXJuOiJlcnJvclRpbGluZ1BhdHRlcm4iLGVycm9yRXh0R1N0YXRlOiJlcnJvckV4dEdTdGF0ZSIsZXJyb3JYT2JqZWN0OiJlcnJvclhPYmplY3QiLGVycm9yRm9udExvYWRUeXBlMzoiZXJyb3JGb250TG9hZFR5cGUzIixlcnJvckZvbnRTdGF0ZToiZXJyb3JGb250U3RhdGUiLGVycm9yRm9udE1pc3Npbmc6ImVycm9yRm9udE1pc3NpbmciLGVycm9yRm9udFRyYW5zbGF0ZToiZXJyb3JGb250VHJhbnNsYXRlIixlcnJvckNvbG9yU3BhY2U6ImVycm9yQ29sb3JTcGFjZSIsZXJyb3JPcGVyYXRvckxpc3Q6ImVycm9yT3BlcmF0b3JMaXN0IixlcnJvckZvbnRUb1VuaWNvZGU6ImVycm9yRm9udFRvVW5pY29kZSIsZXJyb3JGb250TG9hZE5hdGl2ZToiZXJyb3JGb250TG9hZE5hdGl2ZSIsZXJyb3JGb250QnVpbGRQYXRoOiJlcnJvckZvbnRCdWlsZFBhdGgiLGVycm9yRm9udEdldFBhdGg6ImVycm9yRm9udEdldFBhdGgiLGVycm9yTWFya2VkQ29udGVudDoiZXJyb3JNYXJrZWRDb250ZW50IixlcnJvckNvbnRlbnRTdWJTdHJlYW06ImVycm9yQ29udGVudFN1YlN0cmVhbSJ9O3QuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IHI9YS5XQVJOSU5HUztmdW5jdGlvbiB3YXJuKGUpe3I+PWEuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IG49ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7dC5CYXNlRXhjZXB0aW9uPW47dC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX07dC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX07dC5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19O3QuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTt0LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19O3QuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fTt0LkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIGFycmF5Qnl0ZUxlbmd0aChlKXtpZih2b2lkIDAhPT1lLmxlbmd0aClyZXR1cm4gZS5sZW5ndGg7aWYodm9pZCAwIT09ZS5ieXRlTGVuZ3RoKXJldHVybiBlLmJ5dGVMZW5ndGg7dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGFycmF5Qnl0ZUxlbmd0aCIpfXQuRmVhdHVyZVRlc3Q9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfX07Y29uc3QgaT1bLi4uQXJyYXkoMjU2KS5rZXlzKCldLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7aVtlXX0ke2lbdF19JHtpW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzFdO3RbMV09YX10WzBdKj1lWzBdO3RbMV0qPWVbMF07aWYoZVszXTwwKXthPXRbMl07dFsyXT10WzNdO3RbM109YX10WzJdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzJdO3RbMl09YTthPXRbMV07dFsxXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMl07dFsxXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNF07dFsyXSs9ZVs1XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGE9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvYSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvYV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgYT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCkscj1VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxuPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksaT1VdGlsLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1pbihhWzFdLHJbMV0sblsxXSxpWzFdKSxNYXRoLm1heChhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1heChhWzFdLHJbMV0sblsxXSxpWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGE9ZVswXSp0WzBdK2VbMV0qdFsyXSxyPWVbMF0qdFsxXStlWzFdKnRbM10sbj1lWzJdKnRbMF0rZVszXSp0WzJdLGk9ZVsyXSp0WzFdK2VbM10qdFszXSxzPShhK2kpLzIsbz1NYXRoLnNxcnQoKGEraSkqKjItNCooYSppLW4qcikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksaT1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBuPmk/bnVsbDpbYSxuLHIsaV19c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsbixpLHMsbyl7Y29uc3QgYz1bXSxsPVtbXSxbXV07bGV0IGgsdSxkLGYsZyxwLG0sYjtmb3IobGV0IGw9MDtsPDI7KytsKXtpZigwPT09bCl7dT02KmUtMTIqYSs2Km47aD0tMyplKzkqYS05Km4rMypzO2Q9MyphLTMqZX1lbHNle3U9Nip0LTEyKnIrNippO2g9LTMqdCs5KnItOSppKzMqbztkPTMqci0zKnR9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKHUpPDFlLTEyKWNvbnRpbnVlO2Y9LWQvdTswPGYmJmY8MSYmYy5wdXNoKGYpfWVsc2V7bT11KnUtNCpkKmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtnPSgtdStiKS8oMipoKTswPGcmJmc8MSYmYy5wdXNoKGcpO3A9KC11LWIpLygyKmgpOzA8cCYmcDwxJiZjLnB1c2gocCl9fX1sZXQgeSx3PWMubGVuZ3RoO2NvbnN0IFM9dztmb3IoO3ctLTspe2Y9Y1t3XTt5PTEtZjtsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZiphKzMqeSpmKmYqbitmKmYqZipzO2xbMV1bd109eSp5KnkqdCszKnkqeSpmKnIrMyp5KmYqZippK2YqZipmKm99bFswXVtTXT1lO2xbMV1bU109dDtsWzBdW1MrMV09cztsWzFdW1MrMV09bztsWzBdLmxlbmd0aD1sWzFdLmxlbmd0aD1TKzI7cmV0dXJuW01hdGgubWluKC4uLmxbMF0pLE1hdGgubWluKC4uLmxbMV0pLE1hdGgubWF4KC4uLmxbMF0pLE1hdGgubWF4KC4uLmxbMV0pXX19dC5VdGlsPVV0aWw7Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5SZWZTZXRDYWNoZT10LlJlZlNldD10LlJlZj10Lk5hbWU9dC5FT0Y9dC5EaWN0PXQuQ21kPXQuQ0lSQ1VMQVJfUkVGPXZvaWQgMDt0LmNsZWFyUHJpbWl0aXZlQ2FjaGVzPWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7by5fY2xlYXJDYWNoZSgpO3MuX2NsZWFyQ2FjaGUoKTtsLl9jbGVhckNhY2hlKCl9O3QuaXNDbWQ9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG8mJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfTt0LmlzRGljdD1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9O3QuaXNOYW1lPWlzTmFtZTt0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59O3ZhciByPWEoMik7Y29uc3Qgbj1TeW1ib2woIkNJUkNVTEFSX1JFRiIpO3QuQ0lSQ1VMQVJfUkVGPW47Y29uc3QgaT1TeW1ib2woIkVPRiIpO3QuRU9GPWk7Y29uc3Qgcz1mdW5jdGlvbiBOYW1lQ2xvc3VyZSgpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KHQpe3JldHVybiBlW3RdfHwoZVt0XT1uZXcgTmFtZSh0KSl9c3RhdGljIF9jbGVhckNhY2hlKCl7ZT1PYmplY3QuY3JlYXRlKG51bGwpfX1yZXR1cm4gTmFtZX0oKTt0Lk5hbWU9cztjb25zdCBvPWZ1bmN0aW9uIENtZENsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQodCl7cmV0dXJuIGVbdF18fChlW3RdPW5ldyBDbWQodCkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIENtZH0oKTt0LkNtZD1vO2NvbnN0IGM9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBjfTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1jfWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKS5sZW5ndGh9Z2V0KGUsdCxhKXtsZXQgcj10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXBbdF07dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwW2FdKX1yZXR1cm4gciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1hc3luYyBnZXRBc3luYyhlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBsJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9ciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZiYmKHI9dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KHIpKXtyPXIuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXWluc3RhbmNlb2YgbCYmdGhpcy54cmVmJiYocltlXT10aGlzLnhyZWYuZmV0Y2gocltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiByfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9PnsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksbj1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1uLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO24uc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBuKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcFt0XT1hWzBdO2NvbnRpbnVlfWNvbnN0IG49bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09bi5fbWFwW3RdJiYobi5fbWFwW3RdPWEpO24uc2l6ZT4wJiYoci5fbWFwW3RdPW4pfW4uY2xlYXIoKTtyZXR1cm4gci5zaXplPjA/cjpEaWN0LmVtcHR5fX10LkRpY3Q9RGljdDtjb25zdCBsPWZ1bmN0aW9uIFJlZkNsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZ2V0KHQsYSl7Y29uc3Qgcj0wPT09YT9gJHt0fVJgOmAke3R9UiR7YX1gO3JldHVybiBlW3JdfHwoZVtyXT1uZXcgUmVmKHQsYSkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIFJlZn0oKTt0LlJlZj1sO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGUmJmUuX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX10LlJlZlNldD1SZWZTZXQ7Y2xhc3MgUmVmU2V0Q2FjaGV7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19dC5SZWZTZXRDYWNoZT1SZWZTZXRDYWNoZTtmdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHMmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj10LkRvY1N0YXRzPXZvaWQgMDt0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxhKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2Ygbi5EaWN0KWZvcihjb25zdCB0IG9mIHIuZ2V0S2V5cygpKXtjb25zdCBzPWFbdF07aWYoIXMpY29udGludWU7Y29uc3Qgbz1yLmdldFJhdyh0KSxjPW5ldyBuLlJlZlNldCxsPVtdO19jb2xsZWN0SlMobyxlLGwsYyk7bC5sZW5ndGg+MCYmKGlbc109bCl9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGE9dC5nZXQoIkEiKSxyPW5ldyBuLlJlZlNldCxzPVtdO19jb2xsZWN0SlMoYSxlLHMscik7cy5sZW5ndGg+MCYmKGkuQWN0aW9uPXMpfXJldHVybigwLHIub2JqZWN0U2l6ZSkoaSk+MD9pOm51bGx9O3QuZW5jb2RlVG9YbWxTdHJpbmc9ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1uJiZuPD0xMjYpe2NvbnN0IGk9b1tuXTtpZihpKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goaSk7YT1yKzF9fWVsc2V7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAmI3gke24udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmcisrO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYobjwzM3x8bj4xMjZ8fDM1PT09bnx8NDA9PT1ufHw0MT09PW58fDYwPT09bnx8NjI9PT1ufHw5MT09PW58fDkzPT09bnx8MTIzPT09bnx8MTI1PT09bnx8NDc9PT1ufHwzNz09PW4pe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7bi50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfTt0LmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5PWZ1bmN0aW9uIGdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe2xldCBhPWUoKTtlPW51bGw7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrPTIpdFthW2VdXT1hW2UrMV07YT1udWxsfXJldHVybiB0fX07dC5nZXRJbmhlcml0YWJsZVByb3BlcnR5PWdldEluaGVyaXRhYmxlUHJvcGVydHk7dC5nZXRMb29rdXBUYWJsZUZhY3Rvcnk9ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19O3QuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSl7aWYoIWEuc3RhcnRzV2l0aChyLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KG4ucGFnZUluZGV4KTtpZighZSl7ZT1bXTt0LnNldChuLnBhZ2VJbmRleCxlKX1lLnB1c2gobil9cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH07dC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX07dC5sb2cyPWZ1bmN0aW9uIGxvZzIoZSl7aWYoZTw9MClyZXR1cm4gMDtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihlKSl9O3QubnVtYmVyVG9TdHJpbmc9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7aWYodCUxMDA9PTApcmV0dXJuKHQvMTAwKS50b1N0cmluZygpO2lmKHQlMTA9PTApcmV0dXJuIGUudG9GaXhlZCgxKTtyZXR1cm4gZS50b0ZpeGVkKDIpfTt0LnBhcnNlWEZBUGF0aD1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX07dC5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9O3QucmVhZFVpbnQxNj1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfTt0LnJlYWRVaW50MzI9ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH07dC5yZWNvdmVySnNVUkw9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8Iikuc3BsaXQoIi4iKS5qb2luKCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYodCYmdFsyXSl7Y29uc3QgZT10WzJdO2xldCBhPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihhPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93OmF9fXJldHVybiBudWxsfTt0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXsoMCxyLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT1bXTtsZXQgbjtmb3IoO2U+PTFlMzspe2UtPTFlMzthLnB1c2goIk0iKX1uPWUvMTAwfDA7ZSU9MTAwO2EucHVzaChzW25dKTtuPWUvMTB8MDtlJT0xMDthLnB1c2goc1sxMCtuXSk7YS5wdXNoKHNbMjArZV0pO2NvbnN0IGk9YS5qb2luKCIiKTtyZXR1cm4gdD9pLnRvTG93ZXJDYXNlKCk6aX07dC52YWxpZGF0ZUNTU0ZvbnQ9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTppfT1lO2lmKC9eIi4qIiQvLnRlc3QoYSkpe2lmKC9bXlxcXSIvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAiOiAke2F9LmApO3JldHVybiExfX1lbHNlIGlmKC9eJy4qJyQvLnRlc3QoYSkpe2lmKC9bXlxcXScvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAnOiAke2F9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBlIG9mIGEuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoZSl8fCEvXltcdy1cXF0rJC8udGVzdChlKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7YX0uYCk7cmV0dXJuITF9Y29uc3Qgcz1uP24udG9TdHJpbmcoKToiIjtlLmZvbnRXZWlnaHQ9dC5oYXMocyk/czoiNDAwIjtjb25zdCBvPXBhcnNlRmxvYXQoaSk7ZS5pdGFsaWNBbmdsZT1pc05hTihvKXx8bzwtOTB8fG8+OTA/IjE0IjppLnRvU3RyaW5nKCk7cmV0dXJuITB9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg1KTt0LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO2NsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPU1pc3NpbmdEYXRhRXhjZXB0aW9uO2NsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249UGFyc2VyRU9GRXhjZXB0aW9uO2NsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19dC5YUmVmRW50cnlFeGNlcHRpb249WFJlZkVudHJ5RXhjZXB0aW9uO2NsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19dC5YUmVmUGFyc2VFeGNlcHRpb249WFJlZlBhcnNlRXhjZXB0aW9uO3QuRG9jU3RhdHM9Y2xhc3MgRG9jU3RhdHN7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lO3RoaXMuX3N0cmVhbVR5cGVzPW5ldyBTZXQ7dGhpcy5fZm9udFR5cGVzPW5ldyBTZXR9X3NlbmQoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0cmVhbVR5cGVzKWVbdF09ITA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZm9udFR5cGVzKXRbZV09ITA7dGhpcy5faGFuZGxlci5zZW5kKCJEb2NTdGF0cyIse3N0cmVhbVR5cGVzOmUsZm9udFR5cGVzOnR9KX1hZGRTdHJlYW1UeXBlKGUpe2lmKCF0aGlzLl9zdHJlYW1UeXBlcy5oYXMoZSkpe3RoaXMuX3N0cmVhbVR5cGVzLmFkZChlKTt0aGlzLl9zZW5kKCl9fWFkZEZvbnRUeXBlKGUpe2lmKCF0aGlzLl9mb250VHlwZXMuaGFzKGUpKXt0aGlzLl9mb250VHlwZXMuYWRkKGUpO3RoaXMuX3NlbmQoKX19fTtmdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOnI9ITB9KXtsZXQgaTtjb25zdCBzPW5ldyBuLlJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBuLkRpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IG49YT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW4pe2lmKHIpcmV0dXJuIG47aXx8KGk9W10pO2kucHVzaChuKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gaX1jb25zdCBzPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxzKXtpZighZSlyZXR1cm47bGV0IG89bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHMuaGFzKGUpKXJldHVybjtvPWU7cy5wdXQobyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxhLHMpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7aWYoKDAsbi5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgbjt0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP249dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihuPXQpO249biYmKDAsci5zdHJpbmdUb1BERlN0cmluZykobikucmVwbGFjZSgvXHUwMDAwL2csIiIpO24mJmEucHVzaChuKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLHMpfW8mJnMucmVtb3ZlKG8pfWNvbnN0IG89ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CYXNlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDIpO2NsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fXQuQmFzZVN0cmVhbT1CYXNlU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmV0d29ya1BkZk1hbmFnZXI9dC5Mb2NhbFBkZk1hbmFnZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDcpLGk9YSg0KSxzPWEoOSksbz1hKDgpO2Z1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PSgwLHIuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSk7aWYodClyZXR1cm4gdC5ocmVmOygwLHIud2FybikoYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIil9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLGMpe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKGMpO3RoaXMubXNnSGFuZGxlcj1yO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1uO3RoaXMuZW5hYmxlWGZhPWk7Y29uc3QgbD1uZXcgby5TdHJlYW0odCk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLGwpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKGwpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSx0LGEscixpLG8pe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hLnBhc3N3b3JkO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKG8pO3RoaXMubXNnSGFuZGxlcj1hLm1zZ0hhbmRsZXI7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXI7dGhpcy5lbmFibGVYZmE9aTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IG4uQ2h1bmtlZFN0cmVhbU1hbmFnZXIodCx7bXNnSGFuZGxlcjphLm1zZ0hhbmRsZXIsbGVuZ3RoOmEubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6YS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmEucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LGEpe3RyeXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgcjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShyLmJlZ2luLHIuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpLGk9YSg4KTtjbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgaS5TdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxhPXRoaXMubnVtQ2h1bmtzO3Q8YTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBhPXRoaXMuY2h1bmtTaXplO2lmKGUlYSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCByPWUrdC5ieXRlTGVuZ3RoO2lmKHIlYSE9MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBuPU1hdGguZmxvb3IoZS9hKSxpPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9bjtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBhPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoYT50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3Qgcj1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IGk9YTtpPHI7KytpKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGkpKXRocm93IG5ldyBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGE9MDthPHQ7KythKXtjb25zdCByPShlK2EpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpcmV0dXJuIHJ9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsYT10aGlzLnBvcyxyPXRoaXMuZW5kO2lmKCFlKXtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEscik7cmV0dXJuIHQuc3ViYXJyYXkoYSxyKX1sZXQgbj1hK2U7bj5yJiYobj1yKTtuPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEsbik7dGhpcy5wb3M9bjtyZXR1cm4gdC5zdWJhcnJheShhLG4pfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGE9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxyPVtdO2ZvcihsZXQgZT10O2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8ci5wdXNoKGUpO3JldHVybiByfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCByPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO3IucG9zPXIuc3RhcnQ9ZTtyLmVuZD1lK3R8fHRoaXMuZW5kO3IuZGljdD1hO3JldHVybiByfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX10LkNodW5rZWRTdHJlYW09Q2h1bmtlZFN0cmVhbTt0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9c2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO2EuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChhLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO2xldCBuPVtdLGk9MDtyZXR1cm4gbmV3IFByb21pc2UoKChlLHQpPT57Y29uc3QgcmVhZENodW5rPXM9Pnt0cnl7aWYoIXMuZG9uZSl7Y29uc3QgZT1zLnZhbHVlO24ucHVzaChlKTtpKz0oMCxyLmFycmF5Qnl0ZUxlbmd0aCkoZSk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpO3JldHVybn1jb25zdCBvPSgwLHIuYXJyYXlzVG9CeXRlcykobik7bj1udWxsO2Uobyl9Y2F0Y2goZSl7dChlKX19O2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBuPSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsbik7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgYT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxhKTtpLnB1c2goZSl9YS5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLG49W107Zm9yKGxldCBlPWE7ZTxyOysrZSluLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mobil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxyPS0xO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbil7Y29uc3QgaT1lW25dO2E8MCYmKGE9aSk7aWYocj49MCYmcisxIT09aSl7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7YT1pfW4rMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazppKzF9KTtyPWl9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssYT12b2lkIDA9PT1lLmJlZ2luLHI9YT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG49cit0LmJ5dGVMZW5ndGgsaT1NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpLHM9bjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKG4vdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChuL3RoaXMuY2h1bmtTaXplKTtpZihhKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9bn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEocix0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9aTtlPHM7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhzKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbSYmdGhpcy5wZGZOZXR3b3JrU3RyZWFtLmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJpbmdTdHJlYW09dC5TdHJlYW09dC5OdWxsU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgyKTtjbGFzcyBTdHJlYW0gZXh0ZW5kcyByLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBuPWErZTtuPnImJihuPXIpO3RoaXMucG9zPW47cmV0dXJuIHQuc3ViYXJyYXkoYSxuKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX10LlN0cmVhbT1TdHJlYW07dC5TdHJpbmdTdHJlYW09Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCgwLG4uc3RyaW5nVG9CeXRlcykoZSkpfX07dC5OdWxsU3RyZWFtPWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhZ2U9dC5QREZEb2N1bWVudD12b2lkIDA7dmFyIHI9YSgxMCksbj1hKDIpLGk9YSg0KSxzPWEoMyksbz1hKDQ5KSxjPWEoNSksbD1hKDY1KSxoPWEoNjcpLHU9YSg2OSksZD1hKDk4KSxmPWEoMTUpLGc9YSg4KSxwPWEoNzMpLG09YSg2MCksYj1hKDEzKSx5PWEoMTcpLHc9YSg3MiksUz1hKDYzKSx4PWEoNzQpLGs9YSg5OSk7Y29uc3QgQz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6aSxmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsSW1hZ2VDYWNoZTpsLG5vbkJsZW5kTW9kZXNTZXQ6aCx4ZmFGYWN0b3J5OnV9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1uO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT11O2NvbnN0IGQ9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIGl7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2F9XyR7KytkLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcGFnZSR7bi50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGE9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2Ygcy5EaWN0P3MuRGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OmF9KTphWzBdOmF9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2Ygcy5EaWN0P2U6cy5EaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZih0WzJdLXRbMF0hPTAmJnRbM10tdFsxXSE9MClyZXR1cm4gdDsoMCxuLndhcm4pKGBFbXB0eSAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxDKX1nZXQgY3JvcEJveCgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjcm9wQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtsZXQgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTsoIm51bWJlciIhPXR5cGVvZiBlfHxlPD0wKSYmKGU9MSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2xldCBhO2lmKGU9PT10fHwoMCxuLmlzQXJyYXlFcXVhbCkoZSx0KSlhPXQ7ZWxzZXtjb25zdCByPW4uVXRpbC5pbnRlcnNlY3QoZSx0KTtyJiZyWzJdLXJbMF0hPTAmJnJbM10tclsxXSE9MD9hPXI6KDAsbi53YXJuKSgiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXciLGF8fHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQsYSl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDtlLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29udGVudFN1YlN0cmVhbX0pOygwLG4ud2FybikoYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke2F9KTogIiR7dH0iLmApfWdldENvbnRlbnRTdHJlYW0oZSl7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpLnRoZW4oKHQ9PnQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/dDpBcnJheS5pc0FycmF5KHQpP25ldyB5LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbSh0LHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzLGUpKTpuZXcgZy5OdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksaT10aGlzLnBhZ2VEaWN0LHM9dGhpcy5hbm5vdGF0aW9ucy5zbGljZSgpLG89YXdhaXQgci5Bbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMobix0LGEpO2Zvcihjb25zdHtyZWY6ZX1vZiBvLmFubm90YXRpb25zKXMucHVzaChlKTtjb25zdCBjPWkuZ2V0KCJBbm5vdHMiKTtpLnNldCgiQW5ub3RzIixzKTtjb25zdCBsPVtdO2xldCBoPW51bGw7dGhpcy54cmVmLmVuY3J5cHQmJihoPXRoaXMueHJlZi5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsaSxsLGgpO2MmJmkuc2V0KCJBbm5vdHMiLGMpO2NvbnN0IHU9by5kZXBlbmRlbmNpZXM7dS5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5vLmFubm90YXRpb25zKTtyZXR1cm4gdX1zYXZlKGUsdCxhKXtjb25zdCByPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChhKSYmaS5wdXNoKHMuc2F2ZShyLHQsYSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fCh0aGlzLnJlc291cmNlc1Byb21pc2U9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IHAuT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazphLGludGVudDpzLGNhY2hlS2V5Om8sYW5ub3RhdGlvblN0b3JhZ2U6Yz1udWxsfSl7Y29uc3QgbD10aGlzLmdldENvbnRlbnRTdHJlYW0oZSksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZD10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShjKTtsZXQgZj1Qcm9taXNlLnJlc29sdmUobnVsbCk7aWYoZCl7Y29uc3QgZT1kLmdldCh0aGlzLnBhZ2VJbmRleCk7ZSYmKGY9ci5Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKHUsYSxlKSl9Y29uc3QgZz1Qcm9taXNlLmFsbChbbCxoXSkudGhlbigoKFtyXSk9Pntjb25zdCBuPW5ldyBtLk9wZXJhdG9yTGlzdChzLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OnUuaGFzQmxlbmRNb2Rlcyh0aGlzLnJlc291cmNlcyx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxjYWNoZUtleTpvfSk7cmV0dXJuIHUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOmEscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2csdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsZl0pLnRoZW4oKGZ1bmN0aW9uKFtlLHQscl0pe3ImJih0PXQuY29uY2F0KHIpKTtpZigwPT09dC5sZW5ndGh8fHMmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEUpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3QgaT0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUyksbz0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEocyZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCksZD1bXTtmb3IoY29uc3QgZSBvZiB0KShvfHxsJiZlLm11c3RCZVZpZXdlZChjKXx8aCYmZS5tdXN0QmVQcmludGVkKGMpKSYmZC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsYSxzLGksYykuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbigoZnVuY3Rpb24odCl7bGV0IGE9ITEscj0hMTtmb3IoY29uc3R7b3BMaXN0Om4sc2VwYXJhdGVGb3JtOmksc2VwYXJhdGVDYW52YXM6c31vZiB0KXtlLmFkZE9wTGlzdChuKTtpJiYoYT1pKTtzJiYocj1zKX1lLmZsdXNoKCEwLHtmb3JtOmEsY2FudmFzOnJ9KTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLHNpbms6cixjb21iaW5lVGV4dEl0ZW1zOm59KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbShlKSxzPXRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2ksc10pLnRoZW4oKChbaV0pPT5uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTppLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxjb21iaW5lVGV4dEl0ZW1zOm4sc2luazpyLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyB3LlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSgpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107Y29uc3QgaT1bXSxzPVtdO2xldCBvO2NvbnN0IGM9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKGEmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9Y3x8bCYmYS52aWV3YWJsZTsocnx8aCYmYS5wcmludGFibGUpJiZzLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtvfHwobz1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkpO2kucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChvLHQsdGhpcy52aWV3KS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKGkpO3JldHVybiBzfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKCgoKT0+e2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbm5vdGF0aW9ucyllLnB1c2goci5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChlKS50aGVuKChmdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgdD1bXTtsZXQgYTtmb3IoY29uc3QgbiBvZiBlKWlmKG4paWYobiBpbnN0YW5jZW9mIHIuUG9wdXBBbm5vdGF0aW9uKXthfHwoYT1bXSk7YS5wdXNoKG4pfWVsc2UgdC5wdXNoKG4pO2EmJnQucHVzaCguLi5hKTtyZXR1cm4gdH0pKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX3BhcnNlZEFubm90YXRpb25zIixlKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT0oMCxpLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCxuLlBhZ2VBY3Rpb25FdmVudFR5cGUpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLGUpfX10LlBhZ2U9UGFnZTtjb25zdCB2PW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLEY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxPPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsYT0xMDI0LHI9ITEpe2NvbnN0IG49dC5sZW5ndGgsaT1lLnBlZWtCeXRlcyhhKSxzPWkubGVuZ3RoLW47aWYoczw9MClyZXR1cm4hMTtpZihyKXtjb25zdCBhPW4tMTtsZXQgcj1pLmxlbmd0aC0xO2Zvcig7cj49YTspe2xldCBzPTA7Zm9yKDtzPG4mJmlbci1zXT09PXRbYS1zXTspcysrO2lmKHM+PW4pe2UucG9zKz1yLWE7cmV0dXJuITB9ci0tfX1lbHNle2xldCBhPTA7Zm9yKDthPD1zOyl7bGV0IHI9MDtmb3IoO3I8biYmaVthK3JdPT09dFtyXTspcisrO2lmKHI+PW4pe2UucG9zKz1hO3JldHVybiEwfWErK319cmV0dXJuITF9dC5QREZEb2N1bWVudD1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBuLkludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBrLlhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgYT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKythLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBoLkNhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPWYuTGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShlKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtmaW5kKGUsTykmJih0PWUucG9zKzYtZS5zdGFydCl9ZWxzZXtjb25zdCBhPTEwMjQscj1GLmxlbmd0aDtsZXQgbj0hMSxzPWUuZW5kO2Zvcig7IW4mJnM+MDspe3MtPWEtcjtzPDAmJihzPTApO2UucG9zPXM7bj1maW5kKGUsRixhLCEwKX1pZihuKXtlLnNraXAoOSk7bGV0IGE7ZG97YT1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkoYSkpO2xldCByPSIiO2Zvcig7YT49MzImJmE8PTU3Oyl7cis9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQociwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsdikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHYubGVuZ3RoKTtsZXQgdCxhPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZhLmxlbmd0aDw3OylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2kuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoYSk/dGhpcy5fdmVyc2lvbj1hOigwLG4ud2FybikoYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX1faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLHQ9MCl7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KChlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXsoMCxuLndhcm4pKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT0oMCxzLmlzTmFtZSkoZS5nZXQoIkZUIiksIlNpZyIpLHI9ZS5nZXQoIlJlY3QiKSxpPUFycmF5LmlzQXJyYXkocikmJnIuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGEmJml9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksYT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2FbInhkcDp4ZHAiXT10O3JldHVybiBhfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9Mil7bGV0IG47bj0wPT09ZT8ieGRwOnhkcCI6ZT09PXItMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWEuaGFzT3duUHJvcGVydHkobikpY29udGludWU7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO2kgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFpLmlzRW1wdHkmJihhW25dPWkpfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgYT1lW3RdO2lmKGEpdHJ5e2NvbnN0IGU9e1t0XTooMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSl9O3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IGQuRGF0YXNldFJlYWRlcihlKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYocil0cnl7dFthXT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRmFjdG9yeSIsZT9uZXcgeC5YRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyBsb2FkWGZhSW1hZ2VzKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRLZXlzKCksYT1uZXcgcC5PYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgYS5sb2FkKCk7Y29uc3Qgcj1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoYSk7dCBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmci5zZXQoYSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMocil9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgcj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGM9bmV3IHAuT2JqZWN0TG9hZGVyKHIsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCBjLmxvYWQoKTtjb25zdCBsPXIuZ2V0KCJGb250Iik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO2gudXNlU3lzdGVtRm9udHM9ITE7Y29uc3QgdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmh9KSxkPW5ldyBtLk9wZXJhdG9yTGlzdCxmPVtdLGc9e2dldCBmb250KCl7cmV0dXJuIGYuYXQoLTEpfSxzZXQgZm9udChlKXtmLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSx5PW5ldyBNYXA7bC5mb3JFYWNoKCgoZSx0KT0+e3kuc2V0KGUsdCl9KSk7Y29uc3Qgdz1bXTtmb3IoY29uc3RbZSxhXW9mIHkpe2NvbnN0IG89YS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShvIGluc3RhbmNlb2Ygcy5EaWN0KSljb250aW51ZTtsZXQgYz1vLmdldCgiRm9udEZhbWlseSIpO2M9Yy5yZXBsYWNlKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGw9e2ZvbnRGYW1pbHk6Yyxmb250V2VpZ2h0Om8uZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LW8uZ2V0KCJJdGFsaWNBbmdsZSIpfTsoMCxpLnZhbGlkYXRlQ1NTRm9udCkobCkmJncucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChlKSwxXSxudWxsLGQsdCxnLG51bGwsbCkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTtjb25zdCBTPXRoaXMueGZhRmFjdG9yeS5zZXRGb250cyhmKTtpZighUylyZXR1cm47aC5pZ25vcmVFcnJvcnM9ITA7dy5sZW5ndGg9MDtmLmxlbmd0aD0wO2NvbnN0IHg9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBTKSgwLG8uZ2V0WGZhRm9udE5hbWUpKGAke2V9LVJlZ3VsYXJgKXx8eC5hZGQoZSk7eC5zaXplJiZTLnB1c2goIlBkZkpTLUZhbGxiYWNrIik7Zm9yKGNvbnN0IGUgb2YgUylpZigheC5oYXMoZSkpZm9yKGNvbnN0IGEgb2Zbe25hbWU6IlJlZ3VsYXIiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJCb2xkIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiSXRhbGljIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZToxMn0se25hbWU6IkJvbGRJdGFsaWMiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjEyfV0pe2NvbnN0IGk9YCR7ZX0tJHthLm5hbWV9YCxjPSgwLG8uZ2V0WGZhRm9udERpY3QpKGkpO3cucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChpKSwxXSxudWxsLGQsdCxnLGMse2ZvbnRGYW1pbHk6ZSxmb250V2VpZ2h0OmEuZm9udFdlaWdodCxpdGFsaWNBbmdsZTphLml0YWxpY0FuZ2xlfSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoZix4KX1hc3luYyBzZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy5fdmVyc2lvbn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHQ9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCF0KXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IG49dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPjB8fG4gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFuLmlzRW1wdHk7Y29uc3QgaT0hISgxJnQuZ2V0KCJTaWdGbGFncyIpKSxzPWkmJnRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoYSk7ZS5oYXNBY3JvRm9ybT1yJiYhcztlLmhhc1NpZ25hdHVyZXM9aX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCByPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2Ygcil7ZVthXT0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShyKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKHIgaW5zdGFuY2VvZiBzLk5hbWUpe2VbYV09cjtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCB0O3N3aXRjaCh0eXBlb2Ygcil7Y2FzZSJzdHJpbmciOnQ9KDAsbi5zdHJpbmdUb1BERlN0cmluZykocik7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6dD1yO2JyZWFrO2RlZmF1bHQ6ciBpbnN0YW5jZW9mIHMuTmFtZSYmKHQ9cil9aWYodm9pZCAwPT09dCl7KDAsbi53YXJuKShgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCk7Y29udGludWV9ZS5DdXN0b218fChlLkN1c3RvbT1PYmplY3QuY3JlYXRlKG51bGwpKTtlLkN1c3RvbVthXT10O2NvbnRpbnVlfSgwLG4ud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGE7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9KDAsbi5zdHJpbmdUb0J5dGVzKShlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihhPSgwLG4uc3RyaW5nVG9CeXRlcykoZVsxXSkpfWVsc2UgdD0oMCxsLmNhbGN1bGF0ZU1ENSkodGhpcy5zdHJlYW0uZ2V0Qnl0ZVJhbmdlKDAsMTAyNCksMCwxMDI0KTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGE/aGV4U3RyaW5nKGEpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246YSx4cmVmOnJ9PXRoaXMsaT1zLlJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2Ygcy5SZWYmJihhPWF3YWl0IHIuZmV0Y2hBc3luYyhhKSk7aWYoKDAscy5pc05hbWUpKGEsIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpeygwLG4ud2FybikoYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLl9wYWdlUHJvbWlzZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Om59PXRoaXM7bGV0IGk7aT1uP1Byb21pc2UucmVzb2x2ZShbcy5EaWN0LmVtcHR5LG51bGxdKTpyJiZyLnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6YS5nZXRQYWdlRGljdChlKTtpPWkudGhlbigoKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bn0pKSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6YX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IHI7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGEuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksYS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjtyPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihyPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2Uoci0xKX1jYXRjaChzKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKHItMSk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7aWYocyBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247KDAsbi53YXJuKShgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBvO3RyeXtvPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFtyLG5dXW9mIG8pe2xldCBpO2lmKHIgaW5zdGFuY2VvZiBFcnJvcil7aT1Qcm9taXNlLnJlamVjdChyKTtpLmNhdGNoKCgoKT0+e30pKX1lbHNlIGk9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxpKX10LnNldEFjdHVhbE51bVBhZ2VzKG8uc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOigwLHUuY2xlYXJHbG9iYWxDYWNoZXMpKCl9X2NvbGxlY3RGaWVsZE9iamVjdHMoZSx0LGEpe2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpLmdldCgiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWEuaGFzKGUpfHxhLnNldChlLFtdKTthLmdldChlKS5wdXNoKHIuQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMCkudGhlbigoZT0+ZSYmZS5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IHQ9aS5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixuXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKG4pLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlfHwhZS5oYXMoIkNPIikpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3B1cEFubm90YXRpb249dC5NYXJrdXBBbm5vdGF0aW9uPXQuQW5ub3RhdGlvbkZhY3Rvcnk9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9dC5Bbm5vdGF0aW9uPXZvaWQgMDt0LmdldFF1YWRQb2ludHM9Z2V0UXVhZFBvaW50czt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMTEpLHM9YSgzKSxvPWEoNjMpLGM9YSg1KSxsPWEoNTgpLGg9YSg2NyksdT1hKDEyKSxkPWEoNzApLGY9YSg3MyksZz1hKDYwKSxwPWEoOCksbT1hKDc0KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixuKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksbj90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoKFtpLHMsbyxjLGxdKT0+YS5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsaSxvLGMsbixsXSkpKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxpLG8sYz1udWxsLGwsaCx1PS0xKXtjb25zdCBkPWUuZmV0Y2hJZlJlZih0KTtpZighKGQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBmPXQgaW5zdGFuY2VvZiBzLlJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7aS5jcmVhdGVPYmpJZCgpfWA7bGV0IGc9ZC5nZXQoIlN1YnR5cGUiKTtnPWcgaW5zdGFuY2VvZiBzLk5hbWU/Zy5uYW1lOm51bGw7Y29uc3QgcD17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOmEsYWNyb0Zvcm06byBpbnN0YW5jZW9mIHMuRGljdD9vOnMuRGljdC5lbXB0eSxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLHBhZ2VJbmRleDp1fTtzd2l0Y2goZyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpkLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2Ygcy5OYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24ocCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24ocCl9KDAsci53YXJuKShgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKHApO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKHApO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKHApO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKHApO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKHApO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24ocCk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihwKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKHApO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24ocCk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24ocCk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24ocCk7ZGVmYXVsdDpofHwoZz8oMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtnfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYCk6KDAsci53YXJuKSgiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKSk7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IHI9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4tMTtjb25zdCBuPXIuZ2V0UmF3KCJQIik7aWYoIShuIGluc3RhbmNlb2Ygcy5SZWYpKXJldHVybi0xO3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW25dKX1jYXRjaChlKXsoMCxyLndhcm4pKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCk7cmV0dXJuLTF9fXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEpe2NvbnN0IG49ZS54cmVmO2xldCBpO2NvbnN0IGM9W10sbD1bXTtmb3IoY29uc3QgaCBvZiBhKXN3aXRjaChoLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6aWYoIWkpe2NvbnN0IGU9bmV3IHMuRGljdChuKTtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Y29uc3QgdD1bXTtpPW4uZ2V0TmV3UmVmKCk7KDAsby53cml0ZU9iamVjdCkoaSxlLHQsbnVsbCk7Yy5wdXNoKHtyZWY6aSxkYXRhOnQuam9pbigiIil9KX1sLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixoLGMse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6bC5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGgsYykpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChsKSxkZXBlbmRlbmNpZXM6Y319c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49ZS54cmVmLGk9W107Zm9yKGNvbnN0IHMgb2YgYSlzd2l0Y2gocy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSByLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmkucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scyx7ZXZhbHVhdG9yOmUsdGFzazp0fSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6aS5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scykpfXJldHVybiBQcm9taXNlLmFsbChpKX19O2Z1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGE9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2lmKCFlLmhhcygiUXVhZFBvaW50cyIpKXJldHVybiBudWxsO2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPVtdO2ZvcihsZXQgZT0wLG49YS5sZW5ndGgvODtlPG47ZSsrKXtyLnB1c2goW10pO2ZvcihsZXQgbj04KmUsaT04KmUrODtuPGk7bis9Mil7Y29uc3QgaT1hW25dLHM9YVtuKzFdO2lmKG51bGwhPT10JiYoaTx0WzBdfHxpPnRbMl18fHM8dFsxXXx8cz50WzNdKSlyZXR1cm4gbnVsbDtyW2VdLnB1c2goe3g6aSx5OnN9KX19cmV0dXJuIHIubWFwKChlPT57Y29uc3RbdCxhLHIsbl09ZS5yZWR1Y2UoKChbZSx0LGEscl0sbik9PltNYXRoLm1pbihlLG4ueCksTWF0aC5tYXgodCxuLngpLE1hdGgubWluKGEsbi55KSxNYXRoLm1heChyLG4ueSldKSxbTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUlOX1ZBTFVFLE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1JTl9WQUxVRV0pO3JldHVyblt7eDp0LHk6bn0se3g6YSx5Om59LHt4OnQseTpyfSx7eDphLHk6cn1dfSkpfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3RbbixpLHMsb109ci5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsYSk7aWYobj09PXN8fGk9PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1uKSxsPShlWzNdLWVbMV0pLyhvLWkpO3JldHVybltjLDAsMCxsLGVbMF0tbipjLGVbMV0taSpsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9ZS5kaWN0O3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgYT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoYSk7dGhpcy5zZXRSb3RhdGlvbihhKTt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITF9O2lmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3QgYT10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSl0IGluc3RhbmNlb2Ygcy5SZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9KDAsbi5jb2xsZWN0QWN0aW9ucykoZS54cmVmLHQsci5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbH1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLklOVklTSUJMRSkmJiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5OT1ZJRVcpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuUFJJTlQpJiYhdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKX1tdXN0QmVWaWV3ZWQoZSl7Y29uc3QgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxyLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWUmJmUuZ2V0KHRoaXMuZGF0YS5pZCk7cmV0dXJuIHQmJnZvaWQgMCE9PXQucHJpbnQ/dC5wcmludDp0aGlzLnByaW50YWJsZX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLGwuYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MH1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe0FycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD90aGlzLnJlY3RhbmdsZT1yLlV0aWwubm9ybWFsaXplUmVjdChlKTp0aGlzLnJlY3RhbmdsZT1bMCwwLDAsMF19c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9KDAsci53YXJuKShgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUpe3RoaXMucm90YXRpb249MDtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtsZXQgdD1lLmdldCgiUiIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIodCkmJjAhPT10KXt0JT0zNjA7dDwwJiYodCs9MzYwKTt0JTkwPT0wJiYodGhpcy5yb3RhdGlvbj10KX19fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIiksYT10LmdldCgiVHlwZSIpO2lmKCFhfHwoMCxzLmlzTmFtZSkoYSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZihhIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9YTtyZXR1cm59aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtyIGluc3RhbmNlb2Ygcy5OYW1lJiZhLmhhcyhyLm5hbWUpJiYodGhpcy5hcHBlYXJhbmNlPWEuZ2V0KHIubmFtZSkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2Ygcy5OYW1lPygwLHIud2FybikoInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBzLkRpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgZi5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7Y29uc3Qgbz10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgcC5TdHJpbmdTdHJlYW0oIiIpO2MuZGljdD1uZXcgcy5EaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxkPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGY9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sbT1nZXRUcmFuc2Zvcm1NYXRyaXgoby5yZWN0LGQsZiksYj1uZXcgZy5PcGVyYXRvckxpc3Q7bGV0IHk7dGhpcy5vYyYmKHk9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHldKTtiLmFkZE9wKHIuT1BTLmJlZ2luQW5ub3RhdGlvbixbby5pZCxvLnJlY3QsbSxmLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmMsdGFzazp0LHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDpiLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2IuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09eSYmYi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpiLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxuPVtdLGk9W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcyl7aS5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7bi5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpyLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGNvbWJpbmVUZXh0SXRlbXM6ITAsc2luazpzLHZpZXdCb3g6YX0pO3RoaXMucmVzZXQoKTtpLmxlbmd0aCYmbi5wdXNoKGkuam9pbigiIikpO24ubGVuZ3RoPjAmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9bil9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7KDAsci53YXJuKSgiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IG49bmV3IHMuUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1Bbm5vdGF0aW9uO2NsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDt0aGlzLmRhc2hBcnJheT1bM107dGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPTA7dGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz0wfXNldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IGE9KHRbMl0tdFswXSkvMixuPSh0WzNdLXRbMV0pLzI7aWYoYT4wJiZuPjAmJihlPmF8fGU+bikpeygwLHIud2FybikoYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlVOREVSTElORX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7bGV0IGE9ITAscj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihyPSExKX1pZihhJiYhcil7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKHMuTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPUFubm90YXRpb25Cb3JkZXJTdHlsZTtjbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PWUuZGljdDtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIHMuUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2Ygcy5OYW1lP2EubmFtZTpyLkFubm90YXRpb25SZXBseVR5cGUuUkVQTFl9aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PXIuQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO3RoaXMuZGF0YS5oYXNQb3B1cD1lLmhhcygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7dGhpcy5kYXRhLmhhc1BvcHVwPXQuaGFzKCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTpuLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6Y30pe2xldCBsPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1JTl9WQUxVRSxkPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgZj1bInEiXTt0JiZmLnB1c2godCk7YSYmZi5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSBSR2ApO3ImJmYucHVzaChgJHtyWzBdfSAke3JbMV19ICR7clsyXX0gcmdgKTtsZXQgZz10aGlzLmRhdGEucXVhZFBvaW50cztnfHwoZz1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIGcpe2NvbnN0W3QsYSxyLG5dPWMoZixlKTtsPU1hdGgubWluKGwsdCk7dT1NYXRoLm1heCh1LGEpO2g9TWF0aC5taW4oaCxyKTtkPU1hdGgubWF4KGQsbil9Zi5wdXNoKCJRIik7Y29uc3QgbT1uZXcgcy5EaWN0KGUpLGI9bmV3IHMuRGljdChlKTtiLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtjb25zdCB5PW5ldyBwLlN0cmluZ1N0cmVhbShmLmpvaW4oIiAiKSk7eS5kaWN0PWI7bS5zZXQoIkZtMCIseSk7Y29uc3Qgdz1uZXcgcy5EaWN0KGUpO24mJncuc2V0KCJCTSIscy5OYW1lLmdldChuKSk7Im51bWJlciI9PXR5cGVvZiBpJiZ3LnNldCgiQ0EiLGkpOyJudW1iZXIiPT10eXBlb2YgbyYmdy5zZXQoImNhIixvKTtjb25zdCBTPW5ldyBzLkRpY3QoZSk7Uy5zZXQoIkdTMCIsdyk7Y29uc3QgeD1uZXcgcy5EaWN0KGUpO3guc2V0KCJFeHRHU3RhdGUiLFMpO3guc2V0KCJYT2JqZWN0IixtKTtjb25zdCBrPW5ldyBzLkRpY3QoZSk7ay5zZXQoIlJlc291cmNlcyIseCk7Y29uc3QgQz10aGlzLmRhdGEucmVjdD1bbCxoLHUsZF07ay5zZXQoIkJCb3giLEMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgcC5TdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PWs7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSx5KX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBuPWUuZ2V0TmV3UmVmKCksaT1lLmdldE5ld1JlZigpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6aX0pLGM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxyKSxsPVtdO2xldCBoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKGksYyxsLGgpO2EucHVzaCh7cmVmOmksZGF0YTpsLmpvaW4oIiIpfSk7bC5sZW5ndGg9MDtoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKG4scyxsLGgpO3JldHVybntyZWY6bixkYXRhOmwuam9pbigiIil9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwOnJ9KTtyZXR1cm4gbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjplfSl9fXQuTWFya3VwQW5ub3RhdGlvbj1NYXJrdXBBbm5vdGF0aW9uO2NsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0LGE9dGhpcy5kYXRhO3RoaXMucmVmPWUucmVmO2EuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ7dm9pZCAwPT09YS5maWVsZE5hbWUmJihhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PWEuYWN0aW9ucyYmKGEuYWN0aW9ucz0oMCxuLmNvbGxlY3RBY3Rpb25zKShlLnhyZWYsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO2EuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTthLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7YS5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PWEuZGVmYXVsdEZpZWxkVmFsdWUmJihhLmZpZWxkVmFsdWU9YS5kZWZhdWx0RmllbGRWYWx1ZSk7YS5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTtjb25zdCBsPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIGw/bDoiIjthLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKTtjb25zdCBoPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZUIn0pO2EuZmllbGRUeXBlPWggaW5zdGFuY2VvZiBzLk5hbWU/aC5uYW1lOm51bGw7Y29uc3QgdT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEUiJ9KSxkPWUuYWNyb0Zvcm0uZ2V0KCJEUiIpLGY9dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLmFwcGVhcmFuY2UuZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczp1LGFjcm9Gb3JtUmVzb3VyY2VzOmQsYXBwZWFyYW5jZVJlc291cmNlczpmLG1lcmdlZFJlc291cmNlczpzLkRpY3QubWVyZ2Uoe3hyZWY6ZS54cmVmLGRpY3RBcnJheTpbdSxmLGRdLG1lcmdlU3ViRGljdHM6ITB9KX07YS5maWVsZEZsYWdzPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhLmZpZWxkRmxhZ3MpfHxhLmZpZWxkRmxhZ3M8MCkmJihhLmZpZWxkRmxhZ3M9MCk7YS5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVBRE9OTFkpO2EucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFUVVJUkVEKTthLmhpZGRlbj10aGlzLl9oYXNGbGFnKGEuYW5ub3RhdGlvbkZsYWdzLHIuQW5ub3RhdGlvbkZsYWcuSElEREVOKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpKSk6ZSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1zdGF0aWMgX2dldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19Z2V0Um90YXRpb25NYXRyaXgoZSl7Y29uc3QgdD1lP2UuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwO2xldCBhPXQmJnQucm90YXRpb247dm9pZCAwPT09YSYmKGE9dGhpcy5yb3RhdGlvbik7aWYoMD09PWEpcmV0dXJuIHIuSURFTlRJVFlfTUFUUklYO2NvbnN0IG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0saT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4gV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoYSxuLGkpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtjb25zdCB0PWU/ZS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGE9dCYmdC5yb3RhdGlvbjt2b2lkIDA9PT1hJiYoYT10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IHI9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT1hfHwxODA9PT1hP2AwIDAgJHtyfSAke259IHJlYDpgMCAwICR7bn0gJHtyfSByZWA7bGV0IG89IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihvPWAkeygwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtzfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe28rPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHsoMCxpLmdldFBkZkNvbG9yKSh0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtzfSBTIGB9cmV0dXJuIG99YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7aWYobiYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikpcmV0dXJue29wTGlzdDpuZXcgZy5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtjb25zdCBvPW5ldyBnLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGM9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgaDt0aGlzLm9jJiYoaD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWgmJm8uYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsaF0pO28uYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsbCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpLCExXSk7Y29uc3QgdT1uZXcgcC5TdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp1LHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpvfSk7by5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT1oJiZvLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3JldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLEFycmF5LmZyb20odGhpcy5ib3JkZXJDb2xvciwoZT0+ZS8yNTUpKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsQXJyYXkuZnJvbSh0aGlzLmJhY2tncm91bmRDb2xvciwoZT0+ZS8yNTUpKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hc3luYyBzYXZlKGUsdCxhKXtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGk9biYmbi52YWx1ZSxjPW4mJm4ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1jKXJldHVybiBudWxsO2k9aXx8dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09YyYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmkubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZpLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbik7bGV0IGw9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSk7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IGQ9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZj17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh1LmdldCgiVCIpfHwiIiksdmFsdWU6aX0sZz1oLmdldE5ld1JlZigpLHA9bmV3IHMuRGljdChoKTtwLnNldCgiTiIsZyk7Y29uc3QgbT1oLmVuY3J5cHQ7bGV0IGI9bnVsbCx5PW51bGw7aWYobSl7Yj1tLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTt5PW0uY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGcubnVtLGcuZ2VuKTtsPXkuZW5jcnlwdFN0cmluZyhsKX1jb25zdCBlbmNvZGVyPWU9PigwLHIuaXNBc2NpaSkoZSk/ZTooMCxyLnN0cmluZ1RvVVRGMTZCRVN0cmluZykoZSk7dS5zZXQoIlYiLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoZW5jb2Rlcik6ZW5jb2RlcihpKSk7dS5zZXQoIkFQIixwKTt1LnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3Qgdz10aGlzLl9nZXRNS0RpY3QoYyk7dyYmdS5zZXQoIk1LIix3KTtjb25zdCBTPW5ldyBzLkRpY3QoaCk7Uy5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO1Muc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO1Muc2V0KCJSZXNvdXJjZXMiLHRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhoKSk7Uy5zZXQoIkJCb3giLGQpO2NvbnN0IHg9dGhpcy5nZXRSb3RhdGlvbk1hdHJpeChhKTt4IT09ci5JREVOVElUWV9NQVRSSVgmJlMuc2V0KCJNYXRyaXgiLHgpO2NvbnN0IGs9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKHUsayxiKTtrLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBDPVtgJHtnLm51bX0gJHtnLmdlbn0gb2JqXG5gXTsoMCxvLndyaXRlRGljdCkoUyxDLHkpO0MucHVzaCgiIHN0cmVhbVxuIixsLCJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOmsuam9pbigiIikseGZhOmZ9LHtyZWY6ZyxkYXRhOkMuam9pbigiIikseGZhOm51bGx9XX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSlyZXR1cm4gbnVsbDtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IHMsbztpZihuKXtzPW4uZm9ybWF0dGVkVmFsdWV8fG4udmFsdWU7bz1uLnJvdGF0aW9ufWlmKHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2lmKHZvaWQgMD09PXMpe3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXMpcmV0dXJuIiJ9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTsoMCxyLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltKCk7aWYoIiI9PT1zKXJldHVybiIiO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBjPS0xO3RoaXMuZGF0YS5tdWx0aUxpbmUmJihjPXMuc3BsaXQoL1xyXG58XHJ8XG4vKS5sZW5ndGgpO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGg9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1vJiYyNzAhPT1vfHwoW2gsbF09W2wsaF0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IHU9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKSxbZCxmXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLGgtNCxzLHUsYyk7bGV0IGc9dS5kZXNjZW50O2lzTmFOKGcpJiYoZz0wKTtjb25zdCBwPU1hdGgubWluKE1hdGguZmxvb3IoKGwtZikvMiksMikrTWF0aC5hYnMoZykqZixtPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZCxzLHUsZixoLGwsbSwyLHAsYSk7Y29uc3QgYj11LmVuY29kZVN0cmluZyhzKS5qb2luKCIiKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoZCx1LGIsaCwyLHAsYSk7Y29uc3QgeT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZigwPT09bXx8bT4yKXJldHVybmAvVHggQk1DIHEgJHt5fUJUIGArZCtgIDEgMCAwIDEgMiAke3B9IFRtICgkeygwLHIuZXNjYXBlU3RyaW5nKShiKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7eX1CVCBgK2QrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQoYix1LGYsaCxtLDIscCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxhLHIpe2NvbnN0IG49bmV3IGcuT3BlcmF0b3JMaXN0LGk9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOm8sZm9udFNpemU6Y309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbbyYmcy5OYW1lLmdldChvKSxjXSxudWxsLG4sdCxpLG51bGwpO3JldHVybiBpLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsYSxuLHMpe2xldHtmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKCFvKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3QgaT10aGlzLl9nZXRUZXh0V2lkdGgoYSxuKTtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3IuTElORV9GQUNUT1IsdC9pKSl9ZWxzZXtjb25zdCBpPWEuc3BsaXQoL1xyXG4/fFxuLyksYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW4uZW5jb2RlU3RyaW5nKGUpLmpvaW4oIiIpLGE9bi5jaGFyc1RvR2x5cGhzKHQpLHI9bi5nZXRDaGFyUG9zaXRpb25zKHQpO2MucHVzaCh7bGluZTp0LGdseXBoczphLHBvc2l0aW9uczpyfSl9Y29uc3QgaXNUb29CaWc9YT0+e2xldCByPTA7Zm9yKGNvbnN0IGkgb2YgYyl7cis9dGhpcy5fc3BsaXRMaW5lKG51bGwsbixhLHQsaSkubGVuZ3RoKmE7aWYocj5lKXJldHVybiEwfXJldHVybiExfTtvPTEyO2xldCBsPW8qci5MSU5FX0ZBQ1RPUixoPU1hdGgucm91bmQoZS9sKTtoPU1hdGgubWF4KGgscyk7Zm9yKDs7KXtsPWUvaDtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhsL3IuTElORV9GQUNUT1IpO2lmKCFpc1Rvb0JpZyhvKSlicmVhaztoKyt9fWNvbnN0e2ZvbnROYW1lOmMsZm9udENvbG9yOmx9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9KDAsaS5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSkoe2ZvbnRTaXplOm8sZm9udE5hbWU6Yyxmb250Q29sb3I6bH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxvXX1fcmVuZGVyVGV4dChlLHQsYSxpLHMsbyxjKXtsZXQgbDtpZigxPT09cyl7bD0oaS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PXMpe2w9aS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLW99ZWxzZSBsPW87bD0oMCxuLm51bWJlclRvU3RyaW5nKShsKTtyZXR1cm5gJHtsfSAke2M9KDAsbi5udW1iZXJUb1N0cmluZykoYyl9IFRkICgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOnJ9PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSYmdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZTtpZighbilyZXR1cm4gdHx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKG4pKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2Ygcy5EaWN0JiZhLmhhcyhuKSl7Y29uc3Qgcj1uZXcgcy5EaWN0KGUpO3Iuc2V0KG4sYS5nZXRSYXcobikpO2NvbnN0IGk9bmV3IHMuRGljdChlKTtpLnNldCgiRm9udCIscik7cmV0dXJuIHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbaSx0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCBpPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApO3RoaXMuZGF0YS5tYXhMZW49aTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLGkscyxvLGMpe2NvbnN0IGw9KDAsbi5udW1iZXJUb1N0cmluZykoaS90aGlzLmRhdGEubWF4TGVuKSxoPVtdLHU9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgdSloLnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGMpfUJUIGArZStgIDEgMCAwIDEgJHtzfSAke299IFRtICR7aC5qb2luKGAgJHtsfSAwIFRkIGApfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGEscixuLGkscyxvLGMsbCl7Y29uc3QgaD10LnNwbGl0KC9cclxuP3xcbi8pLHU9W10sZD1uLTIqbztmb3IoY29uc3QgZSBvZiBoKXtjb25zdCB0PXRoaXMuX3NwbGl0TGluZShlLGEscixkKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PTA9PT11Lmxlbmd0aD9vOjA7dS5wdXNoKHRoaXMuX3JlbmRlclRleHQoZSxhLHIsbixzLHQsLXIpKX19Y29uc3QgZj11LmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGwpfUJUIGArZStgIDEgMCAwIDEgMCAke2l9IFRtICR7Zn0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixuPXt9KXtlPW4ubGluZXx8dC5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7Y29uc3QgaT1uLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKGkubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBzPW4ucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxjPVtdO2xldCBsPS0xLGg9LTEsdT0tMSxkPTAsZj0wO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxuXT1zW3RdLGc9aVt0XSxwPWcud2lkdGgqbztpZigiICI9PT1nLnVuaWNvZGUpaWYoZitwPnIpe2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wO2w9LTE7dT0tMX1lbHNle2YrPXA7bD1hO2g9bjt1PXR9ZWxzZSBpZihmK3A+cilpZigtMSE9PWwpe2MucHVzaChlLnN1YnN0cmluZyhkLGgpKTtkPWg7dD11KzE7bD0tMTtmPTB9ZWxzZXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cH1lbHNlIGYrPXB9ZDxlLmxlbmd0aCYmYy5wdXNoKGUuc3Vic3RyaW5nKGQsZS5sZW5ndGgpKTtyZXR1cm4gY31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5wdXNoQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLCExLGkpO2xldCBzPW51bGwsbz1udWxsO2lmKGkpe2NvbnN0IGU9aS5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO289ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7bnVsbD09cyYmKHM9dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTtjb25zdCBjPXM/dGhpcy5jaGVja2VkQXBwZWFyYW5jZTp0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U7aWYoYyl7Y29uc3Qgcz10aGlzLmFwcGVhcmFuY2UsbD1jLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpfHxyLklERU5USVRZX01BVFJJWDtvJiZjLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSkpO3RoaXMuYXBwZWFyYW5jZT1jO2NvbnN0IGg9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7dGhpcy5hcHBlYXJhbmNlPXM7Yy5kaWN0LnNldCgiTWF0cml4IixsKTtyZXR1cm4gaH1yZXR1cm57b3BMaXN0Om5ldyBnLk9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGEpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKTpudWxsfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaT1uJiZuLnJvdGF0aW9uLGM9biYmbi52YWx1ZTtpZih2b2lkIDA9PT1pKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBoPXtwYXRoOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGwuZ2V0KCJUIil8fCIiKSx2YWx1ZTpjP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sdT1zLk5hbWUuZ2V0KGM/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtsLnNldCgiViIsdSk7bC5zZXQoIkFTIix1KTtsLnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3QgZD10aGlzLl9nZXRNS0RpY3QoaSk7ZCYmbC5zZXQoIk1LIixkKTtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2xldCBnPW51bGw7ZiYmKGc9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IHA9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwscCxnKTtwLnB1c2goIlxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGk9biYmbi5yb3RhdGlvbixjPW4mJm4udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09YylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PWMpcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1jJiYoYz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKShsLmdldCgiVCIpfHwiIiksdmFsdWU6Yz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7bGV0IGQ9bnVsbDtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2lmKGMpaWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzLlJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO2xldCBhPW51bGw7ZiYmKGE9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpO3Quc2V0KCJWIix1KTtkPVtgJHt0aGlzLnBhcmVudC5udW19ICR7dGhpcy5wYXJlbnQuZ2VufSBvYmpcbmBdOygwLG8ud3JpdGVEaWN0KSh0LGQsYSk7ZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwsbSxwKTttLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBiPVt7cmVmOnRoaXMucmVmLGRhdGE6bS5qb2luKCIiKSx4ZmE6aH1dO251bGwhPT1kJiZiLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmQuam9pbigiIikseGZhOm51bGx9KTtyZXR1cm4gYn1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxpPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLG89WzAsMCxhLGldLGM9LjgqTWF0aC5taW4oYSxpKTtsZXQgbCxoO2lmKCJjaGVjayI9PT10KXtsPXt3aWR0aDouNzU1KmMsaGVpZ2h0Oi43MDUqY307aD0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtsPXt3aWR0aDouNzkxKmMsaGVpZ2h0Oi43MDUqY307aD0ibCJ9ZWxzZSgwLHIudW5yZWFjaGFibGUpKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IHU9YHEgQlQgL1BkZkpzWmFEYiAke2N9IFRmIDAgZyAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChhLWwud2lkdGgpLzIpfSAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChpLWwuaGVpZ2h0KS8yKX0gVGQgKCR7aH0pIFRqIEVUIFFgLGQ9bmV3IHMuRGljdChlLnhyZWYpO2Quc2V0KCJGb3JtVHlwZSIsMSk7ZC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7ZC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7ZC5zZXQoIkJCb3giLG8pO2Quc2V0KCJNYXRyaXgiLFsxLDAsMCwxLDAsMF0pO2Quc2V0KCJMZW5ndGgiLHUubGVuZ3RoKTtjb25zdCBmPW5ldyBzLkRpY3QoZS54cmVmKSxnPW5ldyBzLkRpY3QoZS54cmVmKTtnLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2Yuc2V0KCJGb250IixnKTtkLnNldCgiUmVzb3VyY2VzIixmKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBwLlN0cmluZ1N0cmVhbSh1KTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlLmRpY3Q9ZDt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9X3Byb2Nlc3NDaGVja0JveChlKXtjb25zdCB0PWUuZGljdC5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IG49bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLGk9YS5nZXRLZXlzKCk7aWYoMD09PWkubGVuZ3RoKWkucHVzaCgiT2ZmIixuKTtlbHNlIGlmKDE9PT1pLmxlbmd0aCkiT2ZmIj09PWlbMF0/aS5wdXNoKG4pOmkudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihpLmluY2x1ZGVzKG4pKXtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixuKX1lbHNle2NvbnN0IGU9aS5maW5kKChlPT4iT2ZmIiE9PWUpKTtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixlKX1pLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9aVsxXTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSl8fG51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KCJPZmYiKXx8bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIHMuTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZihyIGluc3RhbmNlb2Ygcy5EaWN0KXtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpfHxudWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCgiT2ZmIil8fG51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7aWYoZS5kaWN0LmhhcygiQSIpfHxlLmRpY3QuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hZS5kaWN0LmhhcygiQSIpJiYhZS5kaWN0LmhhcygiQUEiKTtoLkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9ZWxzZSgwLHIud2FybikoIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHQ9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWEuZmV0Y2hJZlJlZih0W2VdKSxuPUFycmF5LmlzQXJyYXkocik7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShuP2EuZmV0Y2hJZlJlZihyWzBdKTpyKSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4/YS5mZXRjaElmUmVmKHJbMV0pOnIpfX19InN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQk8pO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElTRUxFQ1QpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBzPW4ucm90YXRpb247bGV0IG89bi52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1vKXJldHVybiBudWxsO3ZvaWQgMD09PW8/bz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG8pfHwobz1bb10pO2xldCBjPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGw9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1zJiYyNzAhPT1zfHwoW2wsY109W2MsbF0pO2NvbnN0IGg9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHU9W107Zm9yKGxldCBlPTA7ZTxoO2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07by5pbmNsdWRlcyh0KSYmdS5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGQ9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZix7Zm9udFNpemU6Z309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihnKWY9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShjLTIpL2g7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZCk7aWYocj5hKXthPXI7dD1lfX1bZixnXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxsLTQsdCxkLC0xKX1jb25zdCBwPWcqci5MSU5FX0ZBQ1RPUixtPShwLWcpLzIsYj1NYXRoLmZsb29yKGMvcCk7bGV0IHk7aWYoMT09PXUubGVuZ3RoKXtjb25zdCBlPXVbMF07eT1lLWUlYn1lbHNlIHk9dS5sZW5ndGg/dVswXTowO2NvbnN0IHc9TWF0aC5taW4oeStiKzEsaCksUz1bIi9UeCBCTUMgcSIsYDEgMSAke2x9ICR7Y30gcmUgVyBuYF07aWYodS5sZW5ndGgpe1MucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiB1KXk8PWUmJmU8dyYmUy5wdXNoKGAxICR7Yy0oZS15KzEpKnB9ICR7bH0gJHtwfSByZSBmYCl9Uy5wdXNoKCJCVCIsZixgMSAwIDAgMSAwICR7Y30gVG1gKTtmb3IobGV0IGU9eTtlPHc7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09eT8yOjAscj1lPT09eT9tOjA7Uy5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxkLGcsbCwwLGEsLXArcikpfVMucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4gUy5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0O3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlRFWFQ7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5MSU5LO2NvbnN0IHQ9Z2V0UXVhZFBvaW50cyhlLmRpY3QsdGhpcy5yZWN0YW5nbGUpO3QmJih0aGlzLmRhdGEucXVhZFBvaW50cz10KTt0aGlzLmRhdGEuYm9yZGVyQ29sb3I9dGhpcy5kYXRhLmJvcmRlckNvbG9yfHx0aGlzLmRhdGEuY29sb3I7aC5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPUFVQO2xldCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKCF0KXsoMCxyLndhcm4pKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59Y29uc3QgYT10LmdldCgiU3VidHlwZSIpO3RoaXMuZGF0YS5wYXJlbnRUeXBlPWEgaW5zdGFuY2VvZiBzLk5hbWU/YS5uYW1lOm51bGw7Y29uc3Qgbj1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTt0aGlzLmRhdGEucGFyZW50SWQ9biBpbnN0YW5jZW9mIHMuUmVmP24udG9TdHJpbmcoKTpudWxsO2NvbnN0IGk9dC5nZXRBcnJheSgiUmVjdCIpO0FycmF5LmlzQXJyYXkoaSkmJjQ9PT1pLmxlbmd0aD90aGlzLmRhdGEucGFyZW50UmVjdD1yLlV0aWwubm9ybWFsaXplUmVjdChpKTp0aGlzLmRhdGEucGFyZW50UmVjdD1bMCwwLDAsMF07Y29uc3Qgbz10LmdldCgiUlQiKTsoMCxzLmlzTmFtZSkobyxyLkFubm90YXRpb25SZXBseVR5cGUuR1JPVVApJiYodD10LmdldCgiSVJUIikpO2lmKHQuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2lmKHQuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IodC5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsO2lmKCF0aGlzLnZpZXdhYmxlKXtjb25zdCBlPXQuZ2V0KCJGIik7dGhpcy5faXNWaWV3YWJsZShlKSYmdGhpcy5zZXRGbGFncyhlKX10aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKHQuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9fXQuUG9wdXBBbm5vdGF0aW9uPVBvcHVwQW5ub3RhdGlvbjtjbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkZSRUVURVhUfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7Y29sb3I6byxmb250U2l6ZTpjLHJlY3Q6bCxyb3RhdGlvbjpoLHVzZXI6dSx2YWx1ZTpkfT1lLGY9bmV3IHMuRGljdCh0KTtmLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpO2Yuc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2Yuc2V0KCJSZWN0IixsKTtjb25zdCBnPWAvSGVsdiAke2N9IFRmICR7KDAsaS5nZXRQZGZDb2xvcikobywhMCl9YDtmLnNldCgiREEiLGcpO2Yuc2V0KCJDb250ZW50cyIsZCk7Zi5zZXQoIkYiLDQpO2Yuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2Yuc2V0KCJSb3RhdGUiLGgpO3UmJmYuc2V0KCJUIiwoMCxyLnN0cmluZ1RvVVRGOFN0cmluZykodSkpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtmLnNldCgiQVAiLHApO2E/cC5zZXQoIk4iLGEpOnAuc2V0KCJOIixuKTtyZXR1cm4gZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6byxldmFsdWF0b3I6Yyx0YXNrOmx9PWEse2NvbG9yOmgsZm9udFNpemU6dSxyZWN0OmQscm90YXRpb246Zix2YWx1ZTpnfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYobyliLnNldCgiSGVsdiIsbyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2Iuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShjLGwse2ZvbnROYW1lOiJIZWx2ZXRpY2EiLGZvbnRTaXplOnV9LG0pLFt3LFMseCxrXT1kO2xldCBDPXgtdyx2PWstUztmJTE4MCE9MCYmKFtDLHZdPVt2LENdKTtjb25zdCBGPWcuc3BsaXQoIlxuIiksTz11LzFlMztsZXQgVD0tMS8wO2NvbnN0IE09W107Zm9yKGxldCBlIG9mIEYpe2U9eS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7TS5wdXNoKGUpO2xldCB0PTA7Y29uc3QgYT15LmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl0Kz1lLndpZHRoKk87VD1NYXRoLm1heChULHQpfWxldCBFPTE7VD5DJiYoRT1DL1QpO2xldCBEPTE7Y29uc3QgTj1yLkxJTkVfRkFDVE9SKnUsUj1yLkxJTkVfREVTQ0VOVF9GQUNUT1IqdSxMPU4qRi5sZW5ndGg7TD52JiYoRD12L0wpO2NvbnN0IGo9dSpNYXRoLm1pbihFLEQpLCQ9WyJxIixgMCAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoQyl9ICR7KDAsbi5udW1iZXJUb1N0cmluZykodil9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoditSKX0gVG0gMCBUYyAkeygwLGkuZ2V0UGRmQ29sb3IpKGgsITApfWAsYC9IZWx2ICR7KDAsbi5udW1iZXJUb1N0cmluZykoail9IFRmYF0sXz0oMCxuLm51bWJlclRvU3RyaW5nKShOKTtmb3IoY29uc3QgZSBvZiBNKSQucHVzaChgMCAtJHtffSBUZCAoJHsoMCxyLmVzY2FwZVN0cmluZykoZSl9KSBUamApOyQucHVzaCgiRVQiLCJRIik7Y29uc3QgVT0kLmpvaW4oIlxuIiksWD1uZXcgcy5EaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7WC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7WC5zZXQoIkJCb3giLFswLDAsQyx2XSk7WC5zZXQoIkxlbmd0aCIsVS5sZW5ndGgpO1guc2V0KCJSZXNvdXJjZXMiLG0pO2lmKGYpe2NvbnN0IGU9V2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoZixDLHYpO1guc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEg9bmV3IHAuU3RyaW5nU3RyZWFtKFUpO0guZGljdD1YO3JldHVybiBIfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTkU7Y29uc3QgYT10LmdldEFycmF5KCJMIik7dGhpcy5kYXRhLmxpbmVDb29yZGluYXRlcz1yLlV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IG49dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpO2xldCBzPW51bGwsbz10LmdldEFycmF5KCJJQyIpO2lmKG8pe289Z2V0UmdiQ29sb3IobyxudWxsKTtzPW8/QXJyYXkuZnJvbShvLChlPT5lLzI1NSkpOm51bGx9Y29uc3QgYz1zP2k6bnVsbCxsPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaD0yKmwsdT1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2gsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStoXTtyLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHUpfHwodGhpcy5yZWN0YW5nbGU9dSk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6Yyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWwsdFsxXS54K2wsdFszXS55LWwsdFsxXS55K2xdfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVQVJFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLnhyZWYsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6dCxmaWxsQ29sb3I6cixzdHJva2VBbHBoYTphLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtufSAke2l9ICR7c30gcmVgKTtyP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjtjb25zdCBzPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUueHJlZixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjp0LGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOmkscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbMF0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzBdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFszXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbM10ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYz1hKyhpLWEpLzIsbD1uKyhvLW4pLzIsaD0oaS1hKS8yKnMsdT0oby1uKS8yKnM7ZS5wdXNoKGAke2N9ICR7b30gbWAsYCR7YytofSAke299ICR7aX0gJHtsK3V9ICR7aX0gJHtsfSBjYCxgJHtpfSAke2wtdX0gJHtjK2h9ICR7bn0gJHtjfSAke259IGNgLGAke2MtaH0gJHtufSAke2F9ICR7bC11fSAke2F9ICR7bH0gY2AsYCR7YX0gJHtsK3V9ICR7Yy1ofSAke299ICR7Y30gJHtvfSBjYCwiaCIpO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4OmFbZV0seTphW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBhPXRoaXMuY29sb3I/QXJyYXkuZnJvbSh0aGlzLmNvbG9yLChlPT5lLzI1NSkpOlswLDAsMF0sbj10LmdldCgiQ0EiKSxpPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKmksbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7b1swXT1NYXRoLm1pbihvWzBdLGUueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpO29bMl09TWF0aC5tYXgob1syXSxlLngrcyk7b1szXT1NYXRoLm1heChvWzNdLGUueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2l9IHdgLHN0cm9rZUNvbG9yOmEsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dGhpcy5kYXRhLnZlcnRpY2VzO2ZvcihsZXQgdD0wLHI9YS5sZW5ndGg7dDxyO3QrKyllLnB1c2goYCR7YVt0XS54fSAke2FbdF0ueX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPTFlHT059fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0FSRVR9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLklOSzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgdD1lLmRpY3QuZ2V0QXJyYXkoIklua0xpc3QiKTtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm47Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCByPTAsbj10W2VdLmxlbmd0aDtyPG47cis9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDphLmZldGNoSWZSZWYodFtlXVtyXSkseTphLmZldGNoSWZSZWYodFtlXVtyKzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIiksbj10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGk9MipuLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7c1swXT1NYXRoLm1pbihzWzBdLHQueC1pKTtzWzFdPU1hdGgubWluKHNbMV0sdC55LWkpO3NbMl09TWF0aC5tYXgoc1syXSx0LngraSk7c1szXT1NYXRoLm1heChzWzNdLHQueStpKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke259IHdgLHN0cm9rZUNvbG9yOnQsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWUucHVzaChgJHt0W2FdLnh9ICR7dFthXS55fSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7cGF0aHM6aSxyZWN0Om8scm90YXRpb246Y309ZSxsPW5ldyBzLkRpY3QodCk7bC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO2wuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSk7bC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7bC5zZXQoIlJlY3QiLG8pO2wuc2V0KCJJbmtMaXN0IixpLm1hcCgoZT0+ZS5wb2ludHMpKSk7bC5zZXQoIkYiLDQpO2wuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2wuc2V0KCJSb3RhdGUiLGMpO2NvbnN0IGg9bmV3IHMuRGljdCh0KTtsLnNldCgiQVAiLGgpO2E/aC5zZXQoIk4iLGEpOmguc2V0KCJOIixuKTtyZXR1cm4gbH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Om8scm90YXRpb246YyxwYXRoczpsLHRoaWNrbmVzczpoLG9wYWNpdHk6dX09ZSxbZCxmLGcsbV09bztsZXQgYj1nLWQseT1tLWY7YyUxODAhPTAmJihbYix5XT1beSxiXSk7Y29uc3Qgdz1bYCR7aH0gdyAxIEogMSBqYCxgJHsoMCxpLmdldFBkZkNvbG9yKShyLCExKX1gXTsxIT09dSYmdy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBTPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtTLmxlbmd0aD0wO1MucHVzaChgJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzBdKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTYpe2NvbnN0IGE9ZS5zbGljZSh0LHQrNikubWFwKG4ubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtTLnB1c2goYCR7YX0gY2ApfVMucHVzaCgiUyIpO3cucHVzaChTLmpvaW4oIlxuIikpfWNvbnN0IHg9dy5qb2luKCJcbiIpLGs9bmV3IHMuRGljdCh0KTtrLnNldCgiRm9ybVR5cGUiLDEpO2suc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2suc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2suc2V0KCJCQm94IixbMCwwLGIseV0pO2suc2V0KCJMZW5ndGgiLHgubGVuZ3RoKTtpZihjKXtjb25zdCBlPVdpZGdldEFubm90YXRpb24uX2dldFJvdGF0aW9uTWF0cml4KGMsYix5KTtrLnNldCgiTWF0cml4IixlKX1pZigxIT09dSl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpLGE9bmV3IHMuRGljdCh0KSxyPW5ldyBzLkRpY3QodCk7ci5zZXQoIkNBIix1KTtyLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRXh0R1N0YXRlIikpO2Euc2V0KCJSMCIscik7ZS5zZXQoIkV4dEdTdGF0ZSIsYSk7ay5zZXQoIlJlc291cmNlcyIsZSl9Y29uc3QgQz1uZXcgcC5TdHJpbmdTdHJlYW0oeCk7Qy5kaWN0PWs7cmV0dXJuIEN9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKGUuZGljdCxudWxsKSl7Y29uc3QgdD10aGlzLmFwcGVhcmFuY2UmJnRoaXMuYXBwZWFyYW5jZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzEsMSwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGZpbGxDb2xvcjp0LGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueX0gbWAsYCR7dFszXS54fSAke3RbM10ueX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzBdLnktdFsyXS55KS82O2xldCByPWEsbj10WzJdLng7Y29uc3QgaT10WzJdLnkscz10WzNdLng7ZS5wdXNoKGAke259ICR7aStyfSBtYCk7ZG97bis9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7bn0gJHtpK3J9IGxgKX13aGlsZShuPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngscyxpLTIqYSxpKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1RBTVB9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgZC5GaWxlU3BlYyhlLmRpY3QuZ2V0KCJGUyIpLGUueHJlZik7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ7dGhpcy5kYXRhLmZpbGU9dC5zZXJpYWxpemFibGV9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOmF9KXtyZXR1cm5gLyR7KDAsci5lc2NhcGVQREZOYW1lKSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGEsITApfWB9O3QuZ2V0UGRmQ29sb3I9Z2V0UGRmQ29sb3I7dC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfTt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMTIpLHM9YSgxMyksbz1hKDMpLGM9YSg4KTtjbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIHMuRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBjLlN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6cn09ZTtzd2l0Y2goMHxhKXtjYXNlIG4uT1BTLnNldEZvbnQ6Y29uc3RbZSxhXT1yO2UgaW5zdGFuY2VvZiBvLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxHcmF5OmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTppLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7KDAsbi53YXJuKShgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7Y29uc3QgYT1lWzBdLzI1NTtyZXR1cm5gJHsoMCxyLm51bWJlclRvU3RyaW5nKShhKX0gJHt0PyJnIjoiRyJ9YH1yZXR1cm4gQXJyYXkuZnJvbShlLChlPT4oMCxyLm51bWJlclRvU3RyaW5nKShlLzI1NSkpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29sb3JTcGFjZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSg0KTtjbGFzcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbG9yU3BhY2UmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb2xvclNwYWNlLiIpO3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSXRlbShlLHQsYSxuKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLGkscyxvKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsYSxyLG4saSxzLG8sYyl7Y29uc3QgbD10KmE7bGV0IGg9bnVsbDtjb25zdCB1PTE8PHMsZD1hIT09bnx8dCE9PXI7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKHMpKWg9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZsPnUmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9czw9OD9uZXcgVWludDhBcnJheSh1KTpuZXcgVWludDE2QXJyYXkodSk7Zm9yKGxldCBlPTA7ZTx1O2UrKyl0W2VdPWU7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyp1KTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsdSxhLDAscywwKTtpZihkKXtoPW5ldyBVaW50OEFycmF5KDMqbCk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGw7Kyt0KXtjb25zdCByPTMqb1t0XTtoW2UrK109YVtyXTtoW2UrK109YVtyKzFdO2hbZSsrXT1hW3IrMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IHI9MDtyPGw7KytyKXtjb25zdCBuPTMqb1tyXTtlW3QrK109YVtuXTtlW3QrK109YVtuKzFdO2VbdCsrXT1hW24rMl07dCs9Y319fWVsc2UgaWYoZCl7aD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypsKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsbCxoLDAscywwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxyKmksZSwwLHMsYyk7aWYoaClpZihkKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsYSxyLG4saSxzKXtzPTEhPT1zPzA6cztjb25zdCBvPWEvbixjPXIvaTtsZXQgbCxoPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkobiksZD0zKmE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1W2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmMpKmQ7Zm9yKGxldCBhPTA7YTxuO2ErKyl7bD1yK3VbYV07dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107aCs9c319fShoLGUsdCxhLHIsbixjKTtlbHNle2xldCB0PTAsYT0wO2ZvcihsZXQgbj0wLHM9cippO248cztuKyspe2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO3QrPWN9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGEscil7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgaSxzO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7cz1lO2U9dC5mZXRjaChlKX1lIGluc3RhbmNlb2Ygbi5OYW1lJiYoaT1lLm5hbWUpOyhpfHxzKSYmYS5zZXQoaSxzLHIpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7Y29uc3Qgcj1hLmdldEJ5UmVmKGUpO2lmKHIpcmV0dXJuIHI7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlfX1pZihlIGluc3RhbmNlb2Ygbi5OYW1lKXtjb25zdCB0PWEuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3QgaT10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixpKTtyZXR1cm4gaX1zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IGk9dGhpcy5nZXRDYWNoZWQoZSx0LG4pO2lmKGkpcmV0dXJuIGk7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixzKTtyZXR1cm4gc31zdGF0aWMgX3BhcnNlKGUsdCxhPW51bGwsaSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygbi5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihhIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCByPWEuZ2V0KCJDb2xvclNwYWNlIik7aWYociBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxhLGkpO2U9czticmVha319fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj10LmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgcyxvLHUsZCxmLGc7c3dpdGNoKG4pe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Zz1zLmdldCgiR2FtbWEiKTtyZXR1cm4gbmV3IGMoZCxmLGcpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgcD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IGwoZCxmLGcscCk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3QgbT10LmZldGNoSWZSZWYoZVsxXSkuZGljdDtvPW0uZ2V0KCJOIik7Y29uc3QgYj1tLmdldCgiQWx0ZXJuYXRlIik7aWYoYil7Y29uc3QgZT10aGlzLl9wYXJzZShiLHQsYSxpKTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTsoMCxyLndhcm4pKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azticmVhaztjYXNlIlBhdHRlcm4iOnU9ZVsxXXx8bnVsbDt1JiYodT10aGlzLl9wYXJzZSh1LHQsYSxpKSk7cmV0dXJuIG5ldyBQYXR0ZXJuQ1ModSk7Y2FzZSJJIjpjYXNlIkluZGV4ZWQiOnU9dGhpcy5fcGFyc2UoZVsxXSx0LGEsaSk7Y29uc3QgeT10LmZldGNoSWZSZWYoZVsyXSkrMSx3PXQuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyh1LHksdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IFM9dC5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShTKT9TLmxlbmd0aDoxO3U9dGhpcy5fcGFyc2UoZVsyXSx0LGEsaSk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sdSx4KTtjYXNlIkxhYiI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3Qgaz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgaChkLGYsayk7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtufWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2V9YCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX0sZ2V0IGNteWsoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY215ayIsbmV3IG8pfX0pfX10LkNvbG9yU3BhY2U9Q29sb3JTcGFjZTtjbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPWE7dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LG4sMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0obiwwLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy50aW50Rm4sYz10aGlzLmJhc2UsbD0xLygoMTw8aSktMSksaD1jLm51bUNvbXBzLHU9Yy51c2VzWmVyb1RvT25lUmFuZ2UsZD0oYy5pc1Bhc3N0aHJvdWdoKDgpfHwhdSkmJjA9PT1zO2xldCBmPWQ/bjowO2NvbnN0IGc9ZD9yOm5ldyBVaW50OENsYW1wZWRBcnJheShoKmEpLHA9dGhpcy5udW1Db21wcyxtPW5ldyBGbG9hdDMyQXJyYXkocCksYj1uZXcgRmxvYXQzMkFycmF5KGgpO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXtmb3Iodz0wO3c8cDt3KyspbVt3XT1lW3QrK10qbDtvKG0sMCxiLDApO2lmKHUpZm9yKHc9MDt3PGg7dysrKWdbZisrXT0yNTUqYlt3XTtlbHNle2MuZ2V0UmdiSXRlbShiLDAsZyxmKTtmKz1ofX1kfHxjLmdldFJnYkJ1ZmZlcihnLDAsYSxyLG4sOCxzKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuYmFzZT1lO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49ZS5udW1Db21wcyp0O3RoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KG4pO2lmKGEgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhuKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7YX1gKTtmb3IobGV0IGU9MDtlPG47KytlKXRoaXMubG9va3VwW2VdPTI1NSZhLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj10aGlzLmJhc2UubnVtQ29tcHMsaT1lW3RdKm47dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxpLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy5iYXNlLGM9by5udW1Db21wcyxsPW8uZ2V0T3V0cHV0TGVuZ3RoKGMscyksaD10aGlzLmxvb2t1cDtmb3IobGV0IGk9MDtpPGE7KytpKXtjb25zdCBhPWVbdCsrXSpjO28uZ2V0UmdiQnVmZmVyKGgsYSwxLHIsbiw4LHMpO24rPWx9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7KDAsci53YXJuKSgiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXsoMCxyLndhcm4pKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49MjU1KmVbdF07YVtyXT1hW3IrMV09YVtyKzJdPW59Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbYysrXTtyW2wrK109dDtyW2wrK109dDtyW2wrK109dDtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxyKXthW3JdPTI1NSplW3RdO2FbcisxXT0yNTUqZVt0KzFdO2FbcisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxyLG4saSxzKXtpZig4PT09aSYmMD09PXMpe3Iuc2V0KGUuc3ViYXJyYXkodCx0KzMqYSksbik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtyW2wrK109byplW2MrK107bCs9c319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jb25zdCBvPWZ1bmN0aW9uIERldmljZUNteWtDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuKXtjb25zdCBpPWVbdF0qYSxzPWVbdCsxXSphLG89ZVt0KzJdKmEsYz1lW3QrM10qYTtyW25dPTI1NStpKigtNC4zODczMzIzODQ2MDk5ODgqaSs1NC40ODYxNTE5NDE4OTE3NipzKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK3MqKDEuNzE0OTc2MzQ3NzM2MjEzNCpzLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0Nyk7cltuKzFdPTI1NStpKig4Ljg0MTA0MTQyMjAzNjE0OSppKzYwLjExODAyNzA0NTU5NzM2NipzKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrcyooLTE1LjMxMDM2MTMwNjk2NzgxNypzKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KTtyW24rMl09MjU1K2kqKC44ODQyNTIyNDMwMDAzMjk2KmkrOC4wNzg2Nzc1MDMxMTI5MjgqcyszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrcyooMTAuNDk1OTMyNzM0MzIwNzIqcys2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfXJldHVybiBjbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MS8oKDE8PGkpLTEpO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnZlcnRUb1JnYihlLHQsbyxyLG4pO3QrPTQ7bis9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fX0oKSxjPWZ1bmN0aW9uIENhbEdyYXlDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2NvbnN0IHM9KHRbYV0qaSkqKmUuRyxvPWUuWVcqcyxjPU1hdGgubWF4KDI5NS44Km8qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7cltuXT1jO3JbbisxXT1jO3JbbisyXT1jfXJldHVybiBjbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7dD10fHxbMCwwLDBdO2E9YXx8MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0xO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxuPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksaT1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyk7ZnVuY3Rpb24gbWF0cml4UHJvZHVjdChlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19ZnVuY3Rpb24gc1JHQlRyYW5zZmVyRnVuY3Rpb24oZSl7cmV0dXJuIGU8PS4wMDMxMzA4P2FkanVzdFRvUmFuZ2UoMCwxLDEyLjkyKmUpOmU+PS45OTU1NDUyNT8xOmFkanVzdFRvUmFuZ2UoMCwxLDEuMDU1KmUqKigxLzIuNCktLjA1NSl9ZnVuY3Rpb24gYWRqdXN0VG9SYW5nZShlLHQsYSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxhKSl9ZnVuY3Rpb24gZGVjb2RlTChlKXtyZXR1cm4gZTwwPy1kZWNvZGVMKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOi4wMDExMDcwNTY0NTk4Nzk0NTM5KmV9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksaz1zO2tbMF09dztrWzFdPVM7a1syXT14O2NvbnN0IEM9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsbil7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtuWzBdPXJbMF07blsxXT1yWzFdO25bMl09clsyXTtyZXR1cm59Y29uc3Qgcz1uO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89aTshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxuKX0oci53aGl0ZVBvaW50LGssQyk7Y29uc3Qgdj1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxuPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLGk9MS1uLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qbitpO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LEMsdik7Y29uc3QgRj1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLG4pe2NvbnN0IHM9bjttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLG4pfShuLHYsRik7Y29uc3QgTz1zO21hdHJpeFByb2R1Y3QoYSxGLE8pO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKE9bMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oT1sxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihPWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO2E9YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtuPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3QgaT1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9blswXTt0aGlzLk1ZQT1uWzFdO3RoaXMuTVpBPW5bMl07dGhpcy5NWEI9blszXTt0aGlzLk1ZQj1uWzRdO3RoaXMuTVpCPW5bNV07dGhpcy5NWEM9bls2XTt0aGlzLk1ZQz1uWzddO3RoaXMuTVpDPW5bOF07aWYoaTwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe2xldCB0O3Q9ZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSk7cmV0dXJuIHR9ZnVuY3Rpb24gZGVjb2RlKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH1mdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2xldCBzPXRbYV0sbz10W2ErMV0sYz10W2ErMl07aWYoITEhPT1yKXtzPWRlY29kZShzLHIsMCwxMDApO289ZGVjb2RlKG8scixlLmFtaW4sZS5hbWF4KTtjPWRlY29kZShjLHIsZS5ibWluLGUuYm1heCl9bz5lLmFtYXg/bz1lLmFtYXg6bzxlLmFtaW4mJihvPWUuYW1pbik7Yz5lLmJtYXg/Yz1lLmJtYXg6YzxlLmJtaW4mJihjPWUuYm1pbik7Y29uc3QgbD0ocysxNikvMTE2LGg9bCtvLzUwMCx1PWwtYy8yMDAsZD1lLlhXKmZuX2coaCksZj1lLllXKmZuX2cobCksZz1lLlpXKmZuX2codSk7bGV0IHAsbSxiO2lmKGUuWlc8MSl7cD0zLjEzMzkqZCstMS42MTcqZistLjQ5MDYqZzttPS0uOTc4NSpkKzEuOTE2KmYrLjAzMzMqZztiPS4wNzIqZCstLjIyOSpmKzEuNDA1NypnfWVsc2V7cD0zLjI0MDYqZCstMS41MzcyKmYrLS40OTg2Kmc7bT0tLjk2ODkqZCsxLjg3NTgqZisuMDQxNSpnO2I9LjA1NTcqZCstLjIwNCpmKzEuMDU3Kmd9bltpXT0yNTUqTWF0aC5zcXJ0KHApO25baSsxXT0yNTUqTWF0aC5zcXJ0KG0pO25baSsyXT0yNTUqTWF0aC5zcXJ0KGIpfXJldHVybiBjbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7dD10fHxbMCwwLDBdO2E9YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLmFtaW49YVswXTt0aGlzLmFtYXg9YVsxXTt0aGlzLmJtaW49YVsyXTt0aGlzLmJtYXg9YVszXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXsoMCxyLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXsoMCxyLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89KDE8PGkpLTE7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKHRoaXMsZSx0LG8scixuKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fX0oKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnRpYWxFdmFsdWF0b3I9dC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9dm9pZCAwO3ZhciByPWEoMiksbj1hKDE0KSxpPWEoMykscz1hKDMyKSxvPWEoMzYpLGM9YSgzNSksbD1hKDM5KSxoPWEoMzgpLHU9YSg0OCksZD1hKDQ5KSxmPWEoNDApLGc9YSg1NSkscD1hKDE1KSxtPWEoNTcpLGI9YSg4KSx5PWEoNSksdz1hKDU4KSxTPWEoMTIpLHg9YSgxNyksaz1hKDM3KSxDPWEoNCksdj1hKDQzKSxGPWEoNTkpLE89YSg2MCksVD1hKDYxKTtjb25zdCBNPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMCxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxFPTEsRD0yLE49UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX0oMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudChlKXtlLmZuPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0JiZlLmFyZ3NbMF0mJmUuYXJnc1swXS5jb3VudD4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIGdldCBUSU1FX1NMT1RfRFVSQVRJT05fTVMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiVElNRV9TTE9UX0RVUkFUSU9OX01TIiwyMCl9c3RhdGljIGdldCBDSEVDS19USU1FX0VWRVJZKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIRUNLX1RJTUVfRVZFUlkiLDEwMCl9Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6YSxpZEZhY3Rvcnk6cixmb250Q2FjaGU6bixidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOnMsZ2xvYmFsSW1hZ2VDYWNoZTpvLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLmlkRmFjdG9yeT1yO3RoaXMuZm9udENhY2hlPW47dGhpcy5idWlsdEluQ01hcENhY2hlPWk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9czt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLm9wdGlvbnM9Y3x8TTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITE7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7Y29uc3QgZT1uZXcgZy5QREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLGUpfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IGkuUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IG49W2VdLHM9dGhpcy54cmVmO2Zvcig7bi5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgaS5EaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgaS5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbz1lLmdldCgiWE9iamVjdCIpO2lmKG8gaW5zdGFuY2VvZiBpLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTsoMCxyLmluZm8pKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBpLkRpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7bi5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxuPWF3YWl0IGZldGNoKHQpO2lmKCFuLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7bi5zdGF0dXNUZXh0fSIuYCk7YT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbi5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWX19ZWxzZSBhPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTthLmNvbXByZXNzaW9uVHlwZSE9PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBiLlN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9KDAsbC5nZXRGb250TmFtZVRvRmlsZU1hcCkoKVtlXTtsZXQgbjtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP249YXdhaXQgdC5hcnJheUJ1ZmZlcigpOigwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7bj1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTphfSl9Y2F0Y2goZSl7KDAsci53YXJuKShgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHthfSIgd2l0aCAiJHtlfSIuYCl9aWYoIW4pcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG5ldyBiLlN0cmVhbShuKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLG4scyxvLGMpe2NvbnN0IGw9dC5kaWN0LGg9bC5nZXRBcnJheSgiTWF0cml4Iik7bGV0IHUsZCxmPWwuZ2V0QXJyYXkoIkJCb3giKTtmPUFycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChmKTpudWxsO2wuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZuLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHVdKTtjb25zdCBnPWwuZ2V0KCJHcm91cCIpO2lmKGcpe2Q9e21hdHJpeDpoLGJib3g6ZixzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtjb25zdCB0PWcuZ2V0KCJTIik7bGV0IHM9bnVsbDtpZigoMCxpLmlzTmFtZSkodCwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMTtpZihnLmhhcygiQ1MiKSl7Y29uc3QgdD1nLmdldFJhdygiQ1MiKSxhPVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQodCx0aGlzLnhyZWYsYyk7cz1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9fWlmKGEmJmEuYmFja2Ryb3Ape3M9c3x8Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2EuYmFja2Ryb3A9cy5nZXRSZ2IoYS5iYWNrZHJvcCwwKX1uLmFkZE9wKHIuT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW4scCk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKTtnJiZuLmFkZE9wKHIuT1BTLmVuZEdyb3VwLFtkXSk7dm9pZCAwIT09dSYmbi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OmksbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGM9dC5kaWN0LGw9Yy5vYmpJZCxoPWMuZ2V0KCJXIiwiV2lkdGgiKSx1PWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWh8fCJudW1iZXIiIT10eXBlb2YgaHx8IXV8fCJudW1iZXIiIT10eXBlb2YgdSl7KDAsci53YXJuKSgiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGQ9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWQmJmgqdT5kKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGY7Yy5oYXMoIk9DIikmJihmPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBnLHA7aWYoYy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxhPWgrNz4+MyxvPXQuZ2V0Qnl0ZXMoYSp1KSxkPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2c9VC5QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpvLHdpZHRoOmgsaGVpZ2h0OnUsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIHguRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6ISFkJiZkWzBdPjAsaW50ZXJwb2xhdGU6ZX0pO2cuY2FjaGVkPSEhaTtwPVtnXTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1nPVQuUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6byx3aWR0aDpoLGhlaWdodDp1LGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiB4LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOiEhZCYmZFswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoZy5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxmKTtpJiZzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxhcmdzOltdLG9wdGlvbmFsQ29udGVudDpmfSk7cmV0dXJufWNvbnN0IG09YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7bi5hZGREZXBlbmRlbmN5KG0pO3RoaXMuX3NlbmRJbWdEYXRhKG0sZyk7cD1be2RhdGE6bSx3aWR0aDpnLndpZHRoLGhlaWdodDpnLmhlaWdodCxpbnRlcnBvbGF0ZTpnLmludGVycG9sYXRlLGNvdW50OjF9XTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1jb25zdCBtPWMuZ2V0KCJTTSIsIlNNYXNrIil8fCExLGI9Yy5nZXQoIk1hc2siKXx8ITE7aWYoYSYmIW0mJiFiJiZoK3U8MjAwKXtjb25zdCBpPW5ldyBULlBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7Zz1pLmNyZWF0ZUltYWdlRGF0YSghMCk7bi5hZGRJbWFnZU9wcyhyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxbZ10sZik7cmV0dXJufWxldCB5PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsdz0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3l9YDtlbHNlIGlmKGwpe3c9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGwsdGhpcy5wYWdlSW5kZXgpO3cmJih5PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7eX1gKX1uLmFkZERlcGVuZGVuY3koeSk7cD1beSxoLHVdO1QuUERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pLnRoZW4oKGU9PntnPWUuY3JlYXRlSW1hZ2VEYXRhKCExKTtpJiZsJiZ3JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUobCxnLmRhdGEubGVuZ3RoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxnLHcpfSkpLmNhdGNoKChlPT57KDAsci53YXJuKShgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt5fSI6ICIke2V9Ii5gKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxudWxsLHcpfSkpO24uYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZVhPYmplY3QscCxmKTtpZihpKXtzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO2lmKGwpeygwLHIuYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkUGFnZUluZGV4KGwsdGhpcy5wYWdlSW5kZXgpO3cmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGwse29iaklkOnksZm46ci5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpwLG9wdGlvbmFsQ29udGVudDpmLGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGM9ZS5nZXQoIlRSIik7aWYoKDAsZy5pc1BERkZ1bmN0aW9uKShjKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGMpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKXthWzBdPXIvMjU1O2UoYSwwLGEsMCk7dFtyXT0yNTUqYVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQscyxvLGEscixuLnN0YXRlLmNsb25lKCksaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCEoMCxnLmlzUERGRnVuY3Rpb24pKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGE9W107bGV0IHI9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtyKys7aWYoKDAsaS5pc05hbWUpKHQsIklkZW50aXR5Iikpe2EucHVzaChudWxsKTtjb250aW51ZX1pZighKDAsZy5pc1BERkZ1bmN0aW9uKSh0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbz1uZXcgVWludDhBcnJheSgyNTYpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe2NbMF09ZS8yNTU7cyhjLDAsYywwKTtvW2VdPTI1NSpjWzBdfDB9YS5wdXNoKG8pO24rK31yZXR1cm4gMSE9PXImJjQhPT1yfHwwPT09bj9udWxsOmF9aGFuZGxlVGlsaW5nVHlwZShlLHQsYSxuLHMsbyxjLGwpe2NvbnN0IGg9bmV3IE8uT3BlcmF0b3JMaXN0LGQ9aS5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazpjLHJlc291cmNlczpkLG9wZXJhdG9yTGlzdDpofSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBhPWguZ2V0SVIoKSxyPSgwLHUuZ2V0VGlsaW5nUGF0dGVybklSKShhLHMsdCk7by5hZGREZXBlbmRlbmNpZXMoaC5kZXBlbmRlbmNpZXMpO28uYWRkT3AoZSxyKTtzLm9iaklkJiZsLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDpzfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JUaWxpbmdQYXR0ZXJufSk7KDAsci53YXJuKShgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9aGFuZGxlU2V0Rm9udChlLHQsYSxuLG8sYyxsPW51bGwsaD1udWxsKXtjb25zdCB1PXQmJnRbMF1pbnN0YW5jZW9mIGkuTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udCh1LGEsZSxsLGgpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLG8pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pnt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZFR5cGUzfSk7cmV0dXJuIG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX0pKTp0KSkudGhlbigoZT0+e2MuZm9udD1lLmZvbnQ7ZS5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGUubG9hZGVkTmFtZX0pKX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgYT10LmZvbnQsbj1hLmNoYXJzVG9HbHlwaHMoZSk7aWYoYS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZyLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlfHx0aGlzLm9wdGlvbnMuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLG4sdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIG59ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFN0YXRlfSk7KDAsci53YXJuKShgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpuLHRhc2s6cyxzdGF0ZU1hbmFnZXI6byxsb2NhbEdTdGF0ZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe2NvbnN0IGg9dC5vYmpJZDtsZXQgdT0hMDtjb25zdCBkPVtdO2xldCBmPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBuIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBjPXQuZ2V0KG4pO3N3aXRjaChuKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6ZC5wdXNoKFtuLGNdKTticmVhaztjYXNlIkZvbnQiOnU9ITE7Zj1mLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLGNbMF0sYSxzLG8uc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTtkLnB1c2goW24sW2UsY1sxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOmQucHVzaChbbixub3JtYWxpemVCbGVuZE1vZGUoYyldKTticmVhaztjYXNlIlNNYXNrIjppZigoMCxpLmlzTmFtZSkoYywiTm9uZSIpKXtkLnB1c2goW24sITFdKTticmVha31pZihjIGluc3RhbmNlb2YgaS5EaWN0KXt1PSExO2Y9Zi50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhjLGUsYSxzLG8sbCkpKTtkLnB1c2goW24sITBdKX1lbHNlKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGMpO2QucHVzaChbbix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOigwLHIuaW5mbykoImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIituKTticmVhaztkZWZhdWx0OigwLHIuaW5mbykoIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK24pfX1yZXR1cm4gZi50aGVuKChmdW5jdGlvbigpe2QubGVuZ3RoPjAmJmEuYWRkT3Aoci5PUFMuc2V0R1N0YXRlLFtkXSk7dSYmYy5zZXQobixoLGQpfSkpfWxvYWRGb250KGUsdCxhLG49bnVsbCxjPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgcy5FcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSksbD10aGlzLnhyZWY7bGV0IGg7aWYodCl0IGluc3RhbmNlb2YgaS5SZWYmJihoPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihoPXQuZ2V0UmF3KGUpKX1pZighaCl7Y29uc3QgYT1gRm9udCAiJHtlfHx0JiZ0LnRvU3RyaW5nKCl9IiBpcyBub3QgYXZhaWxhYmxlYDtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7KDAsci53YXJuKShgJHthfS5gKTtyZXR1cm4gZXJyb3JGb250KCl9dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udE1pc3Npbmd9KTsoMCxyLndhcm4pKGAke2F9IC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7aD1ufHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodGhpcy5wYXJzaW5nVHlwZTNGb250JiZ0aGlzLnR5cGUzRm9udFJlZnMuaGFzKGgpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMoaCkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChoKTtpZighKCh0PWwuZmV0Y2hJZlJlZihoKSlpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIGVycm9yRm9udCgpO2lmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IHU9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDt0cnl7ZD10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtkLmNzc0ZvbnRJbmZvPWN9Y2F0Y2goZSl7KDAsci53YXJuKShgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6ZixoYXNoOmd9PWQscD1oIGluc3RhbmNlb2YgaS5SZWY7bGV0IG07cCYmKG09YGYke2gudG9TdHJpbmcoKX1gKTtpZihnJiZmIGluc3RhbmNlb2YgaS5EaWN0KXtmLmZvbnRBbGlhc2VzfHwoZi5mb250QWxpYXNlcz1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdCBlPWYuZm9udEFsaWFzZXM7aWYoZVtnXSl7Y29uc3QgdD1lW2ddLmFsaWFzUmVmO2lmKHAmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaCx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGgpfX1lbHNlIGVbZ109e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07cCYmKGVbZ10uYWxpYXNSZWY9aCk7bT1lW2ddLmZvbnRJRH1pZihwKXRoaXMuZm9udENhY2hlLnB1dChoLHUucHJvbWlzZSk7ZWxzZXttfHwobT10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKSk7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHttfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksdS5wcm9taXNlKX0oMCxyLmFzc2VydCkobSYmbS5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bX1gO3RoaXMudHJhbnNsYXRlRm9udChkKS50aGVuKChlPT57dm9pZCAwIT09ZS5mb250VHlwZSYmbC5zdGF0cy5hZGRGb250VHlwZShlLmZvbnRUeXBlKTt1LnJlc29sdmUobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRyYW5zbGF0ZX0pOygwLHIud2FybikoYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTt0cnl7Y29uc3QgZT1mJiZmLmdldCgiRm9udEZpbGUzIiksdD1lJiZlLmdldCgiU3VidHlwZSIpLGE9KDAsby5nZXRGb250VHlwZSkoZC50eXBlLHQmJnQubmFtZSk7dm9pZCAwIT09YSYmbC5zdGF0cy5hZGRGb250VHlwZShhKX1jYXRjaChlKXt9dS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgcy5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIHUucHJvbWlzZX1idWlsZFBhdGgoZSx0LGEsbj0hMSl7Y29uc3QgaT1lLmxlbmd0aC0xO2F8fChhPVtdKTtpZihpPDB8fGUuZm5BcnJheVtpXSE9PXIuT1BTLmNvbnN0cnVjdFBhdGgpe2lmKG4peygwLHIud2FybikoYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3Aoci5PUFMuc2F2ZSxudWxsKX1sZXQgaTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107aT1bTWF0aC5taW4oYVswXSxlKSxNYXRoLm1heChhWzBdLGUpLE1hdGgubWluKGFbMV0sdCksTWF0aC5tYXgoYVsxXSx0KV07YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86aT1bYVswXSxhWzBdLGFbMV0sYVsxXV07YnJlYWs7ZGVmYXVsdDppPVsxLzAsLTEvMCwxLzAsLTEvMF19ZS5hZGRPcChyLk9QUy5jb25zdHJ1Y3RQYXRoLFtbdF0sYSxpXSk7biYmZS5hZGRPcChyLk9QUy5yZXN0b3JlLG51bGwpfWVsc2V7Y29uc3Qgbj1lLmFyZ3NBcnJheVtpXTtuWzBdLnB1c2godCk7blsxXS5wdXNoKC4uLmEpO2NvbnN0IHM9blsyXTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107c1swXT1NYXRoLm1pbihzWzBdLGFbMF0sZSk7c1sxXT1NYXRoLm1heChzWzFdLGFbMF0sZSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0sdCk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0sdCk7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86c1swXT1NYXRoLm1pbihzWzBdLGFbMF0pO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdKTtzWzJdPU1hdGgubWluKHNbMl0sYVsxXSk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KXtyZXR1cm4gUy5Db2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTphfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JDb2xvclNwYWNlfSk7KDAsci53YXJuKShgcGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSl9cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cn0pe2xldCBuPXIuZ2V0KGUpO2lmKCFuKXtjb25zdCBpPXUuUGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLmhhbmRsZXIsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGEpLmdldElSKCk7bj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtyLnNldChlLG4pO3RoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSl9cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLG4scyxvLGMsbCxoLGQpe2NvbnN0IGY9YS5wb3AoKTtpZihmIGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBnPXMuZ2V0UmF3KGYubmFtZSkscD1nIGluc3RhbmNlb2YgaS5SZWYmJmguZ2V0QnlSZWYoZyk7aWYocCl0cnl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGwsaT0oMCx1LmdldFRpbGluZ1BhdHRlcm5JUikocC5vcGVyYXRvckxpc3RJUixwLmRpY3Qscik7ZS5hZGRPcCh0LGkpO3JldHVybn1jYXRjaChlKXt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihtKXtjb25zdCBpPW0gaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0/bS5kaWN0Om0scz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihzPT09RSl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LHIsbyxtLGksZSxjLGgpfWlmKHM9PT1EKXtjb25zdCBhPWkuZ2V0KCJTaGFkaW5nIikscj1pLmdldEFycmF5KCJNYXRyaXgiKSxuPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO2UuYWRkT3AodCxbIlNoYWRpbmciLG4scl0pO3JldHVybn10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtzfWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtmfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApeygwLHIud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgaS5OYW1lKXtzd2l0Y2gocy5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChzLm5hbWUpO2JyZWFrO2RlZmF1bHQ6KDAsci53YXJuKShgSW52YWxpZCBvcGVyYXRvciAke3MubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8bjtyKyspe2NvbnN0IG49ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKG4pO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgbiBpbnN0YW5jZW9mIGkuUmVmJiZhLnB1c2gobi50b1N0cmluZygpKX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIikubmFtZTtpZigiT0NHIj09PW4pcmV0dXJue3R5cGU6bixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1uKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6bixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgaS5OYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIGkuUmVmKXJldHVybnt0eXBlOm4saWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6cz1udWxsLGZhbGxiYWNrRm9udERpY3Q6bz1udWxsfSl7YT1hfHxpLkRpY3QuZW1wdHk7cz1zfHxuZXcgRXZhbFN0YXRlO2lmKCFuKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IGM9dGhpcyxsPXRoaXMueHJlZjtsZXQgaD0hMTtjb25zdCB1PW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxkPW5ldyBtLkxvY2FsQ29sb3JTcGFjZUNhY2hlLGY9bmV3IG0uTG9jYWxHU3RhdGVDYWNoZSxnPW5ldyBtLkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxiPWEuZ2V0KCJYT2JqZWN0Iil8fGkuRGljdC5lbXB0eSx3PWEuZ2V0KCJQYXR0ZXJuIil8fGkuRGljdC5lbXB0eSx4PW5ldyBTdGF0ZU1hbmFnZXIocyksaz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbCx4KSxDPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWsuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKW4uYWRkT3Aoci5PUFMucmVzdG9yZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHMpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3Qsbi5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscyl9Y2F0Y2goZSl7cyhlKX19KSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Qy5yZXNldCgpO2NvbnN0IG09e307bGV0IHYsRixPLFQsTSxFO2Zvcig7ISh2PUMuY2hlY2soKSk7KXttLmFyZ3M9bnVsbDtpZighay5yZWFkKG0pKWJyZWFrO2xldCBlPW0uYXJncyxzPW0uZm47c3dpdGNoKDB8cyl7Y2FzZSByLk9QUy5wYWludFhPYmplY3Q6RT1lWzBdaW5zdGFuY2VvZiBpLk5hbWU7TT1lWzBdLm5hbWU7aWYoRSl7Y29uc3QgdD11LmdldEJ5TmFtZShNKTtpZih0KXtuLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBvPWIuZ2V0UmF3KE0pO2lmKG8gaW5zdGFuY2VvZiBpLlJlZil7Y29uc3QgdD11LmdldEJ5UmVmKG8pO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2UoKTtyZXR1cm59Y29uc3QgYT1jLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShvLGMucGFnZUluZGV4KTtpZihhKXtuLmFkZERlcGVuZGVuY3koYS5vYmpJZCk7bi5hZGRJbWFnZU9wcyhhLmZuLGEuYXJncyxhLm9wdGlvbmFsQ29udGVudCk7ZSgpO3JldHVybn1vPWwuZmV0Y2gobyl9aWYoIShvIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBoPW8uZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGggaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09aC5uYW1lKWlmKCJJbWFnZSIhPT1oLm5hbWUpe2lmKCJQUyIhPT1oLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtoLm5hbWV9YCk7KDAsci5pbmZvKSgiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOm8sb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkudGhlbihlLHMpO2Vsc2V7eC5zYXZlKCk7Yy5idWlsZEZvcm1YT2JqZWN0KGEsbyxudWxsLG4sdCx4LnN0YXRlLmNsb25lKCksZCkudGhlbigoZnVuY3Rpb24oKXt4LnJlc3RvcmUoKTtlKCl9KSxzKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvclhPYmplY3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBEPWVbMV07bmV4dChjLmhhbmRsZVNldEZvbnQoYSxlLG51bGwsbix0LHguc3RhdGUsbykudGhlbigoZnVuY3Rpb24oZSl7bi5hZGREZXBlbmRlbmN5KGUpO24uYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxEXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDpoPSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDpoPSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIFI9ZVswXS5jYWNoZUtleTtpZihSKXtjb25zdCB0PXUuZ2V0QnlOYW1lKFIpO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6Uixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCF4LnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KHguc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0seC5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZigheC5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udCh4LnN0YXRlKTtjb250aW51ZX12YXIgTD1bXSxqPXguc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/TC5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LGopKToibnVtYmVyIj09dHlwZW9mIHQmJkwucHVzaCh0KTtlWzBdPUw7cz1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7bi5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7bi5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6eC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9Uy5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGwsZCk7aWYodCl7eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxsLGQpO2lmKHQpe3guc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpUPXguc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnguc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlQ9eC5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1ULm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4obixyLk9QUy5zZXRGaWxsQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09VC5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKG4sci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciAkPWEuZ2V0KCJTaGFkaW5nIik7aWYoISQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgXz0kLmdldChlWzBdLm5hbWUpO2lmKCFfKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2MucGFyc2VTaGFkaW5nKHtzaGFkaW5nOl8scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pXTtzPXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkU9ZVswXWluc3RhbmNlb2YgaS5OYW1lO009ZVswXS5uYW1lO2lmKEUpe2NvbnN0IHQ9Zi5nZXRCeU5hbWUoTSk7aWYodCl7dC5sZW5ndGg+MCYmbi5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1vLmdldChNKTtpZighKGwgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmwsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSx0YXNrOnQsc3RhdGVNYW5hZ2VyOngsbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckV4dEdTdGF0ZX0pOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6Yy5idWlsZFBhdGgobixzLGUsaCk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKChlPT57bi5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTtjLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JNYXJrZWRDb250ZW50fSk7KDAsci53YXJuKShgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgaS5EaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmRlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihGPTAsTz1lLmxlbmd0aDtGPE8mJiEoZVtGXWluc3RhbmNlb2YgaS5EaWN0KTtGKyspO2lmKEY8Tyl7KDAsci53YXJuKSgiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIrcyk7Y29udGludWV9fX1uLmFkZE9wKHMsZSl9aWYodiluZXh0KE4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JPcGVyYXRvckxpc3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmEsc3RhdGVNYW5hZ2VyOm49bnVsbCxjb21iaW5lVGV4dEl0ZW1zOnM9ITEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bz0hMSxzaW5rOmMsc2VlblN0eWxlczpsPW5ldyBTZXQsdmlld0JveDp1LG1hcmtlZENvbnRlbnREYXRhOmQ9bnVsbH0pe2E9YXx8aS5EaWN0LmVtcHR5O249bnx8bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtvJiYoZD1kfHx7bGV2ZWw6MH0pO2NvbnN0IGY9KDAsaC5nZXROb3JtYWxpemVkVW5pY29kZXMpKCksZz17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9LHA9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sYj1bIiAiLCIgIl07bGV0IFM9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oUysxKSUyLGE9IiAiIT09YltTXSYmIiAiPT09Ylt0XTtiW1NdPWU7Uz10O3JldHVybiBhfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7YlswXT1iWzFdPSIgIjtTPTB9Y29uc3QgeD10aGlzLGs9dGhpcy54cmVmLEM9W107bGV0IHY9bnVsbDtjb25zdCBGPW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxPPW5ldyBtLkxvY2FsR1N0YXRlQ2FjaGUsVD1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsayxuKTtsZXQgTTtmdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9TS5mb250LHQ9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxyLmlzQXJyYXlFcXVhbCkoTS5mb250TWF0cml4LHIuRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpNLmZvbnRNYXRyaXhbM10pfXJldHVybiByLlV0aWwudHJhbnNmb3JtKE0uY3RtLHIuVXRpbC50cmFuc2Zvcm0oTS50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihwLmluaXRpYWxpemVkKXJldHVybiBwO2NvbnN0IGU9TS5mb250LHQ9ZS5sb2FkZWROYW1lO2lmKCFsLmhhcyh0KSl7bC5hZGQodCk7Zy5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9fXAuZm9udE5hbWU9dDtjb25zdCBhPXAudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7cC53aWR0aD1wLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3AuaGVpZ2h0PXAudG90YWxIZWlnaHQ9MDtwLnZlcnRpY2FsPSEwfWVsc2V7cC53aWR0aD1wLnRvdGFsV2lkdGg9MDtwLmhlaWdodD1wLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTtwLnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLG49TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSk7cC50ZXh0QWR2YW5jZVNjYWxlPW4qcjtwLnRyYWNraW5nU3BhY2VNaW49LjEqTS5mb250U2l6ZTtwLm5vdEFTcGFjZT0uMDMqTS5mb250U2l6ZTtwLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKk0uZm9udFNpemU7cC5zcGFjZUluRmxvd01pbj0uMSpNLmZvbnRTaXplO3Auc3BhY2VJbkZsb3dNYXg9LjYqTS5mb250U2l6ZTtwLmhhc0VPTD0hMTtwLmluaXRpYWxpemVkPSEwO3JldHVybiBwfWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCFwLmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pKmU7aWYodCE9PXAudGV4dEFkdmFuY2VTY2FsZSl7aWYocC52ZXJ0aWNhbCl7cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlO3AuaGVpZ2h0PTB9ZWxzZXtwLnRvdGFsV2lkdGgrPXAud2lkdGgqcC50ZXh0QWR2YW5jZVNjYWxlO3Aud2lkdGg9MH1wLnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLG4pe3JldHVybiB4LmxvYWRGb250KGUsbixhKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5mb250LmlzVHlwZTNGb250P2UubG9hZFR5cGUzRGF0YSh4LGEsdCkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSk6ZX0pKS50aGVuKChmdW5jdGlvbihlKXtNLmZvbnQ9ZS5mb250O00uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbigpe2NvbnN0IGU9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgdD1lWzRdLGE9ZVs1XTtjb25zdCByPXQtdVswXSxuPWEtdVsxXTtpZihyPDB8fHI+dVsyXXx8bjwwfHxuPnVbM10pcmV0dXJuITE7aWYoIXN8fCFNLmZvbnR8fCFwLnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IGk9cC5wcmV2VHJhbnNmb3JtWzRdLG89cC5wcmV2VHJhbnNmb3JtWzVdO2lmKGk9PT10JiZvPT09YSlyZXR1cm4hMDtsZXQgYz0tMTtlWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0/Yz1lWzBdPjA/MDoxODA6ZVsxXSYmMD09PWVbMF0mJjA9PT1lWzNdJiYoYz1lWzFdPjA/OTA6MjcwKTtzd2l0Y2goYyl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W3QsYV09W2EsdF07W2ksb109W28saV07YnJlYWs7Y2FzZSAxODA6W3QsYSxpLG9dPVstdCwtYSwtaSwtb107YnJlYWs7Y2FzZSAyNzA6W3QsYV09Wy1hLC10XTtbaSxvXT1bLW8sLWldO2JyZWFrO2RlZmF1bHQ6W3QsYV09YXBwbHlJbnZlcnNlUm90YXRpb24odCxhLGUpO1tpLG9dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksbyxwLnByZXZUcmFuc2Zvcm0pfWlmKE0uZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0oby1hKS9wLnRleHRBZHZhbmNlU2NhbGUscj10LWksbj1NYXRoLnNpZ24ocC5oZWlnaHQpO2lmKGU8bipwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHIpPi41KnAud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhyKT5wLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnAubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qcC50cmFja2luZ1NwYWNlTWluKXAuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSxwLnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXAuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0Ok1hdGguYWJzKGUpLHRyYW5zZm9ybTpwLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6cC5mb250TmFtZSxoYXNFT0w6ITF9KX1lbHNlIHAuaGVpZ2h0Kz1lO3JldHVybiEwfWNvbnN0IGw9KHQtaSkvcC50ZXh0QWR2YW5jZVNjYWxlLGg9YS1vLGQ9TWF0aC5zaWduKHAud2lkdGgpO2lmKGw8ZCpwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGgpPi41KnAuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoaCk+cC5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfWw8PWQqcC5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobDw9ZCpwLnRyYWNraW5nU3BhY2VNaW4pcC53aWR0aCs9bDtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGwscC5wcmV2VHJhbnNmb3JtLGQpKWlmKDA9PT1wLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7Zy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDpNYXRoLmFicyhsKSxoZWlnaHQ6MCx0cmFuc2Zvcm06cC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnAuZm9udE5hbWUsaGFzRU9MOiExfSl9ZWxzZSBwLndpZHRoKz1sO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1NLmZvbnQ7aWYoIWUpe2NvbnN0IGU9TS5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpNLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxuPU0uZm9udE1hdHJpeFswXSpNLmZvbnRTaXplO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3Qgcz1yW2VdO2lmKHMuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBvPU0uY2hhclNwYWNpbmcrKGUrMT09PWk/dDowKSxjPXMud2lkdGg7YS52ZXJ0aWNhbCYmKGM9cy52bWV0cmljP3Mudm1ldHJpY1swXTotYyk7bGV0IGw9YypuO2lmKHMuaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtvKz0tbCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1vKX1lbHNle28rPWwrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgobypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKCkpY29udGludWU7Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtzLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobD0wKTtpZihhLnZlcnRpY2FsKXtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxsKTtsPU1hdGguYWJzKGwpO3UuaGVpZ2h0Kz1sfWVsc2V7bCo9TS50ZXh0SFNjYWxlO00udHJhbnNsYXRlVGV4dE1hdHJpeChsLDApO3Uud2lkdGgrPWx9bCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtsZXQgZD1zLnVuaWNvZGU7ZD1mW2RdfHxkO2Q9KDAsaC5yZXZlcnNlSWZSdGwpKGQpO3NhdmVMYXN0Q2hhcihkKSYmdS5zdHIucHVzaCgiICIpO3Uuc3RyLnB1c2goZCk7byYmKGEudmVydGljYWw/TS50cmFuc2xhdGVUZXh0TWF0cml4KDAsLW8pOk0udHJhbnNsYXRlVGV4dE1hdHJpeChvKk0udGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYocC5pbml0aWFsaXplZCl7cC5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGcuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk0uZm9udC5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGEpe2lmKGEqcC5zcGFjZUluRmxvd01pbjw9ZSYmZTw9YSpwLnNwYWNlSW5GbG93TWF4KXtpZihwLmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO3Auc3RyLnB1c2goIiAiKX1yZXR1cm4hMX1jb25zdCByPXAuZm9udE5hbWU7bGV0IG49MDtpZihwLnZlcnRpY2FsKXtuPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhuKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpyLGhhc0VPTDohMX0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYocC5pbml0aWFsaXplZCYmcC5zdHIpe3AudmVydGljYWw/cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlOnAudG90YWxXaWR0aCs9cC53aWR0aCpwLnRleHRBZHZhbmNlU2NhbGU7Zy5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lLnN0ci5qb2luKCIiKSxhPSgwLHcuYmlkaSkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fShwKSk7cC5pbml0aWFsaXplZD0hMTtwLnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Zy5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2MuZW5xdWV1ZShnLHQpO2cuaXRlbXM9W107Zy5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgRT1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxoKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3QsYy5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaCl9Y2F0Y2goZSl7aChlKX19KSxoKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7RS5yZXNldCgpO2NvbnN0IGY9e307bGV0IHAsbT1bXTtmb3IoOyEocD1FLmNoZWNrKCkpOyl7bS5sZW5ndGg9MDtmLmFyZ3M9bTtpZighVC5yZWFkKGYpKWJyZWFrO009bi5zdGF0ZTtjb25zdCBlPWYuZm47bT1mLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zZXRGb250OnZhciBiPW1bMF0ubmFtZSx3PW1bMV07aWYoTS5mb250JiZiPT09TS5mb250TmFtZSYmdz09PU0uZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPWI7TS5mb250U2l6ZT13O25leHQoaGFuZGxlU2V0Rm9udChiLG51bGwpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTpNLnRleHRSaXNlPW1bMF07YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6TS50ZXh0SFNjYWxlPW1bMF0vMTAwO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZzpNLmxlYWRpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLm1vdmVUZXh0Ok0udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgobVswXSxtWzFdKTtNLnRleHRNYXRyaXg9TS50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0Ok0ubGVhZGluZz0tbVsxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOk0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIHIuT1BTLnNldFRleHRNYXRyaXg6TS5zZXRUZXh0TWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTtNLnNldFRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOk0uY2hhclNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOk0ud29yZFNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLmJlZ2luVGV4dDpNLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1jb25zdCBlPShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMsaD1tWzBdO2ZvcihsZXQgdD0wLGE9aC5sZW5ndGg7dDxhLTE7dCsrKXtjb25zdCBhPWhbdF07aWYoInN0cmluZyI9PXR5cGVvZiBhKUMucHVzaChhKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSYmMCE9PWEpe2NvbnN0IHQ9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp0LGV4dHJhU3BhY2luZzphKmV9KX19Y29uc3QgZj1oLmF0KC0xKTsic3RyaW5nIj09dHlwZW9mIGYmJkMucHVzaChmKTtpZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2Ugci5PUFMuc2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOm1bMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczptWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPW1bMF07TS5jaGFyU3BhY2luZz1tWzFdO00uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6bVsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRYT2JqZWN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7dnx8KHY9YS5nZXQoIlhPYmplY3QiKXx8aS5EaWN0LmVtcHR5KTt2YXIgUz1tWzBdaW5zdGFuY2VvZiBpLk5hbWUsRD1tWzBdLm5hbWU7aWYoUyYmRi5nZXRCeU5hbWUoRCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxoKXtpZighUyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IGY9di5nZXRSYXcoRCk7aWYoZiBpbnN0YW5jZW9mIGkuUmVmKXtpZihGLmdldEJ5UmVmKGYpKXtlKCk7cmV0dXJufWlmKHguZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKGYseC5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufWY9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9Zi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpe0Yuc2V0KEQsZi5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHA9bi5zdGF0ZS5jbG9uZSgpLG09bmV3IFN0YXRlTWFuYWdlcihwKSxiPWYuZGljdC5nZXRBcnJheSgiTWF0cml4Iik7QXJyYXkuaXNBcnJheShiKSYmNj09PWIubGVuZ3RoJiZtLnRyYW5zZm9ybShiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCB3PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtjLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGMuZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBjLnJlYWR5fX07eC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazp0LHJlc291cmNlczpmLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8YSxzdGF0ZU1hbmFnZXI6bSxjb21iaW5lVGV4dEl0ZW1zOnMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6byxzaW5rOncsc2VlblN0eWxlczpsLHZpZXdCb3g6dSxtYXJrZWRDb250ZW50RGF0YTpkfSkudGhlbigoZnVuY3Rpb24oKXt3LmVucXVldWVJbnZva2VkfHxGLnNldChELGYuZGljdC5vYmpJZCwhMCk7ZSgpfSksaCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOlM9bVswXWluc3RhbmNlb2YgaS5OYW1lO0Q9bVswXS5uYW1lO2lmKFMmJk8uZ2V0QnlOYW1lKEQpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uLmdldChEKTtpZighKHMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KCJGb250Iik7aWYobyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPW51bGw7TS5mb250U2l6ZT1vWzFdO2hhbmRsZVNldEZvbnQobnVsbCxvWzBdKS50aGVuKGUsdCl9ZWxzZXtPLnNldChELHMub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihvKXtkLmxldmVsKys7Zy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzptWzBdaW5zdGFuY2VvZiBpLk5hbWU/bVswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7ZC5sZXZlbCsrO2xldCBlPW51bGw7bVsxXWluc3RhbmNlb2YgaS5EaWN0JiYoZT1tWzFdLmdldCgiTUNJRCIpKTtnLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake3guaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tY2lkJHtlfWA6bnVsbCx0YWc6bVswXWluc3RhbmNlb2YgaS5OYW1lP21bMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7aWYoMD09PWQubGV2ZWwpYnJlYWs7ZC5sZXZlbC0tO2cuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX19aWYoZy5pdGVtcy5sZW5ndGg+PWMuZGVzaXJlZFNpemUpe3A9ITA7YnJlYWt9fWlmKHApbmV4dChOKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9ZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCxhKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgcztjb25zdCBsPXRoaXMucmVhZFRvVW5pY29kZShhLnRvVW5pY29kZXx8ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIikpO2lmKGEuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmKGEuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OnQuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtJiYocz10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBoPVtdO2xldCB1LGQ9bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7dT1lLmdldCgiRW5jb2RpbmciKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtkPXUuZ2V0KCJCYXNlRW5jb2RpbmciKTtkPWQgaW5zdGFuY2VvZiBpLk5hbWU/ZC5uYW1lOm51bGw7aWYodS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9dS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPW4uZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7aFt0KytdPWUubmFtZX19fX1lbHNlIGlmKHUgaW5zdGFuY2VvZiBpLk5hbWUpZD11Lm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGUpOygwLHIud2FybikoZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09ZCYmIk1hY0V4cGVydEVuY29kaW5nIiE9PWQmJiJXaW5BbnNpRW5jb2RpbmciIT09ZCYmKGQ9bnVsbCl9aWYoZClhLmRlZmF1bHRFbmNvZGluZz0oMCxjLmdldEVuY29kaW5nKShkKTtlbHNle2NvbnN0IGU9ISEoYS5mbGFncyZvLkZvbnRGbGFncy5TeW1ib2xpYyksdD0hIShhLmZsYWdzJm8uRm9udEZsYWdzLk5vbnN5bWJvbGljKTt1PWMuU3RhbmRhcmRFbmNvZGluZzsiVHJ1ZVR5cGUiIT09YS50eXBlfHx0fHwodT1jLldpbkFuc2lFbmNvZGluZyk7aWYoZSl7dT1jLk1hY1JvbWFuRW5jb2Rpbmc7YS5maWxlJiYhYS5pc0ludGVybmFsRm9udHx8KC9TeW1ib2wvaS50ZXN0KGEubmFtZSk/dT1jLlN5bWJvbFNldEVuY29kaW5nOi9EaW5nYmF0c3xXaW5nZGluZ3MvaS50ZXN0KGEubmFtZSkmJih1PWMuWmFwZkRpbmdiYXRzRW5jb2RpbmcpKX1hLmRlZmF1bHRFbmNvZGluZz11fWEuZGlmZmVyZW5jZXM9aDthLmJhc2VFbmNvZGluZ05hbWU9ZDthLmhhc0VuY29kaW5nPSEhZHx8aC5sZW5ndGg+MDthLmRpY3Q9ZTtyZXR1cm4gbC50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtyZXR1cm4gdGhpcy5idWlsZFRvVW5pY29kZShhKX0pKS50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtzJiYoYS5jaWRUb0dpZE1hcD10aGlzLnJlYWRDaWRUb0dpZE1hcChzLGUpKTtyZXR1cm4gYX0pKX1fc2ltcGxlRm9udFRvVW5pY29kZShlLHQ9ITEpeygwLHIuYXNzZXJ0KSghZS5jb21wb3NpdGUsIk11c3QgYmUgYSBzaW1wbGUgZm9udC4iKTtjb25zdCBhPVtdLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxpPWUuYmFzZUVuY29kaW5nTmFtZSxzPWUuZGlmZmVyZW5jZXM7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdOyIubm90ZGVmIiE9PXQmJihuW2VdPXQpfWNvbnN0IG89KDAsay5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcihjb25zdCByIGluIG4pe2xldCBzPW5bcl07aWYoIiI9PT1zKWNvbnRpbnVlO2xldCBsPW9bc107aWYodm9pZCAwIT09bCl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpO2NvbnRpbnVlfWxldCB1PTA7c3dpdGNoKHNbMF0pe2Nhc2UiRyI6Mz09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihzLmxlbmd0aD49MyYmcy5sZW5ndGg8PTQpe2NvbnN0IGE9cy5zdWJzdHJpbmcoMSk7aWYodCl7dT1wYXJzZUludChhLDE2KTticmVha311PSthO2lmKE51bWJlci5pc05hTih1KSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpsPSgwLGguZ2V0VW5pY29kZUZvckdseXBoKShzLG8pOy0xIT09bCYmKHU9bCl9aWYodT4wJiZ1PD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKHUpKXtpZihpJiZ1PT09K3Ipe2NvbnN0IGU9KDAsYy5nZXRFbmNvZGluZykoaSk7aWYoZSYmKHM9ZVtyXSkpe2Fbcl09U3RyaW5nLmZyb21DaGFyQ29kZShvW3NdKTtjb250aW51ZX19YVtyXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh1KX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD0hIWUudG9Vbmljb2RlJiZlLnRvVW5pY29kZS5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scz1pLk5hbWUuZ2V0KGAke3R9LSR7YX0tVUNTMmApLG89YXdhaXQgbi5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXTtlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgYT1vLmxvb2t1cCh0KTthJiYoY1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChhLmNoYXJDb2RlQXQoMCk8PDgpK2EuY2hhckNvZGVBdCgxKSkpfSkpO3JldHVybiBuZXcgZi5Ub1VuaWNvZGVNYXAoYyl9cmV0dXJuIG5ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfXJlYWRUb1VuaWNvZGUoZSl7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIGkuTmFtZT9uLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uSWRlbnRpdHlDTWFwP25ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBmLlRvVW5pY29kZU1hcChlLmdldE1hcCgpKX0pKTplIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtP24uQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcClyZXR1cm4gbmV3IGYuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgdD1uZXcgQXJyYXkoZS5sZW5ndGgpO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpe3RbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk7cmV0dXJufWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0yKXtjb25zdCB0PWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JnQpKXtyLnB1c2godCk7Y29udGludWV9ZSs9Mjtjb25zdCBuPWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtyLnB1c2goKCgxMDIzJnQpPDwxMCkrKDEwMjMmbikrNjU1MzYpfXRbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucil9KSk7cmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0KX0pLChlPT57aWYoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRvVW5pY29kZX0pOygwLHIud2FybikoYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpOlByb21pc2UucmVzb2x2ZShudWxsKX1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lW3IrK108PDh8ZVtyXSxpPXI+PjE7KDAhPT1ufHx0LmhhcyhpKSkmJihhW2ldPW4pfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IHI9dGhpcy54cmVmO2xldCBuPVtdLHM9MDtjb25zdCBjPVtdO2xldCBsLGgsdSxkLGYsZyxwLG07aWYoYS5jb21wb3NpdGUpe3M9ZS5oYXMoIkRXIik/ZS5nZXQoIkRXIik6MWUzO209ZS5nZXQoIlciKTtpZihtKWZvcihoPTAsdT1tLmxlbmd0aDtoPHU7aCsrKXtnPXIuZmV0Y2hJZlJlZihtW2grK10pO3A9ci5mZXRjaElmUmVmKG1baF0pO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjtkKyspbltnKytdPXIuZmV0Y2hJZlJlZihwW2RdKTtlbHNle2NvbnN0IGU9ci5mZXRjaElmUmVmKG1bKytoXSk7Zm9yKGQ9ZztkPD1wO2QrKyluW2RdPWV9fWlmKGEudmVydGljYWwpe2xldCB0PWUuZ2V0QXJyYXkoIkRXMiIpfHxbODgwLC0xZTNdO2w9W3RbMV0sLjUqcyx0WzBdXTt0PWUuZ2V0KCJXMiIpO2lmKHQpZm9yKGg9MCx1PXQubGVuZ3RoO2g8dTtoKyspe2c9ci5mZXRjaElmUmVmKHRbaCsrXSk7cD1yLmZldGNoSWZSZWYodFtoXSk7aWYoQXJyYXkuaXNBcnJheShwKSlmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmO2QrKyljW2crK109W3IuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2RdKV07ZWxzZXtjb25zdCBlPVtyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKV07Zm9yKGQ9ZztkPD1wO2QrKyljW2RdPWV9fX19ZWxzZXtjb25zdCBvPWEuZmlyc3RDaGFyO209ZS5nZXQoIldpZHRocyIpO2lmKG0pe2Q9bztmb3IoaD0wLHU9bS5sZW5ndGg7aDx1O2grKyluW2QrK109ci5mZXRjaElmUmVmKG1baF0pO3M9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7bj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYj0hMCx5PXM7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQpaWYoeSl7aWYoeSE9PXQpe2I9ITE7YnJlYWt9fWVsc2UgeT10fWImJihhLmZsYWdzfD1vLkZvbnRGbGFncy5GaXhlZFBpdGNoKTthLmRlZmF1bHRXaWR0aD1zO2Eud2lkdGhzPW47YS5kZWZhdWx0Vk1ldHJpY3M9bDthLnZtZXRyaWNzPWN9aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBuPSgwLGwuZ2V0U3RkRm9udE1hcCkoKVtlXXx8ZTtjb25zdCBpPSgwLHYuZ2V0TWV0cmljcykoKTtuIGluIGl8fChuPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgcz1pW25dO2lmKCJudW1iZXIiPT10eXBlb2Ygcyl7dD1zO3I9ITB9ZWxzZSBhPXMoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOnIsd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5kaWZmZXJlbmNlcyxuPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIHImJmVbclt0XV0/YVt0XT1lW3JbdF1dOnQgaW4gbiYmZVtuW3RdXSYmKGFbdF09ZVtuW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bGV0IG4scyxvPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtvPSEwfWNvbnN0IGM9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChvPzY1NTM1OjI1NSksaD1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihoKXtuPW5ldyBGLk11cm11ckhhc2gzXzY0O2NvbnN0IGE9dC5nZXRSYXcoIkVuY29kaW5nIik7aWYoYSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShhLm5hbWUpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5EaWN0KWZvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgaS5OYW1lP2Fbcl09dC5uYW1lOigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZikmJihhW3JdPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke2N9LSR7bH1gKTtzPWUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpO2lmKHMgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pe2NvbnN0IGU9cy5zdHJ8fHMsdD1lLmJ1ZmZlcj9uZXcgVWludDhBcnJheShlLmJ1ZmZlci5idWZmZXIsMCxlLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoZS5ieXRlcy5idWZmZXIsZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtuLnVwZGF0ZSh0KX1lbHNlIHMgaW5zdGFuY2VvZiBpLk5hbWUmJm4udXBkYXRlKHMubmFtZSk7Y29uc3Qgcj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKG8pe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgb2YgdCkoIm51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgaS5SZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIGkuTmFtZT9uLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBpLlJlZj9uLnVwZGF0ZShyLnRvU3RyaW5nKCkpOnIgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0mJm4udXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpoLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpvLHR5cGU6YS5uYW1lLGZpcnN0Q2hhcjpjLGxhc3RDaGFyOmwsdG9Vbmljb2RlOnMsaGFzaDpuP24uaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6YSxjb21wb3NpdGU6Yyx0eXBlOmgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpwfSl7Y29uc3QgbT0iVHlwZTMiPT09aDtsZXQgeTtpZighZSl7aWYoIW0pe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkJhc2UgZm9udCBpcyBub3Qgc3BlY2lmaWVkIik7ZT1lLm5hbWUucmVwbGFjZSgvWyxfXS9nLCItIik7Y29uc3Qgbj10aGlzLmdldEJhc2VGb250TWV0cmljcyhlKSxjPWUuc3BsaXQoIi0iKVswXSxkPSh0aGlzLmlzU2VyaWZGb250KGMpP28uRm9udEZsYWdzLlNlcmlmOjApfChuLm1vbm9zcGFjZT9vLkZvbnRGbGFncy5GaXhlZFBpdGNoOjApfCgoMCxsLmdldFN5bWJvbHNGb250cykoKVtjXT9vLkZvbnRGbGFncy5TeW1ib2xpYzpvLkZvbnRGbGFncy5Ob25zeW1ib2xpYyk7eT17dHlwZTpoLG5hbWU6ZSxsb2FkZWROYW1lOmEubG9hZGVkTmFtZSx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZCxmaXJzdENoYXI6dSxsYXN0Q2hhcjpmLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Om19O2NvbnN0IHA9dC5nZXQoIldpZHRocyIpLGI9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgdz1udWxsO2lmKGIpe3kuaXNTdGFuZGFyZEZvbnQ9ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShiKTt5LmlzSW50ZXJuYWxGb250PSEhd31yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCx0LHkpLnRoZW4oKHQ9PntpZihwKXtjb25zdCBlPVtdO2xldCBhPXU7Zm9yKGNvbnN0IHQgb2YgcCllW2ErK109dGhpcy54cmVmLmZldGNoSWZSZWYodCk7dC53aWR0aHM9ZX1lbHNlIHQud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgobi53aWR0aHMsdCk7cmV0dXJuIG5ldyBzLkZvbnQoZSx3LHQpfSkpfShlPW5ldyBpLkRpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLGkuTmFtZS5nZXQoaCkpO2Uuc2V0KCJGb250QkJveCIsdC5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgdyxTLHgsayxDLHY9ZS5nZXQoIkZvbnROYW1lIiksRj10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIHYmJih2PWkuTmFtZS5nZXQodikpOyJzdHJpbmciPT10eXBlb2YgRiYmKEY9aS5OYW1lLmdldChGKSk7aWYoIW0pe2NvbnN0IGU9diYmdi5uYW1lLHQ9RiYmRi5uYW1lO2lmKGUhPT10KXsoMCxyLmluZm8pKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtlfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke3R9Ii5gKTtlJiZ0JiZ0LnN0YXJ0c1dpdGgoZSkmJih2PUYpfX12PXZ8fEY7aWYoISh2IGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTt0cnl7dz1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt2Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTt3PW5ldyBiLk51bGxTdHJlYW19bGV0IE89ITEsVD0hMSxNPW51bGw7aWYodyl7aWYody5kaWN0KXtjb25zdCBlPXcuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgaS5OYW1lJiYoUz1lLm5hbWUpO3g9dy5kaWN0LmdldCgiTGVuZ3RoMSIpO2s9dy5kaWN0LmdldCgiTGVuZ3RoMiIpO0M9dy5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKHApe2NvbnN0IGU9KDAsZC5nZXRYZmFGb250TmFtZSkodi5uYW1lKTtpZihlKXtwLmZvbnRGYW1pbHk9YCR7cC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO3AubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7TT1lLmZhY3RvcnN8fG51bGw7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO1Q9ISF3O2E9dD0oMCxkLmdldFhmYUZvbnREaWN0KSh2Lm5hbWUpO2M9ITB9fWVsc2UgaWYoIW0pe2NvbnN0IGU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKSh2Lm5hbWUpO2lmKGUpe089ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTtUPSEhd319eT17dHlwZTpoLG5hbWU6di5uYW1lLHN1YnR5cGU6UyxmaWxlOncsbGVuZ3RoMTp4LGxlbmd0aDI6ayxsZW5ndGgzOkMsaXNTdGFuZGFyZEZvbnQ6Tyxpc0ludGVybmFsRm9udDpULGxvYWRlZE5hbWU6YS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpjLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDp0LmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6ZyxiYm94OmUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OmUuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OmUuZ2V0KCJEZXNjZW50IikseEhlaWdodDplLmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDplLmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6ZS5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6ZS5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6bSxjc3NGb250SW5mbzpwLHNjYWxlRmFjdG9yczpNfTtpZihjKXtjb25zdCBlPWEuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBpLk5hbWUmJih5LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBuLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt5LmNNYXA9dDt5LnZlcnRpY2FsPXkuY01hcC52ZXJ0aWNhbH1yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxhLHkpLnRoZW4oKGE9Pnt0aGlzLmV4dHJhY3RXaWR0aHModCxlLGEpO3JldHVybiBuZXcgcy5Gb250KHYubmFtZSx3LGEpfSkpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsYSxuKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3QgaT1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjthLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKG4uaWdub3JlRXJyb3JzKXthLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEJ1aWxkUGF0aH0pOygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0JiZ0LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IGkuRGljdDtlLnNldCgiQmFzZUZvbnQiLGkuTmFtZS5nZXQoIlBERkpTLUZhbGxiYWNrRm9udCIpKTtlLnNldCgiVHlwZSIsaS5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixpLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixpLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX10LlBhcnRpYWxFdmFsdWF0b3I9UGFydGlhbEV2YWx1YXRvcjtjbGFzcyBUcmFuc2xhdGVkRm9udHtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmEsZXZhbHVhdG9yT3B0aW9uczpyfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWE7dGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1yfHxNO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxhKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pO24ucGFyc2luZ1R5cGUzRm9udD0hMDtjb25zdCBzPW5ldyBpLlJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7Y29uc3Qgbz10aGlzLmZvbnQsYz10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBsPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGg9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksdT10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxkPU9iamVjdC5jcmVhdGUobnVsbCksZj1yLlV0aWwubm9ybWFsaXplUmVjdChvLmJib3h8fFswLDAsMCwwXSksZz1mWzJdLWZbMF0scD1mWzNdLWZbMV0sbT1NYXRoLmh5cG90KGcscCk7Zm9yKGNvbnN0IGUgb2YgaC5nZXRLZXlzKCkpbD1sLnRoZW4oKCgpPT57Y29uc3QgdD1oLmdldChlKSxpPW5ldyBPLk9wZXJhdG9yTGlzdDtyZXR1cm4gbi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6aX0pLnRoZW4oKCgpPT57aS5mbkFycmF5WzBdPT09ci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGksbSk7ZFtlXT1pLmdldElSKCk7Zm9yKGNvbnN0IGUgb2YgaS5kZXBlbmRlbmNpZXMpYy5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLHIud2FybikoYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgYT1uZXcgTy5PcGVyYXRvckxpc3Q7ZFtlXT1hLmdldElSKCl9KSl9KSk7dGhpcy50eXBlM0xvYWRlZD1sLnRoZW4oKCgpPT57by5jaGFyUHJvY09wZXJhdG9yTGlzdD1kO2lmKHRoaXMuX2Jib3gpe28uaXNDaGFyQkJveD0hMDtvLmJib3g9dGhpcy5fYmJveH19KSk7cmV0dXJuIHRoaXMudHlwZTNMb2FkZWR9X3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMoZSx0PU5hTil7Y29uc3QgYT1yLlV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksbj1hWzJdLWFbMF0saT1hWzNdLWFbMV0scz1NYXRoLmh5cG90KG4saSk7aWYoMD09PW58fDA9PT1pKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGFbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxhWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0sYVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGFbM10pfWxldCBvPTAsYz1lLmxlbmd0aDtmb3IoO288Yzspe3N3aXRjaChlLmZuQXJyYXlbb10pe2Nhc2Ugci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzOmJyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldEZpbGxDb2xvclNwYWNlOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOmNhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTpjYXNlIHIuT1BTLnNldEZpbGxHcmF5OmNhc2Ugci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDTVlLQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2hhZGluZ0ZpbGw6Y2FzZSByLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2MtLTtjb250aW51ZTtjYXNlIHIuT1BTLnNldEdTdGF0ZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtvXTtsZXQgYT0wLG49dC5sZW5ndGg7Zm9yKDthPG47KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7bi0tO2NvbnRpbnVlfWErK319bysrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09ci5VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9ci5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTt0aGlzLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsYSxyLG4saSl7Y29uc3Qgcz10aGlzLnRleHRNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09bjtzWzVdPWl9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEscixuLGkpe2NvbnN0IHM9dGhpcy50ZXh0TGluZU1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1uO3NbNV09aX10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KHIuSURFTlRJVFlfTUFUUklYKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPXIuVGV4dFJlbmRlcmluZ01vZGUuRklMTDt0aGlzLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5zdHJva2VDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtjb25zdCBlPSgwLEMuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS53PXtpZDpyLk9QUy5zZXRMaW5lV2lkdGgsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5KPXtpZDpyLk9QUy5zZXRMaW5lQ2FwLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2Uuaj17aWQ6ci5PUFMuc2V0TGluZUpvaW4sbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NPXtpZDpyLk9QUy5zZXRNaXRlckxpbWl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZD17aWQ6ci5PUFMuc2V0RGFzaCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLnJpPXtpZDpyLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5pPXtpZDpyLk9QUy5zZXRGbGF0bmVzcyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmdzPXtpZDpyLk9QUy5zZXRHU3RhdGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5xPXtpZDpyLk9QUy5zYXZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuUT17aWQ6ci5PUFMucmVzdG9yZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmNtPXtpZDpyLk9QUy50cmFuc2Zvcm0sbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5tPXtpZDpyLk9QUy5tb3ZlVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5sPXtpZDpyLk9QUy5saW5lVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5jPXtpZDpyLk9QUy5jdXJ2ZVRvLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2Uudj17aWQ6ci5PUFMuY3VydmVUbzIsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS55PXtpZDpyLk9QUy5jdXJ2ZVRvMyxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLmg9e2lkOnIuT1BTLmNsb3NlUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLnJlPXtpZDpyLk9QUy5yZWN0YW5nbGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5TPXtpZDpyLk9QUy5zdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5zPXtpZDpyLk9QUy5jbG9zZVN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmY9e2lkOnIuT1BTLmZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5GPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImYqIl09e2lkOnIuT1BTLmVvRmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkI9e2lkOnIuT1BTLmZpbGxTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiQioiXT17aWQ6ci5PUFMuZW9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuYj17aWQ6ci5PUFMuY2xvc2VGaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImIqIl09e2lkOnIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uubj17aWQ6ci5PUFMuZW5kUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlc9e2lkOnIuT1BTLmNsaXAsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiVyoiXT17aWQ6ci5PUFMuZW9DbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlQ9e2lkOnIuT1BTLmJlZ2luVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVUPXtpZDpyLk9QUy5lbmRUZXh0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGM9e2lkOnIuT1BTLnNldENoYXJTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHc9e2lkOnIuT1BTLnNldFdvcmRTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHo9e2lkOnIuT1BTLnNldEhTY2FsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRMPXtpZDpyLk9QUy5zZXRMZWFkaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGY9e2lkOnIuT1BTLnNldEZvbnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5Ucj17aWQ6ci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5Ucz17aWQ6ci5PUFMuc2V0VGV4dFJpc2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UZD17aWQ6ci5PUFMubW92ZVRleHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5URD17aWQ6ci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVG09e2lkOnIuT1BTLnNldFRleHRNYXRyaXgsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZVsiVCoiXT17aWQ6ci5PUFMubmV4dExpbmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5Uaj17aWQ6ci5PUFMuc2hvd1RleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5USj17aWQ6ci5PUFMuc2hvd1NwYWNlZFRleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZVsiJyJdPXtpZDpyLk9QUy5uZXh0TGluZVNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbJyInXT17aWQ6ci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5kMD17aWQ6ci5PUFMuc2V0Q2hhcldpZHRoLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuZDE9e2lkOnIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLkNTPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuY3M9e2lkOnIuT1BTLnNldEZpbGxDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuU0M9e2lkOnIuT1BTLnNldFN0cm9rZUNvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9O2UuU0NOPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2Uuc2M9e2lkOnIuT1BTLnNldEZpbGxDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLnNjbj17aWQ6ci5PUFMuc2V0RmlsbENvbG9yTixudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH07ZS5HPXtpZDpyLk9QUy5zZXRTdHJva2VHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZz17aWQ6ci5PUFMuc2V0RmlsbEdyYXksbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5SRz17aWQ6ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3IsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5yZz17aWQ6ci5PUFMuc2V0RmlsbFJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuSz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2Uuaz17aWQ6ci5PUFMuc2V0RmlsbENNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLnNoPXtpZDpyLk9QUy5zaGFkaW5nRmlsbCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJJPXtpZDpyLk9QUy5iZWdpbklubGluZUltYWdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuSUQ9e2lkOnIuT1BTLmJlZ2luSW1hZ2VEYXRhLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRUk9e2lkOnIuT1BTLmVuZElubGluZUltYWdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRG89e2lkOnIuT1BTLnBhaW50WE9iamVjdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLk1QPXtpZDpyLk9QUy5tYXJrUG9pbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5EUD17aWQ6ci5PUFMubWFya1BvaW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5CTUM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJEQz17aWQ6ci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5FTUM9e2lkOnIuT1BTLmVuZE1hcmtlZENvbnRlbnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CWD17aWQ6ci5PUFMuYmVnaW5Db21wYXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FWD17aWQ6ci5PUFMuZW5kQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQk09bnVsbDtlLkJEPW51bGw7ZS50cnVlPW51bGw7ZS5mYT1udWxsO2UuZmFsPW51bGw7ZS5mYWxzPW51bGw7ZS5mYWxzZT1udWxsO2UubnU9bnVsbDtlLm51bD1udWxsO2UubnVsbD1udWxsfSkpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJvcE1hcCIsZSgpKX1zdGF0aWMgZ2V0IE1BWF9JTlZBTElEX1BBVEhfT1BTKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCl9Y29uc3RydWN0b3IoZSx0LGE9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IHAuUGFyc2VyKHtsZXhlcjpuZXcgcC5MZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIGkuQ21kKXtjb25zdCBuPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW25dO2lmKCFpKXsoMCxyLndhcm4pKGBVbmtub3duIGNvbW1hbmQgIiR7bn0iLmApO2NvbnRpbnVlfWNvbnN0IHM9aS5pZCxvPWkubnVtQXJncztsZXQgYz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49ci5PUFMubW92ZVRvJiZzPD1yLk9QUy5lbmRQYXRoO2lmKGkudmFyaWFibGVBcmdzKWM+byYmKDAsci5pbmZvKShgQ29tbWFuZCAke259OiBleHBlY3RlZCBbMCwgJHtvfV0gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gKTtlbHNle2lmKGMhPT1vKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO2M+bzspe2UucHVzaCh0LnNoaWZ0KCkpO2MtLX1mb3IoO2M8byYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7YysrfX1pZihjPG8pe2NvbnN0IGU9YGNvbW1hbmQgJHtufTogZXhwZWN0ZWQgJHtvfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtjfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTsoMCxyLndhcm4pKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09aS5FT0YpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2Ugci5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPUV2YWx1YXRvclByZXByb2Nlc3Nvcn0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSgxNSksbz1hKDQpLGM9YSg4KTtjb25zdCBsPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0saD0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT5oKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1hO2NvbnN0IHQ9YS5jaGFyQ29kZUF0KHIpKzE7dD4yNTU/YT1hLnN1YnN0cmluZygwLHItMSkrU3RyaW5nLmZyb21DaGFyQ29kZShhLmNoYXJDb2RlQXQoci0xKSsxKSsiXDAiOmE9YS5zdWJzdHJpbmcoMCxyKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBuPTA7Zm9yKDtlPD10JiZuPHI7KXt0aGlzLl9tYXBbZV09YVtuKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBuPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLHM9bi5sZW5ndGg7aTxzO2krKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtpKSk+Pj4wO2NvbnN0IHM9bltpXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLG49c1tlKytdO2lmKHI+PXQmJnI8PW4pe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1pKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjspe2NvbnN0IG49clt0KytdLGk9clt0KytdO2lmKGU+PW4mJmU8PWkpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9Q01hcDtjbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX10LklkZW50aXR5Q01hcD1JZGVudGl0eUNNYXA7Y29uc3QgdT1mdW5jdGlvbiBCaW5hcnlDTWFwUmVhZGVyQ2xvc3VyZSgpe2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPD10O3IrKylhPWE8PDh8ZVtyXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPWE7bj49MDtuLS0pe3IrPWVbbl0rdFtuXTtlW25dPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3QgZT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBpPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcz10LG89MCxjPTA7Zm9yKDtzPj0wOyl7Zm9yKDtjPDgmJm4ubGVuZ3RoPjA7KXtvfD1uWy0taV08PGM7Yys9N31lW3NdPTI1NSZvO3MtLTtvPj49ODtjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKyl7cj0oMSZyKTw8OHxlW25dO2Vbbl09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtsZXQgdD0iIjtmb3IobGV0IGE9MDthPGU7YSsrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkTnVtYmVyKCkpO3JldHVybiB0fX1yZXR1cm4gY2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKHQsYSxyKXtjb25zdCBuPW5ldyBCaW5hcnlDTWFwU3RyZWFtKHQpLGk9bi5yZWFkQnl0ZSgpO2EudmVydGljYWw9ISEoMSZpKTtsZXQgcz1udWxsO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoZSksYz1uZXcgVWludDhBcnJheShlKSxsPW5ldyBVaW50OEFycmF5KGUpLGg9bmV3IFVpbnQ4QXJyYXkoZSksdT1uZXcgVWludDhBcnJheShlKTtsZXQgZCxmO2Zvcig7KGY9bi5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IHQ9Zj4+NTtpZig3PT09dCl7c3dpdGNoKDMxJmYpe2Nhc2UgMDpuLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cz1uLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCByPSEhKDE2JmYpLGk9MTUmZjtpZihpKzE+ZSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBnPTEscD1uLnJlYWROdW1iZXIoKTtzd2l0Y2godCl7Y2FzZSAwOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKX1icmVhaztjYXNlIDE6bi5yZWFkSGV4KG8saSk7bi5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtuLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7bi5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOm4ucmVhZEhleChsLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBPbmUoaGV4VG9JbnQobCxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxpKTtpZighcil7bi5yZWFkSGV4TnVtYmVyKHUsaSk7YWRkSGV4KGwsdSxpKX1kPW4ucmVhZFNpZ25lZCgpKyhkKzEpO2EubWFwT25lKGhleFRvSW50KGwsaSksZCl9YnJlYWs7Y2FzZSAzOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7ZD1uLnJlYWROdW1iZXIoKTthLm1hcENpZFJhbmdlKGhleFRvSW50KG8saSksaGV4VG9JbnQoYyxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtpZihyKW8uc2V0KGMpO2Vsc2V7bi5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8sYyxpKX1uLnJlYWRIZXhOdW1iZXIoYyxpKTthZGRIZXgoYyxvLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBDaWRSYW5nZShoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSksZCl9YnJlYWs7Y2FzZSA0Om4ucmVhZEhleChsLGcpO24ucmVhZEhleChoLGkpO2EubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsZyk7aWYoIXIpe24ucmVhZEhleE51bWJlcih1LGcpO2FkZEhleChsLHUsZyl9aW5jSGV4KGgsaSk7bi5yZWFkSGV4U2lnbmVkKHUsaSk7YWRkSGV4KGgsdSxpKTthLm1hcE9uZShoZXhUb0ludChsLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2Nhc2UgNTpuLnJlYWRIZXgobyxnKTtuLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO24ucmVhZEhleChoLGkpO2EubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGMsZyk7aWYocilvLnNldChjKTtlbHNle24ucmVhZEhleE51bWJlcihvLGcpO2FkZEhleChvLGMsZyl9bi5yZWFkSGV4TnVtYmVyKGMsZyk7YWRkSGV4KGMsbyxnKTtuLnJlYWRIZXgoaCxpKTthLm1hcEJmUmFuZ2UoaGV4VG9JbnQobyxnKSxoZXhUb0ludChjLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7dH1gKX19cmV0dXJuIHM/cihzKTphfX19KCksZD1mdW5jdGlvbiBDTWFwRmFjdG9yeUNsb3N1cmUoKXtmdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKXx8InN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoYSk/U3RyaW5nLmZyb21DaGFyQ29kZShhKTphO2UubWFwQmZSYW5nZShyLGksdCl9ZWxzZXtpZighKDAsbi5pc0NtZCkoYSwiWyIpKWJyZWFrO3thPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyEoMCxuLmlzQ21kKShhLCJdIikmJmEhPT1uLkVPRjspe3MucHVzaChhKTthPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShyLGkscyl9fX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoKDAsbi5pc0NtZCkoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcz1hO2UubWFwQ2lkUmFuZ2UocixpLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IGk9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxyLGkpfXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2Ygbi5OYW1lJiYoZS5uYW1lPWEubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxhLGkpe2xldCBzLGM7ZTpmb3IoOzspdHJ5e2NvbnN0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoYSBpbnN0YW5jZW9mIG4uTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3M9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBuLkNtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBuLk5hbWUmJihjPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFpJiZjJiYoaT1jKTtyZXR1cm4gaT9leHRlbmRDTWFwKGUsYSxpKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWwuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmEsY29tcHJlc3Npb25UeXBlOm59PWF3YWl0IHQoZSksaT1uZXcgQ01hcCghMCk7aWYobj09PXIuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkpcmV0dXJuKG5ldyB1KS5wcm9jZXNzKGEsaSwoZT0+ZXh0ZW5kQ01hcChpLHQsZSkpKTtpZihuPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2NvbnN0IGU9bmV3IHMuTGV4ZXIobmV3IGMuU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKGksZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke259YCl9cmV0dXJue2FzeW5jIGNyZWF0ZShlKXtjb25zdCB0PWUuZW5jb2RpbmcsYT1lLmZldGNoQnVpbHRJbkNNYXAscj1lLnVzZUNNYXA7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAodC5uYW1lLGEpO2lmKHQgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBzLkxleGVyKHQpLGEscik7cmV0dXJuIGUuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLGEpOmV9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19fSgpO3QuQ01hcEZhY3Rvcnk9ZH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnNlcj10LkxpbmVhcml6YXRpb249dC5MZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpLHM9YSgxNiksbz1hKDE4KSxjPWEoMTkpLGw9YSgyMSksaD1hKDIyKSx1PWEoMjUpLGQ9YSgyNyksZj1hKDI5KSxnPWEoOCkscD1hKDMwKSxtPWEoMzEpO2Z1bmN0aW9uIGNvbXB1dGVBZGxlcjMyKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MSxyPTA7Zm9yKGxldCBuPTA7bjx0Oysrbil7YSs9MjU1JmVbbl07cis9YX1yZXR1cm4gciU2NTUyMTw8MTZ8YSU2NTUyMX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2Ygbi5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2Ygbi5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1uLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBhO2Nhc2UiPDwiOmNvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09bi5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIG4uTmFtZSkpeygwLHIuaW5mbykoIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW4uRU9GKWJyZWFrO3Muc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW4uRU9GKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gczt0aHJvdyBuZXcgaS5QYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKCgwLG4uaXNDbWQpKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM7dGhpcy5zaGlmdCgpO3JldHVybiBzO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiYoMCxuLmlzQ21kKSh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1uLlJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPWUucG9zO2xldCBzLG8sYz0wO2Zvcig7LTEhPT0ocz1lLmdldEJ5dGUoKSk7KWlmKDA9PT1jKWM9Njk9PT1zPzE6MDtlbHNlIGlmKDE9PT1jKWM9NzM9PT1zPzI6MDtlbHNleygwLHIuYXNzZXJ0KSgyPT09YywiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBpbnZhbGlkIHN0YXRlLiIpO2lmKDMyPT09c3x8MTA9PT1zfHwxMz09PXMpe289ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxMCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtzPWFbZV07aWYoKDAhPT1zfHwwPT09YVtlKzFdKSYmKDEwIT09cyYmMTMhPT1zJiYoczwzMnx8cz4xMjcpKSl7Yz0wO2JyZWFrfX1pZigyIT09Yyljb250aW51ZTtpZih0Lmtub3duQ29tbWFuZHMpe2NvbnN0IGU9dC5wZWVrT2JqKCk7ZSBpbnN0YW5jZW9mIG4uQ21kJiYhdC5rbm93bkNvbW1hbmRzW2UuY21kXSYmKGM9MCl9ZWxzZSgwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtpZigyPT09YylicmVha31lbHNlIGM9MH1pZigtMT09PXMpeygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihvKXsoMCxyLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLW8pKX19bGV0IGw9NDtlLnNraXAoLWwpO3M9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChsKTsoMCxpLmlzV2hpdGVTcGFjZSkocyl8fGwtLTtyZXR1cm4gZS5wb3MtbC1hfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYSxuLGk9ITE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09YSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzppPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0Om49ZS5nZXRVaW50MTYoKTtuPjI/ZS5za2lwKG4tMik6ZS5za2lwKC0yKX1pZihpKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWEpe2NvbnN0IHQ9ZS5wb3M7YT1lLnBlZWtCeXRlKCk7Zm9yKDsoMCxpLmlzV2hpdGVTcGFjZSkoYSk7KXtlLnNraXAoKTthPWUucGVla0J5dGUoKX1pZig2Mj09PWEpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IG49ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1hOyk7Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGE9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YSlhPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YSlhPTczPT09dD8yOjA7ZWxzZSBpZigyPT09YSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGE9dC5zdHJlYW0saT1uZXcgbi5EaWN0KHRoaXMueHJlZik7bGV0IHM7Zm9yKDshKDAsbi5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bi5FT0YpYnJlYWs7aS5zZXQodCx0aGlzLmdldE9iaihlKSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihzPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbz1pLmdldCgiRiIsIkZpbHRlciIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBuLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBuLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1hLnBvcztsZXQgaDtzd2l0Y2goYyl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpoPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpoPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpoPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9bGV0IHUsZD1hLm1ha2VTdWJTdHJlYW0obCxoLGkpO2lmKGg8MWUzJiZzPDU1NTIpe2NvbnN0IGU9ZC5nZXRCeXRlcygpO2QucmVzZXQoKTtjb25zdCByPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjb25zdCBpPWEuZ2V0Qnl0ZXMocyk7YS5wb3M9cjt1PWNvbXB1dGVBZGxlcjMyKGUpKyJfIitjb21wdXRlQWRsZXIzMihpKTtjb25zdCBvPXRoaXMuaW1hZ2VDYWNoZVt1XTtpZih2b2lkIDAhPT1vKXt0aGlzLmJ1ZjI9bi5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtvLnJlc2V0KCk7cmV0dXJuIG99fWUmJihkPWUuY3JlYXRlU3RyZWFtKGQsaCkpO2Q9dGhpcy5maWx0ZXIoZCxpLGgpO2QuZGljdD1pO2lmKHZvaWQgMCE9PXUpe2QuY2FjaGVLZXk9YGlubGluZV8ke2h9XyR7dX1gO3RoaXMuaW1hZ2VDYWNoZVt1XT1kfXRoaXMuYnVmMj1uLkNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBkfV9maW5kU3RyZWFtTGVuZ3RoKGUsdCl7Y29uc3R7c3RyZWFtOmF9PXRoaXMubGV4ZXI7YS5wb3M9ZTtjb25zdCByPXQubGVuZ3RoO2Zvcig7YS5wb3M8YS5lbmQ7KXtjb25zdCBuPWEucGVla0J5dGVzKDIwNDgpLGk9bi5sZW5ndGgtcjtpZihpPD0wKWJyZWFrO2xldCBzPTA7Zm9yKDtzPGk7KXtsZXQgaT0wO2Zvcig7aTxyJiZuW3MraV09PT10W2ldOylpKys7aWYoaT49cil7YS5wb3MrPXM7cmV0dXJuIGEucG9zLWV9cysrfWEucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IHM9YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpeygwLHIuaW5mbykoYEJhZCBsZW5ndGggIiR7YyYmYy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO2M9MH1zLnBvcz1vK2M7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmKDAsbi5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSk7bGV0IHQ9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGUpO2lmKHQ8MCl7Y29uc3QgYT0xO2ZvcihsZXQgbj0xO248PWE7bisrKXtjb25zdCBhPWUubGVuZ3RoLW4sYz1lLnNsaWNlKDAsYSksbD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKG8sYyk7aWYobD49MCl7Y29uc3QgZT1zLnBlZWtCeXRlcyhhKzEpW2FdO2lmKCEoMCxpLmlzV2hpdGVTcGFjZSkoZSkpYnJlYWs7KDAsci5pbmZvKShgRm91bmQgIiR7KDAsci5ieXRlc1RvU3RyaW5nKShjKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PWw7YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKX1jPXQ7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3M9cy5tYWtlU3ViU3RyZWFtKG8sYyxlKTt0JiYocz10LmNyZWF0ZVN0cmVhbShzLGMpKTtzPXRoaXMuZmlsdGVyKHMsZSxjKTtzLmRpY3Q9ZTtyZXR1cm4gc31maWx0ZXIoZSx0LGEpe2xldCBpPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGkgaW5zdGFuY2VvZiBuLk5hbWUpe0FycmF5LmlzQXJyYXkocykmJigwLHIud2FybikoIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsYSxzKX1sZXQgbz1hO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxhPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pO2lmKCEoaSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtpfSJgKTtzPW51bGw7QXJyYXkuaXNBcnJheShhKSYmYyBpbiBhJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW2NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKTtvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEsbil7aWYoMD09PWEpeygwLHIud2FybikoYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBnLk51bGxTdHJlYW19Y29uc3QgYj10aGlzLnhyZWYuc3RhdHM7dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkZMQVRFKTtyZXR1cm4gbj9uZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGwuRmxhdGVTdHJlYW0oZSxhKSxhLG4pOm5ldyBsLkZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkxaVyk7bGV0IHQ9MTtpZihuKXtuLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9bi5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGYuTFpXU3RyZWFtKGUsYSx0KSxhLG4pfXJldHVybiBuZXcgZi5MWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5EQ1QpO3JldHVybiBuZXcgdS5KcGVnU3RyZWFtKGUsYSxuKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOmIuYWRkU3RyZWFtVHlwZShyLlN0cmVhbVR5cGUuSlBYKTtyZXR1cm4gbmV3IGQuSnB4U3RyZWFtKGUsYSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkE4NSk7cmV0dXJuIG5ldyBzLkFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5BSFgpO3JldHVybiBuZXcgby5Bc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkNDRik7cmV0dXJuIG5ldyBjLkNDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5STFgpO3JldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkpCSUcpO3JldHVybiBuZXcgaC5KYmlnMlN0cmVhbShlLGEsbil9KDAsci53YXJuKShgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgZy5OdWxsU3RyZWFtfX19dC5QYXJzZXI9UGFyc2VyO2NvbnN0IGI9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxhPTAsbj0wO2lmKDQ1PT09ZSl7bj0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSBpZig0Mz09PWUpe249MTtlPXRoaXMubmV4dENoYXIoKX1pZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXthPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpeygwLHIuaW5mbykoYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcih0KX1uPW58fDE7bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodClvPTEwKm8rcjtlbHNlezAhPT1hJiYoYSo9MTApO3M9MTAqcytyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKSgwLHIud2FybikoIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtjPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKHMvPWEpO3QmJihzKj0xMCoqKGMqbykpO3JldHVybiBuKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgbj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxuKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjpuPXRoaXMubmV4dENoYXIoKTtzd2l0Y2gobil7Y2FzZS0xOigwLHIud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1Jm47bj10aGlzLm5leHRDaGFyKCk7aT0hMDtpZihuPj00OCYmbjw9NTUpe2U9KGU8PDMpKygxNSZuKTtuPXRoaXMubmV4dENoYXIoKTtpZihuPj00OCYmbjw9NTUpe2k9ITE7ZT0oZTw8MykrKDE1Jm4pfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9aWYodClicmVhaztpfHwobj10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGJbZV0peygwLHIud2FybikoIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgbj10b0hleERpZ2l0KGUpO2lmKC0xIT09bil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpeygwLHIud2FybikoYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDR8aSkpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJigwLHIud2FybikoYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gbi5OYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHwoMCxyLndhcm4pKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOigwLHIud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxhLG49dGhpcy5jdXJyZW50Q2hhcixpPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKG48MCl7KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PW4pe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09YltuXSl7aWYoaSl7dD10b0hleERpZ2l0KG4pO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihuKTtuPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXthPXRvSGV4RGlnaXQobik7aWYoLTE9PT1hKXt0aGlzLl9oZXhTdHJpbmdXYXJuKG4pO249dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8YSkpfWk9IWk7bj10aGlzLm5leHRDaGFyKCl9ZWxzZSBuPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG4uRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgiPj4iKX1yZXR1cm4gbi5DbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KGEpfX1jb25zdCBpPXRoaXMua25vd25Db21tYW5kcztsZXQgcz1pJiZ2b2lkIDAhPT1pW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1pW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2EubGVuZ3RofWApO2E9ZTtzPWkmJnZvaWQgMCE9PWlbYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIG4uQ21kLmdldChhKX1wZWVrT2JqKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MsdD10aGlzLmN1cnJlbnRDaGFyLGE9dGhpcy5iZWdpbklubGluZUltYWdlUG9zO2xldCBuO3RyeXtuPXRoaXMuZ2V0T2JqKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBwZWVrT2JqOiAke2V9YCl9dGhpcy5zdHJlYW0ucG9zPWU7dGhpcy5jdXJyZW50Q2hhcj10O3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz1hO3JldHVybiBufXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19dC5MZXhlcj1MZXhlcjt0LkxpbmVhcml6YXRpb249Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoYT9yPj0wOnI+MCkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxpPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBvLGM7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoMCxuLmlzQ21kKShpLCJvYmoiKSYmcyBpbnN0YW5jZW9mIG4uRGljdCYmIm51bWJlciI9PXR5cGVvZihvPXMuZ2V0KCJMaW5lYXJpemVkIikpJiZvPjApKXJldHVybiBudWxsO2lmKChjPWdldEludChzLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6YyxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShzKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQocywiTyIpLGVuZEZpcnN0OmdldEludChzLCJFIiksbnVtUGFnZXM6Z2V0SW50KHMsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHMsIlQiKSxwYWdlRmlyc3Q6cy5oYXMoIlAiKT9nZXRJbnQocywiUCIsITApOjB9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaTg1U3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KSxuPWEoNCk7Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7KDAsbi5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7c1tpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKXNbaV09MTE3O3RoaXMuZW9mPSEwfWxldCBvPTA7Zm9yKGk9MDtpPDU7KytpKW89ODUqbysoc1tpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZvO28+Pj04fX19fXQuQXNjaWk4NVN0cmVhbT1Bc2NpaTg1U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPXQuRGVjb2RlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSg4KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIHIuQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO3RoaXMucG9zPTA7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmVvZj0hMTt0aGlzLmJ1ZmZlcj1pO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIodCtlKTthPXQrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2soKTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTthPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KHQsYSl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IG4uU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fXQuRGVjb2RlU3RyZWFtPURlY29kZVN0cmVhbTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3QmJnQuZGljdC5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGEscik7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBhPXQuZ2V0QmFzZVN0cmVhbXMoKTthJiZlLnB1c2goLi4uYSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaUhleFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGE9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IHI9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKG48MCluPWU7ZWxzZXthW3IrK109bjw8NHxlO249LTF9fWlmKG4+PTAmJnRoaXMuZW9mKXthW3IrK109bjw8NDtuPS0xfXRoaXMuZmlyc3REaWdpdD1uO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fXQuQXNjaWlIZXhTdHJlYW09QXNjaWlIZXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheFN0cmVhbT12b2lkIDA7dmFyIHI9YSgyMCksbj1hKDE3KSxpPWEoMyk7Y2xhc3MgQ0NJVFRGYXhTdHJlYW0gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBpLkRpY3R8fChhPWkuRGljdC5lbXB0eSk7Y29uc3Qgbj17bmV4dDooKT0+ZS5nZXRCeXRlKCl9O3RoaXMuY2NpdHRGYXhEZWNvZGVyPW5ldyByLkNDSVRURmF4RGVjb2RlcihuLHtLOmEuZ2V0KCJLIiksRW5kT2ZMaW5lOmEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpLFJvd3M6YS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmEuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6YS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fXQuQ0NJVFRGYXhTdHJlYW09Q0NJVFRGYXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheERlY29kZXI9dm9pZCAwO3ZhciByPWEoMik7Y29uc3Qgbj0tMSxpPVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLHM9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxvPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs4LDI5XSxbOCwyOV0sWzgsMzBdLFs4LDMwXSxbOCw0NV0sWzgsNDVdLFs4LDQ2XSxbOCw0Nl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbOCw0N10sWzgsNDddLFs4LDQ4XSxbOCw0OF0sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzgsMzNdLFs4LDMzXSxbOCwzNF0sWzgsMzRdLFs4LDM1XSxbOCwzNV0sWzgsMzZdLFs4LDM2XSxbOCwzN10sWzgsMzddLFs4LDM4XSxbOCwzOF0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzcsMTldLFs4LDMxXSxbOCwzMV0sWzgsMzJdLFs4LDMyXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs4LDUzXSxbOCw1M10sWzgsNTRdLFs4LDU0XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzgsMzldLFs4LDM5XSxbOCw0MF0sWzgsNDBdLFs4LDQxXSxbOCw0MV0sWzgsNDJdLFs4LDQyXSxbOCw0M10sWzgsNDNdLFs4LDQ0XSxbOCw0NF0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbOCw2MV0sWzgsNjFdLFs4LDYyXSxbOCw2Ml0sWzgsNjNdLFs4LDYzXSxbOCwwXSxbOCwwXSxbOCwzMjBdLFs4LDMyMF0sWzgsMzg0XSxbOCwzODRdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzcsMjddLFs3LDI3XSxbNywyN10sWzcsMjddLFs4LDU5XSxbOCw1OV0sWzgsNjBdLFs4LDYwXSxbOSwxNDcyXSxbOSwxNTM2XSxbOSwxNjAwXSxbOSwxNzI4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs4LDQ5XSxbOCw0OV0sWzgsNTBdLFs4LDUwXSxbOCw1MV0sWzgsNTFdLFs4LDUyXSxbOCw1Ml0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs4LDU1XSxbOCw1NV0sWzgsNTZdLFs4LDU2XSxbOCw1N10sWzgsNTddLFs4LDU4XSxbOCw1OF0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs4LDQ0OF0sWzgsNDQ4XSxbOCw1MTJdLFs4LDUxMl0sWzksNzA0XSxbOSw3NjhdLFs4LDY0MF0sWzgsNjQwXSxbOCw1NzZdLFs4LDU3Nl0sWzksODMyXSxbOSw4OTZdLFs5LDk2MF0sWzksMTAyNF0sWzksMTA4OF0sWzksMTE1Ml0sWzksMTIxNl0sWzksMTI4MF0sWzksMTM0NF0sWzksMTQwOF0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddXSxjPVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLGw9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0saD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbNiw5XSxbNiw4XSxbNSw3XSxbNSw3XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXV07dC5DQ0lUVEZheERlY29kZXI9Y2xhc3MgQ0NJVFRGYXhEZWNvZGVye2NvbnN0cnVjdG9yKGUsdD17fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm5leHQpdGhyb3cgbmV3IEVycm9yKCdDQ0lUVEZheERlY29kZXIgLSBpbnZhbGlkICJzb3VyY2UiIHBhcmFtZXRlci4nKTt0aGlzLnNvdXJjZT1lO3RoaXMuZW9mPSExO3RoaXMuZW5jb2Rpbmc9dC5LfHwwO3RoaXMuZW9saW5lPXQuRW5kT2ZMaW5lfHwhMTt0aGlzLmJ5dGVBbGlnbj10LkVuY29kZWRCeXRlQWxpZ258fCExO3RoaXMuY29sdW1ucz10LkNvbHVtbnN8fDE3Mjg7dGhpcy5yb3dzPXQuUm93c3x8MDtsZXQgYSxyPXQuRW5kT2ZCbG9jaztudWxsPT1yJiYocj0hMCk7dGhpcy5lb2Jsb2NrPXI7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCBpLHMsbyxjLGw7aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbyxsLGg7aWYodGhpcy5uZXh0TGluZTJEKXtmb3IoYz0wO3RbY108YTsrK2MpZVtjXT10W2NdO2VbYysrXT1hO2VbY109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtpPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChvKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbaSsxXSxzKTtlW2krMV08YSYmKGkrPTIpO2JyZWFrO2Nhc2UgMTpvPWw9MDtpZihzKXtkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KX1lbHNle2Rve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtpXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbaV0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2ldKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtpXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSBuOnRoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289MDtpZihzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyk7c149MX19bGV0IHU9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7bz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtvIT09biYmMSE9PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bzspe3RoaXMuX2VhdEJpdHMoMSk7bz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO3U9ITB9ZWxzZSBvPT09biYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZ1JiZ0aGlzLmJ5dGVBbGlnbil7bz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYyl7bz10aGlzLl9sb29rQml0cygxMik7MSE9PW8mJigwLHIuaW5mbykoImJhZCBydGMgY29kZTogIitvKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtvPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihvPT09bil7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJm8pfX10WzBdPjA/dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgbj10aGlzLmNvZGluZ1BvcztpZihlPmFbbl0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZuXnQmJisrbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IG49dGhpcy5jb2RpbmdQb3M7aWYoZT5hW25dKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmbl50JiYrK247YVtuXT1lfWVsc2UgaWYoZTxhW25dKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO24+MCYmZTxhW24tMV07KS0tbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBpPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1uKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPWlbdF07aWYoZSYmZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsaSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIG59X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHQ9PT1uKXJldHVybiAxO2U9dD4+NT09MD9zW3RdOm9bdD4+M107aWYoZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw5LG8pO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLHMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PW4pcmV0dXJuIDE7dD1lPj43PT0wP2NbZV06ZT4+OT09MCYmZT4+NyE9MD9sWyhlPj4xKS02NF06aFtlPj43XTtpZih0WzBdPjApe3RoaXMuX2VhdEJpdHModFswXSk7cmV0dXJuIHRbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgyLDYsaCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixsLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxjKTtpZihlWzBdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoImJhZCBibGFjayBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/bjp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GbGF0ZVN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDIpO2NvbnN0IGk9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxzPW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLG89bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxjPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxsPVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLHI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoKChhPDw4KStyKSUzMSE9MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigzMiZyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1hPDxyO3IrPTh9YT1pJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1pPj5lO3RoaXMuY29kZVNpemU9ci09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsYT1lWzBdLHI9ZVsxXTtsZXQgaSxzPXRoaXMuY29kZVNpemUsbz10aGlzLmNvZGVCdWY7Zm9yKDtzPHImJi0xIT09KGk9dC5nZXRCeXRlKCkpOyl7b3w9aTw8cztzKz04fWNvbnN0IGM9YVtvJigxPDxyKS0xXSxsPWM+PjE2LGg9NjU1MzUmYztpZihsPDF8fHM8bCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1vPj5sO3RoaXMuY29kZVNpemU9cy1sO3JldHVybiBofWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGEscj0wO2ZvcihhPTA7YTx0OysrYSllW2FdPnImJihyPWVbYV0pO2NvbnN0IG49MTw8cixpPW5ldyBJbnQzMkFycmF5KG4pO2ZvcihsZXQgcz0xLG89MCxjPTI7czw9cjsrK3Msbzw8PTEsYzw8PTEpZm9yKGxldCByPTA7cjx0OysrcilpZihlW3JdPT09cyl7bGV0IGU9MCx0PW87Zm9yKGE9MDthPHM7KythKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihhPWU7YTxuO2ErPWMpaVthXT1zPDwxNnxyOysrb31yZXR1cm5baSxyXX1yZWFkQmxvY2soKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHI7bGV0IHIsaCx1PXRoaXMuZ2V0Qml0cygzKTsxJnUmJih0aGlzLmVvZj0hMCk7dT4+PTE7aWYoMD09PXUpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2xldCByPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cnw9dDw8ODtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2l8PXQ8PDg7aWYoaSE9PSg2NTUzNSZ+cikmJigwIT09cnx8MCE9PWkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxvPXMrcjtlPXRoaXMuZW5zdXJlQnVmZmVyKG8pO3RoaXMuYnVmZmVyTGVuZ3RoPW87aWYoMD09PXIpLTE9PT1hLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWEuZ2V0Qnl0ZXMocik7ZS5zZXQodCxzKTt0Lmxlbmd0aDxyJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09dSl7cj1jO2g9bH1lbHNle2lmKDIhPT11KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxhPXRoaXMuZ2V0Qml0cyg1KSsxLG49dGhpcy5nZXRCaXRzKDQpKzQscz1uZXcgVWludDhBcnJheShpLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPG47KytvKXNbaVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTt0PTA7bz0wO2NvbnN0IGw9ZSthLHU9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGQsZixnO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKXtkPTI7Zj0zO2c9dH1lbHNlIGlmKDE3PT09ZSl7ZD0zO2Y9MztnPXQ9MH1lbHNle2lmKDE4IT09ZSl7dVtvKytdPXQ9ZTtjb250aW51ZX1kPTc7Zj0xMTtnPXQ9MH1sZXQgYT10aGlzLmdldEJpdHMoZCkrZjtmb3IoO2EtLSA+MDspdVtvKytdPWd9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoMCxlKSk7aD10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoZSxsKSl9fWU9dGhpcy5idWZmZXI7bGV0IGQ9ZT9lLmxlbmd0aDowLGY9dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgYT10aGlzLmdldENvZGUocik7aWYoYTwyNTYpe2lmKGYrMT49ZCl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihmKzEpO2Q9ZS5sZW5ndGh9ZVtmKytdPWE7Y29udGludWV9aWYoMjU2PT09YSl7dGhpcy5idWZmZXJMZW5ndGg9ZjtyZXR1cm59YS09MjU3O2E9c1thXTtsZXQgbj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7dD0oNjU1MzUmYSkrbjthPXRoaXMuZ2V0Q29kZShoKTthPW9bYV07bj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7Y29uc3QgaT0oNjU1MzUmYSkrbjtpZihmK3Q+PWQpe2U9dGhpcy5lbnN1cmVCdWZmZXIoZit0KTtkPWUubGVuZ3RofWZvcihsZXQgYT0wO2E8dDsrK2EsKytmKWVbZl09ZVtmLWldfX19dC5GbGF0ZVN0cmVhbT1GbGF0ZVN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpiaWcyU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgxNyksaT1hKDMpLHM9YSgyMyksbz1hKDIpO2NsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBzLkpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiByLkJhc2VTdHJlYW0pe2NvbnN0IGE9ZS5nZXRCeXRlcygpO3QucHVzaCh7ZGF0YTphLHN0YXJ0OjAsZW5kOmEubGVuZ3RofSl9fXQucHVzaCh7ZGF0YTp0aGlzLmJ5dGVzLHN0YXJ0OjAsZW5kOnRoaXMuYnl0ZXMubGVuZ3RofSk7Y29uc3QgYT1lLnBhcnNlQ2h1bmtzKHQpLG49YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuO2UrKylhW2VdXj0yNTU7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1uO3RoaXMuZW9mPSEwfX10LkpiaWcyU3RyZWFtPUpiaWcyU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNCksaT1hKDI0KSxzPWEoMjApO2NsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoYEpCSUcyIGVycm9yOiAke2V9YCwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtjb25zdCBlPW5ldyBpLkFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZGVjb2RlciIsZSl9Z2V0IGNvbnRleHRDYWNoZSgpe2NvbnN0IGU9bmV3IENvbnRleHRDYWNoZTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY29udGV4dENhY2hlIixlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKHQpO2xldCBuPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGU7aSsrKXtjb25zdCBlPWEucmVhZEJpdChyLG4pO249bjwyNTY/bjw8MXxlOjUxMSYobjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IGk9cmVhZEJpdHMoMSkscz1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7cmV0dXJuIDA9PT1pP3M6cz4wPy1zOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IG49MTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuPW48PDF8dC5yZWFkQml0KHIsbil9cmV0dXJuIGE8MzE/biYoMTw8YSktMToyMTQ3NDgzNjQ3Jm59Y29uc3Qgbz1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLGM9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLGw9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxoPVszOTcxNywxOTQxLDIyOSw0MDVdLHU9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLG4saSxzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIWkmJiFuJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsbj1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1pW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6aVtvLTFdO2Q9bzwyP2g6aVtvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQobixzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBpfSh0LGEsbyk7Y29uc3QgbD0hIWksdT1jW3JdLmNvbmNhdChzKTt1LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgZD11Lmxlbmd0aCxmPW5ldyBJbnQ4QXJyYXkoZCksZz1uZXcgSW50OEFycmF5KGQpLHA9W107bGV0IG0sYix5PTAsdz0wLFM9MCx4PTA7Zm9yKGI9MDtiPGQ7YisrKXtmW2JdPXVbYl0ueDtnW2JdPXVbYl0ueTt3PU1hdGgubWluKHcsdVtiXS54KTtTPU1hdGgubWF4KFMsdVtiXS54KTt4PU1hdGgubWluKHgsdVtiXS55KTtiPGQtMSYmdVtiXS55PT09dVtiKzFdLnkmJnVbYl0ueD09PXVbYisxXS54LTE/eXw9MTw8ZC0xLWI6cC5wdXNoKGIpfWNvbnN0IGs9cC5sZW5ndGgsQz1uZXcgSW50OEFycmF5KGspLHY9bmV3IEludDhBcnJheShrKSxGPW5ldyBVaW50MTZBcnJheShrKTtmb3IobT0wO208azttKyspe2I9cFttXTtDW21dPXVbYl0ueDt2W21dPXVbYl0ueTtGW21dPTE8PGQtMS1ifWNvbnN0IE89LXcsVD0teCxNPXQtUyxFPWhbcl07bGV0IEQ9bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgTj1bXSxSPW8uZGVjb2RlcixMPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBqLCQsXyxVLFgsSD0wLHE9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZihuKXtIXj1SLnJlYWRCaXQoTCxFKTtpZihIKXtOLnB1c2goRCk7Y29udGludWV9fUQ9bmV3IFVpbnQ4QXJyYXkoRCk7Ti5wdXNoKEQpO2ZvcihqPTA7ajx0O2orKyl7aWYobCYmaVtlXVtqXSl7RFtqXT0wO2NvbnRpbnVlfWlmKGo+PU8mJmo8TSYmZT49VCl7cT1xPDwxJnk7Zm9yKGI9MDtiPGs7YisrKXskPWUrdltiXTtfPWorQ1tiXTtVPU5bJF1bX107aWYoVSl7VT1GW2JdO3F8PVV9fX1lbHNle3E9MDtYPWQtMTtmb3IoYj0wO2I8ZDtiKyssWC0tKXtfPWorZltiXTtpZihfPj0wJiZfPHQpeyQ9ZStnW2JdO2lmKCQ+PTApe1U9TlskXVtfXTtVJiYocXw9VTw8WCl9fX19Y29uc3QgYT1SLnJlYWRCaXQoTCxxKTtEW2pdPWF9fXJldHVybiBOfWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGEscixuLGkscyxvLGMpe2xldCBoPWxbYV0uY29kaW5nOzA9PT1hJiYoaD1oLmNvbmNhdChbb1swXV0pKTtjb25zdCBkPWgubGVuZ3RoLGY9bmV3IEludDMyQXJyYXkoZCksZz1uZXcgSW50MzJBcnJheShkKTtsZXQgcDtmb3IocD0wO3A8ZDtwKyspe2ZbcF09aFtwXS54O2dbcF09aFtwXS55fWxldCBtPWxbYV0ucmVmZXJlbmNlOzA9PT1hJiYobT1tLmNvbmNhdChbb1sxXV0pKTtjb25zdCBiPW0ubGVuZ3RoLHk9bmV3IEludDMyQXJyYXkoYiksdz1uZXcgSW50MzJBcnJheShiKTtmb3IocD0wO3A8YjtwKyspe3lbcF09bVtwXS54O3dbcF09bVtwXS55fWNvbnN0IFM9clswXS5sZW5ndGgseD1yLmxlbmd0aCxrPXVbYV0sQz1bXSx2PWMuZGVjb2RlcixGPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBPPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYocyl7T149di5yZWFkQml0KEYsayk7aWYoTyl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtDLnB1c2godCk7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG8sYyxsPTA7Zm9yKHA9MDtwPGQ7cCsrKXtvPWErZ1twXTtjPXMrZltwXTtvPDB8fGM8MHx8Yz49ZT9sPDw9MTpsPWw8PDF8Q1tvXVtjXX1mb3IocD0wO3A8YjtwKyspe289YSt3W3BdLWk7Yz1zK3lbcF0tbjtvPDB8fG8+PXh8fGM8MHx8Yz49Uz9sPDw9MTpsPWw8PDF8cltvXVtjXX1jb25zdCBoPXYucmVhZEJpdChGLGwpO3Rbc109aH19cmV0dXJuIEN9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5KXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3Qgdz1bXTtsZXQgUyx4O2ZvcihTPTA7UzxyO1MrKyl7eD1uZXcgVWludDhBcnJheShhKTtpZihuKWZvcihsZXQgZT0wO2U8YTtlKyspeFtlXT1uO3cucHVzaCh4KX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDtTPTA7Zm9yKDtTPGk7KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgbj0wO3M+MSYmKG49ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IGk9cyp2K24sRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksTz10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgVD1vW0ZdLE09VFswXS5sZW5ndGgsRT1ULmxlbmd0aDtpZihPKXtjb25zdCBlPWRlY29kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayksYT1kZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSxyPWRlY29kZUludGVnZXIoQywiSUFSRFkiLGspO00rPWU7RSs9dDtUPWRlY29kZVJlZmluZW1lbnQoTSxFLGcsVCwoZT4+MSkrYSwodD4+MSkrciwhMSxwLG0pfWNvbnN0IEQ9aS0oMSZ1PzA6RS0xKSxOPXItKDImdT9NLTE6MCk7bGV0IFIsTCxqO2lmKGwpe2ZvcihSPTA7UjxFO1IrKyl7eD13W04rUl07aWYoIXgpY29udGludWU7aj1UW1JdO2NvbnN0IGU9TWF0aC5taW4oYS1ELE0pO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXXw9altMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXV49altMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19cis9RS0xfWVsc2V7Zm9yKEw9MDtMPEU7TCsrKXt4PXdbRCtMXTtpZih4KXtqPVRbTF07c3dpdGNoKGQpe2Nhc2UgMDpmb3IoUj0wO1I8TTtSKyspeFtOK1JdfD1qW1JdO2JyZWFrO2Nhc2UgMjpmb3IoUj0wO1I8TTtSKyspeFtOK1JdXj1qW1JdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX19cis9TS0xfVMrKztjb25zdCAkPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09JClicmVhaztyKz0kK2h9fXJldHVybiB3fWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgYT17fTthLm51bWJlcj0oMCxuLnJlYWRVaW50MzIpKGUsdCk7Y29uc3Qgcj1lW3QrNF0saT02MyZyO2lmKCFvW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPW9baV07YS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmcik7Y29uc3Qgcz0hISg2NCZyKSxjPWVbdCs1XTtsZXQgbD1jPj41Jjc7Y29uc3QgaD1bMzEmY107bGV0IHU9dCs2O2lmKDc9PT1jKXtsPTUzNjg3MDkxMSYoMCxuLnJlYWRVaW50MzIpKGUsdS0xKTt1Kz0zO2xldCB0PWwrNz4+MztoWzBdPWVbdSsrXTtmb3IoOy0tdD4wOyloLnB1c2goZVt1KytdKX1lbHNlIGlmKDU9PT1jfHw2PT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2EucmV0YWluQml0cz1oO2xldCBmPTQ7YS5udW1iZXI8PTI1Nj9mPTE6YS5udW1iZXI8PTY1NTM2JiYoZj0yKTtjb25zdCBnPVtdO2xldCBwLG07Zm9yKHA9MDtwPGw7cCsrKXtsZXQgdDt0PTE9PT1mP2VbdV06Mj09PWY/KDAsbi5yZWFkVWludDE2KShlLHUpOigwLG4ucmVhZFVpbnQzMikoZSx1KTtnLnB1c2godCk7dSs9Zn1hLnJlZmVycmVkVG89ZztpZihzKXthLnBhZ2VBc3NvY2lhdGlvbj0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NH1lbHNlIGEucGFnZUFzc29jaWF0aW9uPWVbdSsrXTthLmxlbmd0aD0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NDtpZig0Mjk0OTY3Mjk1PT09YS5sZW5ndGgpe2lmKDM4IT09aSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHUpLHI9ISEoMSZlW3UrZF0pLG49NixpPW5ldyBVaW50OEFycmF5KG4pO2lmKCFyKXtpWzBdPTI1NTtpWzFdPTE3Mn1pWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O2lbM109dC5oZWlnaHQ+PjE2JjI1NTtpWzRdPXQuaGVpZ2h0Pj44JjI1NTtpWzVdPTI1NSZ0LmhlaWdodDtmb3IocD11LG09ZS5sZW5ndGg7cDxtO3ArKyl7bGV0IHQ9MDtmb3IoO3Q8biYmaVt0XT09PWVbcCt0XTspdCsrO2lmKHQ9PT1uKXthLmxlbmd0aD1wK247YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1hLmhlYWRlckVuZD11O3JldHVybiBhfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsYSxyKXtjb25zdCBuPVtdO2xldCBpPWE7Zm9yKDtpPHI7KXtjb25zdCBhPXJlYWRTZWdtZW50SGVhZGVyKHQsaSk7aT1hLmhlYWRlckVuZDtjb25zdCByPXtoZWFkZXI6YSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7ci5zdGFydD1pO2krPWEubGVuZ3RoO3IuZW5kPWl9bi5wdXNoKHIpO2lmKDUxPT09YS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bltlXS5zdGFydD1pO2krPW5bZV0uaGVhZGVyLmxlbmd0aDtuW2VdLmVuZD1pfXJldHVybiBufWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6KDAsbi5yZWFkVWludDMyKShlLHQpLGhlaWdodDooMCxuLnJlYWRVaW50MzIpKGUsdCs0KSx4OigwLG4ucmVhZFVpbnQzMikoZSx0KzgpLHk6KDAsbi5yZWFkVWludDMyKShlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBkPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBzLG8sYyxsLGg9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PSgwLG4ucmVhZFVpbnQxNikocixoKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7aCs9MjtpZighZS5odWZmbWFuKXtsPTA9PT1lLnRlbXBsYXRlPzQ6MTtvPVtdO2ZvcihjPTA7YzxsO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfWUuYXQ9b31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7bz1bXTtmb3IoYz0wO2M8MjtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn1lLnJlZmluZW1lbnRBdD1vfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgdT17fTt1LmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWQ7Y29uc3QgZj0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9Mjt1Lmh1ZmZtYW49ISEoMSZmKTt1LnJlZmluZW1lbnQ9ISEoMiZmKTt1LmxvZ1N0cmlwU2l6ZT1mPj4yJjM7dS5zdHJpcFNpemU9MTw8dS5sb2dTdHJpcFNpemU7dS5yZWZlcmVuY2VDb3JuZXI9Zj4+NCYzO3UudHJhbnNwb3NlZD0hISg2NCZmKTt1LmNvbWJpbmF0aW9uT3BlcmF0b3I9Zj4+NyYzO3UuZGVmYXVsdFBpeGVsVmFsdWU9Zj4+OSYxO3UuZHNPZmZzZXQ9Zjw8MTc+PjI3O3UucmVmaW5lbWVudFRlbXBsYXRlPWY+PjE1JjE7aWYodS5odWZmbWFuKXtjb25zdCBlPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO3UuaHVmZm1hbkZTPTMmZTt1Lmh1ZmZtYW5EUz1lPj4yJjM7dS5odWZmbWFuRFQ9ZT4+NCYzO3UuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7dS5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMzt1Lmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKHUucmVmaW5lbWVudCYmIXUucmVmaW5lbWVudFRlbXBsYXRlKXtvPVtdO2ZvcihjPTA7YzwyO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfXUucmVmaW5lbWVudEF0PW99dS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVt1LGEucmVmZXJyZWRUbyxyLGgsaV07YnJlYWs7Y2FzZSAxNjpjb25zdCBnPXt9LHA9cltoKytdO2cubW1yPSEhKDEmcCk7Zy50ZW1wbGF0ZT1wPj4xJjM7Zy5wYXR0ZXJuV2lkdGg9cltoKytdO2cucGF0dGVybkhlaWdodD1yW2grK107Zy5tYXhQYXR0ZXJuSW5kZXg9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZyxhLm51bWJlcixyLGgsaV07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1kO2NvbnN0IGI9cltoKytdO20ubW1yPSEhKDEmYik7bS50ZW1wbGF0ZT1iPj4xJjM7bS5lbmFibGVTa2lwPSEhKDgmYik7bS5jb21iaW5hdGlvbk9wZXJhdG9yPWI+PjQmNzttLmRlZmF1bHRQaXhlbFZhbHVlPWI+PjcmMTttLmdyaWRXaWR0aD0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRIZWlnaHQ9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JigwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRWZWN0b3JYPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO20uZ3JpZFZlY3Rvclk9KDAsbi5yZWFkVWludDE2KShyLGgpO2grPTI7cz1bbSxhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCB5PXt9O3kuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9ZDtjb25zdCB3PXJbaCsrXTt5Lm1tcj0hISgxJncpO3kudGVtcGxhdGU9dz4+MSYzO3kucHJlZGljdGlvbj0hISg4JncpO2lmKCF5Lm1tcil7bD0wPT09eS50ZW1wbGF0ZT80OjE7bz1bXTtmb3IoYz0wO2M8bDtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn15LmF0PW99cz1beSxyLGgsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCBTPXt3aWR0aDooMCxuLnJlYWRVaW50MzIpKHIsaCksaGVpZ2h0OigwLG4ucmVhZFVpbnQzMikocixoKzQpLHJlc29sdXRpb25YOigwLG4ucmVhZFVpbnQzMikocixoKzgpLHJlc29sdXRpb25ZOigwLG4ucmVhZFVpbnQzMikocixoKzEyKX07NDI5NDk2NzI5NT09PVMuaGVpZ2h0JiZkZWxldGUgUy5oZWlnaHQ7Y29uc3QgeD1yW2grMTZdOygwLG4ucmVhZFVpbnQxNikocixoKzE3KTtTLmxvc3NsZXNzPSEhKDEmeCk7Uy5yZWZpbmVtZW50PSEhKDImeCk7Uy5kZWZhdWx0UGl4ZWxWYWx1ZT14Pj4yJjE7Uy5jb21iaW5hdGlvbk9wZXJhdG9yPXg+PjMmMztTLnJlcXVpcmVzQnVmZmVyPSEhKDMyJngpO1MuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JngpO3M9W1NdO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpzPVthLm51bWJlcixyLGgsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCB1PSJvbiIrYS50eXBlTmFtZTt1IGluIHQmJnRbdV0uYXBwbHkodCxzKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLG49ZS5oZWlnaHQsaT1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqaSsoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxuO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1pfWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8bjtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9aX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IG49ZS5pbmZvLGk9bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsbi53aWR0aCxuLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsaSk7dGhpcy5kcmF3Qml0bWFwKG4scyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyl7bGV0IG8sYztpZihlLmh1ZmZtYW4pe289ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLG4saSxzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpuPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIGk9Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6bix0YWJsZUJpdG1hcFNpemU6aSx0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtjPW5ldyBSZWFkZXIocixpLHMpfWxldCBsPXRoaXMuc3ltYm9scztsfHwodGhpcy5zeW1ib2xzPWw9e30pO2NvbnN0IGg9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQocixpLHMpO2xbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBmPVtdO2xldCBnPTAscD0oMCxuLmxvZzIpKGEubGVuZ3RoK3IpO2NvbnN0IG09dS5kZWNvZGVyLGI9dS5jb250ZXh0Q2FjaGU7bGV0IHksdztpZihlKXt5PWdldFN0YW5kYXJkVGFibGUoMSk7dz1bXTtwPU1hdGgubWF4KHAsMSl9Zm9yKDtmLmxlbmd0aDxyOyl7Zys9ZT9zLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFESCIsbSk7bGV0IHI9MCxuPTA7Y29uc3QgaT1lP3cubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBpPWU/cy50YWJsZURlbHRhV2lkdGguZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFEVyIsbSk7aWYobnVsbD09PWkpYnJlYWs7cis9aTtuKz1yO2xldCB5O2lmKHQpe2NvbnN0IG49ZGVjb2RlSW50ZWdlcihiLCJJQUFJIixtKTtpZihuPjEpeT1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGcsMCxuLDEsYS5jb25jYXQoZikscCwwLDAsMSwwLHMsbCxoLHUsMCxkKTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChiLG0scCksdD1kZWNvZGVJbnRlZ2VyKGIsIklBUkRYIixtKSxuPWRlY29kZUludGVnZXIoYiwiSUFSRFkiLG0pO3k9ZGVjb2RlUmVmaW5lbWVudChyLGcsbCxlPGEubGVuZ3RoP2FbZV06ZltlLWEubGVuZ3RoXSx0LG4sITEsaCx1KX1mLnB1c2goeSl9ZWxzZSBpZihlKXcucHVzaChyKTtlbHNle3k9ZGVjb2RlQml0bWFwKCExLHIsZyxvLCExLG51bGwsYyx1KTtmLnB1c2goeSl9fWlmKGUmJiF0KXtjb25zdCBlPXMudGFibGVCaXRtYXBTaXplLmRlY29kZShkKTtkLmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcChkLG4sZyk7ZWxzZXtjb25zdCBhPWQuZW5kLHI9ZC5wb3NpdGlvbitlO2QuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAoZCxuLGcsITEpO2QuZW5kPWE7ZC5wb3NpdGlvbj1yfWNvbnN0IGE9dy5sZW5ndGg7aWYoaT09PWEtMSlmLnB1c2godCk7ZWxzZXtsZXQgZSxyLG4scyxvLGM9MDtmb3IoZT1pO2U8YTtlKyspe3M9d1tlXTtuPWMrcztvPVtdO2ZvcihyPTA7cjxnO3IrKylvLnB1c2godFtyXS5zdWJhcnJheShjLG4pKTtmLnB1c2gobyk7Yz1ufX19fWNvbnN0IFM9W10seD1bXTtsZXQgayxDLHY9ITE7Y29uc3QgRj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8Rjspe2xldCB0PWU/eS5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQUVYIixtKTtmb3IoO3QtLTspeC5wdXNoKHYpO3Y9IXZ9Zm9yKGs9MCxDPWEubGVuZ3RoO2s8QztrKyspeFtrXSYmUy5wdXNoKGFba10pO2ZvcihsZXQgZT0wO2U8cjtrKyssZSsrKXhba10mJlMucHVzaChmW2VdKTtyZXR1cm4gU30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxoLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMsbyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsdSxjKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPWUuaW5mbztsZXQgbyxjO2NvbnN0IGw9dGhpcy5zeW1ib2xzLGg9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PSgwLG4ubG9nMikoaC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7Yz1uZXcgUmVhZGVyKGEscixpKTtvPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsbil7Y29uc3QgaT1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9bi5yZWFkQml0cyg0KTtpLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShpLCExKTtpLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUobik7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1uLnJlYWRCaXRzKDIpKzM7YT1pW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1uLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1uLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fW4uYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKGksITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxoLmxlbmd0aCxjKX1jb25zdCBkPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGY9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGgsdSxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxkLGUubG9nU3RyaXBTaXplLGMpO3RoaXMuZHJhd0JpdG1hcChzLGYpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsbil7bGV0IGk9dGhpcy5wYXR0ZXJucztpfHwodGhpcy5wYXR0ZXJucz1pPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLG4pO2lbdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixuLGkpe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09biYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLG4sITEsbnVsbCxzLGkpLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10sbj10KmUsaT1uK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShuLGkpKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPXRoaXMucGF0dGVybnNbdFswXV0sbz1lLmluZm8sYz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxsPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxzLG8sYyxsLGgsdSxkLGYsZyxwKXtpZihvKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7Y30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgbT1bXTtsZXQgYix5LHc7Zm9yKGI9MDtiPGk7YisrKXt3PW5ldyBVaW50OEFycmF5KHIpO2lmKHMpZm9yKHk9MDt5PHI7eSsrKXdbeV09czttLnB1c2godyl9Y29uc3QgUz10Lmxlbmd0aCx4PXRbMF0saz14WzBdLmxlbmd0aCxDPXgubGVuZ3RoLHY9KDAsbi5sb2cyKShTKSxGPVtdO2lmKCFlKXtGLnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZGLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgTz1bXTtsZXQgVCxNLEUsRCxOLFIsTCxqLCQsXyxVO2UmJihUPW5ldyBSZWFkZXIocC5kYXRhLHAuc3RhcnQscC5lbmQpKTtmb3IoYj12LTE7Yj49MDtiLS0pe009ZT9kZWNvZGVNTVJCaXRtYXAoVCxsLGgsITApOmRlY29kZUJpdG1hcCghMSxsLGgsYSwhMSxudWxsLEYscCk7T1tiXT1NfWZvcihFPTA7RTxoO0UrKylmb3IoRD0wO0Q8bDtEKyspe049MDtSPTA7Zm9yKHk9di0xO3k+PTA7eS0tKXtOXj1PW3ldW0VdW0RdO1J8PU48PHl9TD10W1JdO2o9dStFKmcrRCpmPj44OyQ9ZCtFKmYtRCpnPj44O2lmKGo+PTAmJmorazw9ciYmJD49MCYmJCtDPD1pKWZvcihiPTA7YjxDO2IrKyl7VT1tWyQrYl07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKylVW2oreV18PV9beV19ZWxzZXtsZXQgZSx0O2ZvcihiPTA7YjxDO2IrKyl7dD0kK2I7aWYoISh0PDB8fHQ+PWkpKXtVPW1bdF07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKyl7ZT1qK3k7ZT49MCYmZTxyJiYoVVtlXXw9X1t5XSl9fX19fXJldHVybiBtfShlLm1tcixzLGUudGVtcGxhdGUsby53aWR0aCxvLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3RvclksYyk7dGhpcy5kcmF3Qml0bWFwKG8sbCl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKGUsdCsxKSxzPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShlLHQrNSksbz1uZXcgUmVhZGVyKGUsdCs5LGEpLGM9MSsocj4+MSY3KSxsPTErKHI+PjQmNyksaD1bXTtsZXQgdSxkLGY9aTtkb3t1PW8ucmVhZEJpdHMoYyk7ZD1vLnJlYWRCaXRzKGwpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW2YsdSxkLDBdKSk7Zis9MTw8ZH13aGlsZShmPHMpO3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsdSwzMiwwLCJsb3dlciJdKSk7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3MsdSwzMiwwXSkpO2lmKDEmcil7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3UsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShoLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBuLGkscyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO249YztpPTA7Zm9yKDtpPHQ7KXtzPWVbaV07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9bjtuKyt9aSsrfW8rK319fWNvbnN0IGY9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxhPWZbZV07aWYoYSlyZXR1cm4gYTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2E9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtmW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWFbdFtuXV07aWYoaSl7aWYoZT09PXIpcmV0dXJuIGk7cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjxhO24rKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IG49e0s6LTEsQ29sdW1uczp0LFJvd3M6YSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOnJ9LGk9bmV3IHMuQ0NJVFRGYXhEZWNvZGVyKGUsbiksbz1bXTtsZXQgYyxsPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7by5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7Yz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09Yyl7Yz0wO2w9ITB9YT03fWVbcl09Yz4+YSYxO2EtLX19aWYociYmIWwpe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gb310LkpiaWcySW1hZ2U9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LHIuZGF0YSxyLnN0YXJ0LHIuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7Y29uc3QgYT1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTt0LkFyaXRobWV0aWNEZWNvZGVyPWNsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWE7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgcj1lW3RdPj4xLG49MSZlW3RdO2NvbnN0IGk9YVtyXSxzPWkucWU7bGV0IG8sYz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpaWYoYzxzKXtjPXM7bz1uO3I9aS5ubXBzfWVsc2V7Yz1zO289MV5uOzE9PT1pLnN3aXRjaEZsYWcmJihuPW8pO3I9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09cztpZigwIT0oMzI3NjgmYykpe3RoaXMuYT1jO3JldHVybiBufWlmKGM8cyl7bz0xXm47MT09PWkuc3dpdGNoRmxhZyYmKG49byk7cj1pLm5scHN9ZWxzZXtvPW47cj1pLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO2M8PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4JmMpKTt0aGlzLmE9YztlW3RdPXI8PDF8bjtyZXR1cm4gb319fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSnBlZ1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyNikscz1hKDIpO2NsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IHI7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09cil7ZS5za2lwKC0xKTticmVha31zdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYodGhpcy5mb3JjZVJHQiYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxuPW5ldyBJbnQzMkFycmF5KHIpO2xldCBpPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe25bZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtuW2UrMV09dFtlXSpzfDA7MjU2PT09bltlXSYmMD09PW5bZSsxXXx8KGk9ITApfWkmJihlLmRlY29kZVRyYW5zZm9ybT1uKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9Y29uc3QgYT1uZXcgaS5KcGVnSW1hZ2UoZSk7YS5wYXJzZSh0aGlzLmJ5dGVzKTtjb25zdCByPWEuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1yLmxlbmd0aDt0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPUpwZWdTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpO2NsYXNzIEpwZWdFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBFRyBlcnJvcjogJHtlfWAsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLHM9NDAxNyxvPTc5OSxjPTM0MDYsbD0yMjc2LGg9MTU2Nyx1PTM3ODQsZD01NzkzLGY9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsbj0wLGk9MTY7Zm9yKDtpPjAmJiFlW2ktMV07KWktLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8aTthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtuXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31uKyt9aWYoYSsxPGkpe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscyxvLGMsbCxoLHUsZD0hMSl7Y29uc3QgZj1hLm1jdXNQZXJMaW5lLGc9YS5wcm9ncmVzc2l2ZSxwPXQ7bGV0IG09MCxiPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGI+MCl7Yi0tO3JldHVybiBtPj5iJjF9bT1lW3QrK107aWYoMjU1PT09bSl7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmZCl7dCs9Mjtjb25zdCByPSgwLG4ucmVhZFVpbnQxNikoZSx0KTt0Kz0yO2lmKHI+MCYmciE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIscil9ZWxzZSBpZigyMTc9PT1yKXtpZihkKXtjb25zdCBlPXgqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhtPDw4fHIpLnRvU3RyaW5nKDE2KX1gKX19Yj03O3JldHVybiBtPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB5PTA7bGV0IHcsUz0wO2xldCB4PTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxhLHIsbil7Y29uc3QgaT1hJWY7eD0oYS9mfDApKmUudityO2NvbnN0IHM9aSplLmgrbjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHMpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsYSl7eD1hL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IHI9YSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseCxyKSl9Y29uc3Qgaz1zLmxlbmd0aDtsZXQgQyx2LEYsTyxULE07TT1nPzA9PT1jPzA9PT1oP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk8PHU7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDx1fTowPT09aD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoeT4wKXt5LS07cmV0dXJufWxldCBhPWM7Y29uc3Qgcj1sO2Zvcig7YTw9cjspe2NvbnN0IHI9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxuPTE1JnIscz1yPj40O2lmKDA9PT1uKXtpZihzPDE1KXt5PXJlY2VpdmUocykrKDE8PHMpLTE7YnJlYWt9YSs9MTY7Y29udGludWV9YSs9cztjb25zdCBvPWlbYV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKG4pKigxPDx1KTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1jO2NvbnN0IHI9bDtsZXQgbixzLG89MDtmb3IoO2E8PXI7KXtjb25zdCByPXQraVthXSxjPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goUyl7Y2FzZSAwOnM9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtuPTE1JnM7bz1zPj40O2lmKDA9PT1uKWlmKG88MTUpe3k9cmVjZWl2ZShvKSsoMTw8byk7Uz00fWVsc2V7bz0xNjtTPTF9ZWxzZXtpZigxIT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO3c9cmVjZWl2ZUFuZEV4dGVuZChuKTtTPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtvLS07MD09PW8mJihTPTI9PT1TPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1jKihyZWFkQml0KCk8PHUpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09dzw8dTtTPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSkpfWErK31pZig0PT09Uyl7eS0tOzA9PT15JiYoUz0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgbj0xO2Zvcig7bjw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEscz1hPj40O2lmKDA9PT1yKXtpZihzPDE1KWJyZWFrO24rPTE2O2NvbnRpbnVlfW4rPXM7Y29uc3Qgbz1pW25dO2UuYmxvY2tEYXRhW3Qrb109cmVjZWl2ZUFuZEV4dGVuZChyKTtuKyt9fTtsZXQgRSxELE4sUixMPTA7RD0xPT09az9zWzBdLmJsb2Nrc1BlckxpbmUqc1swXS5ibG9ja3NQZXJDb2x1bW46ZiphLm1jdXNQZXJDb2x1bW47Zm9yKDtMPD1EOyl7Y29uc3QgYT1vP01hdGgubWluKEQtTCxvKTpEO2lmKGE+MCl7Zm9yKHY9MDt2PGs7disrKXNbdl0ucHJlZD0wO3k9MDtpZigxPT09ayl7Qz1zWzBdO2ZvcihUPTA7VDxhO1QrKyl7ZGVjb2RlQmxvY2soQyxNLEwpO0wrK319ZWxzZSBmb3IoVD0wO1Q8YTtUKyspe2Zvcih2PTA7djxrO3YrKyl7Qz1zW3ZdO049Qy5oO1I9Qy52O2ZvcihGPTA7RjxSO0YrKylmb3IoTz0wO088TjtPKyspZGVjb2RlTWN1KEMsTSxMLEYsTyl9TCsrfX1iPTA7RT1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighRSlicmVhaztpZihFLmludmFsaWQpe2NvbnN0IGU9YT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIjsoMCxyLndhcm4pKGBkZWNvZGVTY2FuIC0gJHtlfSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7RS5pbnZhbGlkfWApO3Q9RS5vZmZzZXR9aWYoIShFLm1hcmtlcj49NjU0ODgmJkUubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1wfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsYSl7Y29uc3Qgcj1lLnF1YW50aXphdGlvblRhYmxlLG49ZS5ibG9ja0RhdGE7bGV0IGksZyxwLG0sYix5LHcsUyx4LGssQyx2LEYsTyxULE0sRTtpZighcil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe3g9blt0K2VdO2s9blt0K2UrMV07Qz1uW3QrZSsyXTt2PW5bdCtlKzNdO0Y9blt0K2UrNF07Tz1uW3QrZSs1XTtUPW5bdCtlKzZdO009blt0K2UrN107eCo9cltlXTtpZigwIT0oa3xDfHZ8RnxPfFR8TSkpe2sqPXJbZSsxXTtDKj1yW2UrMl07dio9cltlKzNdO0YqPXJbZSs0XTtPKj1yW2UrNV07VCo9cltlKzZdO00qPXJbZSs3XTtpPWQqeCsxMjg+Pjg7Zz1kKkYrMTI4Pj44O3A9QzttPVQ7Yj1mKihrLU0pKzEyOD4+ODtTPWYqKGsrTSkrMTI4Pj44O3k9djw8NDt3PU88PDQ7aT1pK2crMT4+MTtnPWktZztFPXAqdSttKmgrMTI4Pj44O3A9cCpoLW0qdSsxMjg+Pjg7bT1FO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtpPWkrbSsxPj4xO209aS1tO2c9ZytwKzE+PjE7cD1nLXA7RT1iKmwrUypjKzIwNDg+PjEyO2I9YipjLVMqbCsyMDQ4Pj4xMjtTPUU7RT15Km8rdypzKzIwNDg+PjEyO3k9eSpzLXcqbysyMDQ4Pj4xMjt3PUU7YVtlXT1pK1M7YVtlKzddPWktUzthW2UrMV09Zyt3O2FbZSs2XT1nLXc7YVtlKzJdPXAreTthW2UrNV09cC15O2FbZSszXT1tK2I7YVtlKzRdPW0tYn1lbHNle0U9ZCp4KzUxMj4+MTA7YVtlXT1FO2FbZSsxXT1FO2FbZSsyXT1FO2FbZSszXT1FO2FbZSs0XT1FO2FbZSs1XT1FO2FbZSs2XT1FO2FbZSs3XT1FfX1mb3IobGV0IGU9MDtlPDg7KytlKXt4PWFbZV07az1hW2UrOF07Qz1hW2UrMTZdO3Y9YVtlKzI0XTtGPWFbZSszMl07Tz1hW2UrNDBdO1Q9YVtlKzQ4XTtNPWFbZSs1Nl07aWYoMCE9KGt8Q3x2fEZ8T3xUfE0pKXtpPWQqeCsyMDQ4Pj4xMjtnPWQqRisyMDQ4Pj4xMjtwPUM7bT1UO2I9Ziooay1NKSsyMDQ4Pj4xMjtTPWYqKGsrTSkrMjA0OD4+MTI7eT12O3c9TztpPTQxMTIrKGkrZysxPj4xKTtnPWktZztFPXAqdSttKmgrMjA0OD4+MTI7cD1wKmgtbSp1KzIwNDg+PjEyO209RTtiPWIrdysxPj4xO3c9Yi13O1M9Uyt5KzE+PjE7eT1TLXk7aT1pK20rMT4+MTttPWktbTtnPWcrcCsxPj4xO3A9Zy1wO0U9YipsK1MqYysyMDQ4Pj4xMjtiPWIqYy1TKmwrMjA0OD4+MTI7Uz1FO0U9eSpvK3cqcysyMDQ4Pj4xMjt5PXkqcy13Km8rMjA0OD4+MTI7dz1FO3g9aStTO009aS1TO2s9Zyt3O1Q9Zy13O0M9cCt5O089cC15O3Y9bStiO0Y9bS1iO3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7azwxNj9rPTA6az49NDA4MD9rPTI1NTprPj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O3Y8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQ7RjwxNj9GPTA6Rj49NDA4MD9GPTI1NTpGPj49NDtPPDE2P089MDpPPj00MDgwP089MjU1Ok8+Pj00O1Q8MTY/VD0wOlQ+PTQwODA/VD0yNTU6VD4+PTQ7TTwxNj9NPTA6TT49NDA4MD9NPTI1NTpNPj49NDtuW3QrZV09eDtuW3QrZSs4XT1rO25bdCtlKzE2XT1DO25bdCtlKzI0XT12O25bdCtlKzMyXT1GO25bdCtlKzQwXT1PO25bdCtlKzQ4XT1UO25bdCtlKzU2XT1NfWVsc2V7RT1kKngrODE5Mj4+MTQ7RT1FPC0yMDQwPzA6RT49MjAyND8yNTU6RSsyMDU2Pj40O25bdCtlXT1FO25bdCtlKzhdPUU7blt0K2UrMTZdPUU7blt0K2UrMjRdPUU7blt0K2UrMzJdPUU7blt0K2UrNDBdPUU7blt0K2UrNDhdPUU7blt0K2UrNTZdPUV9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBhPXQuYmxvY2tzUGVyTGluZSxyPXQuYmxvY2tzUGVyQ29sdW1uLG49bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8cjtlKyspZm9yKGxldCByPTA7cjxhO3IrKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLHIpLG4pfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGE9dCl7Y29uc3Qgcj1lLmxlbmd0aC0xO2xldCBpPWE8dD9hOnQ7aWYodD49cilyZXR1cm4gbnVsbDtjb25zdCBzPSgwLG4ucmVhZFVpbnQxNikoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG89KDAsbi5yZWFkVWludDE2KShlLGkpO2Zvcig7IShvPj02NTQ3MiYmbzw9NjU1MzQpOyl7aWYoKytpPj1yKXJldHVybiBudWxsO289KDAsbi5yZWFkVWludDE2KShlLGkpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpvLG9mZnNldDppfX10LkpwZWdJbWFnZT1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2Z1bmN0aW9uIHJlYWREYXRhQmxvY2soKXtjb25zdCB0PSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhPW8rdC0yO2NvbnN0IGk9ZmluZE5leHRGaWxlTWFya2VyKGUsYSxvKTtpZihpJiZpLmludmFsaWQpeygwLHIud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpO2E9aS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KG8sYSk7bys9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCByIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgbj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqci5oL2UubWF4SCksaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKnIudi9lLm1heFYpLHM9dCpyLmgsbz02NCooYSpyLnYpKihzKzEpO3IuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO3IuYmxvY2tzUGVyTGluZT1uO3IuYmxvY2tzUGVyQ29sdW1uPWl9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWxldCBhLHMsbz0wLGM9bnVsbCxsPW51bGwsaD0wO2NvbnN0IHU9W10sZD1bXSxmPVtdO2xldCBnPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2lmKDY1NDk2IT09Zyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7Zz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjtlOmZvcig7NjU0OTchPT1nOyl7bGV0IHAsbSxiO3N3aXRjaChnKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgeT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1nJiY3ND09PXlbMF0mJjcwPT09eVsxXSYmNzM9PT15WzJdJiY3MD09PXlbM10mJjA9PT15WzRdJiYoYz17dmVyc2lvbjp7bWFqb3I6eVs1XSxtaW5vcjp5WzZdfSxkZW5zaXR5VW5pdHM6eVs3XSx4RGVuc2l0eTp5WzhdPDw4fHlbOV0seURlbnNpdHk6eVsxMF08PDh8eVsxMV0sdGh1bWJXaWR0aDp5WzEyXSx0aHVtYkhlaWdodDp5WzEzXSx0aHVtYkRhdGE6eS5zdWJhcnJheSgxNCwxNCszKnlbMTJdKnlbMTNdKX0pOzY1NTE4PT09ZyYmNjU9PT15WzBdJiYxMDA9PT15WzFdJiYxMTE9PT15WzJdJiY5OD09PXlbM10mJjEwMT09PXlbNF0mJihsPXt2ZXJzaW9uOnlbNV08PDh8eVs2XSxmbGFnczA6eVs3XTw8OHx5WzhdLGZsYWdzMTp5WzldPDw4fHlbMTBdLHRyYW5zZm9ybUNvZGU6eVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IHc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7Y29uc3QgUz13K28tMjtsZXQgeDtmb3IoO288Uzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihtPTA7bTw2NDttKyspe3g9aVttXTthW3hdPWVbbysrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKG09MDttPDY0O20rKyl7eD1pW21dO2FbeF09KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9fXVbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO28rPTI7YT17fTthLmV4dGVuZGVkPTY1NDczPT09ZzthLnByb2dyZXNzaXZlPTY1NDc0PT09ZzthLnByZWNpc2lvbj1lW28rK107Y29uc3Qgaz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLnNjYW5MaW5lcz10fHxrO2Euc2FtcGxlc1BlckxpbmU9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YS5jb21wb25lbnRzPVtdO2EuY29tcG9uZW50SWRzPXt9O2NvbnN0IEM9ZVtvKytdO2xldCB2PTAsRj0wO2ZvcihwPTA7cDxDO3ArKyl7Y29uc3QgdD1lW29dLHI9ZVtvKzFdPj40LG49MTUmZVtvKzFdO3Y8ciYmKHY9cik7RjxuJiYoRj1uKTtjb25zdCBpPWVbbysyXTtiPWEuY29tcG9uZW50cy5wdXNoKHtoOnIsdjpuLHF1YW50aXphdGlvbklkOmkscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2EuY29tcG9uZW50SWRzW3RdPWItMTtvKz0zfWEubWF4SD12O2EubWF4Vj1GO3ByZXBhcmVDb21wb25lbnRzKGEpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtmb3IocD0yO3A8Tzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCByPTA7Zm9yKG09MDttPDE2O20rKyxvKyspcis9YVttXT1lW29dO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKG09MDttPHI7bSsrLG8rKyluW21dPWVbb107cCs9MTcrcjsodD4+ND09MD9mOmQpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEsbil9YnJlYWs7Y2FzZSA2NTUwMTpvKz0yO3M9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBUPTE9PSsraCYmIXQ7bys9Mjtjb25zdCBNPWVbbysrXSxFPVtdO2ZvcihwPTA7cDxNO3ArKyl7Y29uc3QgdD1lW28rK10scj1hLmNvbXBvbmVudElkc1t0XSxuPWEuY29tcG9uZW50c1tyXTtuLmluZGV4PXQ7Y29uc3QgaT1lW28rK107bi5odWZmbWFuVGFibGVEQz1mW2k+PjRdO24uaHVmZm1hblRhYmxlQUM9ZFsxNSZpXTtFLnB1c2gobil9Y29uc3QgRD1lW28rK10sTj1lW28rK10sUj1lW28rK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLG8sYSxFLHMsRCxOLFI+PjQsMTUmUixUKTtvKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7KDAsci53YXJuKShgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bys9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbb10mJm8tLTticmVhaztkZWZhdWx0OmNvbnN0IEw9ZmluZE5leHRGaWxlTWFya2VyKGUsby0yLG8tMyk7aWYoTCYmTC5pbnZhbGlkKXsoMCxyLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK0wuaW52YWxpZCk7bz1MLm9mZnNldDticmVha31pZighTHx8bz49ZS5sZW5ndGgtMSl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrZy50b1N0cmluZygxNikpfWc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1jO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PXVbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCByPXRoaXMud2lkdGgvZSxuPXRoaXMuaGVpZ2h0L3Q7bGV0IGkscyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSksUz1uZXcgVWludDMyQXJyYXkoZSkseD00Mjk0OTY3Mjg4O2xldCBrO2Zvcih1PTA7dTxiO3UrKyl7aT10aGlzLmNvbXBvbmVudHNbdV07cz1pLnNjYWxlWCpyO289aS5zY2FsZVkqbjttPXU7cD1pLm91dHB1dDtjPWkuYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1rKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7U1tsXT0oZCZ4KTw8M3w3JmR9az1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmeCl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZytTW2xdXTttKz1ifX19bGV0IEM9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHxDfHwoQz1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoQylmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKkNbZl0+PjgpK0NbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bis9Myl7dD1lW25dO2E9ZVtuKzFdO3I9ZVtuKzJdO2Vbbl09dC0xNzkuNDU2KzEuNDAyKnI7ZVtuKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbbisyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxhLHIsbixpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl7dD1lW3NdO2E9ZVtzKzFdO3I9ZVtzKzJdO249ZVtzKzNdO2VbaSsrXT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW2krK109MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbaSsrXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEscjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKz00KXt0PWVbbl07YT1lW24rMV07cj1lW24rMl07ZVtuXT00MzQuNDU2LXQtMS40MDIqcjtlW24rMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0KnI7ZVtuKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGEscixuLGk9MDtmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKz00KXt0PWVbc107YT1lW3MrMV07cj1lW3MrMl07bj1lW3MrM107ZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNipuLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpuLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqbisuMDY4Njc0MjIzODU5NTM0NSktbiooLjAwMDMzNjE5NzE3NzYxODM5MzcqbisuNzQzMDY1OTE1MTM0MjI1NCk7ZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqbi0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqbi0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqbi0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLW4qKC4wMDAzMTg5MTMxMTc1ODgzMjgxKm4rLjczNjQ4ODM4MDc3MzMxNjgpO2VbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqbi0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqbi0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqbi0uNzU5MTQ1NDY0OTc0OTYwOSktbiooLjAwMDM0MzUzMTk5NjUxMDU1NTMqbisuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cj0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCBuPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHIpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJmEpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbi5sZW5ndGgpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2Ygbil7ZVt0KytdPWE7ZVt0KytdPWE7ZVt0KytdPWF9cmV0dXJuIGV9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihuKTtpZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDI4KSxpPWEoMik7Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBuLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLGE9ZS5oZWlnaHQscj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqcik7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1lLnRpbGVzW2FdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKnI7Y29uc3QgZj10KnIsZz1zKnI7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTtuLnNldChlLGQpO3UrPWc7ZCs9Zn19dGhpcy5idWZmZXI9bn10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPUpweFN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweEltYWdlPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMjQpO2NsYXNzIEpweEVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKUFggZXJyb3I6ICR7ZX1gLCJKcHhFcnJvciIpfX1jb25zdCBzPXtMTDowLExIOjEsSEw6MSxISDoyfTt0LkpweEltYWdlPWNsYXNzIEpweEltYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZT0hMX1wYXJzZShlKXtpZig2NTM1OT09PSgwLG4ucmVhZFVpbnQxNikoZSwwKSl7dGhpcy5wYXJzZUNvZGVzdHJlYW0oZSwwLGUubGVuZ3RoKTtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0Oyl7bGV0IGk9OCxzPSgwLG4ucmVhZFVpbnQzMikoZSxhKTtjb25zdCBvPSgwLG4ucmVhZFVpbnQzMikoZSxhKzQpO2ErPWk7aWYoMT09PXMpe3M9NDI5NDk2NzI5NiooMCxuLnJlYWRVaW50MzIpKGUsYSkrKDAsbi5yZWFkVWludDMyKShlLGErNCk7YSs9ODtpKz04fTA9PT1zJiYocz10LWEraSk7aWYoczxpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCBib3ggZmllbGQgc2l6ZSIpO2NvbnN0IGM9cy1pO2xldCBsPSEwO3N3aXRjaChvKXtjYXNlIDE3ODU3Mzc4MzI6bD0hMTticmVhaztjYXNlIDE2NjgyNDY2NDI6Y29uc3QgdD1lW2FdO2lmKDE9PT10KXtjb25zdCB0PSgwLG4ucmVhZFVpbnQzMikoZSxhKzMpO3N3aXRjaCh0KXtjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztkZWZhdWx0OigwLHIud2FybikoIlVua25vd24gY29sb3JzcGFjZSAiK3QpfX1lbHNlIDI9PT10JiYoMCxyLmluZm8pKCJJQ0MgcHJvZmlsZSBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAxNzg1NzM3ODI3OnRoaXMucGFyc2VDb2Rlc3RyZWFtKGUsYSxhK2MpO2JyZWFrO2Nhc2UgMTc4MzYzNmUzOjIxODc5MzczOCE9PSgwLG4ucmVhZFVpbnQzMikoZSxhKSYmKDAsci53YXJuKSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7YnJlYWs7Y2FzZSAxNzgzNjM0NDU4OmNhc2UgMTcxODkwOTI5NjpjYXNlIDE5MjAwOTk2OTc6Y2FzZSAxOTE5MjUxMjMyOmNhc2UgMTc2ODQ0OTEzODpicmVhaztkZWZhdWx0OmNvbnN0IGk9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvKTsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBoZWFkZXIgdHlwZSAke299ICgke2l9KS5gKX1sJiYoYSs9Yyl9fXBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtjb25zdCBpPWUuZ2V0VWludDE2KCk7dGhpcy53aWR0aD10LXI7dGhpcy5oZWlnaHQ9YS1uO3RoaXMuY29tcG9uZW50c0NvdW50PWk7dGhpcy5iaXRzUGVyQ29tcG9uZW50PTg7cmV0dXJufX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX1wYXJzZUNvZGVzdHJlYW0oZSx0LGEpe2NvbnN0IGk9e307bGV0IHM9ITE7dHJ5e2xldCBvPXQ7Zm9yKDtvKzE8YTspe2NvbnN0IHQ9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7bGV0IGEsYyxsLGgsdSxkLGY9MDtzd2l0Y2godCl7Y2FzZSA2NTM1OTppLm1haW5IZWFkZXI9ITA7YnJlYWs7Y2FzZSA2NTQ5NzpicmVhaztjYXNlIDY1MzYxOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IGc9e307Zy5Yc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2cuWXNpej0oMCxuLnJlYWRVaW50MzIpKGUsbys4KTtnLlhPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzEyKTtnLllPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzE2KTtnLlhUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzIwKTtnLllUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzI0KTtnLlhUT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysyOCk7Zy5ZVE9zaXo9KDAsbi5yZWFkVWludDMyKShlLG8rMzIpO2NvbnN0IHA9KDAsbi5yZWFkVWludDE2KShlLG8rMzYpO2cuQ3Npej1wO2NvbnN0IG09W107YT1vKzM4O2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IHQ9e3ByZWNpc2lvbjoxKygxMjcmZVthXSksaXNTaWduZWQ6ISEoMTI4JmVbYV0pLFhSc2l6OmVbYSsxXSxZUnNpejplW2ErMl19O2ErPTM7Y2FsY3VsYXRlQ29tcG9uZW50RGltZW5zaW9ucyh0LGcpO20ucHVzaCh0KX1pLlNJWj1nO2kuY29tcG9uZW50cz1tO2NhbGN1bGF0ZVRpbGVHcmlkcyhpLG0pO2kuUUNDPVtdO2kuQ09DPVtdO2JyZWFrO2Nhc2UgNjUzNzI6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7Y29uc3QgYj17fTthPW8rMjtjPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9Yi5ub1F1YW50aXphdGlvbj04PT09aDtiLnNjYWxhckV4cG91bmRlZD11O2IuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX1iLlNQcWNkcz1sO2lmKGkubWFpbkhlYWRlcilpLlFDRD1iO2Vsc2V7aS5jdXJyZW50VGlsZS5RQ0Q9YjtpLmN1cnJlbnRUaWxlLlFDQz1bXX1icmVhaztjYXNlIDY1MzczOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IHk9e307YT1vKzI7bGV0IHc7aWYoaS5TSVouQ3NpejwyNTcpdz1lW2ErK107ZWxzZXt3PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yfWM9ZVthKytdO3N3aXRjaCgzMSZjKXtjYXNlIDA6aD04O3U9ITA7YnJlYWs7Y2FzZSAxOmg9MTY7dT0hMTticmVhaztjYXNlIDI6aD0xNjt1PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitjKX15Lm5vUXVhbnRpemF0aW9uPTg9PT1oO3kuc2NhbGFyRXhwb3VuZGVkPXU7eS5ndWFyZEJpdHM9Yz4+NTtsPVtdO2Zvcig7YTxmK287KXtjb25zdCB0PXt9O2lmKDg9PT1oKXt0LmVwc2lsb249ZVthKytdPj4zO3QubXU9MH1lbHNle3QuZXBzaWxvbj1lW2FdPj4zO3QubXU9KDcmZVthXSk8PDh8ZVthKzFdO2ErPTJ9bC5wdXNoKHQpfXkuU1BxY2RzPWw7aS5tYWluSGVhZGVyP2kuUUNDW3ddPXk6aS5jdXJyZW50VGlsZS5RQ0Nbd109eTticmVhaztjYXNlIDY1MzYyOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IFM9e307YT1vKzI7Y29uc3QgeD1lW2ErK107Uy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmeCk7Uy5zb3BNYXJrZXJVc2VkPSEhKDImeCk7Uy5lcGhNYXJrZXJVc2VkPSEhKDQmeCk7Uy5wcm9ncmVzc2lvbk9yZGVyPWVbYSsrXTtTLmxheWVyc0NvdW50PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yO1MubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVthKytdO1MuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbYSsrXTtTLnhjYj0yKygxNSZlW2ErK10pO1MueWNiPTIrKDE1JmVbYSsrXSk7Y29uc3Qgaz1lW2ErK107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzPSEhKDEmayk7Uy5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzPSEhKDImayk7Uy50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3M9ISEoNCZrKTtTLnZlcnRpY2FsbHlTdHJpcGU9ISEoOCZrKTtTLnByZWRpY3RhYmxlVGVybWluYXRpb249ISEoMTYmayk7Uy5zZWdtZW50YXRpb25TeW1ib2xVc2VkPSEhKDMyJmspO1MucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uPWVbYSsrXTtpZihTLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2NvbnN0IHQ9W107Zm9yKDthPGYrbzspe2NvbnN0IHI9ZVthKytdO3QucHVzaCh7UFB4OjE1JnIsUFB5OnI+PjR9KX1TLnByZWNpbmN0c1NpemVzPXR9Y29uc3QgQz1bXTtTLnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkMucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZDLnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpO1MudmVydGljYWxseVN0cmlwZSYmQy5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIik7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZDLnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKTtpZihDLmxlbmd0aD4wKXtzPSEwOygwLHIud2FybikoYEpQWDogVW5zdXBwb3J0ZWQgQ09EIG9wdGlvbnMgKCR7Qy5qb2luKCIsICIpfSkuYCl9aWYoaS5tYWluSGVhZGVyKWkuQ09EPVM7ZWxzZXtpLmN1cnJlbnRUaWxlLkNPRD1TO2kuY3VycmVudFRpbGUuQ09DPVtdfWJyZWFrO2Nhc2UgNjU0MjQ6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7ZD17fTtkLmluZGV4PSgwLG4ucmVhZFVpbnQxNikoZSxvKzIpO2QubGVuZ3RoPSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2QuZGF0YUVuZD1kLmxlbmd0aCtvLTI7ZC5wYXJ0SW5kZXg9ZVtvKzhdO2QucGFydHNDb3VudD1lW28rOV07aS5tYWluSGVhZGVyPSExO2lmKDA9PT1kLnBhcnRJbmRleCl7ZC5DT0Q9aS5DT0Q7ZC5DT0M9aS5DT0Muc2xpY2UoMCk7ZC5RQ0Q9aS5RQ0Q7ZC5RQ0M9aS5RQ0Muc2xpY2UoMCl9aS5jdXJyZW50VGlsZT1kO2JyZWFrO2Nhc2UgNjU0Mjc6ZD1pLmN1cnJlbnRUaWxlO2lmKDA9PT1kLnBhcnRJbmRleCl7aW5pdGlhbGl6ZVRpbGUoaSxkLmluZGV4KTtidWlsZFBhY2tldHMoaSl9Zj1kLmRhdGFFbmQtbztwYXJzZVRpbGVQYWNrZXRzKGksZSxvLGYpO2JyZWFrO2Nhc2UgNjUzNjM6KDAsci53YXJuKSgiSlBYOiBDb2Rlc3RyZWFtIGNvZGUgMHhGRjUzIChDT0MpIGlzIG5vdCBpbXBsZW1lbnRlZC4iKTtjYXNlIDY1MzY1OmNhc2UgNjUzNjc6Y2FzZSA2NTM2ODpjYXNlIDY1MzgwOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvZGVzdHJlYW0gY29kZTogIit0LnRvU3RyaW5nKDE2KSl9bys9Zn19Y2F0Y2goZSl7aWYoc3x8dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSl0aHJvdyBuZXcgSnB4RXJyb3IoZS5tZXNzYWdlKTsoMCxyLndhcm4pKGBKUFg6IFRyeWluZyB0byByZWNvdmVyIGZyb206ICIke2UubWVzc2FnZX0iLmApfXRoaXMudGlsZXM9ZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jb21wb25lbnRzLHI9dC5Dc2l6LG49W107Zm9yKGxldCB0PTAsaT1lLnRpbGVzLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUudGlsZXNbdF0scz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXNbdF09dHJhbnNmb3JtVGlsZShlLGksdCk7Y29uc3Qgbz1zWzBdLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uaXRlbXMubGVuZ3RoKnIpLGw9e2xlZnQ6by5sZWZ0LHRvcDpvLnRvcCx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxpdGVtczpjfTtsZXQgaCx1LGQsZixnLHAsbSxiPTA7aWYoaS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKXtjb25zdCBlPTQ9PT1yLHQ9c1swXS5pdGVtcyxuPXNbMV0uaXRlbXMsbz1zWzJdLml0ZW1zLGw9ZT9zWzNdLml0ZW1zOm51bGw7aD1hWzBdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Y29uc3QgeT1pLmNvbXBvbmVudHNbMF0sdz1yLTM7Zj10Lmxlbmd0aDtpZih5LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24pZm9yKGQ9MDtkPGY7ZCsrLGIrPXcpe2c9dFtkXSt1O3A9bltkXTttPW9bZF07Y29uc3QgZT1nLShtK3A+PjIpO2NbYisrXT1lK20+Pmg7Y1tiKytdPWU+Pmg7Y1tiKytdPWUrcD4+aH1lbHNlIGZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPW5bZF07bT1vW2RdO2NbYisrXT1nKzEuNDAyKm0+Pmg7Y1tiKytdPWctLjM0NDEzKnAtLjcxNDE0Km0+Pmg7Y1tiKytdPWcrMS43NzIqcD4+aH1pZihlKWZvcihkPTAsYj0zO2Q8ZjtkKyssYis9NCljW2JdPWxbZF0rdT4+aH1lbHNlIGZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9c1tlXS5pdGVtcztoPWFbZV0ucHJlY2lzaW9uLTg7dT0uNSsoMTI4PDxoKTtmb3IoYj1lLGQ9MCxmPXQubGVuZ3RoO2Q8ZjtkKyspe2NbYl09dFtkXSt1Pj5oO2IrPXJ9fW4ucHVzaChsKX1yZXR1cm4gbn0oaSk7dGhpcy53aWR0aD1pLlNJWi5Yc2l6LWkuU0laLlhPc2l6O3RoaXMuaGVpZ2h0PWkuU0laLllzaXotaS5TSVouWU9zaXo7dGhpcy5jb21wb25lbnRzQ291bnQ9aS5TSVouQ3Npen19O2Z1bmN0aW9uIGNhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnMoZSx0KXtlLngwPU1hdGguY2VpbCh0LlhPc2l6L2UuWFJzaXopO2UueDE9TWF0aC5jZWlsKHQuWHNpei9lLlhSc2l6KTtlLnkwPU1hdGguY2VpbCh0LllPc2l6L2UuWVJzaXopO2UueTE9TWF0aC5jZWlsKHQuWXNpei9lLllSc2l6KTtlLndpZHRoPWUueDEtZS54MDtlLmhlaWdodD1lLnkxLWUueTB9ZnVuY3Rpb24gY2FsY3VsYXRlVGlsZUdyaWRzKGUsdCl7Y29uc3QgYT1lLlNJWixyPVtdO2xldCBuO2NvbnN0IGk9TWF0aC5jZWlsKChhLlhzaXotYS5YVE9zaXopL2EuWFRzaXopLHM9TWF0aC5jZWlsKChhLllzaXotYS5ZVE9zaXopL2EuWVRzaXopO2ZvcihsZXQgZT0wO2U8cztlKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7bj17fTtuLnR4MD1NYXRoLm1heChhLlhUT3Npeit0KmEuWFRzaXosYS5YT3Npeik7bi50eTA9TWF0aC5tYXgoYS5ZVE9zaXorZSphLllUc2l6LGEuWU9zaXopO24udHgxPU1hdGgubWluKGEuWFRPc2l6Kyh0KzEpKmEuWFRzaXosYS5Yc2l6KTtuLnR5MT1NYXRoLm1pbihhLllUT3NpeisoZSsxKSphLllUc2l6LGEuWXNpeik7bi53aWR0aD1uLnR4MS1uLnR4MDtuLmhlaWdodD1uLnR5MS1uLnR5MDtuLmNvbXBvbmVudHM9W107ci5wdXNoKG4pfWUudGlsZXM9cjtmb3IobGV0IGU9MCxpPWEuQ3NpejtlPGk7ZSsrKXtjb25zdCBhPXRbZV07Zm9yKGxldCB0PTAsaT1yLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPXt9O249clt0XTtpLnRjeDA9TWF0aC5jZWlsKG4udHgwL2EuWFJzaXopO2kudGN5MD1NYXRoLmNlaWwobi50eTAvYS5ZUnNpeik7aS50Y3gxPU1hdGguY2VpbChuLnR4MS9hLlhSc2l6KTtpLnRjeTE9TWF0aC5jZWlsKG4udHkxL2EuWVJzaXopO2kud2lkdGg9aS50Y3gxLWkudGN4MDtpLmhlaWdodD1pLnRjeTEtaS50Y3kwO24uY29tcG9uZW50c1tlXT1pfX19ZnVuY3Rpb24gZ2V0QmxvY2tzRGltZW5zaW9ucyhlLHQsYSl7Y29uc3Qgcj10LmNvZGluZ1N0eWxlUGFyYW1ldGVycyxuPXt9O2lmKHIuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cyl7bi5QUHg9ci5wcmVjaW5jdHNTaXplc1thXS5QUHg7bi5QUHk9ci5wcmVjaW5jdHNTaXplc1thXS5QUHl9ZWxzZXtuLlBQeD0xNTtuLlBQeT0xNX1uLnhjYl89YT4wP01hdGgubWluKHIueGNiLG4uUFB4LTEpOk1hdGgubWluKHIueGNiLG4uUFB4KTtuLnljYl89YT4wP01hdGgubWluKHIueWNiLG4uUFB5LTEpOk1hdGgubWluKHIueWNiLG4uUFB5KTtyZXR1cm4gbn1mdW5jdGlvbiBidWlsZFByZWNpbmN0cyhlLHQsYSl7Y29uc3Qgcj0xPDxhLlBQeCxuPTE8PGEuUFB5LGk9MD09PXQucmVzTGV2ZWwscz0xPDxhLlBQeCsoaT8wOi0xKSxvPTE8PGEuUFB5KyhpPzA6LTEpLGM9dC50cngxPnQudHJ4MD9NYXRoLmNlaWwodC50cngxL3IpLU1hdGguZmxvb3IodC50cngwL3IpOjAsbD10LnRyeTE+dC50cnkwP01hdGguY2VpbCh0LnRyeTEvbiktTWF0aC5mbG9vcih0LnRyeTAvbik6MCxoPWMqbDt0LnByZWNpbmN0UGFyYW1ldGVycz17cHJlY2luY3RXaWR0aDpyLHByZWNpbmN0SGVpZ2h0Om4sbnVtcHJlY2luY3Rzd2lkZTpjLG51bXByZWNpbmN0c2hpZ2g6bCxudW1wcmVjaW5jdHM6aCxwcmVjaW5jdFdpZHRoSW5TdWJiYW5kOnMscHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6b319ZnVuY3Rpb24gYnVpbGRDb2RlYmxvY2tzKGUsdCxhKXtjb25zdCByPWEueGNiXyxuPWEueWNiXyxpPTE8PHIscz0xPDxuLG89dC50YngwPj5yLGM9dC50YnkwPj5uLGw9dC50YngxK2ktMT4+cixoPXQudGJ5MStzLTE+Pm4sdT10LnJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLGQ9W10sZj1bXTtsZXQgZyxwLG0sYjtmb3IocD1jO3A8aDtwKyspZm9yKGc9bztnPGw7ZysrKXttPXtjYng6ZyxjYnk6cCx0YngwOmkqZyx0YnkwOnMqcCx0YngxOmkqKGcrMSksdGJ5MTpzKihwKzEpfTttLnRieDBfPU1hdGgubWF4KHQudGJ4MCxtLnRieDApO20udGJ5MF89TWF0aC5tYXgodC50YnkwLG0udGJ5MCk7bS50YngxXz1NYXRoLm1pbih0LnRieDEsbS50YngxKTttLnRieTFfPU1hdGgubWluKHQudGJ5MSxtLnRieTEpO2I9TWF0aC5mbG9vcigobS50YngwXy10LnRieDApL3UucHJlY2luY3RXaWR0aEluU3ViYmFuZCkrTWF0aC5mbG9vcigobS50YnkwXy10LnRieTApL3UucHJlY2luY3RIZWlnaHRJblN1YmJhbmQpKnUubnVtcHJlY2luY3Rzd2lkZTttLnByZWNpbmN0TnVtYmVyPWI7bS5zdWJiYW5kVHlwZT10LnR5cGU7bS5MYmxvY2s9MztpZihtLnRieDFfPD1tLnRieDBffHxtLnRieTFfPD1tLnRieTBfKWNvbnRpbnVlO2QucHVzaChtKTtsZXQgZT1mW2JdO2lmKHZvaWQgMCE9PWUpe2c8ZS5jYnhNaW4/ZS5jYnhNaW49ZzpnPmUuY2J4TWF4JiYoZS5jYnhNYXg9Zyk7cDxlLmNieU1pbj9lLmNieE1pbj1wOnA+ZS5jYnlNYXgmJihlLmNieU1heD1wKX1lbHNlIGZbYl09ZT17Y2J4TWluOmcsY2J5TWluOnAsY2J4TWF4OmcsY2J5TWF4OnB9O20ucHJlY2luY3Q9ZX10LmNvZGVibG9ja1BhcmFtZXRlcnM9e2NvZGVibG9ja1dpZHRoOnIsY29kZWJsb2NrSGVpZ2h0Om4sbnVtY29kZWJsb2Nrd2lkZTpsLW8rMSxudW1jb2RlYmxvY2toaWdoOmgtYysxfTt0LmNvZGVibG9ja3M9ZDt0LnByZWNpbmN0cz1mfWZ1bmN0aW9uIGNyZWF0ZVBhY2tldChlLHQsYSl7Y29uc3Qgcj1bXSxuPWUuc3ViYmFuZHM7Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPW5bZV0uY29kZWJsb2Nrcztmb3IobGV0IGU9MCxuPWEubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49YVtlXTtuLnByZWNpbmN0TnVtYmVyPT09dCYmci5wdXNoKG4pfX1yZXR1cm57bGF5ZXJOdW1iZXI6YSxjb2RlYmxvY2tzOnJ9fWZ1bmN0aW9uIExheWVyUmVzb2x1dGlvbkNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288bjtvKyspe2Zvcig7Yzw9cztjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYoYz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2NdLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLG8pO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288PXM7bysrKXtmb3IoO2M8bjtjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYobz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW29dLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLGMpO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzLG8sYyxsLGg9MDtmb3IoYz0wO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2g9TWF0aC5tYXgoaCxlLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpfWNvbnN0IHU9bmV3IEludDMyQXJyYXkoaCsxKTtmb3Iobz0wO288PWg7KytvKXtsZXQgZT0wO2ZvcihjPTA7YzxpOysrYyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbY10ucmVzb2x1dGlvbnM7bzx0Lmxlbmd0aCYmKGU9TWF0aC5tYXgoZSx0W29dLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpKX11W29dPWV9cz0wO289MDtjPTA7bD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1oO28rKyl7Zm9yKDtsPHVbb107bCsrKXtmb3IoO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztpZighKGw+PWEpKXtmb3IoO3M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsbCxzKTtzKys7cmV0dXJuIGV9cz0wfX1jPTB9bD0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0sbj1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXoscz1nZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKHIpLG89cztsZXQgYz0wLGw9MCxoPTAsdT0wLGQ9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7ZDxvLm1heE51bUhpZ2g7ZCsrKXtmb3IoO3U8by5tYXhOdW1XaWRlO3UrKyl7Zm9yKDtoPGk7aCsrKXtjb25zdCBlPXIuY29tcG9uZW50c1toXSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmb3IoO2w8PXQ7bCsrKXtjb25zdCB0PWUucmVzb2x1dGlvbnNbbF0sYT1zLmNvbXBvbmVudHNbaF0ucmVzb2x1dGlvbnNbbF0scj1nZXRQcmVjaW5jdEluZGV4SWZFeGlzdCh1LGQsYSxvLHQpO2lmKG51bGwhPT1yKXtmb3IoO2M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQscixjKTtjKys7cmV0dXJuIGV9Yz0wfX1sPTB9aD0wfXU9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKTtsZXQgbz0wLGM9MCxsPTAsaD0wLHU9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bDxpOysrbCl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF0sdD1zLmNvbXBvbmVudHNbbF0sYT1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDt1PHQubWF4TnVtSGlnaDt1Kyspe2Zvcig7aDx0Lm1heE51bVdpZGU7aCsrKXtmb3IoO2M8PWE7YysrKXtjb25zdCBhPWUucmVzb2x1dGlvbnNbY10scj10LnJlc29sdXRpb25zW2NdLGk9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QoaCx1LHIsdCxhKTtpZihudWxsIT09aSl7Zm9yKDtvPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldChhLGksbyk7bysrO3JldHVybiBlfW89MH19Yz0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBnZXRQcmVjaW5jdEluZGV4SWZFeGlzdChlLHQsYSxyLG4pe2NvbnN0IGk9ZSpyLm1pbldpZHRoLHM9dCpyLm1pbkhlaWdodDtpZihpJWEud2lkdGghPTB8fHMlYS5oZWlnaHQhPTApcmV0dXJuIG51bGw7Y29uc3Qgbz1zL2Eud2lkdGgqbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTtyZXR1cm4gaS9hLmhlaWdodCtvfWZ1bmN0aW9uIGdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUoZSl7Y29uc3QgdD1lLmNvbXBvbmVudHMubGVuZ3RoO2xldCBhPU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLG49MCxpPTA7Y29uc3Qgcz1uZXcgQXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyl7Y29uc3QgdD1lLmNvbXBvbmVudHNbb10sYz10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbD1uZXcgQXJyYXkoYysxKTtsZXQgaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1BWF9WQUxVRSxkPTAsZj0wLGc9MTtmb3IobGV0IGU9YztlPj0wOy0tZSl7Y29uc3QgYT10LnJlc29sdXRpb25zW2VdLHI9ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdFdpZHRoLG49ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdEhlaWdodDtoPU1hdGgubWluKGgscik7dT1NYXRoLm1pbih1LG4pO2Q9TWF0aC5tYXgoZCxhLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHN3aWRlKTtmPU1hdGgubWF4KGYsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzaGlnaCk7bFtlXT17d2lkdGg6cixoZWlnaHQ6bn07Zzw8PTF9YT1NYXRoLm1pbihhLGgpO3I9TWF0aC5taW4ocix1KTtuPU1hdGgubWF4KG4sZCk7aT1NYXRoLm1heChpLGYpO3Nbb109e3Jlc29sdXRpb25zOmwsbWluV2lkdGg6aCxtaW5IZWlnaHQ6dSxtYXhOdW1XaWRlOmQsbWF4TnVtSGlnaDpmfX1yZXR1cm57Y29tcG9uZW50czpzLG1pbldpZHRoOmEsbWluSGVpZ2h0OnIsbWF4TnVtV2lkZTpuLG1heE51bUhpZ2g6aX19ZnVuY3Rpb24gYnVpbGRQYWNrZXRzKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXQuQ3Npejtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCB0PXIuY29tcG9uZW50c1tlXSxhPXQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxuPVtdLGk9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspe2NvbnN0IHI9Z2V0QmxvY2tzRGltZW5zaW9ucygwLHQsZSkscz17fSxvPTE8PGEtZTtzLnRyeDA9TWF0aC5jZWlsKHQudGN4MC9vKTtzLnRyeTA9TWF0aC5jZWlsKHQudGN5MC9vKTtzLnRyeDE9TWF0aC5jZWlsKHQudGN4MS9vKTtzLnRyeTE9TWF0aC5jZWlsKHQudGN5MS9vKTtzLnJlc0xldmVsPWU7YnVpbGRQcmVjaW5jdHMoMCxzLHIpO24ucHVzaChzKTtsZXQgYztpZigwPT09ZSl7Yz17fTtjLnR5cGU9IkxMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9vKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9vKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9vKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9vKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtzLnN1YmJhbmRzPVtjXX1lbHNle2NvbnN0IG49MTw8YS1lKzEsbz1bXTtjPXt9O2MudHlwZT0iSEwiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24pO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24pO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iTEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24pO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24pO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iSEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtzLnN1YmJhbmRzPW99fXQucmVzb2x1dGlvbnM9bjt0LnN1YmJhbmRzPWl9Y29uc3QgaT1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMucHJvZ3Jlc3Npb25PcmRlcjtzd2l0Y2goaSl7Y2FzZSAwOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMTpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUmVzb2x1dGlvbkxheWVyQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDI6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAzOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBQb3NpdGlvbkNvbXBvbmVudFJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgNDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgQ29tcG9uZW50UG9zaXRpb25SZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKcHhFcnJvcihgVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgJHtpfWApfX1mdW5jdGlvbiBwYXJzZVRpbGVQYWNrZXRzKGUsdCxhLHIpe2xldCBpLHM9MCxvPTAsYz0hMTtmdW5jdGlvbiByZWFkQml0cyhlKXtmb3IoO288ZTspe2NvbnN0IGU9dFthK3NdO3MrKztpZihjKXtpPWk8PDd8ZTtvKz03O2M9ITF9ZWxzZXtpPWk8PDh8ZTtvKz04fTI1NT09PWUmJihjPSEwKX1vLT1lO3JldHVybiBpPj4+byYoMTw8ZSktMX1mdW5jdGlvbiBza2lwTWFya2VySWZFcXVhbChlKXtpZigyNTU9PT10W2Ercy0xXSYmdFthK3NdPT09ZSl7c2tpcEJ5dGVzKDEpO3JldHVybiEwfWlmKDI1NT09PXRbYStzXSYmdFthK3MrMV09PT1lKXtza2lwQnl0ZXMoMik7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gc2tpcEJ5dGVzKGUpe3MrPWV9ZnVuY3Rpb24gYWxpZ25Ub0J5dGUoKXtvPTA7aWYoYyl7cysrO2M9ITF9fWZ1bmN0aW9uIHJlYWRDb2RpbmdwYXNzZXMoKXtpZigwPT09cmVhZEJpdHMoMSkpcmV0dXJuIDE7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAyO2xldCBlPXJlYWRCaXRzKDIpO2lmKGU8MylyZXR1cm4gZSszO2U9cmVhZEJpdHMoNSk7aWYoZTwzMSlyZXR1cm4gZSs2O2U9cmVhZEJpdHMoNyk7cmV0dXJuIGUrMzd9Y29uc3QgbD1lLmN1cnJlbnRUaWxlLmluZGV4LGg9ZS50aWxlc1tsXSx1PWUuQ09ELnNvcE1hcmtlclVzZWQsZD1lLkNPRC5lcGhNYXJrZXJVc2VkLGY9aC5wYWNrZXRzSXRlcmF0b3I7Zm9yKDtzPHI7KXthbGlnblRvQnl0ZSgpO3UmJnNraXBNYXJrZXJJZkVxdWFsKDE0NSkmJnNraXBCeXRlcyg0KTtjb25zdCBlPWYubmV4dFBhY2tldCgpO2lmKCFyZWFkQml0cygxKSljb250aW51ZTtjb25zdCByPWUubGF5ZXJOdW1iZXIsaT1bXTtsZXQgbztmb3IobGV0IHQ9MCxhPWUuY29kZWJsb2Nrcy5sZW5ndGg7dDxhO3QrKyl7bz1lLmNvZGVibG9ja3NbdF07bGV0IGE9by5wcmVjaW5jdDtjb25zdCBzPW8uY2J4LWEuY2J4TWluLGM9by5jYnktYS5jYnlNaW47bGV0IGwsaCx1PSExLGQ9ITE7aWYodm9pZCAwIT09by5pbmNsdWRlZCl1PSEhcmVhZEJpdHMoMSk7ZWxzZXthPW8ucHJlY2luY3Q7bGV0IGU7aWYodm9pZCAwIT09YS5pbmNsdXNpb25UcmVlKWU9YS5pbmNsdXNpb25UcmVlO2Vsc2V7Y29uc3QgdD1hLmNieE1heC1hLmNieE1pbisxLG49YS5jYnlNYXgtYS5jYnlNaW4rMTtlPW5ldyBJbmNsdXNpb25UcmVlKHQsbixyKTtoPW5ldyBUYWdUcmVlKHQsbik7YS5pbmNsdXNpb25UcmVlPWU7YS56ZXJvQml0UGxhbmVzVHJlZT1oO2ZvcihsZXQgZT0wO2U8cjtlKyspaWYoMCE9PXJlYWRCaXRzKDEpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCB0YWcgdHJlZSIpfWlmKGUucmVzZXQocyxjLHIpKWZvcig7Oyl7aWYoIXJlYWRCaXRzKDEpKXtlLmluY3JlbWVudFZhbHVlKHIpO2JyZWFrfWw9IWUubmV4dExldmVsKCk7aWYobCl7by5pbmNsdWRlZD0hMDt1PWQ9ITA7YnJlYWt9fX1pZighdSljb250aW51ZTtpZihkKXtoPWEuemVyb0JpdFBsYW5lc1RyZWU7aC5yZXNldChzLGMpO2Zvcig7OylpZihyZWFkQml0cygxKSl7bD0haC5uZXh0TGV2ZWwoKTtpZihsKWJyZWFrfWVsc2UgaC5pbmNyZW1lbnRWYWx1ZSgpO28uemVyb0JpdFBsYW5lcz1oLnZhbHVlfWNvbnN0IGY9cmVhZENvZGluZ3Bhc3NlcygpO2Zvcig7cmVhZEJpdHMoMSk7KW8uTGJsb2NrKys7Y29uc3QgZz0oMCxuLmxvZzIpKGYpLHA9cmVhZEJpdHMoKGY8MTw8Zz9nLTE6Zykrby5MYmxvY2spO2kucHVzaCh7Y29kZWJsb2NrOm8sY29kaW5ncGFzc2VzOmYsZGF0YUxlbmd0aDpwfSl9YWxpZ25Ub0J5dGUoKTtkJiZza2lwTWFya2VySWZFcXVhbCgxNDYpO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5zaGlmdCgpO289ZS5jb2RlYmxvY2s7dm9pZCAwPT09by5kYXRhJiYoby5kYXRhPVtdKTtvLmRhdGEucHVzaCh7ZGF0YTp0LHN0YXJ0OmErcyxlbmQ6YStzK2UuZGF0YUxlbmd0aCxjb2RpbmdwYXNzZXM6ZS5jb2RpbmdwYXNzZXN9KTtzKz1lLmRhdGFMZW5ndGh9fXJldHVybiBzfWZ1bmN0aW9uIGNvcHlDb2VmZmljaWVudHMoZSx0LGEscixuLHMsYyxsLGgpe2NvbnN0IHU9ci50YngwLGQ9ci50YnkwLGY9ci50YngxLXIudGJ4MCxnPXIuY29kZWJsb2NrcyxwPSJIIj09PXIudHlwZS5jaGFyQXQoMCk/MTowLG09IkgiPT09ci50eXBlLmNoYXJBdCgxKT90OjA7Zm9yKGxldCBhPTAsYj1nLmxlbmd0aDthPGI7KythKXtjb25zdCBiPWdbYV0seT1iLnRieDFfLWIudGJ4MF8sdz1iLnRieTFfLWIudGJ5MF87aWYoMD09PXl8fDA9PT13KWNvbnRpbnVlO2lmKHZvaWQgMD09PWIuZGF0YSljb250aW51ZTtjb25zdCBTPW5ldyBvKHksdyxiLnN1YmJhbmRUeXBlLGIuemVyb0JpdFBsYW5lcyxzKTtsZXQgeD0yO2NvbnN0IGs9Yi5kYXRhO2xldCBDLHYsRixPPTAsVD0wO2ZvcihDPTAsdj1rLmxlbmd0aDtDPHY7QysrKXtGPWtbQ107Tys9Ri5lbmQtRi5zdGFydDtUKz1GLmNvZGluZ3Bhc3Nlc31jb25zdCBNPW5ldyBVaW50OEFycmF5KE8pO2xldCBFPTA7Zm9yKEM9MCx2PWsubGVuZ3RoO0M8djtDKyspe0Y9a1tDXTtjb25zdCBlPUYuZGF0YS5zdWJhcnJheShGLnN0YXJ0LEYuZW5kKTtNLnNldChlLEUpO0UrPWUubGVuZ3RofWNvbnN0IEQ9bmV3IGkuQXJpdGhtZXRpY0RlY29kZXIoTSwwLE8pO1Muc2V0RGVjb2RlcihEKTtmb3IoQz0wO0M8VDtDKyspe3N3aXRjaCh4KXtjYXNlIDA6Uy5ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKTticmVhaztjYXNlIDE6Uy5ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpO2JyZWFrO2Nhc2UgMjpTLnJ1bkNsZWFudXBQYXNzKCk7bCYmUy5jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpfWgmJlMucmVzZXQoKTt4PSh4KzEpJTN9bGV0IE49Yi50YngwXy11KyhiLnRieTBfLWQpKmY7Y29uc3QgUj1TLmNvZWZmaWNlbnRzU2lnbixMPVMuY29lZmZpY2VudHNNYWduaXR1ZGUsaj1TLmJpdHNEZWNvZGVkLCQ9Yz8wOi41O2xldCBfLFUsWDtFPTA7Y29uc3QgSD0iTEwiIT09ci50eXBlO2ZvcihDPTA7Qzx3O0MrKyl7Y29uc3QgYT0yKihOL2Z8MCkqKHQtZikrcCttO2ZvcihfPTA7Xzx5O18rKyl7VT1MW0VdO2lmKDAhPT1VKXtVPShVKyQpKm47MCE9PVJbRV0mJihVPS1VKTtYPWpbRV07Y29uc3QgdD1IP2ErKE48PDEpOk47ZVt0XT1jJiZYPj1zP1U6VSooMTw8cy1YKX1OKys7RSsrfU4rPWYteX19fWZ1bmN0aW9uIHRyYW5zZm9ybVRpbGUoZSx0LGEpe2NvbnN0IHI9dC5jb21wb25lbnRzW2FdLG49ci5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsaT1yLnF1YW50aXphdGlvblBhcmFtZXRlcnMsbz1uLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxjPWkuU1BxY2RzLGw9aS5zY2FsYXJFeHBvdW5kZWQsaD1pLmd1YXJkQml0cyx1PW4uc2VnbWVudGF0aW9uU3ltYm9sVXNlZCxkPW4ucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyxmPWUuY29tcG9uZW50c1thXS5wcmVjaXNpb24sZz1uLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbixwPWc/bmV3IFJldmVyc2libGVUcmFuc2Zvcm06bmV3IElycmV2ZXJzaWJsZVRyYW5zZm9ybSxtPVtdO2xldCBiPTA7Zm9yKGxldCBlPTA7ZTw9bztlKyspe2NvbnN0IHQ9ci5yZXNvbHV0aW9uc1tlXSxhPXQudHJ4MS10LnRyeDAsbj10LnRyeTEtdC50cnkwLGk9bmV3IEZsb2F0MzJBcnJheShhKm4pO2ZvcihsZXQgcj0wLG49dC5zdWJiYW5kcy5sZW5ndGg7cjxuO3IrKyl7bGV0IG4sbztpZihsKXtuPWNbYl0ubXU7bz1jW2JdLmVwc2lsb247YisrfWVsc2V7bj1jWzBdLm11O289Y1swXS5lcHNpbG9uKyhlPjA/MS1lOjApfWNvbnN0IHA9dC5zdWJiYW5kc1tyXSxtPXNbcC50eXBlXTtjb3B5Q29lZmZpY2llbnRzKGksYSwwLHAsZz8xOjIqKihmK20tbykqKDErbi8yMDQ4KSxoK28tMSxnLHUsZCl9bS5wdXNoKHt3aWR0aDphLGhlaWdodDpuLGl0ZW1zOml9KX1jb25zdCB5PXAuY2FsY3VsYXRlKG0sci50Y3gwLHIudGN5MCk7cmV0dXJue2xlZnQ6ci50Y3gwLHRvcDpyLnRjeTAsd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHQsaXRlbXM6eS5pdGVtc319ZnVuY3Rpb24gaW5pdGlhbGl6ZVRpbGUoZSx0KXtjb25zdCBhPWUuU0laLkNzaXoscj1lLnRpbGVzW3RdO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9ci5jb21wb25lbnRzW3RdLG49dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5RQ0NbdF0/ZS5jdXJyZW50VGlsZS5RQ0NbdF06ZS5jdXJyZW50VGlsZS5RQ0Q7YS5xdWFudGl6YXRpb25QYXJhbWV0ZXJzPW47Y29uc3QgaT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLkNPQ1t0XT9lLmN1cnJlbnRUaWxlLkNPQ1t0XTplLmN1cnJlbnRUaWxlLkNPRDthLmNvZGluZ1N0eWxlUGFyYW1ldGVycz1pfXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycz1lLmN1cnJlbnRUaWxlLkNPRH1jbGFzcyBUYWdUcmVle2NvbnN0cnVjdG9yKGUsdCl7Y29uc3QgYT0oMCxuLmxvZzIpKE1hdGgubWF4KGUsdCkpKzE7dGhpcy5sZXZlbHM9W107Zm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgYT17d2lkdGg6ZSxoZWlnaHQ6dCxpdGVtczpbXX07dGhpcy5sZXZlbHMucHVzaChhKTtlPU1hdGguY2VpbChlLzIpO3Q9TWF0aC5jZWlsKHQvMil9fXJlc2V0KGUsdCl7bGV0IGEscj0wLG49MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7YT10aGlzLmxldmVsc1tyXTtjb25zdCBpPWUrdCphLndpZHRoO2lmKHZvaWQgMCE9PWEuaXRlbXNbaV0pe249YS5pdGVtc1tpXTticmVha31hLmluZGV4PWk7ZT4+PTE7dD4+PTE7cisrfXItLTthPXRoaXMubGV2ZWxzW3JdO2EuaXRlbXNbYS5pbmRleF09bjt0aGlzLmN1cnJlbnRMZXZlbD1yO2RlbGV0ZSB0aGlzLnZhbHVlfWluY3JlbWVudFZhbHVlKCl7Y29uc3QgZT10aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07ZS5pdGVtc1tlLmluZGV4XSsrfW5leHRMZXZlbCgpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO2UtLTtpZihlPDApe3RoaXMudmFsdWU9YTtyZXR1cm4hMX10aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jbGFzcyBJbmNsdXNpb25UcmVle2NvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCByPSgwLG4ubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXJbZV09YTtjb25zdCBuPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOnJ9O3RoaXMubGV2ZWxzLnB1c2gobik7ZT1NYXRoLmNlaWwoZS8yKTt0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQsYSl7bGV0IHI9MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmxldmVsc1tyXSxpPWUrdCpuLndpZHRoO24uaW5kZXg9aTtjb25zdCBzPW4uaXRlbXNbaV07aWYoMjU1PT09cylicmVhaztpZihzPmEpe3RoaXMuY3VycmVudExldmVsPXI7dGhpcy5wcm9wYWdhdGVWYWx1ZXMoKTtyZXR1cm4hMX1lPj49MTt0Pj49MTtyKyt9dGhpcy5jdXJyZW50TGV2ZWw9ci0xO3JldHVybiEwfWluY3JlbWVudFZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdO3QuaXRlbXNbdC5pbmRleF09ZSsxO3RoaXMucHJvcGFnYXRlVmFsdWVzKCl9cHJvcGFnYXRlVmFsdWVzKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07Zm9yKDstLWU+PTA7KXt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YX19bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07dC5pdGVtc1t0LmluZGV4XT0yNTU7ZS0tO2lmKGU8MClyZXR1cm4hMTt0aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jb25zdCBvPWZ1bmN0aW9uIEJpdE1vZGVsQ2xvc3VyZSgpe2NvbnN0IGU9MTcsdD1uZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKSxhPW5ldyBVaW50OEFycmF5KFswLDMsNCwwLDUsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDEsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMSwyLDAsMSwyLDIsMCwyLDIsMiwwLDAsMCwwLDAsMyw0LDUsMCw0LDUsNSwwLDUsNSw1LDAsMCwwLDAsMCw2LDcsNywwLDcsNyw3LDAsNyw3LDcsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOCwwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4XSk7cmV0dXJuIGNsYXNzIEJpdE1vZGVse2NvbnN0cnVjdG9yKGUsbixpLHMsbyl7dGhpcy53aWR0aD1lO3RoaXMuaGVpZ2h0PW47bGV0IGM7Yz0iSEgiPT09aT9yOiJITCI9PT1pP2E6dDt0aGlzLmNvbnRleHRMYWJlbFRhYmxlPWM7Y29uc3QgbD1lKm47dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkobCk7dGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGg7aD1vPjE0P25ldyBVaW50MzJBcnJheShsKTpvPjY/bmV3IFVpbnQxNkFycmF5KGwpOm5ldyBVaW50OEFycmF5KGwpO3RoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9aDt0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShsKTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGwpO2lmKDAhPT1zKWZvcihsZXQgZT0wO2U8bDtlKyspdVtlXT1zO3RoaXMuYml0c0RlY29kZWQ9dTt0aGlzLnJlc2V0KCl9c2V0RGVjb2RlcihlKXt0aGlzLmRlY29kZXI9ZX1yZXNldCgpe3RoaXMuY29udGV4dHM9bmV3IEludDhBcnJheSgxOSk7dGhpcy5jb250ZXh0c1swXT04O3RoaXMuY29udGV4dHNbMTddPTkyO3RoaXMuY29udGV4dHNbMThdPTZ9c2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGUsdCxhKXtjb25zdCByPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG49dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LHM9dD4wLG89dCsxPG47bGV0IGM7aWYoZT4wKXtjPWEtbjtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9aWYoZSsxPGkpe2M9YStuO3MmJihyW2MtMV0rPTE2KTtvJiYocltjKzFdKz0xNik7cltjXSs9NH1zJiYoclthLTFdKz0xKTtvJiYoclthKzFdKz0xKTtyW2FdfD0xMjh9cnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24saT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxzPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLG89dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsbD10aGlzLmJpdHNEZWNvZGVkO2ZvcihsZXQgaD0wO2g8YTtoKz00KWZvcihsZXQgdT0wO3U8dDt1Kyspe2xldCBkPWgqdCt1O2ZvcihsZXQgZj0wO2Y8NDtmKyssZCs9dCl7Y29uc3QgdD1oK2Y7aWYodD49YSlicmVhaztzW2RdJj0tMjtpZihyW2RdfHwhaVtkXSljb250aW51ZTtjb25zdCBnPWNbaVtkXV07aWYoZS5yZWFkQml0KG8sZykpe2NvbnN0IGU9dGhpcy5kZWNvZGVTaWduQml0KHQsdSxkKTtuW2RdPWU7cltkXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHQsdSxkKTtzW2RdfD0yfWxbZF0rKztzW2RdfD0xfX19ZGVjb2RlU2lnbkJpdChlLHQsYSl7Y29uc3Qgcj10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLHM9dGhpcy5jb2VmZmljZW50c1NpZ247bGV0IG8sYyxsLGgsdSxkO2g9dD4wJiYwIT09aVthLTFdO2lmKHQrMTxyJiYwIT09aVthKzFdKXtsPXNbYSsxXTtpZihoKXtjPXNbYS0xXTtvPTEtbC1jfWVsc2Ugbz0xLWwtbH1lbHNlIGlmKGgpe2M9c1thLTFdO289MS1jLWN9ZWxzZSBvPTA7Y29uc3QgZj0zKm87aD1lPjAmJjAhPT1pW2Etcl07aWYoZSsxPG4mJjAhPT1pW2Ercl0pe2w9c1thK3JdO2lmKGgpe2M9c1thLXJdO289MS1sLWMrZn1lbHNlIG89MS1sLWwrZn1lbHNlIGlmKGgpe2M9c1thLXJdO289MS1jLWMrZn1lbHNlIG89ZjtpZihvPj0wKXt1PTkrbztkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9ZWxzZXt1PTktbztkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KX1yZXR1cm4gZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxuPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqYSxsPTQqdDtmb3IobGV0IGEsaD0wO2g8YztoPWEpe2E9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPGE7bCs9dCl7aWYoIXJbbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2O2lmKDAhPSgyJm9bbF0pKXtvW2xdXj0yO3Q9MD09PSgxMjcmbltsXSk/MTU6MTR9Y29uc3QgYT1lLnJlYWRCaXQoaSx0KTtyW2xdPXJbbF08PDF8YTtzW2xdKys7b1tsXXw9MX19fXJ1bkNsZWFudXBQYXNzKCl7Y29uc3QgdD10aGlzLmRlY29kZXIsYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsbj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxpPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUscz10aGlzLmNvZWZmaWNlbnRzU2lnbixvPXRoaXMuY29udGV4dHMsYz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGw9dGhpcy5iaXRzRGVjb2RlZCxoPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLHU9YSxkPTIqYSxmPTMqYTtsZXQgZztmb3IobGV0IHA9MDtwPHI7cD1nKXtnPU1hdGgubWluKHArNCxyKTtjb25zdCBtPXAqYSxiPXArMzxyO2ZvcihsZXQgcj0wO3I8YTtyKyspe2NvbnN0IHk9bStyO2xldCB3LFM9MCx4PXksaz1wO2lmKGImJjA9PT1oW3ldJiYwPT09aFt5K3VdJiYwPT09aFt5K2RdJiYwPT09aFt5K2ZdJiYwPT09blt5XSYmMD09PW5beSt1XSYmMD09PW5beStkXSYmMD09PW5beStmXSl7aWYoIXQucmVhZEJpdChvLDE4KSl7bFt5XSsrO2xbeSt1XSsrO2xbeStkXSsrO2xbeStmXSsrO2NvbnRpbnVlfVM9dC5yZWFkQml0KG8sZSk8PDF8dC5yZWFkQml0KG8sZSk7aWYoMCE9PVMpe2s9cCtTO3grPVMqYX13PXRoaXMuZGVjb2RlU2lnbkJpdChrLHIseCk7c1t4XT13O2lbeF09MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShrLHIseCk7aFt4XXw9Mjt4PXk7Zm9yKGxldCBlPXA7ZTw9aztlKysseCs9YSlsW3hdKys7UysrfWZvcihrPXArUztrPGc7aysrLHgrPWEpe2lmKGlbeF18fDAhPSgxJmhbeF0pKWNvbnRpbnVlO2NvbnN0IGU9Y1tuW3hdXTtpZigxPT09dC5yZWFkQml0KG8sZSkpe3c9dGhpcy5kZWNvZGVTaWduQml0KGsscix4KTtzW3hdPXc7aVt4XT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGsscix4KTtoW3hdfD0yfWxbeF0rK319fX1jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpe2NvbnN0IHQ9dGhpcy5kZWNvZGVyLGE9dGhpcy5jb250ZXh0cztpZigxMCE9PSh0LnJlYWRCaXQoYSxlKTw8M3x0LnJlYWRCaXQoYSxlKTw8Mnx0LnJlYWRCaXQoYSxlKTw8MXx0LnJlYWRCaXQoYSxlKSkpdGhyb3cgbmV3IEpweEVycm9yKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKX19fSgpO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1UcmFuc2Zvcm0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj1lWzBdO2ZvcihsZXQgbj0xLGk9ZS5sZW5ndGg7bjxpO24rKylyPXRoaXMuaXRlcmF0ZShyLGVbbl0sdCxhKTtyZXR1cm4gcn1leHRlbmQoZSx0LGEpe2xldCByPXQtMSxuPXQrMSxpPXQrYS0yLHM9dCthO2Vbci0tXT1lW24rK107ZVtzKytdPWVbaS0tXTtlW3ItLV09ZVtuKytdO2VbcysrXT1lW2ktLV07ZVtyLS1dPWVbbisrXTtlW3MrK109ZVtpLS1dO2Vbcl09ZVtuXTtlW3NdPWVbaV19ZmlsdGVyKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LGEscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8aTtoKyspe2Y9MipoKm87Zm9yKHU9MDt1PG47dSsrLGQrKyxmKz0yKWxbZl09c1tkXX1zPWUuaXRlbXM9bnVsbDtjb25zdCBtPW5ldyBGbG9hdDMyQXJyYXkobys4KTtpZigxPT09byl7aWYoMCE9KDEmYSkpZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKWxbZF0qPS41fWVsc2UgZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKXttLnNldChsLnN1YmFycmF5KGQsZCtvKSw0KTt0aGlzLmV4dGVuZChtLDQsbyk7dGhpcy5maWx0ZXIobSw0LG8pO2wuc2V0KG0uc3ViYXJyYXkoNCw0K28pLGQpfWxldCBiPTE2O2NvbnN0IHk9W107Zm9yKGg9MDtoPGI7aCsrKXkucHVzaChuZXcgRmxvYXQzMkFycmF5KGMrOCkpO2xldCB3LFM9MDtlPTQrYztpZigxPT09Yyl7aWYoMCE9KDEmcikpZm9yKGc9MDtnPG87ZysrKWxbZ10qPS41fWVsc2UgZm9yKGc9MDtnPG87ZysrKXtpZigwPT09Uyl7Yj1NYXRoLm1pbihvLWcsYik7Zm9yKGQ9ZyxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKyl5W3ddW2ZdPWxbZCt3XTtTPWJ9Uy0tO2NvbnN0IHQ9eVtTXTt0aGlzLmV4dGVuZCh0LDQsYyk7dGhpcy5maWx0ZXIodCw0LGMpO2lmKDA9PT1TKXtkPWctYisxO2ZvcihmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX19cmV0dXJue3dpZHRoOm8saGVpZ2h0OmMsaXRlbXM6bH19fWNsYXNzIElycmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgbixpLHMsbztjb25zdCBjPS0xLjU4NjEzNDM0MjA1OTkyNCxsPS0uMDUyOTgwMTE4NTcyOTYxLGg9Ljg4MjkxMTA3NTUzMDkzNCx1PS40NDM1MDY4NTIwNDM5NzEsZD0xLjIzMDE3NDEwNDkxNDAwMTtuPSh0fD0wKS0zO2ZvcihpPXIrNDtpLS07bis9MillW25dKj0uODEyODkzMDY2MTE1OTYwOTtuPXQtMjtzPXUqZVtuLTFdO2ZvcihpPXIrMztpLS07bis9Mil7bz11KmVbbisxXTtlW25dPWQqZVtuXS1zLW87aWYoIWktLSlicmVhaztuKz0yO3M9dSplW24rMV07ZVtuXT1kKmVbbl0tcy1vfW49dC0xO3M9aCplW24tMV07Zm9yKGk9cisyO2ktLTtuKz0yKXtvPWgqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1oKmVbbisxXTtlW25dLT1zK299bj10O3M9bCplW24tMV07Zm9yKGk9cisxO2ktLTtuKz0yKXtvPWwqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1sKmVbbisxXTtlW25dLT1zK299aWYoMCE9PXIpe249dCsxO3M9YyplW24tMV07Zm9yKGk9cjtpLS07bis9Mil7bz1jKmVbbisxXTtlW25dLT1zK287aWYoIWktLSlicmVhaztuKz0yO3M9YyplW24rMV07ZVtuXS09cytvfX19fWNsYXNzIFJldmVyc2libGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm17ZmlsdGVyKGUsdCxhKXtjb25zdCByPWE+PjE7bGV0IG4saTtmb3Iobj10fD0wLGk9cisxO2ktLTtuKz0yKWVbbl0tPWVbbi0xXStlW24rMV0rMj4+Mjtmb3Iobj10KzEsaT1yO2ktLTtuKz0yKWVbbl0rPWVbbi0xXStlW24rMV0+PjF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsbj17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtuLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtuLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1ufXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3Qgbj10aGlzLmx6d1N0YXRlO2lmKCFuKXJldHVybjtjb25zdCBpPW4uZWFybHlDaGFuZ2U7bGV0IHM9bi5uZXh0Q29kZTtjb25zdCBvPW4uZGljdGlvbmFyeVZhbHVlcyxjPW4uZGljdGlvbmFyeUxlbmd0aHMsbD1uLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9bi5jb2RlTGVuZ3RoLHU9bi5wcmV2Q29kZTtjb25zdCBkPW4uY3VycmVudFNlcXVlbmNlO2xldCBmPW4uY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxuPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKG4pe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytpJnMraS0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK2kpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19bi5uZXh0Q29kZT1zO24uY29kZUxlbmd0aD1oO24ucHJldkNvZGU9dTtuLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fXQuTFpXU3RyZWFtPUxaV1N0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyKTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsbj10aGlzLmNvbG9ycyxpPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFpLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PW4pZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1pW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8bjsrK3MpYVt1KytdPWlbc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1uXStpW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MipuO2ZvcihzPTA7czx0OysrcylhW3UrK109aVtzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jmlbc10pPDw4KSsoMjU1JmlbcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4rMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxuOysrdCl7aWYobDxyKXtvPW88PDh8MjU1JmlbZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2xldCBvPXMuc3ViYXJyYXkobi1lLG4pOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PW47c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0sbj1hK2wtZTtsZXQgaT1uLWE7aTwwJiYoaT0taSk7bGV0IGQ9bi1sO2Q8MCYmKGQ9LWQpO2xldCBmPW4tZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPWk8PWQmJmk8PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUnVuTGVuZ3RoU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KTtjbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjtjb25zdCBuPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl0W2ErK109bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX10LlJ1bkxlbmd0aFN0cmVhbT1SdW5MZW5ndGhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDt2YXIgcj1hKDIpLG49YSgzMyksaT1hKDM2KSxzPWEoMzgpLG89YSgzNyksYz1hKDM1KSxsPWEoMzkpLGg9YSg0MCksdT1hKDQxKSxkPWEoNDIpLGY9YSg0MyksZz1hKDQ0KSxwPWEoMTQpLG09YSg0NSksYj1hKDQpLHk9YSg4KSx3PWEoNDYpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLGs9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImZvbnRUeXBlIiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwidHlwZSIsInZlcnRpY2FsIl0sQz1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLG8sYyxsKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPW47dGhpcy52bWV0cmljPWk7dGhpcy5vcGVyYXRvckxpc3RJZD1vO3RoaXMuaXNTcGFjZT1jO3RoaXMuaXNJbkZvbnQ9bDtjb25zdCBoPSgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkoYSk7dGhpcy5pc1doaXRlc3BhY2U9aC5pc1doaXRlc3BhY2U7dGhpcy5pc1plcm9XaWR0aERpYWNyaXRpYz1oLmlzWmVyb1dpZHRoRGlhY3JpdGljO3RoaXMuaXNJbnZpc2libGVGb3JtYXRNYXJrPWguaXNJbnZpc2libGVGb3JtYXRNYXJrfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGEpe2VbdCsxXT1hO2VbdF09YT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBhPShlPDw4KSt0O3JldHVybiAzMjc2OCZhP2EtNjU1MzY6YX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuInR0Y2YiPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6bn0pe2xldCBpLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT0oMCxiLnJlYWRVaW50MzIpKHQsMCl8fCJ0cnVlIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpaT1uPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiJPVFRPIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpKWk9bj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlpPW4/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihuKXtpPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7aT0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXsoMCxyLndhcm4pKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2k9dDtzPWF9cmV0dXJuW2ksc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IG47Zm9yKGxldCBhPTAsaT1lLmxlbmd0aDthPGk7YSsrKXtuPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlW2FdLHQpOy0xIT09biYmKHJbYV09bil9Zm9yKGNvbnN0IGUgaW4gYSl7bj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYVtlXSx0KTstMSE9PW4mJihyWytlXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxhPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBuPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihuKTsoMCxyLndhcm4pKG4pO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEsbil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxvPVtdLGM9bmV3IFNldDtsZXQgbD0wO2NvbnN0IGg9U1tsXVswXTtsZXQgdT1oLGQ9U1tsXVsxXTtmb3IobGV0IGYgaW4gZSl7Znw9MDtsZXQgZz1lW2ZdO2lmKCF0KGcpKWNvbnRpbnVlO2lmKHU+ZCl7bCsrO2lmKGw+PVMubGVuZ3RoKXsoMCxyLndhcm4pKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha311PVNbbF1bMF07ZD1TW2xdWzFdfWNvbnN0IHA9dSsrOzA9PT1nJiYoZz1hKTtsZXQgbT1uLmdldChmKTsic3RyaW5nIj09dHlwZW9mIG0mJihtPW0uY29kZVBvaW50QXQoMCkpO2lmKG0mJm08aCYmIWMuaGFzKGcpKXtzLnNldChtLGcpO2MuYWRkKGcpfWlbcF09ZztvW2ZdPXB9cmV0dXJue3RvRm9udENoYXI6byxjaGFyQ29kZVRvR2x5cGhJZDppLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTp1fX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCByPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usbl1vZiB0KW4+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpufSk7MD09PXIubGVuZ3RoJiZyLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO3Iuc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgbj1bXSxpPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8aTspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8aSYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31uLnB1c2goW3QscyxhXSl9cmV0dXJuIG59KGUsdCxhKSxpPW4uYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxvLGMsbCxoPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIisoMCxyLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wJiYhKG5bc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO25bc11bMF08NjU1MzUmJjY1NTM1PT09bltzXVsxXSYmKG5bc11bMV09NjU1MzQpO2NvbnN0IGQ9bltzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsUz0iIix4PSIiLGs9IiIsQz0iIix2PSIiLEY9MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPW5bc107Yj1wWzBdO3k9cFsxXTtTKz1zdHJpbmcxNihiKTt4Kz1zdHJpbmcxNih5KTt3PXBbMl07bGV0IGU9ITA7Zm9yKGM9MSxsPXcubGVuZ3RoO2M8bDsrK2MpaWYod1tjXSE9PXdbYy0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe2srPXN0cmluZzE2KHdbMF0tYiY2NTUzNSk7Qys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGYtcykrMipGO0YrPXktYisxO2srPXN0cmluZzE2KDApO0MrPXN0cmluZzE2KGUpO2ZvcihjPTAsbD13Lmxlbmd0aDtjPGw7KytjKXYrPXN0cmluZzE2KHdbY10pfX1pZihkPjApe3grPSLDv8O/IjtTKz0iw7/DvyI7ays9IlwwASI7Qys9IlwwXDAifWNvbnN0IE89IlwwXDAiK3N0cmluZzE2KDIqZikrc3RyaW5nMTYoZy5yYW5nZSkrc3RyaW5nMTYoZy5lbnRyeSkrc3RyaW5nMTYoZy5yYW5nZVNoaWZ0KSt4KyJcMFwwIitTK2srQyt2O2xldCBUPSIiLE09IiI7aWYoaT4xKXtoKz0iXDADXDBcbiIrKDAsci5zdHJpbmczMikoNCs4KmkrNCtPLmxlbmd0aCk7VD0iIjtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl7cD1uW3NdO2I9cFswXTt3PXBbMl07bGV0IGU9d1swXTtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe3k9cFswXStjLTE7VCs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikoeSkrKDAsci5zdHJpbmczMikoZSk7Yj15KzE7ZT13W2NdfVQrPSgwLHIuc3RyaW5nMzIpKGIpKygwLHIuc3RyaW5nMzIpKHBbMV0pKygwLHIuc3RyaW5nMzIpKGUpfU09IlwwXGZcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aCsxNikrIlwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aC8xMil9cmV0dXJuIGgrIlwwBCIrc3RyaW5nMTYoTy5sZW5ndGgrNCkrTytNK1R9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2E9YXx8e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IG49MCxpPTAsbz0wLGM9MCxsPW51bGwsaD0wO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhsPmV8fCFsKSYmKGw9ZSk7aDxlJiYoaD1lKTtjb25zdCB0PSgwLHMuZ2V0VW5pY29kZVJhbmdlRm9yKShlKTtpZih0PDMyKW58PTE8PHQ7ZWxzZSBpZih0PDY0KWl8PTE8PHQtMzI7ZWxzZSBpZih0PDk2KW98PTE8PHQtNjQ7ZWxzZXtpZighKHQ8MTIzKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7Y3w9MTw8dC05Nn19aD42NTUzNSYmKGg9NjU1MzUpfWVsc2V7bD0wO2g9MjU1fWNvbnN0IHU9ZS5iYm94fHxbMCwwLDAsMF0sZD1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZj1lLmFzY2VudFNjYWxlZD8xOmQveCxnPWEuYXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuYXNjZW50fHx1WzNdKSk7bGV0IHA9YS5kZXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuZGVzY2VudHx8dVsxXSkpO3A+MCYmZS5kZXNjZW50PjAmJnVbMV08MCYmKHA9LXApO2NvbnN0IG09YS55TWF4fHxnLGI9LWEueU1pbnx8LXA7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsci5zdHJpbmczMikobikrKDAsci5zdHJpbmczMikoaSkrKDAsci5zdHJpbmczMikobykrKDAsci5zdHJpbmczMikoYykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihsfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoaHx8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoZykrc3RyaW5nMTYocCkrIlwwZCIrc3RyaW5nMTYobSkrc3RyaW5nMTYoYikrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1NYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpO3JldHVybiJcMANcMFwwIisoMCxyLnN0cmluZzMyKSh0KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgbixpLHMsbyxjO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXtjPXRbMV1bbl18fGFbbl07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3Iobj0wLGk9aC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgZT1sW25dO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtuXSt1W25dK2Rbbl0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9dC5Gb250PWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSExO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ISEoYS5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIW4mJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLGE9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihhW2VdKXtuPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PW47dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0IHM9YS50eXBlLG89YS5zdWJ0eXBlO3RoaXMudHlwZT1zO3RoaXMuc3VidHlwZT1vO2xldCBjLGg9InNhbnMtc2VyaWYiO3RoaXMuaXNNb25vc3BhY2U/aD0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250JiYoaD0ic2VyaWYiKTt0aGlzLmZhbGxiYWNrTmFtZT1oO3RoaXMuZGlmZmVyZW5jZXM9YS5kaWZmZXJlbmNlczt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZTt0aGlzLmNNYXA9YS5jTWFwO3RoaXMuY2FwSGVpZ2h0PWEuY2FwSGVpZ2h0L3g7dGhpcy5hc2NlbnQ9YS5hc2NlbnQveDt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3g7dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudDt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMuYmJveD1hLmJib3g7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9YS5kZWZhdWx0RW5jb2Rpbmc7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy50b0ZvbnRDaGFyPVtdO2lmKCJUeXBlMyIhPT1hLnR5cGUpe3RoaXMuY2lkRW5jb2Rpbmc9YS5jaWRFbmNvZGluZ3x8IiI7dGhpcy52ZXJ0aWNhbD0hIWEudmVydGljYWw7aWYodGhpcy52ZXJ0aWNhbCl7dGhpcy52bWV0cmljcz1hLnZtZXRyaWNzO3RoaXMuZGVmYXVsdFZNZXRyaWNzPWEuZGVmYXVsdFZNZXRyaWNzfWlmKHQmJiF0LmlzRW1wdHkpe1tzLG9dPWdldEZvbnRGaWxlVHlwZSh0LGEpO3M9PT10aGlzLnR5cGUmJm89PT10aGlzLnN1YnR5cGV8fCgwLHIuaW5mbykoYEluY29uc2lzdGVudCBmb250IGZpbGUgVHlwZS9TdWJUeXBlLCBleHBlY3RlZDogJHt0aGlzLnR5cGV9LyR7dGhpcy5zdWJ0eXBlfSBidXQgZm91bmQ6ICR7c30vJHtvfS5gKTt0cnl7c3dpdGNoKHMpe2Nhc2UiTU1UeXBlMSI6KDAsci5pbmZvKSgiTU1UeXBlMSBmb250ICgiK2UrIiksIGZhbGxpbmcgYmFjayB0byBUeXBlMS4iKTtjYXNlIlR5cGUxIjpjYXNlIkNJREZvbnRUeXBlMCI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Y29uc3Qgbj0iVHlwZTFDIj09PW98fCJDSURGb250VHlwZTBDIj09PW8/bmV3IHUuQ0ZGRm9udCh0LGEpOm5ldyB3LlR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUsbixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhhKTtzPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgRm9udCAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7KDAsci53YXJuKShlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMuZm9udFR5cGU9KDAsaS5nZXRGb250VHlwZSkocyxvLGEuaXNTdGFuZGFyZEZvbnQpO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1lbHNle3QmJigwLHIud2FybikoJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJytlKyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSl9fWVsc2V7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTt0aGlzLmZvbnRUeXBlPXIuRm9udFR5cGUuVFlQRTN9fWdldCByZW5kZXJlcigpe2NvbnN0IGU9ZC5Gb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmVuZGVyZXIiLGUpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5rLC4uLkNdOmssYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLG47Zm9yKHIgb2YgdCl7bj10aGlzW3JdO3ZvaWQgMCE9PW4mJihhW3JdPW4pfXJldHVybiBhfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3QgdD10aGlzLm5hbWUsYT10aGlzLnR5cGUsbj10aGlzLnN1YnR5cGU7bGV0IHU9KDAsaS5ub3JtYWxpemVGb250TmFtZSkodCk7Y29uc3QgZD0oMCxsLmdldFN0ZEZvbnRNYXApKCksZz0oMCxsLmdldE5vblN0ZEZvbnRNYXApKCkscD0hIWRbdV0sbT0hKCFnW3VdfHwhZFtnW3VdXSk7dT1kW3VdfHxnW3VdfHx1O2NvbnN0IGI9KDAsZi5nZXRGb250QmFzaWNNZXRyaWNzKSgpW3VdO2lmKGIpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWIuYXNjZW50L3gpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Yi5kZXNjZW50L3gpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWIuY2FwSGVpZ2h0L3gpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHUpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHUpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCB5PS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghcHx8eSkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigocHx8bSkmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzKSgpKTsvQXJpYWwtP0JsYWNrL2kudGVzdCh0KT9hcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKHIsKDAsbC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2spKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpKSgpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1yW2VdO3ZvaWQgMD09PWFbbl0mJihyWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7clsrZV09dH0pKTt0aGlzLnRvRm9udENoYXI9cjt0aGlzLnRvVW5pY29kZT1uZXcgaC5Ub1VuaWNvZGVNYXAocil9ZWxzZSBpZigvU3ltYm9sL2kudGVzdCh1KSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuU3ltYm9sU2V0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdCh1KSl7L1dpbmdkaW5ncy9pLnRlc3QodCkmJigwLHIud2FybikoIk5vbi1lbWJlZGRlZCBXaW5nZGluZ3MgZm9udCwgZmFsbGluZyBiYWNrIHRvIFphcGZEaW5nYmF0cy4iKTt0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuWmFwZkRpbmdiYXRzRW5jb2RpbmcsKDAsby5nZXREaW5nYmF0c0dseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyl9ZWxzZSBpZihwKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZywoMCxvLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZVsrdF09YX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLGE9W107dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoKHQscik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9dGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sbj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYSxlKTstMSE9PW4mJihyPW4pfWFbK3RdPXJ9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcCYmL1ZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsKDAsbC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHMpKCkpO3RoaXMudG9Gb250Q2hhcj1hfWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPXUuc3BsaXQoIi0iKVswXTt0aGlzLmZvbnRUeXBlPSgwLGkuZ2V0Rm9udFR5cGUpKGEsbixlLmlzU3RhbmRhcmRGb250KX1jaGVja0FuZFJlcGFpcihlLHQsYSl7Y29uc3Qgcz1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthWyJPUy8yIl09bnVsbDthLmNtYXA9bnVsbDthLmhlYWQ9bnVsbDthLmhoZWE9bnVsbDthLmhtdHg9bnVsbDthLm1heHA9bnVsbDthLm5hbWU9bnVsbDthLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO3MuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoYVt0LnRhZ109dCkpfXJldHVybiBhfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsaT1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChyKTtjb25zdCBzPWUuZ2V0Qnl0ZXMobik7ZS5wb3M9aTtpZigiaGVhZCI9PT10KXtzWzhdPXNbOV09c1sxMF09c1sxMV09MDtzWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmEsbGVuZ3RoOm4sb2Zmc2V0OnIsZGF0YTpzfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxhLHIsbixpKXtjb25zdCBzPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYoYS10PD0xMilyZXR1cm4gcztjb25zdCBvPWUuc3ViYXJyYXkodCxhKTtsZXQgYz1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGM8MCl7Yz0tMTt3cml0ZVNpZ25lZEludDE2KG8sMCxjKTtyLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBsLGg9MTAsdT0wO2ZvcihsPTA7bDxjO2wrKyl7dT0ob1toXTw8OHxvW2grMV0pKzE7aCs9Mn1jb25zdCBkPWgsZj1vW2hdPDw4fG9baCsxXTtzLnNpemVPZkluc3RydWN0aW9ucz1mO2grPTIrZjtjb25zdCBnPWg7bGV0IHA9MDtmb3IobD0wO2w8dTtsKyspe2NvbnN0IGU9b1toKytdOzE5MiZlJiYob1toLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7cCs9cjtpZig4JmUpe2NvbnN0IGU9b1toKytdO2wrPWU7cCs9ZSpyfX1pZigwPT09cClyZXR1cm4gcztsZXQgbT1oK3A7aWYobT5vLmxlbmd0aClyZXR1cm4gcztpZighaSYmZj4wKXtyLnNldChvLnN1YmFycmF5KDAsZCksbik7ci5zZXQoWzAsMF0sbitkKTtyLnNldChvLnN1YmFycmF5KGcsbSksbitkKzIpO20tPWY7by5sZW5ndGgtbT4zJiYobT1tKzMmLTQpO3MubGVuZ3RoPW07cmV0dXJuIHN9aWYoby5sZW5ndGgtbT4zKXttPW0rMyYtNDtyLnNldChvLnN1YmFycmF5KDAsbSksbik7cy5sZW5ndGg9bTtyZXR1cm4gc31yLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0sbj1lLmxlbmd0aCxpPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybiByO2NvbnN0IHM9dC5nZXRVaW50MTYoKSxvPXQuZ2V0VWludDE2KCksYz1bXTtsZXQgbCxoO2ZvcihsPTA7bDxzJiZ0LnBvcysxMjw9aTtsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V8fDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2UpJiZjLnB1c2goZSl9Zm9yKGw9MCxoPWMubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9Y1tsXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBuPWErbytlLm9mZnNldDtpZihuK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9bjtjb25zdCBzPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgYT0iIjtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7clsxXVtzXT1hfWVsc2UgclswXVtzXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuIHJ9Y29uc3QgbD1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGEsbixpLHMsbyxjPWUuZGF0YSxoPTAsdT0wLGQ9MDtjb25zdCBmPVtdLGc9W10scD1bXTtsZXQgbT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxiPSExLHk9MCx3PTA7Zm9yKGxldCBlPWMubGVuZ3RoO2g8ZTspe2NvbnN0IGU9Y1toKytdO2lmKDY0PT09ZSl7bj1jW2grK107aWYoYnx8dyloKz1uO2Vsc2UgZm9yKGE9MDthPG47YSsrKWYucHVzaChjW2grK10pfWVsc2UgaWYoNjU9PT1lKXtuPWNbaCsrXTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe249ZS0xNzYrMTtpZihifHx3KWgrPW47ZWxzZSBmb3IoYT0wO2E8bjthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe249ZS0xODQrMTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZig0MyE9PWV8fG0paWYoNDQhPT1lfHxtKXtpZig0NT09PWUpaWYoYil7Yj0hMTt1PWh9ZWxzZXtvPWcucG9wKCk7aWYoIW8peygwLHIud2FybikoIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59cz1wLnBvcCgpO2M9by5kYXRhO2g9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbc109Zi5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1ofWVsc2UgaWYoODg9PT1lKSsreTtlbHNlIGlmKDI3PT09ZSl3PXk7ZWxzZSBpZig4OT09PWUpe3c9PT15JiYodz0wKTstLXl9ZWxzZSBpZigyOD09PWUmJiFiJiYhdyl7Y29uc3QgZT1mLmF0KC0xKTtlPjAmJihoKz1lLTEpfX1lbHNle2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1oO3M9Zi5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmh9fWVsc2UgaWYoIWImJiF3KXtzPWYuYXQoLTEpO2lmKGlzTmFOKHMpKSgwLHIuaW5mbykoIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtzXT0hMDtpZihzIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9Zi5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXTtpZihlPDApeygwLHIud2FybikoIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Zi5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhzKSl7Zy5wdXNoKHtkYXRhOmMsaTpoLHN0YWNrVG9wOmYubGVuZ3RoLTF9KTtwLnB1c2gocyk7bz10LmZ1bmN0aW9uc0RlZmluZWRbc107aWYoIW8peygwLHIud2FybikoIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Yz1vLmRhdGE7aD1vLml9fX1pZighYiYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9bFtlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPWYucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZmLmxlbmd0aD4wOyl7Zi5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtmLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1tO2NvbnN0IFM9W2NdO2g+Yy5sZW5ndGgmJlMucHVzaChuZXcgVWludDhBcnJheShoLWMubGVuZ3RoKSk7aWYoZD51KXsoMCxyLndhcm4pKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO1MucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEscixuPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspbis9dFthXS5sZW5ndGg7bj1uKzMmLTQ7Y29uc3QgaT1uZXcgVWludDhBcnJheShuKTtsZXQgcz0wO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtpLnNldCh0W2FdLHMpO3MrPXRbYV0ubGVuZ3RofWUuZGF0YT1pO2UubGVuZ3RoPW59fShlLFMpfWxldCBkLGYsYix3O2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyB5LlN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTsoMCxyLmFzc2VydCkoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLGk9ZS5nZXRJbnQzMigpPj4+MCxzPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspcy5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IG89e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6c307c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gbztjYXNlIDI6by5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIG99dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7YX0uYCl9KGUpLGk9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbz0wO288YTtvKyspe2UucG9zPShlLnN0YXJ0fHwwKStuW29dO2NvbnN0IGE9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLGM9cmVhZFRhYmxlcyhlLGEubnVtVGFibGVzKTtpZighYy5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0IGw9cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxuPWxbZV0ubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49bFtlXVtyXSYmbFtlXVtyXS5yZXBsYWNlKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOmN9O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6YSx0YWJsZXM6Y30pfX19aWYocyl7KDAsci53YXJuKShgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7ZD1lLmhlYWRlcjtmPWUudGFibGVzfWVsc2V7ZD1yZWFkT3BlblR5cGVIZWFkZXIodCk7Zj1yZWFkVGFibGVzKHQsZC5udW1UYWJsZXMpfWNvbnN0IFM9IWZbIkNGRiAiXTtpZihTKXtpZighZi5sb2NhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWYuZ2x5Zil7KDAsci53YXJuKSgnUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtmLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1hLmNvbXBvc2l0ZSYmKChhLmNpZFRvR2lkTWFwfHxbXSkubGVuZ3RoPjB8fCEoYS5jTWFwIGluc3RhbmNlb2YgcC5JZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1kLnZlcnNpb24mJiF0fHwhZi5oZWFkfHwhZi5oaGVhfHwhZi5tYXhwfHwhZi5wb3N0KXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgdS5DRkZGb250KHcsYSk7YWRqdXN0V2lkdGhzKGEpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxiLGEpfWRlbGV0ZSBmLmdseWY7ZGVsZXRlIGYubG9jYTtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWYubWF4cCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO3QucG9zPSh0LnN0YXJ0fHwwKStmLm1heHAub2Zmc2V0O2NvbnN0IHg9dC5nZXRJbnQzMigpLGs9dC5nZXRVaW50MTYoKTtpZihhLnNjYWxlRmFjdG9ycyYmYS5zY2FsZUZhY3RvcnMubGVuZ3RoPT09ayYmUyl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWEsdD1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSxyPW5ldyBnLkdseWZUYWJsZSh7Z2x5ZlRhYmxlOmYuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmYubG9jYS5kYXRhLG51bUdseXBoczprfSk7ci5zY2FsZShlKTtjb25zdHtnbHlmOm4sbG9jYTppLGlzTG9jYXRpb25Mb25nOnN9PXIud3JpdGUoKTtmLmdseWYuZGF0YT1uO2YubG9jYS5kYXRhPWk7aWYocyE9PSEhdCl7Zi5oZWFkLmRhdGFbNTBdPTA7Zi5oZWFkLmRhdGFbNTFdPXM/MTowfWNvbnN0IG89Zi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgYT00KnQscj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPXI+PjgmMjU1O29bYSsxXT0yNTUmcjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgQz1rKzEsdj0hMDtpZihDPjY1NTM1KXt2PSExO0M9azsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRj0wLE89MDtpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7Zi5tYXhwLmRhdGFbMTRdPTA7Zi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7Rj10LmdldFVpbnQxNigpO3QucG9zKz00O089dC5nZXRVaW50MTYoKX1mLm1heHAuZGF0YVs0XT1DPj44O2YubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IFQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLG4pe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxpKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LGkpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpeygwLHIud2FybikoIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxuPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxuO2ErKyl7aWYoYT50KXsoMCxyLndhcm4pKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7KDAsci53YXJuKSgiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KGksbik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KGYuZnBnbSxmLnByZXAsZlsiY3Z0ICJdLEYpO2lmKCFUKXtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLG4saSxzKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG89ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgYz1lLmdldFVpbnQxNigpO2lmKDAhPT1vKXtpZighKDImaW50MTYobi5kYXRhWzQ0XSxuLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKGM+aSl7KDAsci5pbmZvKShgVGhlIG51bU9mTWV0cmljcyAoJHtjfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtpfSkuYCk7Yz1pO3QuZGF0YVszNF09KDY1MjgwJmMpPj44O3QuZGF0YVszNV09MjU1JmN9Y29uc3QgbD1pLWMtKGEubGVuZ3RoLTQqYz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqbCk7ZS5zZXQoYS5kYXRhKTtpZihzKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LGYuaGhlYSxmLmhtdHgsZi5oZWFkLEMsdik7aWYoIWYuaGVhZCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGEpe2NvbnN0IG49ZS5kYXRhLGk9ZnVuY3Rpb24gaW50MzIoZSx0LGEscil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhhPDw4KStyfShuWzBdLG5bMV0sblsyXSxuWzNdKTtpZihpPj4xNiE9MSl7KDAsci5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSk7blswXT0wO25bMV09MTtuWzJdPTA7blszXT0wfWNvbnN0IHM9aW50MTYobls1MF0sbls1MV0pO2lmKHM8MHx8cz4xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIitzKTtjb25zdCBlPXQrMTtpZihhPT09ZTw8MSl7bls1MF09MDtuWzUxXT0wfWVsc2V7aWYoYSE9PWU8PDIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTtuWzUwXT0wO25bNTFdPTF9fX0oZi5oZWFkLGssUz9mLmxvY2EubGVuZ3RoOjApO2xldCBNPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUyl7Y29uc3QgZT1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEscixuLGkscyl7bGV0IG8sYyxsO2lmKHIpe289NDtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtsPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgaD1pP2ErMTphLHU9byooMStoKSxkPW5ldyBVaW50OEFycmF5KHUpO2Quc2V0KGUuZGF0YS5zdWJhcnJheSgwLHUpKTtlLmRhdGE9ZDtjb25zdCBmPXQuZGF0YSxnPWYubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IG0sYjtjb25zdCB5PVtdO2ZvcihtPTAsYj0wO208YSsxO20rKyxiKz1vKXtsZXQgZT1jKGQsYik7ZT5nJiYoZT1nKTt5LnB1c2goe2luZGV4Om0sb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX15LnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpO2ZvcihtPTA7bTxhO20rKyl5W21dLmVuZE9mZnNldD15W20rMV0ub2Zmc2V0O3kuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpO2ZvcihtPTA7bTxhO20rKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXlbbV07aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGE9eVttKzFdLm9mZnNldDtpZigwIT09YSl7eVttXS5lbmRPZmZzZXQ9YTticmVha319Y29uc3Qgdz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsbiksdD1lLmxlbmd0aDswPT09dCYmKHdbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihpKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6dyxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KGYubG9jYSxmLmdseWYsayxlLFQsdixPKTtNPXQubWlzc2luZ0dseXBocztpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe2YubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtmLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighZi5oaGVhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWYuaGhlYS5kYXRhWzEwXSYmMD09PWYuaGhlYS5kYXRhWzExXSl7Zi5oaGVhLmRhdGFbMTBdPTI1NTtmLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IEU9e3VuaXRzUGVyRW06aW50MTYoZi5oZWFkLmRhdGFbMThdLGYuaGVhZC5kYXRhWzE5XSkseU1heDppbnQxNihmLmhlYWQuZGF0YVs0Ml0sZi5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzM4XSxmLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs0XSxmLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs2XSxmLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs4XSxmLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PUUuYXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9RS5kZXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9RS5saW5lR2FwL0UudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvJiZ0aGlzLmNzc0ZvbnRJbmZvLmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLG4pe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9aS5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1uKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLGspO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgRD1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hTVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoYSxuLCEwKSk7aWYobj42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1uOnZvaWQgMCE9PWVbbl0mJihpPWVbbl0pO2k+PTAmJmk8ayYmaGFzR2x5cGgoaSkmJihEW2FdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLG4pe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoIWN8fGMucGxhdGZvcm1JZCE9PXJ8fGMuZW5jb2RpbmdJZCE9PWkpe2lmKDAhPT1yfHwwIT09aSYmMSE9PWkmJjMhPT1pKWlmKDE9PT1yJiYwPT09aSloPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1pfHwhbiYmYyl7aWYoYSYmMz09PXImJjA9PT1pKXtoPSEwO2xldCBhPSEwO2lmKGU8by0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGE9ITEpfWEmJihsPSEwKX19ZWxzZXtoPSEwO2F8fChsPSEwKX1lbHNlIGg9ITA7aCYmKGM9e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOmksb2Zmc2V0OnN9KTtpZihsKWJyZWFrfX1jJiYodC5wb3M9cytjLm9mZnNldCk7aWYoIWN8fC0xPT09dC5wZWVrQnl0ZSgpKXsoMCxyLndhcm4pKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBoPXQuZ2V0VWludDE2KCk7bGV0IHU9ITE7Y29uc3QgZD1bXTtsZXQgZixnO2lmKDA9PT1oKXt0LnNraXAoNCk7Zm9yKGY9MDtmPDI1NjtmKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmZC5wdXNoKHtjaGFyQ29kZTpmLGdseXBoSWQ6ZX0pfXU9ITB9ZWxzZSBpZigyPT09aCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2c9dC5nZXRVaW50MTYoKTtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9ZWxzZXtjb25zdCBuPXJbZVthXV07Zm9yKGY9MDtmPG4uZW50cnlDb3VudDtmKyspe2NvbnN0IGU9KGE8PDgpK2Yrbi5maXJzdENvZGU7dC5wb3M9bi5pZFJhbmdlUG9zKzIqZjtnPXQuZ2V0VWludDE2KCk7MCE9PWcmJihnPShnK24uaWREZWx0YSklNjU1MzYpO2QucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmd9KX19fWVsc2UgaWYoND09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGY9MDtmPG87ZisrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtzPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7bj1pLm9mZnNldEluZGV4O2ZvcihmPXM7Zjw9ZTtmKyspaWYoNjU1MzUhPT1mKXtnPW48MD9mOmNbbitmLXNdO2c9Zyt0JjY1NTM1O2QucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmd9KX19fWVsc2UgaWYoNj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihmPTA7ZjxhO2YrKyl7Zz10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStmO2QucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmd9KX19ZWxzZXtpZigxMiE9PWgpeygwLHIud2FybikoImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitoKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihmPTA7ZjxlO2YrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKWQucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19ZC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxkLmxlbmd0aDtlKyspaWYoZFtlLTFdLmNoYXJDb2RlPT09ZFtlXS5jaGFyQ29kZSl7ZC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6Yy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6Yy5lbmNvZGluZ0lkLG1hcHBpbmdzOmQsaGFzU2hvcnRDbWFwOnV9fShmLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLG49ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLGw9ZS5tYXBwaW5ncztsZXQgdT1bXSxkPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwodT0oMCxjLmdldEVuY29kaW5nKShhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1uJiYxPT09c3x8MT09PW4mJjA9PT1zKSl7Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcjtyPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTp1Lmxlbmd0aCYmIiIhPT11W3RdP3VbdF06Yy5TdGFuZGFyZEVuY29kaW5nW3RdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IG89KDAsaS5yZWNvdmVyR2x5cGhOYW1lKShyLGUpO2xldCBkOzM9PT1uJiYxPT09cz9kPWVbb106MT09PW4mJjA9PT1zJiYoZD1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihvKSk7aWYodm9pZCAwPT09ZCl7aWYoIWEuZ2x5cGhOYW1lcyYmYS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1kKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIGwpaWYoZS5jaGFyQ29kZT09PWQpe0RbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09bil7Zm9yKGNvbnN0IGUgb2YgbClEW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtkPSEwfWVsc2UgZm9yKGNvbnN0IGUgb2YgbCl7bGV0IHQ9ZS5jaGFyQ29kZTszPT09biYmdD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtEW3RdPWUuZ2x5cGhJZH1pZihhLmdseXBoTmFtZXMmJih1Lmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWQmJnZvaWQgMCE9PURbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx1W2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9YS5nbHlwaE5hbWVzLmluZGV4T2YodCk7cj4wJiZoYXNHbHlwaChyKSYmKERbZV09cil9fTA9PT1ELmxlbmd0aCYmKERbMF09MCk7bGV0IE49Qy0xO3Z8fChOPTApO2lmKCFhLmNzc0ZvbnRJbmZvKXtjb25zdCBlPWFkanVzdE1hcHBpbmcoRCxoYXNHbHlwaCxOLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZS50b0ZvbnRDaGFyO2YuY21hcD17dGFnOiJjbWFwIixkYXRhOmNyZWF0ZUNtYXBUYWJsZShlLmNoYXJDb2RlVG9HbHlwaElkLGUudG9Vbmljb2RlRXh0cmFNYXAsQyl9O2ZbIk9TLzIiXSYmZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCBhPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYoYTw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oZlsiT1MvMiJdLHQpfHwoZlsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUoYSxlLmNoYXJDb2RlVG9HbHlwaElkLEUpfSl9aWYoIVMpdHJ5e3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyBuLkNGRlBhcnNlcih3LGEsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpLnBhcnNlKCk7Yi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgbi5DRkZDb21waWxlcihiKTtmWyJDRkYgIl0uZGF0YT1lLmNvbXBpbGUoKX1jYXRjaChlKXsoMCxyLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZihmLm5hbWUpe2NvbnN0IHQ9cmVhZE5hbWVUYWJsZShmLm5hbWUpO2YubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGx9ZWxzZSBmLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgUj1uZXcgbS5PcGVuVHlwZUZpbGVCdWlsZGVyKGQudmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gZilSLmFkZFRhYmxlKGUsZltlXS5kYXRhKTtyZXR1cm4gUi50b0FycmF5KCl9Y29udmVydChlLHQsYSl7YS5maXhlZFBpdGNoPSExO2EuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoMD09PWUuZGlmZmVyZW5jZXMubGVuZ3RofHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW25dKSljb250aW51ZTtjb25zdCBpPXRbbl0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxyKTstMSE9PW8mJihhW25dPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgbj0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihuPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxuLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpaWYodD09PWVbcl0pe2F8fChhPVtdKTthLnB1c2goMHxyKX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJmkuU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiJiZiLmxlbmd0aCl7Y29uc3QgZT1hLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsbj10LmdldENoYXJzZXQoKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIGIpe3R8PTA7Y29uc3QgYT1iW3RdLHI9Yy5TdGFuZGFyZEVuY29kaW5nW2FbMl1dLHM9Yy5TdGFuZGFyZEVuY29kaW5nW2FbM11dLG89bi5pbmRleE9mKHIpLGg9bi5pbmRleE9mKHMpO2lmKG88MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6YVswXSplWzBdK2FbMV0qZVsyXStlWzRdLHk6YVswXSplWzFdK2FbMV0qZVszXStlWzVdfSxmPWdldENoYXJDb2RlcyhsLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1kLmNoYXJDb2RlVG9HbHlwaElkLGE9Y3JlYXRlQ2hhckNvZGUodCxvKSxyPWNyZWF0ZUNoYXJDb2RlKHQsaCk7aVtlXT17YmFzZUZvbnRDaGFyQ29kZTphLGFjY2VudEZvbnRDaGFyQ29kZTpyLGFjY2VudE9mZnNldDp1fX19YS5zZWFjTWFwPWl9Y29uc3QgeT0xLyhhLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgpWzBdLHc9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3cuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoYSxmKSk7dy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKGYsZyxwKSk7dy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNih5KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihhLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc3RyaW5nMTYoYS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTt3LmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGEuYXNjZW50KStzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihhLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGEuaXRhbGljQW5nbGUpKmEueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGE9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IHI9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxuPXA7dDxuO3QrKyl7bGV0IG49MDtpZihlKXtjb25zdCBhPWVbdC0xXTtuPSJ3aWR0aCJpbiBhP2Eud2lkdGg6MH1lbHNlIGEmJihuPU1hdGguY2VpbChhW3RdfHwwKSk7cis9c3RyaW5nMTYobikrc3RyaW5nMTYoMCl9cmV0dXJuIHJ9KCkpO3cuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihwKSk7dy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTt3LmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoYSkpO3JldHVybiB3LnRvQXJyYXkoKX1nZXQgc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpW2FdO2xldCByPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7cj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgciYmKHI9Y29udmVydENpZFN0cmluZyhlLHIpKX0hciYmdGhpcy50b1VuaWNvZGUmJihyPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO3I8PTAmJihyPWUpO3Q9dGhpcy53aWR0aHNbcl07aWYodClicmVha310PXR8fHRoaXMuZGVmYXVsdFdpZHRoO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzcGFjZVdpZHRoIix0KX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxuLGksbz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG8mJm8uaXNTcGFjZT09PXQpcmV0dXJuIG87bGV0IGM9ZTtpZih0aGlzLmNNYXAmJnRoaXMuY01hcC5jb250YWlucyhlKSl7Yz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Y29udmVydENpZFN0cmluZyhlLGMpKX1uPXRoaXMud2lkdGhzW2NdOyJudW1iZXIiIT10eXBlb2YgbiYmKG49dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IGw9dGhpcy52bWV0cmljcyYmdGhpcy52bWV0cmljc1tjXTtsZXQgaD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBoJiYoaD1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpKTtsZXQgdT12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07YT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT10JiYiIiE9PXR8fCJUeXBlMSIhPT10aGlzLnR5cGV8fChhPTMyKTthPSgwLHMubWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMpKGEpfXRoaXMuaXNUeXBlM0ZvbnQmJihpPWEpO2xldCBkPW51bGw7aWYodGhpcy5zZWFjTWFwJiZ0aGlzLnNlYWNNYXBbZV0pe3U9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07YT10LmJhc2VGb250Q2hhckNvZGU7ZD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGY9IiI7Im51bWJlciI9PXR5cGVvZiBhJiYoYTw9MTExNDExMT9mPVN0cmluZy5mcm9tQ29kZVBvaW50KGEpOigwLHIud2FybikoYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7YX1gKSk7bz1uZXcgR2x5cGgoZSxmLGgsZCxuLGwsaSx0LHUpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW99Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsbixhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDppfT1hO24rPWk7Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1pJiYzMj09PWUuY2hhckNvZGVBdChuLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxuPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2gobil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBuPWEubGVuZ3RoO3QucHVzaChbcixyK25dKTtyKz1ufX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdChuKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJm4rKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1yKGkpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWEucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChpKSl9dC5wdXNoKGEuam9pbigiIikpO3JldHVybiB0fX07dC5FcnJvckZvbnQ9Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKGU9ITEpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0ZGVG9wRGljdD10LkNGRlN0cmluZ3M9dC5DRkZTdGFuZGFyZFN0cmluZ3M9dC5DRkZQcml2YXRlRGljdD10LkNGRlBhcnNlcj10LkNGRkluZGV4PXQuQ0ZGSGVhZGVyPXQuQ0ZGRkRTZWxlY3Q9dC5DRkZDb21waWxlcj10LkNGRkNoYXJzZXQ9dC5DRkY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDM0KSxpPWEoMzUpO2NvbnN0IHM9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl07dC5DRkZTdGFuZGFyZFN0cmluZ3M9cztjb25zdCBvPTM5MSxjPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGw9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07dC5DRkZQYXJzZXI9Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qobi5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoaS5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmosdT1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO3UmJihlLmZvbnRNYXRyaXg9dSk7Y29uc3QgZD1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihkKXtlLmFzY2VudD1NYXRoLm1heChkWzNdLGRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihkWzFdLGRbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBmLGc7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKSxuPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KHIpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KG4pO3QuZmRBcnJheS5wdXNoKG4pfWc9bnVsbDtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChjLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxoLmNvdW50KX1lbHNle2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITEpO2c9dGhpcy5wYXJzZUVuY29kaW5nKGMuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGYuY2hhcnNldCl9dC5jaGFyc2V0PWY7dC5lbmNvZGluZz1nO2NvbnN0IHA9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpoLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6cy5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz1wLmNoYXJTdHJpbmdzO3Quc2VhY3M9cC5zZWFjczt0LndpZHRocz1wLndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1hKXsoMCxyLmluZm8pKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGEpO3RoaXMuYnl0ZXM9ZX1jb25zdCBuPWVbMF0saT1lWzFdLHM9ZVsyXSxvPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKG4saSxzLG8pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgYT1lW3QrK107aWYoMzA9PT1hKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBhPSIiO2NvbnN0IHI9MTUsbj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0saT1lLmxlbmd0aDtmb3IoO3Q8aTspe2NvbnN0IGk9ZVt0KytdLHM9aT4+NCxvPTE1Jmk7aWYocz09PXIpYnJlYWs7YSs9bltzXTtpZihvPT09cilicmVhazthKz1uW29dfXJldHVybiBwYXJzZUZsb2F0KGEpfSgpO2lmKDI4PT09YSl7YT1lW3QrK107YT0oYTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBhfWlmKDI5PT09YSl7YT1lW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbdCsrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbdCsrXS0xMDg7KDAsci53YXJuKSgnQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicrYSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgYT1bXTtjb25zdCBuPVtdO3Q9MDtjb25zdCBpPWUubGVuZ3RoO2Zvcig7dDxpOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7bi5wdXNoKFtyLGFdKTthPVtdOysrdH1lbHNlIGEucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIG59cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMscj1hW2UrK108PDh8YVtlKytdLG49W107bGV0IGkscyxvPWU7aWYoMCE9PXIpe2NvbnN0IHQ9YVtlKytdLGM9ZSsocisxKSp0LTE7Zm9yKGk9MCxzPXIrMTtpPHM7KytpKXtsZXQgcj0wO2ZvcihsZXQgbj0wO248dDsrK24pe3I8PD04O3IrPWFbZSsrXX1uLnB1c2goYytyKX1vPW5bcl19Zm9yKGk9MCxzPW4ubGVuZ3RoLTE7aTxzOysraSl7Y29uc3QgZT1uW2ldLHI9bltpKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxyKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QucHVzaCgoMCxyLmJ5dGVzVG9TdHJpbmcpKG4pKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSk7dC5hZGQoKDAsci5ieXRlc1RvU3RyaW5nKShuKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgcj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpci5zZXRCeUtleShlLGEpO3JldHVybiByfXBhcnNlQ2hhclN0cmluZyhlLHQsYSxuKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrLG89dC5sZW5ndGg7Zm9yKGxldCBoPTA7aDxvOyl7Y29uc3Qgbz10W2grK107bGV0IHU9bnVsbDtpZigxMj09PW8pe2NvbnN0IGU9dFtoKytdO2lmKDA9PT1lKXt0W2gtMl09MTM5O3RbaC0xXT0yMjtpPTB9ZWxzZSB1PWxbZV19ZWxzZSBpZigyOD09PW8pe3NbaV09KHRbaF08PDI0fHRbaCsxXTw8MTYpPj4xNjtoKz0yO2krK31lbHNlIGlmKDE0PT09byl7aWYoaT49NCl7aS09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKGksaSs0KTtyZXR1cm4hMX19dT1jW29dfWVsc2UgaWYobz49MzImJm88PTI0Nil7c1tpXT1vLTEzOTtpKyt9ZWxzZSBpZihvPj0yNDcmJm88PTI1NCl7c1tpXT1vPDI1MT8oby0yNDc8PDgpK3RbaF0rMTA4Oi0oby0yNTE8PDgpLXRbaF0tMTA4O2grKztpKyt9ZWxzZSBpZigyNTU9PT1vKXtzW2ldPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2O2grPTQ7aSsrfWVsc2UgaWYoMTk9PT1vfHwyMD09PW8pe2UuaGludHMrPWk+PjE7aCs9ZS5oaW50cys3Pj4zO2klPTI7dT1jW29dfWVsc2V7aWYoMTA9PT1vfHwyOT09PW8pe2xldCB0O3Q9MTA9PT1vP2E6bjtpZighdCl7dT1jW29dOygwLHIud2FybikoIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIit1LmlkKTtyZXR1cm4hMX1sZXQgbD0zMjc2ODt0LmNvdW50PDEyNDA/bD0xMDc6dC5jb3VudDwzMzkwMCYmKGw9MTEzMSk7Y29uc3QgaD1zWy0taV0rbDtpZihoPDB8fGg+PXQuY291bnR8fGlzTmFOKGgpKXt1PWNbb107KDAsci53YXJuKSgiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrdS5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KGgpLGEsbikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09byl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09byYmaD09PXQubGVuZ3RoKXt0W2gtMV09MTQ7dT1jWzE0XX1lbHNlIHU9Y1tvXX1pZih1KXtpZih1LnN0ZW0pe2UuaGludHMrPWk+PjE7aWYoMz09PW98fDIzPT09byllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PW98fDE4PT09bykpeygwLHIud2FybikoIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbaC0xXT0xPT09bz8zOjIzfX1pZigibWluImluIHUmJiFlLnVuZGVmU3RhY2smJmk8dS5taW4peygwLHIud2FybikoIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIit1LmlkKyI7IGFjdHVhbDogIitpKyIsIGV4cGVjdGVkOiAiK3UubWluKTtpZigwPT09aSl7dFtoLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZ1LnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO2ktPXUubWluO2k+PTImJnUuc3RlbT9pJT0yOmk+MSYmKDAsci53YXJuKSgiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO2k+MCYmKGUud2lkdGg9c1tpLTFdKX1pZigic3RhY2tEZWx0YSJpbiB1KXsic3RhY2tGbiJpbiB1JiZ1LnN0YWNrRm4ocyxpKTtpKz11LnN0YWNrRGVsdGF9ZWxzZSBpZih1LnN0YWNrQ2xlYXJpbmcpaT0wO2Vsc2UgaWYodS5yZXNldFN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYodS51bmRlZlN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6bixmZEFycmF5OmkscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG89W10sYz1bXSxsPWUuY291bnQ7Zm9yKGxldCBoPTA7aDxsO2grKyl7Y29uc3QgbD1lLmdldChoKSx1PXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGQ9ITAsZj1udWxsLGc9cztpZihuJiZpLmxlbmd0aCl7Y29uc3QgZT1uLmdldEZESW5kZXgoaCk7aWYoLTE9PT1lKXsoMCxyLndhcm4pKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2Q9ITF9aWYoZT49aS5sZW5ndGgpeygwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2Q9ITF9aWYoZCl7Zz1pW2VdLnByaXZhdGVEaWN0O2Y9Zy5zdWJyc0luZGV4fX1lbHNlIHQmJihmPXQpO2QmJihkPXRoaXMucGFyc2VDaGFyU3RyaW5nKHUsbCxmLGEpKTtpZihudWxsIT09dS53aWR0aCl7Y29uc3QgZT1nLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO2NbaF09ZSt1LndpZHRofWVsc2V7Y29uc3QgZT1nLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO2NbaF09ZX1udWxsIT09dS5zZWFjJiYob1toXT11LnNlYWMpO2R8fGUuc2V0KGgsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm8sd2lkdGhzOmN9fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGE9dFswXSxyPXRbMV07aWYoMD09PWF8fHI+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IG49cithLGk9dGhpcy5ieXRlcy5zdWJhcnJheShyLG4pLHM9dGhpcy5wYXJzZURpY3QoaSksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QscyxlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bztpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLGkpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxuLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULG4uRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxuLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1baT8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2goaT9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChpP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2goaT9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPW4ubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBuPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IGk9ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxpKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLGk9W107bGV0IHM7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO2kucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3Qgbj1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKWkucHVzaChuKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixpKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IG49YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PW5bYV18fDAhPT1uW3NdfHwwIT09bltvXXx8MCE9PW5bY118fDAhPT1uW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtuW2FdPTI5O25bc109aD4+MjQmMjU1O25bb109aD4+MTYmMjU1O25bY109aD4+OCYyNTU7bltsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSk7dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChhKTtjb25zdCBuPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChuKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBhIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTthLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9ci5VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IGk9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO2kmJmkubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHM9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBvPXMudHJhY2tlcnNbMF0sYz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQoYyk7Y29uc3QgbD10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQobCk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW8uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO28uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYSl9Y29uc3QgaD10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7by5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGgpO2NvbnN0IHU9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7by5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZCh1KTtpZihlLmlzQ0lERm9udCl7by5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGEpO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtvLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IHI9cy50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHIsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtvXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgYT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGEpe2NvbnN0IHI9cGFyc2VGbG9hdCgiMWUiKygoYVsyXT8rYVsyXTowKSthWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpyKS9yKS50b1N0cmluZygpfWxldCByLG4saT0iIjtmb3Iocj0wLG49dC5sZW5ndGg7cjxuOysrcil7Y29uc3QgZT10W3JdO2krPSJlIj09PWU/Ii0iPT09dFsrK3JdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1pKz0xJmkubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iocj0wLG49aS5sZW5ndGg7cjxuO3IrPTIpcy5wdXNoKHBhcnNlSW50KGkuc3Vic3RyaW5nKHIscisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihhLmxlbmd0aCwxMjcpO2xldCBuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1hW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO25bdF09ZX1uPW4uam9pbigiIik7IiI9PT1uJiYobj0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykobikpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGEpe2NvbnN0IHI9W107bGV0IG49bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2lmKGEpe2kucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO2kucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtpLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtpLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtpLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIscz10aGlzLmNvbXBpbGVEaWN0KGksZSk7ci5wdXNoKGUpO24uYWRkKHMpO2Uub2Zmc2V0KHQpfW49dGhpcy5jb21waWxlSW5kZXgobixyKTtyZXR1cm57dHJhY2tlcnM6cixvdXRwdXQ6bn19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsYSl7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7KytuKXtjb25zdCBpPWVbbl0scz1pLnByaXZhdGVEaWN0O2lmKCFzfHwhaS5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbz1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixjPXRoaXMuY29tcGlsZURpY3QocyxvKTtsZXQgbD1hLmxlbmd0aDtvLm9mZnNldChsKTtjLmxlbmd0aHx8KGw9MCk7dFtuXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbYy5sZW5ndGgsbF0sYSk7YS5hZGQoYyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtvLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbYy5sZW5ndGhdLGEpO2EuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCBuIG9mIGUub3JkZXIpe2lmKCEobiBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IGk9ZS52YWx1ZXNbbl0scz1lLnR5cGVzW25dO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpZigwIT09aS5sZW5ndGgpe2ZvcihsZXQgbz0wLGM9cy5sZW5ndGg7bzxjOysrbyl7Y29uc3QgYz1zW29dLGw9aVtvXTtzd2l0Y2goYyl7Y2FzZSJudW0iOmNhc2Uic2lkIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW25dO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTtmb3IobGV0IGU9MSx0PWkubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGlbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke2N9YCl9fWEucHVzaCguLi5lLm9wY29kZXNbbl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZCgoMCxyLnN0cmluZ1RvQnl0ZXMpKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUdsb2JhbFN1YnJJbmRleCgpe2NvbnN0IGU9dGhpcy5jZmYuZ2xvYmFsU3VickluZGV4O3RoaXMub3V0LndyaXRlQnl0ZUFycmF5KHRoaXMuY29tcGlsZUluZGV4KGUpKX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IGk7Y29uc3Qgcz10LTE7aWYobilpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyk7aVswXT0wO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChuKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbc109Yz4+OCYyNTU7aVtzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBuPTA7bGV0IGk9ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxuPj44JjI1NSwyNTUmbixpXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PWkpe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtpPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0W2FdPWVbYV07cmV0dXJuIHR9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMscj1hLmxlbmd0aDtpZigwPT09cilyZXR1cm5bMCwwXTtjb25zdCBuPVtyPj44JjI1NSwyNTUmcl07bGV0IGkscyxvPTE7Zm9yKGk9MDtpPHI7KytpKW8rPWFbaV0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7bi5wdXNoKHMpO2xldCBjPTE7Zm9yKGk9MDtpPHIrMTtpKyspezE9PT1zP24ucHVzaCgyNTUmYyk6Mj09PXM/bi5wdXNoKGM+PjgmMjU1LDI1NSZjKTozPT09cz9uLnB1c2goYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTpuLnB1c2goYz4+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpO2FbaV0mJihjKz1hW2ldLmxlbmd0aCl9Zm9yKGk9MDtpPHI7aSsrKXt0W2ldJiZ0W2ldLm9mZnNldChuLmxlbmd0aCk7bi5wdXNoKC4uLmFbaV0pfXJldHVybiBufX10LkNGRkNvbXBpbGVyPUNGRkNvbXBpbGVyfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklTT0Fkb2JlQ2hhcnNldD10LkV4cGVydFN1YnNldENoYXJzZXQ9dC5FeHBlcnRDaGFyc2V0PXZvaWQgMDt0LklTT0Fkb2JlQ2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdO3QuRXhwZXJ0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydFN1YnNldENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwO3QuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPWE7Y29uc3Qgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9bjtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD10Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz10LkZvbnRGbGFncz12b2lkIDA7dC5nZXRGb250VHlwZT1mdW5jdGlvbiBnZXRGb250VHlwZShlLHQsYT0hMSl7c3dpdGNoKGUpe2Nhc2UiVHlwZTEiOnJldHVybiBhP3IuRm9udFR5cGUuVFlQRTFTVEFOREFSRDoiVHlwZTFDIj09PXQ/ci5Gb250VHlwZS5UWVBFMUM6ci5Gb250VHlwZS5UWVBFMTtjYXNlIkNJREZvbnRUeXBlMCI6cmV0dXJuIkNJREZvbnRUeXBlMEMiPT09dD9yLkZvbnRUeXBlLkNJREZPTlRUWVBFMEM6ci5Gb250VHlwZS5DSURGT05UVFlQRTA7Y2FzZSJPcGVuVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuT1BFTlRZUEU7Y2FzZSJUcnVlVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuVFJVRVRZUEU7Y2FzZSJDSURGb250VHlwZTIiOnJldHVybiByLkZvbnRUeXBlLkNJREZPTlRUWVBFMjtjYXNlIk1NVHlwZTEiOnJldHVybiByLkZvbnRUeXBlLk1NVFlQRTE7Y2FzZSJUeXBlMCI6cmV0dXJuIHIuRm9udFR5cGUuVFlQRTA7ZGVmYXVsdDpyZXR1cm4gci5Gb250VHlwZS5VTktOT1dOfX07dC5ub3JtYWxpemVGb250TmFtZT1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5yZXBsYWNlKC9ccy9nLCIiKX07dC5yZWNvdmVyR2x5cGhOYW1lPXJlY292ZXJHbHlwaE5hbWU7dC50eXBlMUZvbnRHbHlwaE1hcHBpbmc9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMsYyxsO2NvbnN0IGg9ISEoZS5mbGFncyZvLlN5bWJvbGljKTtpZihlLmlzSW50ZXJuYWxGb250KXtsPXQ7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7cltjXT1zPj0wP3M6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe2w9KDAsbi5nZXRFbmNvZGluZykoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1lbHNlIGlmKGgpZm9yKGMgaW4gdClyW2NdPXRbY107ZWxzZXtsPW4uU3RhbmRhcmRFbmNvZGluZztmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1jb25zdCB1PWUuZGlmZmVyZW5jZXM7bGV0IGQ7aWYodSlmb3IoYyBpbiB1KXtjb25zdCBlPXVbY107cz1hLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtkfHwoZD0oMCxpLmdldEdseXBoc1VuaWNvZGUpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGQpO3QhPT1lJiYocz1hLmluZGV4T2YodCkpfXJbY109cz49MD9zOjB9cmV0dXJuIHJ9O3ZhciByPWEoMiksbj1hKDM1KSxpPWEoMzcpLHM9YSgzOCk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7Y29uc3Qgbz17Rml4ZWRQaXRjaDoxLFNlcmlmOjIsU3ltYm9saWM6NCxTY3JpcHQ6OCxOb25zeW1ib2xpYzozMixJdGFsaWM6NjQsQWxsQ2FwOjY1NTM2LFNtYWxsQ2FwOjEzMTA3MixGb3JjZUJvbGQ6MjYyMTQ0fTt0LkZvbnRGbGFncz1vO3QuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlOygwLHIuaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9fSwoZSx0LGEpPT57YS5yKHQpO2EuZCh0LHtnZXREaW5nYmF0c0dseXBoc1VuaWNvZGU6KCk9PmksZ2V0R2x5cGhzVW5pY29kZTooKT0+bn0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIkEiLDY1LCJBRSIsMTk4LCJBRWFjdXRlIiw1MDgsIkFFbWFjcm9uIiw0ODIsIkFFc21hbGwiLDYzNDYyLCJBYWN1dGUiLDE5MywiQWFjdXRlc21hbGwiLDYzNDU3LCJBYnJldmUiLDI1OCwiQWJyZXZlYWN1dGUiLDc4NTQsIkFicmV2ZWN5cmlsbGljIiwxMjMyLCJBYnJldmVkb3RiZWxvdyIsNzg2MiwiQWJyZXZlZ3JhdmUiLDc4NTYsIkFicmV2ZWhvb2thYm92ZSIsNzg1OCwiQWJyZXZldGlsZGUiLDc4NjAsIkFjYXJvbiIsNDYxLCJBY2lyY2xlIiw5Mzk4LCJBY2lyY3VtZmxleCIsMTk0LCJBY2lyY3VtZmxleGFjdXRlIiw3ODQ0LCJBY2lyY3VtZmxleGRvdGJlbG93Iiw3ODUyLCJBY2lyY3VtZmxleGdyYXZlIiw3ODQ2LCJBY2lyY3VtZmxleGhvb2thYm92ZSIsNzg0OCwiQWNpcmN1bWZsZXhzbWFsbCIsNjM0NTgsIkFjaXJjdW1mbGV4dGlsZGUiLDc4NTAsIkFjdXRlIiw2MzE3NywiQWN1dGVzbWFsbCIsNjM0MTIsIkFjeXJpbGxpYyIsMTA0MCwiQWRibGdyYXZlIiw1MTIsIkFkaWVyZXNpcyIsMTk2LCJBZGllcmVzaXNjeXJpbGxpYyIsMTIzNCwiQWRpZXJlc2lzbWFjcm9uIiw0NzgsIkFkaWVyZXNpc3NtYWxsIiw2MzQ2MCwiQWRvdGJlbG93Iiw3ODQwLCJBZG90bWFjcm9uIiw0ODAsIkFncmF2ZSIsMTkyLCJBZ3JhdmVzbWFsbCIsNjM0NTYsIkFob29rYWJvdmUiLDc4NDIsIkFpZWN5cmlsbGljIiwxMjM2LCJBaW52ZXJ0ZWRicmV2ZSIsNTE0LCJBbHBoYSIsOTEzLCJBbHBoYXRvbm9zIiw5MDIsIkFtYWNyb24iLDI1NiwiQW1vbm9zcGFjZSIsNjUzMTMsIkFvZ29uZWsiLDI2MCwiQXJpbmciLDE5NywiQXJpbmdhY3V0ZSIsNTA2LCJBcmluZ2JlbG93Iiw3NjgwLCJBcmluZ3NtYWxsIiw2MzQ2MSwiQXNtYWxsIiw2MzMyOSwiQXRpbGRlIiwxOTUsIkF0aWxkZXNtYWxsIiw2MzQ1OSwiQXliYXJtZW5pYW4iLDEzMjksIkIiLDY2LCJCY2lyY2xlIiw5Mzk5LCJCZG90YWNjZW50Iiw3NjgyLCJCZG90YmVsb3ciLDc2ODQsIkJlY3lyaWxsaWMiLDEwNDEsIkJlbmFybWVuaWFuIiwxMzMwLCJCZXRhIiw5MTQsIkJob29rIiwzODUsIkJsaW5lYmVsb3ciLDc2ODYsIkJtb25vc3BhY2UiLDY1MzE0LCJCcmV2ZXNtYWxsIiw2MzIyMCwiQnNtYWxsIiw2MzMzMCwiQnRvcGJhciIsMzg2LCJDIiw2NywiQ2Fhcm1lbmlhbiIsMTM0MiwiQ2FjdXRlIiwyNjIsIkNhcm9uIiw2MzE3OCwiQ2Fyb25zbWFsbCIsNjMyMjEsIkNjYXJvbiIsMjY4LCJDY2VkaWxsYSIsMTk5LCJDY2VkaWxsYWFjdXRlIiw3Njg4LCJDY2VkaWxsYXNtYWxsIiw2MzQ2MywiQ2NpcmNsZSIsOTQwMCwiQ2NpcmN1bWZsZXgiLDI2NCwiQ2RvdCIsMjY2LCJDZG90YWNjZW50IiwyNjYsIkNlZGlsbGFzbWFsbCIsNjM0MTYsIkNoYWFybWVuaWFuIiwxMzUzLCJDaGVhYmtoYXNpYW5jeXJpbGxpYyIsMTIxMiwiQ2hlY3lyaWxsaWMiLDEwNjMsIkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljIiwxMjE0LCJDaGVkZXNjZW5kZXJjeXJpbGxpYyIsMTIwNiwiQ2hlZGllcmVzaXNjeXJpbGxpYyIsMTI2OCwiQ2hlaGFybWVuaWFuIiwxMzQ3LCJDaGVraGFrYXNzaWFuY3lyaWxsaWMiLDEyMjcsIkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMiLDEyMDgsIkNoaSIsOTM1LCJDaG9vayIsMzkxLCJDaXJjdW1mbGV4c21hbGwiLDYzMjIyLCJDbW9ub3NwYWNlIiw2NTMxNSwiQ29hcm1lbmlhbiIsMTM2MSwiQ3NtYWxsIiw2MzMzMSwiRCIsNjgsIkRaIiw0OTcsIkRaY2Fyb24iLDQ1MiwiRGFhcm1lbmlhbiIsMTMzMiwiRGFmcmljYW4iLDM5MywiRGNhcm9uIiwyNzAsIkRjZWRpbGxhIiw3Njk2LCJEY2lyY2xlIiw5NDAxLCJEY2lyY3VtZmxleGJlbG93Iiw3Njk4LCJEY3JvYXQiLDI3MiwiRGRvdGFjY2VudCIsNzY5MCwiRGRvdGJlbG93Iiw3NjkyLCJEZWN5cmlsbGljIiwxMDQ0LCJEZWljb3B0aWMiLDEwMDYsIkRlbHRhIiw4NzEwLCJEZWx0YWdyZWVrIiw5MTYsIkRob29rIiwzOTQsIkRpZXJlc2lzIiw2MzE3OSwiRGllcmVzaXNBY3V0ZSIsNjMxODAsIkRpZXJlc2lzR3JhdmUiLDYzMTgxLCJEaWVyZXNpc3NtYWxsIiw2MzQwMCwiRGlnYW1tYWdyZWVrIiw5ODgsIkRqZWN5cmlsbGljIiwxMDI2LCJEbGluZWJlbG93Iiw3Njk0LCJEbW9ub3NwYWNlIiw2NTMxNiwiRG90YWNjZW50c21hbGwiLDYzMjIzLCJEc2xhc2giLDI3MiwiRHNtYWxsIiw2MzMzMiwiRHRvcGJhciIsMzk1LCJEeiIsNDk4LCJEemNhcm9uIiw0NTMsIkR6ZWFia2hhc2lhbmN5cmlsbGljIiwxMjQ4LCJEemVjeXJpbGxpYyIsMTAyOSwiRHpoZWN5cmlsbGljIiwxMDM5LCJFIiw2OSwiRWFjdXRlIiwyMDEsIkVhY3V0ZXNtYWxsIiw2MzQ2NSwiRWJyZXZlIiwyNzYsIkVjYXJvbiIsMjgyLCJFY2VkaWxsYWJyZXZlIiw3NzA4LCJFY2hhcm1lbmlhbiIsMTMzMywiRWNpcmNsZSIsOTQwMiwiRWNpcmN1bWZsZXgiLDIwMiwiRWNpcmN1bWZsZXhhY3V0ZSIsNzg3MCwiRWNpcmN1bWZsZXhiZWxvdyIsNzcwNCwiRWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg3OCwiRWNpcmN1bWZsZXhncmF2ZSIsNzg3MiwiRWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NzQsIkVjaXJjdW1mbGV4c21hbGwiLDYzNDY2LCJFY2lyY3VtZmxleHRpbGRlIiw3ODc2LCJFY3lyaWxsaWMiLDEwMjgsIkVkYmxncmF2ZSIsNTE2LCJFZGllcmVzaXMiLDIwMywiRWRpZXJlc2lzc21hbGwiLDYzNDY3LCJFZG90IiwyNzgsIkVkb3RhY2NlbnQiLDI3OCwiRWRvdGJlbG93Iiw3ODY0LCJFZmN5cmlsbGljIiwxMDYwLCJFZ3JhdmUiLDIwMCwiRWdyYXZlc21hbGwiLDYzNDY0LCJFaGFybWVuaWFuIiwxMzM1LCJFaG9va2Fib3ZlIiw3ODY2LCJFaWdodHJvbWFuIiw4NTUxLCJFaW52ZXJ0ZWRicmV2ZSIsNTE4LCJFaW90aWZpZWRjeXJpbGxpYyIsMTEyNCwiRWxjeXJpbGxpYyIsMTA1MSwiRWxldmVucm9tYW4iLDg1NTQsIkVtYWNyb24iLDI3NCwiRW1hY3JvbmFjdXRlIiw3NzAyLCJFbWFjcm9uZ3JhdmUiLDc3MDAsIkVtY3lyaWxsaWMiLDEwNTIsIkVtb25vc3BhY2UiLDY1MzE3LCJFbmN5cmlsbGljIiwxMDUzLCJFbmRlc2NlbmRlcmN5cmlsbGljIiwxMTg2LCJFbmciLDMzMCwiRW5naGVjeXJpbGxpYyIsMTE4OCwiRW5ob29rY3lyaWxsaWMiLDEyMjMsIkVvZ29uZWsiLDI4MCwiRW9wZW4iLDQwMCwiRXBzaWxvbiIsOTE3LCJFcHNpbG9udG9ub3MiLDkwNCwiRXJjeXJpbGxpYyIsMTA1NiwiRXJldmVyc2VkIiwzOTgsIkVyZXZlcnNlZGN5cmlsbGljIiwxMDY5LCJFc2N5cmlsbGljIiwxMDU3LCJFc2Rlc2NlbmRlcmN5cmlsbGljIiwxMTk0LCJFc2giLDQyNSwiRXNtYWxsIiw2MzMzMywiRXRhIiw5MTksIkV0YXJtZW5pYW4iLDEzMzYsIkV0YXRvbm9zIiw5MDUsIkV0aCIsMjA4LCJFdGhzbWFsbCIsNjM0NzIsIkV0aWxkZSIsNzg2OCwiRXRpbGRlYmVsb3ciLDc3MDYsIkV1cm8iLDgzNjQsIkV6aCIsNDM5LCJFemhjYXJvbiIsNDk0LCJFemhyZXZlcnNlZCIsNDQwLCJGIiw3MCwiRmNpcmNsZSIsOTQwMywiRmRvdGFjY2VudCIsNzcxMCwiRmVoYXJtZW5pYW4iLDEzNjYsIkZlaWNvcHRpYyIsOTk2LCJGaG9vayIsNDAxLCJGaXRhY3lyaWxsaWMiLDExMzgsIkZpdmVyb21hbiIsODU0OCwiRm1vbm9zcGFjZSIsNjUzMTgsIkZvdXJyb21hbiIsODU0NywiRnNtYWxsIiw2MzMzNCwiRyIsNzEsIkdCc3F1YXJlIiwxMzE5MSwiR2FjdXRlIiw1MDAsIkdhbW1hIiw5MTUsIkdhbW1hYWZyaWNhbiIsNDA0LCJHYW5naWFjb3B0aWMiLDEwMDIsIkdicmV2ZSIsMjg2LCJHY2Fyb24iLDQ4NiwiR2NlZGlsbGEiLDI5MCwiR2NpcmNsZSIsOTQwNCwiR2NpcmN1bWZsZXgiLDI4NCwiR2NvbW1hYWNjZW50IiwyOTAsIkdkb3QiLDI4OCwiR2RvdGFjY2VudCIsMjg4LCJHZWN5cmlsbGljIiwxMDQzLCJHaGFkYXJtZW5pYW4iLDEzNDYsIkdoZW1pZGRsZWhvb2tjeXJpbGxpYyIsMTE3MiwiR2hlc3Ryb2tlY3lyaWxsaWMiLDExNzAsIkdoZXVwdHVybmN5cmlsbGljIiwxMTY4LCJHaG9vayIsNDAzLCJHaW1hcm1lbmlhbiIsMTMzMSwiR2plY3lyaWxsaWMiLDEwMjcsIkdtYWNyb24iLDc3MTIsIkdtb25vc3BhY2UiLDY1MzE5LCJHcmF2ZSIsNjMxODIsIkdyYXZlc21hbGwiLDYzMzI4LCJHc21hbGwiLDYzMzM1LCJHc21hbGxob29rIiw2NjcsIkdzdHJva2UiLDQ4NCwiSCIsNzIsIkgxODUzMyIsOTY3OSwiSDE4NTQzIiw5NjQyLCJIMTg1NTEiLDk2NDMsIkgyMjA3MyIsOTYzMywiSFBzcXVhcmUiLDEzMjU5LCJIYWFia2hhc2lhbmN5cmlsbGljIiwxMTkyLCJIYWRlc2NlbmRlcmN5cmlsbGljIiwxMjAyLCJIYXJkc2lnbmN5cmlsbGljIiwxMDY2LCJIYmFyIiwyOTQsIkhicmV2ZWJlbG93Iiw3NzIyLCJIY2VkaWxsYSIsNzcyMCwiSGNpcmNsZSIsOTQwNSwiSGNpcmN1bWZsZXgiLDI5MiwiSGRpZXJlc2lzIiw3NzE4LCJIZG90YWNjZW50Iiw3NzE0LCJIZG90YmVsb3ciLDc3MTYsIkhtb25vc3BhY2UiLDY1MzIwLCJIb2FybWVuaWFuIiwxMzQ0LCJIb3JpY29wdGljIiwxZTMsIkhzbWFsbCIsNjMzMzYsIkh1bmdhcnVtbGF1dCIsNjMxODMsIkh1bmdhcnVtbGF1dHNtYWxsIiw2MzIyNCwiSHpzcXVhcmUiLDEzMjAwLCJJIiw3MywiSUFjeXJpbGxpYyIsMTA3MSwiSUoiLDMwNiwiSVVjeXJpbGxpYyIsMTA3MCwiSWFjdXRlIiwyMDUsIklhY3V0ZXNtYWxsIiw2MzQ2OSwiSWJyZXZlIiwzMDAsIkljYXJvbiIsNDYzLCJJY2lyY2xlIiw5NDA2LCJJY2lyY3VtZmxleCIsMjA2LCJJY2lyY3VtZmxleHNtYWxsIiw2MzQ3MCwiSWN5cmlsbGljIiwxMDMwLCJJZGJsZ3JhdmUiLDUyMCwiSWRpZXJlc2lzIiwyMDcsIklkaWVyZXNpc2FjdXRlIiw3NzI2LCJJZGllcmVzaXNjeXJpbGxpYyIsMTI1MiwiSWRpZXJlc2lzc21hbGwiLDYzNDcxLCJJZG90IiwzMDQsIklkb3RhY2NlbnQiLDMwNCwiSWRvdGJlbG93Iiw3ODgyLCJJZWJyZXZlY3lyaWxsaWMiLDEyMzgsIkllY3lyaWxsaWMiLDEwNDUsIklmcmFrdHVyIiw4NDY1LCJJZ3JhdmUiLDIwNCwiSWdyYXZlc21hbGwiLDYzNDY4LCJJaG9va2Fib3ZlIiw3ODgwLCJJaWN5cmlsbGljIiwxMDQ4LCJJaW52ZXJ0ZWRicmV2ZSIsNTIyLCJJaXNob3J0Y3lyaWxsaWMiLDEwNDksIkltYWNyb24iLDI5OCwiSW1hY3JvbmN5cmlsbGljIiwxMjUwLCJJbW9ub3NwYWNlIiw2NTMyMSwiSW5pYXJtZW5pYW4iLDEzMzksIklvY3lyaWxsaWMiLDEwMjUsIklvZ29uZWsiLDMwMiwiSW90YSIsOTIxLCJJb3RhYWZyaWNhbiIsNDA2LCJJb3RhZGllcmVzaXMiLDkzOCwiSW90YXRvbm9zIiw5MDYsIklzbWFsbCIsNjMzMzcsIklzdHJva2UiLDQwNywiSXRpbGRlIiwyOTYsIkl0aWxkZWJlbG93Iiw3NzI0LCJJemhpdHNhY3lyaWxsaWMiLDExNDAsIkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljIiwxMTQyLCJKIiw3NCwiSmFhcm1lbmlhbiIsMTM0NSwiSmNpcmNsZSIsOTQwNywiSmNpcmN1bWZsZXgiLDMwOCwiSmVjeXJpbGxpYyIsMTAzMiwiSmhlaGFybWVuaWFuIiwxMzU1LCJKbW9ub3NwYWNlIiw2NTMyMiwiSnNtYWxsIiw2MzMzOCwiSyIsNzUsIktCc3F1YXJlIiwxMzE4OSwiS0tzcXVhcmUiLDEzMjYxLCJLYWJhc2hraXJjeXJpbGxpYyIsMTE4NCwiS2FjdXRlIiw3NzI4LCJLYWN5cmlsbGljIiwxMDUwLCJLYWRlc2NlbmRlcmN5cmlsbGljIiwxMTc4LCJLYWhvb2tjeXJpbGxpYyIsMTIxOSwiS2FwcGEiLDkyMiwiS2FzdHJva2VjeXJpbGxpYyIsMTE4MiwiS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMTgwLCJLY2Fyb24iLDQ4OCwiS2NlZGlsbGEiLDMxMCwiS2NpcmNsZSIsOTQwOCwiS2NvbW1hYWNjZW50IiwzMTAsIktkb3RiZWxvdyIsNzczMCwiS2VoYXJtZW5pYW4iLDEzNjQsIktlbmFybWVuaWFuIiwxMzQzLCJLaGFjeXJpbGxpYyIsMTA2MSwiS2hlaWNvcHRpYyIsOTk4LCJLaG9vayIsNDA4LCJLamVjeXJpbGxpYyIsMTAzNiwiS2xpbmViZWxvdyIsNzczMiwiS21vbm9zcGFjZSIsNjUzMjMsIktvcHBhY3lyaWxsaWMiLDExNTIsIktvcHBhZ3JlZWsiLDk5MCwiS3NpY3lyaWxsaWMiLDExMzQsIktzbWFsbCIsNjMzMzksIkwiLDc2LCJMSiIsNDU1LCJMTCIsNjMxNjcsIkxhY3V0ZSIsMzEzLCJMYW1iZGEiLDkyMywiTGNhcm9uIiwzMTcsIkxjZWRpbGxhIiwzMTUsIkxjaXJjbGUiLDk0MDksIkxjaXJjdW1mbGV4YmVsb3ciLDc3NDAsIkxjb21tYWFjY2VudCIsMzE1LCJMZG90IiwzMTksIkxkb3RhY2NlbnQiLDMxOSwiTGRvdGJlbG93Iiw3NzM0LCJMZG90YmVsb3dtYWNyb24iLDc3MzYsIkxpd25hcm1lbmlhbiIsMTM0MCwiTGoiLDQ1NiwiTGplY3lyaWxsaWMiLDEwMzMsIkxsaW5lYmVsb3ciLDc3MzgsIkxtb25vc3BhY2UiLDY1MzI0LCJMc2xhc2giLDMyMSwiTHNsYXNoc21hbGwiLDYzMjI1LCJMc21hbGwiLDYzMzQwLCJNIiw3NywiTUJzcXVhcmUiLDEzMTkwLCJNYWNyb24iLDYzMTg0LCJNYWNyb25zbWFsbCIsNjM0MDcsIk1hY3V0ZSIsNzc0MiwiTWNpcmNsZSIsOTQxMCwiTWRvdGFjY2VudCIsNzc0NCwiTWRvdGJlbG93Iiw3NzQ2LCJNZW5hcm1lbmlhbiIsMTM0OCwiTW1vbm9zcGFjZSIsNjUzMjUsIk1zbWFsbCIsNjMzNDEsIk10dXJuZWQiLDQxMiwiTXUiLDkyNCwiTiIsNzgsIk5KIiw0NTgsIk5hY3V0ZSIsMzIzLCJOY2Fyb24iLDMyNywiTmNlZGlsbGEiLDMyNSwiTmNpcmNsZSIsOTQxMSwiTmNpcmN1bWZsZXhiZWxvdyIsNzc1NCwiTmNvbW1hYWNjZW50IiwzMjUsIk5kb3RhY2NlbnQiLDc3NDgsIk5kb3RiZWxvdyIsNzc1MCwiTmhvb2tsZWZ0Iiw0MTMsIk5pbmVyb21hbiIsODU1MiwiTmoiLDQ1OSwiTmplY3lyaWxsaWMiLDEwMzQsIk5saW5lYmVsb3ciLDc3NTIsIk5tb25vc3BhY2UiLDY1MzI2LCJOb3dhcm1lbmlhbiIsMTM1MCwiTnNtYWxsIiw2MzM0MiwiTnRpbGRlIiwyMDksIk50aWxkZXNtYWxsIiw2MzQ3MywiTnUiLDkyNSwiTyIsNzksIk9FIiwzMzgsIk9Fc21hbGwiLDYzMjI2LCJPYWN1dGUiLDIxMSwiT2FjdXRlc21hbGwiLDYzNDc1LCJPYmFycmVkY3lyaWxsaWMiLDEyNTYsIk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljIiwxMjU4LCJPYnJldmUiLDMzNCwiT2Nhcm9uIiw0NjUsIk9jZW50ZXJlZHRpbGRlIiw0MTUsIk9jaXJjbGUiLDk0MTIsIk9jaXJjdW1mbGV4IiwyMTIsIk9jaXJjdW1mbGV4YWN1dGUiLDc4ODgsIk9jaXJjdW1mbGV4ZG90YmVsb3ciLDc4OTYsIk9jaXJjdW1mbGV4Z3JhdmUiLDc4OTAsIk9jaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODkyLCJPY2lyY3VtZmxleHNtYWxsIiw2MzQ3NiwiT2NpcmN1bWZsZXh0aWxkZSIsNzg5NCwiT2N5cmlsbGljIiwxMDU0LCJPZGJsYWN1dGUiLDMzNiwiT2RibGdyYXZlIiw1MjQsIk9kaWVyZXNpcyIsMjE0LCJPZGllcmVzaXNjeXJpbGxpYyIsMTI1NCwiT2RpZXJlc2lzc21hbGwiLDYzNDc4LCJPZG90YmVsb3ciLDc4ODQsIk9nb25la3NtYWxsIiw2MzIyNywiT2dyYXZlIiwyMTAsIk9ncmF2ZXNtYWxsIiw2MzQ3NCwiT2hhcm1lbmlhbiIsMTM2NSwiT2htIiw4NDg2LCJPaG9va2Fib3ZlIiw3ODg2LCJPaG9ybiIsNDE2LCJPaG9ybmFjdXRlIiw3ODk4LCJPaG9ybmRvdGJlbG93Iiw3OTA2LCJPaG9ybmdyYXZlIiw3OTAwLCJPaG9ybmhvb2thYm92ZSIsNzkwMiwiT2hvcm50aWxkZSIsNzkwNCwiT2h1bmdhcnVtbGF1dCIsMzM2LCJPaSIsNDE4LCJPaW52ZXJ0ZWRicmV2ZSIsNTI2LCJPbWFjcm9uIiwzMzIsIk9tYWNyb25hY3V0ZSIsNzc2MiwiT21hY3JvbmdyYXZlIiw3NzYwLCJPbWVnYSIsODQ4NiwiT21lZ2FjeXJpbGxpYyIsMTEyMCwiT21lZ2FncmVlayIsOTM3LCJPbWVnYXJvdW5kY3lyaWxsaWMiLDExNDYsIk9tZWdhdGl0bG9jeXJpbGxpYyIsMTE0OCwiT21lZ2F0b25vcyIsOTExLCJPbWljcm9uIiw5MjcsIk9taWNyb250b25vcyIsOTA4LCJPbW9ub3NwYWNlIiw2NTMyNywiT25lcm9tYW4iLDg1NDQsIk9vZ29uZWsiLDQ5MCwiT29nb25la21hY3JvbiIsNDkyLCJPb3BlbiIsMzkwLCJPc2xhc2giLDIxNiwiT3NsYXNoYWN1dGUiLDUxMCwiT3NsYXNoc21hbGwiLDYzNDgwLCJPc21hbGwiLDYzMzQzLCJPc3Ryb2tlYWN1dGUiLDUxMCwiT3RjeXJpbGxpYyIsMTE1MCwiT3RpbGRlIiwyMTMsIk90aWxkZWFjdXRlIiw3NzU2LCJPdGlsZGVkaWVyZXNpcyIsNzc1OCwiT3RpbGRlc21hbGwiLDYzNDc3LCJQIiw4MCwiUGFjdXRlIiw3NzY0LCJQY2lyY2xlIiw5NDEzLCJQZG90YWNjZW50Iiw3NzY2LCJQZWN5cmlsbGljIiwxMDU1LCJQZWhhcm1lbmlhbiIsMTM1NCwiUGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTAsIlBoaSIsOTM0LCJQaG9vayIsNDIwLCJQaSIsOTI4LCJQaXdyYXJtZW5pYW4iLDEzNjMsIlBtb25vc3BhY2UiLDY1MzI4LCJQc2kiLDkzNiwiUHNpY3lyaWxsaWMiLDExMzYsIlBzbWFsbCIsNjMzNDQsIlEiLDgxLCJRY2lyY2xlIiw5NDE0LCJRbW9ub3NwYWNlIiw2NTMyOSwiUXNtYWxsIiw2MzM0NSwiUiIsODIsIlJhYXJtZW5pYW4iLDEzNTYsIlJhY3V0ZSIsMzQwLCJSY2Fyb24iLDM0NCwiUmNlZGlsbGEiLDM0MiwiUmNpcmNsZSIsOTQxNSwiUmNvbW1hYWNjZW50IiwzNDIsIlJkYmxncmF2ZSIsNTI4LCJSZG90YWNjZW50Iiw3NzY4LCJSZG90YmVsb3ciLDc3NzAsIlJkb3RiZWxvd21hY3JvbiIsNzc3MiwiUmVoYXJtZW5pYW4iLDEzNjAsIlJmcmFrdHVyIiw4NDc2LCJSaG8iLDkyOSwiUmluZ3NtYWxsIiw2MzIyOCwiUmludmVydGVkYnJldmUiLDUzMCwiUmxpbmViZWxvdyIsNzc3NCwiUm1vbm9zcGFjZSIsNjUzMzAsIlJzbWFsbCIsNjMzNDYsIlJzbWFsbGludmVydGVkIiw2NDEsIlJzbWFsbGludmVydGVkc3VwZXJpb3IiLDY5NCwiUyIsODMsIlNGMDEwMDAwIiw5NDg0LCJTRjAyMDAwMCIsOTQ5MiwiU0YwMzAwMDAiLDk0ODgsIlNGMDQwMDAwIiw5NDk2LCJTRjA1MDAwMCIsOTUzMiwiU0YwNjAwMDAiLDk1MTYsIlNGMDcwMDAwIiw5NTI0LCJTRjA4MDAwMCIsOTUwMCwiU0YwOTAwMDAiLDk1MDgsIlNGMTAwMDAwIiw5NDcyLCJTRjExMDAwMCIsOTQ3NCwiU0YxOTAwMDAiLDk1NjksIlNGMjAwMDAwIiw5NTcwLCJTRjIxMDAwMCIsOTU1OCwiU0YyMjAwMDAiLDk1NTcsIlNGMjMwMDAwIiw5NTcxLCJTRjI0MDAwMCIsOTU1MywiU0YyNTAwMDAiLDk1NTksIlNGMjYwMDAwIiw5NTY1LCJTRjI3MDAwMCIsOTU2NCwiU0YyODAwMDAiLDk1NjMsIlNGMzYwMDAwIiw5NTY2LCJTRjM3MDAwMCIsOTU2NywiU0YzODAwMDAiLDk1NjIsIlNGMzkwMDAwIiw5NTU2LCJTRjQwMDAwMCIsOTU3NywiU0Y0MTAwMDAiLDk1NzQsIlNGNDIwMDAwIiw5NTY4LCJTRjQzMDAwMCIsOTU1MiwiU0Y0NDAwMDAiLDk1ODAsIlNGNDUwMDAwIiw5NTc1LCJTRjQ2MDAwMCIsOTU3NiwiU0Y0NzAwMDAiLDk1NzIsIlNGNDgwMDAwIiw5NTczLCJTRjQ5MDAwMCIsOTU2MSwiU0Y1MDAwMDAiLDk1NjAsIlNGNTEwMDAwIiw5NTU0LCJTRjUyMDAwMCIsOTU1NSwiU0Y1MzAwMDAiLDk1NzksIlNGNTQwMDAwIiw5NTc4LCJTYWN1dGUiLDM0NiwiU2FjdXRlZG90YWNjZW50Iiw3NzgwLCJTYW1waWdyZWVrIiw5OTIsIlNjYXJvbiIsMzUyLCJTY2Fyb25kb3RhY2NlbnQiLDc3ODIsIlNjYXJvbnNtYWxsIiw2MzIyOSwiU2NlZGlsbGEiLDM1MCwiU2Nod2EiLDM5OSwiU2Nod2FjeXJpbGxpYyIsMTI0MCwiU2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQyLCJTY2lyY2xlIiw5NDE2LCJTY2lyY3VtZmxleCIsMzQ4LCJTY29tbWFhY2NlbnQiLDUzNiwiU2RvdGFjY2VudCIsNzc3NiwiU2RvdGJlbG93Iiw3Nzc4LCJTZG90YmVsb3dkb3RhY2NlbnQiLDc3ODQsIlNlaGFybWVuaWFuIiwxMzU3LCJTZXZlbnJvbWFuIiw4NTUwLCJTaGFhcm1lbmlhbiIsMTM1MSwiU2hhY3lyaWxsaWMiLDEwNjQsIlNoY2hhY3lyaWxsaWMiLDEwNjUsIlNoZWljb3B0aWMiLDk5NCwiU2hoYWN5cmlsbGljIiwxMjEwLCJTaGltYWNvcHRpYyIsMTAwNCwiU2lnbWEiLDkzMSwiU2l4cm9tYW4iLDg1NDksIlNtb25vc3BhY2UiLDY1MzMxLCJTb2Z0c2lnbmN5cmlsbGljIiwxMDY4LCJTc21hbGwiLDYzMzQ3LCJTdGlnbWFncmVlayIsOTg2LCJUIiw4NCwiVGF1Iiw5MzIsIlRiYXIiLDM1OCwiVGNhcm9uIiwzNTYsIlRjZWRpbGxhIiwzNTQsIlRjaXJjbGUiLDk0MTcsIlRjaXJjdW1mbGV4YmVsb3ciLDc3OTIsIlRjb21tYWFjY2VudCIsMzU0LCJUZG90YWNjZW50Iiw3Nzg2LCJUZG90YmVsb3ciLDc3ODgsIlRlY3lyaWxsaWMiLDEwNTgsIlRlZGVzY2VuZGVyY3lyaWxsaWMiLDExOTYsIlRlbnJvbWFuIiw4NTUzLCJUZXRzZWN5cmlsbGljIiwxMjA0LCJUaGV0YSIsOTIwLCJUaG9vayIsNDI4LCJUaG9ybiIsMjIyLCJUaG9ybnNtYWxsIiw2MzQ4NiwiVGhyZWVyb21hbiIsODU0NiwiVGlsZGVzbWFsbCIsNjMyMzAsIlRpd25hcm1lbmlhbiIsMTM1OSwiVGxpbmViZWxvdyIsNzc5MCwiVG1vbm9zcGFjZSIsNjUzMzIsIlRvYXJtZW5pYW4iLDEzMzcsIlRvbmVmaXZlIiw0NDQsIlRvbmVzaXgiLDM4OCwiVG9uZXR3byIsNDIzLCJUcmV0cm9mbGV4aG9vayIsNDMwLCJUc2VjeXJpbGxpYyIsMTA2MiwiVHNoZWN5cmlsbGljIiwxMDM1LCJUc21hbGwiLDYzMzQ4LCJUd2VsdmVyb21hbiIsODU1NSwiVHdvcm9tYW4iLDg1NDUsIlUiLDg1LCJVYWN1dGUiLDIxOCwiVWFjdXRlc21hbGwiLDYzNDgyLCJVYnJldmUiLDM2NCwiVWNhcm9uIiw0NjcsIlVjaXJjbGUiLDk0MTgsIlVjaXJjdW1mbGV4IiwyMTksIlVjaXJjdW1mbGV4YmVsb3ciLDc3OTgsIlVjaXJjdW1mbGV4c21hbGwiLDYzNDgzLCJVY3lyaWxsaWMiLDEwNTksIlVkYmxhY3V0ZSIsMzY4LCJVZGJsZ3JhdmUiLDUzMiwiVWRpZXJlc2lzIiwyMjAsIlVkaWVyZXNpc2FjdXRlIiw0NzEsIlVkaWVyZXNpc2JlbG93Iiw3Nzk0LCJVZGllcmVzaXNjYXJvbiIsNDczLCJVZGllcmVzaXNjeXJpbGxpYyIsMTI2NCwiVWRpZXJlc2lzZ3JhdmUiLDQ3NSwiVWRpZXJlc2lzbWFjcm9uIiw0NjksIlVkaWVyZXNpc3NtYWxsIiw2MzQ4NCwiVWRvdGJlbG93Iiw3OTA4LCJVZ3JhdmUiLDIxNywiVWdyYXZlc21hbGwiLDYzNDgxLCJVaG9va2Fib3ZlIiw3OTEwLCJVaG9ybiIsNDMxLCJVaG9ybmFjdXRlIiw3OTEyLCJVaG9ybmRvdGJlbG93Iiw3OTIwLCJVaG9ybmdyYXZlIiw3OTE0LCJVaG9ybmhvb2thYm92ZSIsNzkxNiwiVWhvcm50aWxkZSIsNzkxOCwiVWh1bmdhcnVtbGF1dCIsMzY4LCJVaHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjYsIlVpbnZlcnRlZGJyZXZlIiw1MzQsIlVrY3lyaWxsaWMiLDExNDQsIlVtYWNyb24iLDM2MiwiVW1hY3JvbmN5cmlsbGljIiwxMjYyLCJVbWFjcm9uZGllcmVzaXMiLDc4MDIsIlVtb25vc3BhY2UiLDY1MzMzLCJVb2dvbmVrIiwzNzAsIlVwc2lsb24iLDkzMywiVXBzaWxvbjEiLDk3OCwiVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrIiw5NzksIlVwc2lsb25hZnJpY2FuIiw0MzMsIlVwc2lsb25kaWVyZXNpcyIsOTM5LCJVcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWsiLDk4MCwiVXBzaWxvbmhvb2tzeW1ib2wiLDk3OCwiVXBzaWxvbnRvbm9zIiw5MTAsIlVyaW5nIiwzNjYsIlVzaG9ydGN5cmlsbGljIiwxMDM4LCJVc21hbGwiLDYzMzQ5LCJVc3RyYWlnaHRjeXJpbGxpYyIsMTE5OCwiVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMiLDEyMDAsIlV0aWxkZSIsMzYwLCJVdGlsZGVhY3V0ZSIsNzgwMCwiVXRpbGRlYmVsb3ciLDc3OTYsIlYiLDg2LCJWY2lyY2xlIiw5NDE5LCJWZG90YmVsb3ciLDc4MDYsIlZlY3lyaWxsaWMiLDEwNDIsIlZld2FybWVuaWFuIiwxMzU4LCJWaG9vayIsNDM0LCJWbW9ub3NwYWNlIiw2NTMzNCwiVm9hcm1lbmlhbiIsMTM1MiwiVnNtYWxsIiw2MzM1MCwiVnRpbGRlIiw3ODA0LCJXIiw4NywiV2FjdXRlIiw3ODEwLCJXY2lyY2xlIiw5NDIwLCJXY2lyY3VtZmxleCIsMzcyLCJXZGllcmVzaXMiLDc4MTIsIldkb3RhY2NlbnQiLDc4MTQsIldkb3RiZWxvdyIsNzgxNiwiV2dyYXZlIiw3ODA4LCJXbW9ub3NwYWNlIiw2NTMzNSwiV3NtYWxsIiw2MzM1MSwiWCIsODgsIlhjaXJjbGUiLDk0MjEsIlhkaWVyZXNpcyIsNzgyMCwiWGRvdGFjY2VudCIsNzgxOCwiWGVoYXJtZW5pYW4iLDEzNDEsIlhpIiw5MjYsIlhtb25vc3BhY2UiLDY1MzM2LCJYc21hbGwiLDYzMzUyLCJZIiw4OSwiWWFjdXRlIiwyMjEsIllhY3V0ZXNtYWxsIiw2MzQ4NSwiWWF0Y3lyaWxsaWMiLDExMjIsIlljaXJjbGUiLDk0MjIsIlljaXJjdW1mbGV4IiwzNzQsIllkaWVyZXNpcyIsMzc2LCJZZGllcmVzaXNzbWFsbCIsNjM0ODcsIllkb3RhY2NlbnQiLDc4MjIsIllkb3RiZWxvdyIsNzkyNCwiWWVyaWN5cmlsbGljIiwxMDY3LCJZZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MiwiWWdyYXZlIiw3OTIyLCJZaG9vayIsNDM1LCJZaG9va2Fib3ZlIiw3OTI2LCJZaWFybWVuaWFuIiwxMzQ5LCJZaWN5cmlsbGljIiwxMDMxLCJZaXduYXJtZW5pYW4iLDEzNjIsIlltb25vc3BhY2UiLDY1MzM3LCJZc21hbGwiLDYzMzUzLCJZdGlsZGUiLDc5MjgsIll1c2JpZ2N5cmlsbGljIiwxMTMwLCJZdXNiaWdpb3RpZmllZGN5cmlsbGljIiwxMTMyLCJZdXNsaXR0bGVjeXJpbGxpYyIsMTEyNiwiWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYyIsMTEyOCwiWiIsOTAsIlphYXJtZW5pYW4iLDEzMzQsIlphY3V0ZSIsMzc3LCJaY2Fyb24iLDM4MSwiWmNhcm9uc21hbGwiLDYzMjMxLCJaY2lyY2xlIiw5NDIzLCJaY2lyY3VtZmxleCIsNzgyNCwiWmRvdCIsMzc5LCJaZG90YWNjZW50IiwzNzksIlpkb3RiZWxvdyIsNzgyNiwiWmVjeXJpbGxpYyIsMTA0NywiWmVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NiwiWmVkaWVyZXNpc2N5cmlsbGljIiwxMjQ2LCJaZXRhIiw5MTgsIlpoZWFybWVuaWFuIiwxMzM4LCJaaGVicmV2ZWN5cmlsbGljIiwxMjE3LCJaaGVjeXJpbGxpYyIsMTA0NiwiWmhlZGVzY2VuZGVyY3lyaWxsaWMiLDExNzQsIlpoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDQsIlpsaW5lYmVsb3ciLDc4MjgsIlptb25vc3BhY2UiLDY1MzM4LCJac21hbGwiLDYzMzU0LCJac3Ryb2tlIiw0MzcsImEiLDk3LCJhYWJlbmdhbGkiLDI0MzgsImFhY3V0ZSIsMjI1LCJhYWRldmEiLDIzMTAsImFhZ3VqYXJhdGkiLDI2OTQsImFhZ3VybXVraGkiLDI1NjYsImFhbWF0cmFndXJtdWtoaSIsMjYyMiwiYWFydXNxdWFyZSIsMTMwNTksImFhdm93ZWxzaWduYmVuZ2FsaSIsMjQ5NCwiYWF2b3dlbHNpZ25kZXZhIiwyMzY2LCJhYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzUwLCJhYmJyZXZpYXRpb25tYXJrYXJtZW5pYW4iLDEzNzUsImFiYnJldmlhdGlvbnNpZ25kZXZhIiwyNDE2LCJhYmVuZ2FsaSIsMjQzNywiYWJvcG9tb2ZvIiwxMjU3MCwiYWJyZXZlIiwyNTksImFicmV2ZWFjdXRlIiw3ODU1LCJhYnJldmVjeXJpbGxpYyIsMTIzMywiYWJyZXZlZG90YmVsb3ciLDc4NjMsImFicmV2ZWdyYXZlIiw3ODU3LCJhYnJldmVob29rYWJvdmUiLDc4NTksImFicmV2ZXRpbGRlIiw3ODYxLCJhY2Fyb24iLDQ2MiwiYWNpcmNsZSIsOTQyNCwiYWNpcmN1bWZsZXgiLDIyNiwiYWNpcmN1bWZsZXhhY3V0ZSIsNzg0NSwiYWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg1MywiYWNpcmN1bWZsZXhncmF2ZSIsNzg0NywiYWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NDksImFjaXJjdW1mbGV4dGlsZGUiLDc4NTEsImFjdXRlIiwxODAsImFjdXRlYmVsb3djbWIiLDc5MSwiYWN1dGVjbWIiLDc2OSwiYWN1dGVjb21iIiw3NjksImFjdXRlZGV2YSIsMjM4OCwiYWN1dGVsb3dtb2QiLDcxOSwiYWN1dGV0b25lY21iIiw4MzMsImFjeXJpbGxpYyIsMTA3MiwiYWRibGdyYXZlIiw1MTMsImFkZGFrZ3VybXVraGkiLDI2NzMsImFkZXZhIiwyMzA5LCJhZGllcmVzaXMiLDIyOCwiYWRpZXJlc2lzY3lyaWxsaWMiLDEyMzUsImFkaWVyZXNpc21hY3JvbiIsNDc5LCJhZG90YmVsb3ciLDc4NDEsImFkb3RtYWNyb24iLDQ4MSwiYWUiLDIzMCwiYWVhY3V0ZSIsNTA5LCJhZWtvcmVhbiIsMTI2MjQsImFlbWFjcm9uIiw0ODMsImFmaWkwMDIwOCIsODIxMywiYWZpaTA4OTQxIiw4MzU2LCJhZmlpMTAwMTciLDEwNDAsImFmaWkxMDAxOCIsMTA0MSwiYWZpaTEwMDE5IiwxMDQyLCJhZmlpMTAwMjAiLDEwNDMsImFmaWkxMDAyMSIsMTA0NCwiYWZpaTEwMDIyIiwxMDQ1LCJhZmlpMTAwMjMiLDEwMjUsImFmaWkxMDAyNCIsMTA0NiwiYWZpaTEwMDI1IiwxMDQ3LCJhZmlpMTAwMjYiLDEwNDgsImFmaWkxMDAyNyIsMTA0OSwiYWZpaTEwMDI4IiwxMDUwLCJhZmlpMTAwMjkiLDEwNTEsImFmaWkxMDAzMCIsMTA1MiwiYWZpaTEwMDMxIiwxMDUzLCJhZmlpMTAwMzIiLDEwNTQsImFmaWkxMDAzMyIsMTA1NSwiYWZpaTEwMDM0IiwxMDU2LCJhZmlpMTAwMzUiLDEwNTcsImFmaWkxMDAzNiIsMTA1OCwiYWZpaTEwMDM3IiwxMDU5LCJhZmlpMTAwMzgiLDEwNjAsImFmaWkxMDAzOSIsMTA2MSwiYWZpaTEwMDQwIiwxMDYyLCJhZmlpMTAwNDEiLDEwNjMsImFmaWkxMDA0MiIsMTA2NCwiYWZpaTEwMDQzIiwxMDY1LCJhZmlpMTAwNDQiLDEwNjYsImFmaWkxMDA0NSIsMTA2NywiYWZpaTEwMDQ2IiwxMDY4LCJhZmlpMTAwNDciLDEwNjksImFmaWkxMDA0OCIsMTA3MCwiYWZpaTEwMDQ5IiwxMDcxLCJhZmlpMTAwNTAiLDExNjgsImFmaWkxMDA1MSIsMTAyNiwiYWZpaTEwMDUyIiwxMDI3LCJhZmlpMTAwNTMiLDEwMjgsImFmaWkxMDA1NCIsMTAyOSwiYWZpaTEwMDU1IiwxMDMwLCJhZmlpMTAwNTYiLDEwMzEsImFmaWkxMDA1NyIsMTAzMiwiYWZpaTEwMDU4IiwxMDMzLCJhZmlpMTAwNTkiLDEwMzQsImFmaWkxMDA2MCIsMTAzNSwiYWZpaTEwMDYxIiwxMDM2LCJhZmlpMTAwNjIiLDEwMzgsImFmaWkxMDA2MyIsNjMxNzIsImFmaWkxMDA2NCIsNjMxNzMsImFmaWkxMDA2NSIsMTA3MiwiYWZpaTEwMDY2IiwxMDczLCJhZmlpMTAwNjciLDEwNzQsImFmaWkxMDA2OCIsMTA3NSwiYWZpaTEwMDY5IiwxMDc2LCJhZmlpMTAwNzAiLDEwNzcsImFmaWkxMDA3MSIsMTEwNSwiYWZpaTEwMDcyIiwxMDc4LCJhZmlpMTAwNzMiLDEwNzksImFmaWkxMDA3NCIsMTA4MCwiYWZpaTEwMDc1IiwxMDgxLCJhZmlpMTAwNzYiLDEwODIsImFmaWkxMDA3NyIsMTA4MywiYWZpaTEwMDc4IiwxMDg0LCJhZmlpMTAwNzkiLDEwODUsImFmaWkxMDA4MCIsMTA4NiwiYWZpaTEwMDgxIiwxMDg3LCJhZmlpMTAwODIiLDEwODgsImFmaWkxMDA4MyIsMTA4OSwiYWZpaTEwMDg0IiwxMDkwLCJhZmlpMTAwODUiLDEwOTEsImFmaWkxMDA4NiIsMTA5MiwiYWZpaTEwMDg3IiwxMDkzLCJhZmlpMTAwODgiLDEwOTQsImFmaWkxMDA4OSIsMTA5NSwiYWZpaTEwMDkwIiwxMDk2LCJhZmlpMTAwOTEiLDEwOTcsImFmaWkxMDA5MiIsMTA5OCwiYWZpaTEwMDkzIiwxMDk5LCJhZmlpMTAwOTQiLDExMDAsImFmaWkxMDA5NSIsMTEwMSwiYWZpaTEwMDk2IiwxMTAyLCJhZmlpMTAwOTciLDExMDMsImFmaWkxMDA5OCIsMTE2OSwiYWZpaTEwMDk5IiwxMTA2LCJhZmlpMTAxMDAiLDExMDcsImFmaWkxMDEwMSIsMTEwOCwiYWZpaTEwMTAyIiwxMTA5LCJhZmlpMTAxMDMiLDExMTAsImFmaWkxMDEwNCIsMTExMSwiYWZpaTEwMTA1IiwxMTEyLCJhZmlpMTAxMDYiLDExMTMsImFmaWkxMDEwNyIsMTExNCwiYWZpaTEwMTA4IiwxMTE1LCJhZmlpMTAxMDkiLDExMTYsImFmaWkxMDExMCIsMTExOCwiYWZpaTEwMTQ1IiwxMDM5LCJhZmlpMTAxNDYiLDExMjIsImFmaWkxMDE0NyIsMTEzOCwiYWZpaTEwMTQ4IiwxMTQwLCJhZmlpMTAxOTIiLDYzMTc0LCJhZmlpMTAxOTMiLDExMTksImFmaWkxMDE5NCIsMTEyMywiYWZpaTEwMTk1IiwxMTM5LCJhZmlpMTAxOTYiLDExNDEsImFmaWkxMDgzMSIsNjMxNzUsImFmaWkxMDgzMiIsNjMxNzYsImFmaWkxMDg0NiIsMTI0MSwiYWZpaTI5OSIsODIwNiwiYWZpaTMwMCIsODIwNywiYWZpaTMwMSIsODIwNSwiYWZpaTU3MzgxIiwxNjQyLCJhZmlpNTczODgiLDE1NDgsImFmaWk1NzM5MiIsMTYzMiwiYWZpaTU3MzkzIiwxNjMzLCJhZmlpNTczOTQiLDE2MzQsImFmaWk1NzM5NSIsMTYzNSwiYWZpaTU3Mzk2IiwxNjM2LCJhZmlpNTczOTciLDE2MzcsImFmaWk1NzM5OCIsMTYzOCwiYWZpaTU3Mzk5IiwxNjM5LCJhZmlpNTc0MDAiLDE2NDAsImFmaWk1NzQwMSIsMTY0MSwiYWZpaTU3NDAzIiwxNTYzLCJhZmlpNTc0MDciLDE1NjcsImFmaWk1NzQwOSIsMTU2OSwiYWZpaTU3NDEwIiwxNTcwLCJhZmlpNTc0MTEiLDE1NzEsImFmaWk1NzQxMiIsMTU3MiwiYWZpaTU3NDEzIiwxNTczLCJhZmlpNTc0MTQiLDE1NzQsImFmaWk1NzQxNSIsMTU3NSwiYWZpaTU3NDE2IiwxNTc2LCJhZmlpNTc0MTciLDE1NzcsImFmaWk1NzQxOCIsMTU3OCwiYWZpaTU3NDE5IiwxNTc5LCJhZmlpNTc0MjAiLDE1ODAsImFmaWk1NzQyMSIsMTU4MSwiYWZpaTU3NDIyIiwxNTgyLCJhZmlpNTc0MjMiLDE1ODMsImFmaWk1NzQyNCIsMTU4NCwiYWZpaTU3NDI1IiwxNTg1LCJhZmlpNTc0MjYiLDE1ODYsImFmaWk1NzQyNyIsMTU4NywiYWZpaTU3NDI4IiwxNTg4LCJhZmlpNTc0MjkiLDE1ODksImFmaWk1NzQzMCIsMTU5MCwiYWZpaTU3NDMxIiwxNTkxLCJhZmlpNTc0MzIiLDE1OTIsImFmaWk1NzQzMyIsMTU5MywiYWZpaTU3NDM0IiwxNTk0LCJhZmlpNTc0NDAiLDE2MDAsImFmaWk1NzQ0MSIsMTYwMSwiYWZpaTU3NDQyIiwxNjAyLCJhZmlpNTc0NDMiLDE2MDMsImFmaWk1NzQ0NCIsMTYwNCwiYWZpaTU3NDQ1IiwxNjA1LCJhZmlpNTc0NDYiLDE2MDYsImFmaWk1NzQ0OCIsMTYwOCwiYWZpaTU3NDQ5IiwxNjA5LCJhZmlpNTc0NTAiLDE2MTAsImFmaWk1NzQ1MSIsMTYxMSwiYWZpaTU3NDUyIiwxNjEyLCJhZmlpNTc0NTMiLDE2MTMsImFmaWk1NzQ1NCIsMTYxNCwiYWZpaTU3NDU1IiwxNjE1LCJhZmlpNTc0NTYiLDE2MTYsImFmaWk1NzQ1NyIsMTYxNywiYWZpaTU3NDU4IiwxNjE4LCJhZmlpNTc0NzAiLDE2MDcsImFmaWk1NzUwNSIsMTcwMCwiYWZpaTU3NTA2IiwxNjYyLCJhZmlpNTc1MDciLDE2NzAsImFmaWk1NzUwOCIsMTY4OCwiYWZpaTU3NTA5IiwxNzExLCJhZmlpNTc1MTEiLDE2NTcsImFmaWk1NzUxMiIsMTY3MiwiYWZpaTU3NTEzIiwxNjgxLCJhZmlpNTc1MTQiLDE3MjIsImFmaWk1NzUxOSIsMTc0NiwiYWZpaTU3NTM0IiwxNzQ5LCJhZmlpNTc2MzYiLDgzNjIsImFmaWk1NzY0NSIsMTQ3MCwiYWZpaTU3NjU4IiwxNDc1LCJhZmlpNTc2NjQiLDE0ODgsImFmaWk1NzY2NSIsMTQ4OSwiYWZpaTU3NjY2IiwxNDkwLCJhZmlpNTc2NjciLDE0OTEsImFmaWk1NzY2OCIsMTQ5MiwiYWZpaTU3NjY5IiwxNDkzLCJhZmlpNTc2NzAiLDE0OTQsImFmaWk1NzY3MSIsMTQ5NSwiYWZpaTU3NjcyIiwxNDk2LCJhZmlpNTc2NzMiLDE0OTcsImFmaWk1NzY3NCIsMTQ5OCwiYWZpaTU3Njc1IiwxNDk5LCJhZmlpNTc2NzYiLDE1MDAsImFmaWk1NzY3NyIsMTUwMSwiYWZpaTU3Njc4IiwxNTAyLCJhZmlpNTc2NzkiLDE1MDMsImFmaWk1NzY4MCIsMTUwNCwiYWZpaTU3NjgxIiwxNTA1LCJhZmlpNTc2ODIiLDE1MDYsImFmaWk1NzY4MyIsMTUwNywiYWZpaTU3Njg0IiwxNTA4LCJhZmlpNTc2ODUiLDE1MDksImFmaWk1NzY4NiIsMTUxMCwiYWZpaTU3Njg3IiwxNTExLCJhZmlpNTc2ODgiLDE1MTIsImFmaWk1NzY4OSIsMTUxMywiYWZpaTU3NjkwIiwxNTE0LCJhZmlpNTc2OTQiLDY0Mjk4LCJhZmlpNTc2OTUiLDY0Mjk5LCJhZmlpNTc3MDAiLDY0MzMxLCJhZmlpNTc3MDUiLDY0Mjg3LCJhZmlpNTc3MTYiLDE1MjAsImFmaWk1NzcxNyIsMTUyMSwiYWZpaTU3NzE4IiwxNTIyLCJhZmlpNTc3MjMiLDY0MzA5LCJhZmlpNTc3OTMiLDE0NjAsImFmaWk1Nzc5NCIsMTQ2MSwiYWZpaTU3Nzk1IiwxNDYyLCJhZmlpNTc3OTYiLDE0NjcsImFmaWk1Nzc5NyIsMTQ2NCwiYWZpaTU3Nzk4IiwxNDYzLCJhZmlpNTc3OTkiLDE0NTYsImFmaWk1NzgwMCIsMTQ1OCwiYWZpaTU3ODAxIiwxNDU3LCJhZmlpNTc4MDIiLDE0NTksImFmaWk1NzgwMyIsMTQ3NCwiYWZpaTU3ODA0IiwxNDczLCJhZmlpNTc4MDYiLDE0NjUsImFmaWk1NzgwNyIsMTQ2OCwiYWZpaTU3ODM5IiwxNDY5LCJhZmlpNTc4NDEiLDE0NzEsImFmaWk1Nzg0MiIsMTQ3MiwiYWZpaTU3OTI5Iiw3MDAsImFmaWk2MTI0OCIsODQ1MywiYWZpaTYxMjg5Iiw4NDY3LCJhZmlpNjEzNTIiLDg0NzAsImFmaWk2MTU3MyIsODIzNiwiYWZpaTYxNTc0Iiw4MjM3LCJhZmlpNjE1NzUiLDgyMzgsImFmaWk2MTY2NCIsODIwNCwiYWZpaTYzMTY3IiwxNjQ1LCJhZmlpNjQ5MzciLDcwMSwiYWdyYXZlIiwyMjQsImFndWphcmF0aSIsMjY5MywiYWd1cm11a2hpIiwyNTY1LCJhaGlyYWdhbmEiLDEyMzU0LCJhaG9va2Fib3ZlIiw3ODQzLCJhaWJlbmdhbGkiLDI0NDgsImFpYm9wb21vZm8iLDEyNTc0LCJhaWRldmEiLDIzMjAsImFpZWN5cmlsbGljIiwxMjM3LCJhaWd1amFyYXRpIiwyNzA0LCJhaWd1cm11a2hpIiwyNTc2LCJhaW1hdHJhZ3VybXVraGkiLDI2MzIsImFpbmFyYWJpYyIsMTU5MywiYWluZmluYWxhcmFiaWMiLDY1MjI2LCJhaW5pbml0aWFsYXJhYmljIiw2NTIyNywiYWlubWVkaWFsYXJhYmljIiw2NTIyOCwiYWludmVydGVkYnJldmUiLDUxNSwiYWl2b3dlbHNpZ25iZW5nYWxpIiwyNTA0LCJhaXZvd2Vsc2lnbmRldmEiLDIzNzYsImFpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjAsImFrYXRha2FuYSIsMTI0NTAsImFrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTMsImFrb3JlYW4iLDEyNjIzLCJhbGVmIiwxNDg4LCJhbGVmYXJhYmljIiwxNTc1LCJhbGVmZGFnZXNoaGVicmV3Iiw2NDMwNCwiYWxlZmZpbmFsYXJhYmljIiw2NTE2NiwiYWxlZmhhbXphYWJvdmVhcmFiaWMiLDE1NzEsImFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU2LCJhbGVmaGFtemFiZWxvd2FyYWJpYyIsMTU3MywiYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUxNjAsImFsZWZoZWJyZXciLDE0ODgsImFsZWZsYW1lZGhlYnJldyIsNjQzMzUsImFsZWZtYWRkYWFib3ZlYXJhYmljIiwxNTcwLCJhbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTE1NCwiYWxlZm1ha3N1cmFhcmFiaWMiLDE2MDksImFsZWZtYWtzdXJhZmluYWxhcmFiaWMiLDY1MjY0LCJhbGVmbWFrc3VyYWluaXRpYWxhcmFiaWMiLDY1MjY3LCJhbGVmbWFrc3VyYW1lZGlhbGFyYWJpYyIsNjUyNjgsImFsZWZwYXRhaGhlYnJldyIsNjQzMDIsImFsZWZxYW1hdHNoZWJyZXciLDY0MzAzLCJhbGVwaCIsODUwMSwiYWxsZXF1YWwiLDg3ODAsImFscGhhIiw5NDUsImFscGhhdG9ub3MiLDk0MCwiYW1hY3JvbiIsMjU3LCJhbW9ub3NwYWNlIiw2NTM0NSwiYW1wZXJzYW5kIiwzOCwiYW1wZXJzYW5kbW9ub3NwYWNlIiw2NTI4NiwiYW1wZXJzYW5kc21hbGwiLDYzMjcwLCJhbXNxdWFyZSIsMTMyNTAsImFuYm9wb21vZm8iLDEyNTc4LCJhbmdib3BvbW9mbyIsMTI1ODAsImFuZ2JyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nYnJhY2tldHJpZ2h0IiwxMjI5NywiYW5na2hhbmtodXRoYWkiLDM2NzQsImFuZ2xlIiw4NzM2LCJhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NywiYW5nbGVicmFja2V0cmlnaHQiLDEyMjk3LCJhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4OCwiYW5nbGVsZWZ0Iiw5MDAxLCJhbmdsZXJpZ2h0Iiw5MDAyLCJhbmdzdHJvbSIsODQ5MSwiYW5vdGVsZWlhIiw5MDMsImFudWRhdHRhZGV2YSIsMjM4NiwiYW51c3ZhcmFiZW5nYWxpIiwyNDM0LCJhbnVzdmFyYWRldmEiLDIzMDYsImFudXN2YXJhZ3VqYXJhdGkiLDI2OTAsImFvZ29uZWsiLDI2MSwiYXBhYXRvc3F1YXJlIiwxMzA1NiwiYXBhcmVuIiw5MzcyLCJhcG9zdHJvcGhlYXJtZW5pYW4iLDEzNzAsImFwb3N0cm9waGVtb2QiLDcwMCwiYXBwbGUiLDYzNzQzLCJhcHByb2FjaGVzIiw4Nzg0LCJhcHByb3hlcXVhbCIsODc3NiwiYXBwcm94ZXF1YWxvcmltYWdlIiw4Nzg2LCJhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3NzMsImFyYWVhZWtvcmVhbiIsMTI2ODYsImFyYWVha29yZWFuIiwxMjY4NSwiYXJjIiw4OTc4LCJhcmlnaHRoYWxmcmluZyIsNzgzNCwiYXJpbmciLDIyOSwiYXJpbmdhY3V0ZSIsNTA3LCJhcmluZ2JlbG93Iiw3NjgxLCJhcnJvd2JvdGgiLDg1OTYsImFycm93ZGFzaGRvd24iLDg2NzUsImFycm93ZGFzaGxlZnQiLDg2NzIsImFycm93ZGFzaHJpZ2h0Iiw4Njc0LCJhcnJvd2Rhc2h1cCIsODY3MywiYXJyb3dkYmxib3RoIiw4NjYwLCJhcnJvd2RibGRvd24iLDg2NTksImFycm93ZGJsbGVmdCIsODY1NiwiYXJyb3dkYmxyaWdodCIsODY1OCwiYXJyb3dkYmx1cCIsODY1NywiYXJyb3dkb3duIiw4NTk1LCJhcnJvd2Rvd25sZWZ0Iiw4NjAxLCJhcnJvd2Rvd25yaWdodCIsODYwMCwiYXJyb3dkb3dud2hpdGUiLDg2ODEsImFycm93aGVhZGRvd25tb2QiLDcwOSwiYXJyb3doZWFkbGVmdG1vZCIsNzA2LCJhcnJvd2hlYWRyaWdodG1vZCIsNzA3LCJhcnJvd2hlYWR1cG1vZCIsNzA4LCJhcnJvd2hvcml6ZXgiLDYzNzE5LCJhcnJvd2xlZnQiLDg1OTIsImFycm93bGVmdGRibCIsODY1NiwiYXJyb3dsZWZ0ZGJsc3Ryb2tlIiw4NjUzLCJhcnJvd2xlZnRvdmVycmlnaHQiLDg2NDYsImFycm93bGVmdHdoaXRlIiw4Njc4LCJhcnJvd3JpZ2h0Iiw4NTk0LCJhcnJvd3JpZ2h0ZGJsc3Ryb2tlIiw4NjU1LCJhcnJvd3JpZ2h0aGVhdnkiLDEwMTQyLCJhcnJvd3JpZ2h0b3ZlcmxlZnQiLDg2NDQsImFycm93cmlnaHR3aGl0ZSIsODY4MCwiYXJyb3d0YWJsZWZ0Iiw4Njc2LCJhcnJvd3RhYnJpZ2h0Iiw4Njc3LCJhcnJvd3VwIiw4NTkzLCJhcnJvd3VwZG4iLDg1OTcsImFycm93dXBkbmJzZSIsODYxNiwiYXJyb3d1cGRvd25iYXNlIiw4NjE2LCJhcnJvd3VwbGVmdCIsODU5OCwiYXJyb3d1cGxlZnRvZmRvd24iLDg2NDUsImFycm93dXByaWdodCIsODU5OSwiYXJyb3d1cHdoaXRlIiw4Njc5LCJhcnJvd3ZlcnRleCIsNjM3MTgsImFzY2lpY2lyY3VtIiw5NCwiYXNjaWljaXJjdW1tb25vc3BhY2UiLDY1MzQyLCJhc2NpaXRpbGRlIiwxMjYsImFzY2lpdGlsZGVtb25vc3BhY2UiLDY1Mzc0LCJhc2NyaXB0Iiw1OTMsImFzY3JpcHR0dXJuZWQiLDU5NCwiYXNtYWxsaGlyYWdhbmEiLDEyMzUzLCJhc21hbGxrYXRha2FuYSIsMTI0NDksImFzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4MywiYXN0ZXJpc2siLDQyLCJhc3Rlcmlza2FsdG9uZWFyYWJpYyIsMTY0NSwiYXN0ZXJpc2thcmFiaWMiLDE2NDUsImFzdGVyaXNrbWF0aCIsODcyNywiYXN0ZXJpc2ttb25vc3BhY2UiLDY1MjkwLCJhc3Rlcmlza3NtYWxsIiw2NTEyMSwiYXN0ZXJpc20iLDgyNTgsImFzdXBlcmlvciIsNjMyMDksImFzeW1wdG90aWNhbGx5ZXF1YWwiLDg3NzEsImF0Iiw2NCwiYXRpbGRlIiwyMjcsImF0bW9ub3NwYWNlIiw2NTMxMiwiYXRzbWFsbCIsNjUxMzEsImF0dXJuZWQiLDU5MiwiYXViZW5nYWxpIiwyNDUyLCJhdWJvcG9tb2ZvIiwxMjU3NiwiYXVkZXZhIiwyMzI0LCJhdWd1amFyYXRpIiwyNzA4LCJhdWd1cm11a2hpIiwyNTgwLCJhdWxlbmd0aG1hcmtiZW5nYWxpIiwyNTE5LCJhdW1hdHJhZ3VybXVraGkiLDI2MzYsImF1dm93ZWxzaWduYmVuZ2FsaSIsMjUwOCwiYXV2b3dlbHNpZ25kZXZhIiwyMzgwLCJhdXZvd2Vsc2lnbmd1amFyYXRpIiwyNzY0LCJhdmFncmFoYWRldmEiLDIzNjUsImF5YmFybWVuaWFuIiwxMzc3LCJheWluIiwxNTA2LCJheWluYWx0b25laGVicmV3Iiw2NDI4OCwiYXlpbmhlYnJldyIsMTUwNiwiYiIsOTgsImJhYmVuZ2FsaSIsMjQ3NiwiYmFja3NsYXNoIiw5MiwiYmFja3NsYXNobW9ub3NwYWNlIiw2NTM0MCwiYmFkZXZhIiwyMzQ4LCJiYWd1amFyYXRpIiwyNzMyLCJiYWd1cm11a2hpIiwyNjA0LCJiYWhpcmFnYW5hIiwxMjQwMCwiYmFodHRoYWkiLDM2NDcsImJha2F0YWthbmEiLDEyNDk2LCJiYXIiLDEyNCwiYmFybW9ub3NwYWNlIiw2NTM3MiwiYmJvcG9tb2ZvIiwxMjU0OSwiYmNpcmNsZSIsOTQyNSwiYmRvdGFjY2VudCIsNzY4MywiYmRvdGJlbG93Iiw3Njg1LCJiZWFtZWRzaXh0ZWVudGhub3RlcyIsOTgzNiwiYmVjYXVzZSIsODc1NywiYmVjeXJpbGxpYyIsMTA3MywiYmVoYXJhYmljIiwxNTc2LCJiZWhmaW5hbGFyYWJpYyIsNjUxNjgsImJlaGluaXRpYWxhcmFiaWMiLDY1MTY5LCJiZWhpcmFnYW5hIiwxMjQwOSwiYmVobWVkaWFsYXJhYmljIiw2NTE3MCwiYmVobWVlbWluaXRpYWxhcmFiaWMiLDY0NjcxLCJiZWhtZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIwLCJiZWhub29uZmluYWxhcmFiaWMiLDY0NjIxLCJiZWthdGFrYW5hIiwxMjUwNSwiYmVuYXJtZW5pYW4iLDEzNzgsImJldCIsMTQ4OSwiYmV0YSIsOTQ2LCJiZXRhc3ltYm9sZ3JlZWsiLDk3NiwiYmV0ZGFnZXNoIiw2NDMwNSwiYmV0ZGFnZXNoaGVicmV3Iiw2NDMwNSwiYmV0aGVicmV3IiwxNDg5LCJiZXRyYWZlaGVicmV3Iiw2NDMzMiwiYmhhYmVuZ2FsaSIsMjQ3NywiYmhhZGV2YSIsMjM0OSwiYmhhZ3VqYXJhdGkiLDI3MzMsImJoYWd1cm11a2hpIiwyNjA1LCJiaG9vayIsNTk1LCJiaWhpcmFnYW5hIiwxMjQwMywiYmlrYXRha2FuYSIsMTI0OTksImJpbGFiaWFsY2xpY2siLDY2NCwiYmluZGlndXJtdWtoaSIsMjU2MiwiYmlydXNxdWFyZSIsMTMxMDUsImJsYWNrY2lyY2xlIiw5Njc5LCJibGFja2RpYW1vbmQiLDk2NzAsImJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGUiLDk2NjAsImJsYWNrbGVmdHBvaW50aW5ncG9pbnRlciIsOTY2OCwiYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZSIsOTY2NCwiYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQiLDEyMzA0LCJibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4MywiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMwNSwiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDg0LCJibGFja2xvd2VybGVmdHRyaWFuZ2xlIiw5Njk5LCJibGFja2xvd2VycmlnaHR0cmlhbmdsZSIsOTY5OCwiYmxhY2tyZWN0YW5nbGUiLDk2NDQsImJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXIiLDk2NTgsImJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlIiw5NjU0LCJibGFja3NtYWxsc3F1YXJlIiw5NjQyLCJibGFja3NtaWxpbmdmYWNlIiw5Nzg3LCJibGFja3NxdWFyZSIsOTYzMiwiYmxhY2tzdGFyIiw5NzMzLCJibGFja3VwcGVybGVmdHRyaWFuZ2xlIiw5NzAwLCJibGFja3VwcGVycmlnaHR0cmlhbmdsZSIsOTcwMSwiYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1MiwiYmxhY2t1cHBvaW50aW5ndHJpYW5nbGUiLDk2NTAsImJsYW5rIiw5MjUxLCJibGluZWJlbG93Iiw3Njg3LCJibG9jayIsOTYwOCwiYm1vbm9zcGFjZSIsNjUzNDYsImJvYmFpbWFpdGhhaSIsMzYxMCwiYm9oaXJhZ2FuYSIsMTI0MTIsImJva2F0YWthbmEiLDEyNTA4LCJicGFyZW4iLDkzNzMsImJxc3F1YXJlIiwxMzI1MSwiYnJhY2VleCIsNjM3MzIsImJyYWNlbGVmdCIsMTIzLCJicmFjZWxlZnRidCIsNjM3MzEsImJyYWNlbGVmdG1pZCIsNjM3MzAsImJyYWNlbGVmdG1vbm9zcGFjZSIsNjUzNzEsImJyYWNlbGVmdHNtYWxsIiw2NTExNSwiYnJhY2VsZWZ0dHAiLDYzNzI5LCJicmFjZWxlZnR2ZXJ0aWNhbCIsNjUwNzksImJyYWNlcmlnaHQiLDEyNSwiYnJhY2VyaWdodGJ0Iiw2Mzc0MiwiYnJhY2VyaWdodG1pZCIsNjM3NDEsImJyYWNlcmlnaHRtb25vc3BhY2UiLDY1MzczLCJicmFjZXJpZ2h0c21hbGwiLDY1MTE2LCJicmFjZXJpZ2h0dHAiLDYzNzQwLCJicmFjZXJpZ2h0dmVydGljYWwiLDY1MDgwLCJicmFja2V0bGVmdCIsOTEsImJyYWNrZXRsZWZ0YnQiLDYzNzI4LCJicmFja2V0bGVmdGV4Iiw2MzcyNywiYnJhY2tldGxlZnRtb25vc3BhY2UiLDY1MzM5LCJicmFja2V0bGVmdHRwIiw2MzcyNiwiYnJhY2tldHJpZ2h0Iiw5MywiYnJhY2tldHJpZ2h0YnQiLDYzNzM5LCJicmFja2V0cmlnaHRleCIsNjM3MzgsImJyYWNrZXRyaWdodG1vbm9zcGFjZSIsNjUzNDEsImJyYWNrZXRyaWdodHRwIiw2MzczNywiYnJldmUiLDcyOCwiYnJldmViZWxvd2NtYiIsODE0LCJicmV2ZWNtYiIsNzc0LCJicmV2ZWludmVydGVkYmVsb3djbWIiLDgxNSwiYnJldmVpbnZlcnRlZGNtYiIsNzg1LCJicmV2ZWludmVydGVkZG91YmxlY21iIiw4NjUsImJyaWRnZWJlbG93Y21iIiw4MTAsImJyaWRnZWludmVydGVkYmVsb3djbWIiLDgyNiwiYnJva2VuYmFyIiwxNjYsImJzdHJva2UiLDM4NCwiYnN1cGVyaW9yIiw2MzIxMCwiYnRvcGJhciIsMzg3LCJidWhpcmFnYW5hIiwxMjQwNiwiYnVrYXRha2FuYSIsMTI1MDIsImJ1bGxldCIsODIyNiwiYnVsbGV0aW52ZXJzZSIsOTY4OCwiYnVsbGV0b3BlcmF0b3IiLDg3MjksImJ1bGxzZXllIiw5Njc4LCJjIiw5OSwiY2Fhcm1lbmlhbiIsMTM5MCwiY2FiZW5nYWxpIiwyNDU4LCJjYWN1dGUiLDI2MywiY2FkZXZhIiwyMzMwLCJjYWd1amFyYXRpIiwyNzE0LCJjYWd1cm11a2hpIiwyNTg2LCJjYWxzcXVhcmUiLDEzMTkyLCJjYW5kcmFiaW5kdWJlbmdhbGkiLDI0MzMsImNhbmRyYWJpbmR1Y21iIiw3ODQsImNhbmRyYWJpbmR1ZGV2YSIsMjMwNSwiY2FuZHJhYmluZHVndWphcmF0aSIsMjY4OSwiY2Fwc2xvY2siLDg2ODIsImNhcmVvZiIsODQ1MywiY2Fyb24iLDcxMSwiY2Fyb25iZWxvd2NtYiIsODEyLCJjYXJvbmNtYiIsNzgwLCJjYXJyaWFnZXJldHVybiIsODYyOSwiY2JvcG9tb2ZvIiwxMjU2OCwiY2Nhcm9uIiwyNjksImNjZWRpbGxhIiwyMzEsImNjZWRpbGxhYWN1dGUiLDc2ODksImNjaXJjbGUiLDk0MjYsImNjaXJjdW1mbGV4IiwyNjUsImNjdXJsIiw1OTcsImNkb3QiLDI2NywiY2RvdGFjY2VudCIsMjY3LCJjZHNxdWFyZSIsMTMyNTMsImNlZGlsbGEiLDE4NCwiY2VkaWxsYWNtYiIsODA3LCJjZW50IiwxNjIsImNlbnRpZ3JhZGUiLDg0NTEsImNlbnRpbmZlcmlvciIsNjMxOTksImNlbnRtb25vc3BhY2UiLDY1NTA0LCJjZW50b2xkc3R5bGUiLDYzMzk0LCJjZW50c3VwZXJpb3IiLDYzMjAwLCJjaGFhcm1lbmlhbiIsMTQwMSwiY2hhYmVuZ2FsaSIsMjQ1OSwiY2hhZGV2YSIsMjMzMSwiY2hhZ3VqYXJhdGkiLDI3MTUsImNoYWd1cm11a2hpIiwyNTg3LCJjaGJvcG9tb2ZvIiwxMjU2NCwiY2hlYWJraGFzaWFuY3lyaWxsaWMiLDEyMTMsImNoZWNrbWFyayIsMTAwMDMsImNoZWN5cmlsbGljIiwxMDk1LCJjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYyIsMTIxNSwiY2hlZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDcsImNoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNjksImNoZWhhcm1lbmlhbiIsMTM5NSwiY2hla2hha2Fzc2lhbmN5cmlsbGljIiwxMjI4LCJjaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMjA5LCJjaGkiLDk2NywiY2hpZXVjaGFjaXJjbGVrb3JlYW4iLDEyOTE5LCJjaGlldWNoYXBhcmVua29yZWFuIiwxMjgyMywiY2hpZXVjaGNpcmNsZWtvcmVhbiIsMTI5MDUsImNoaWV1Y2hrb3JlYW4iLDEyNjE4LCJjaGlldWNocGFyZW5rb3JlYW4iLDEyODA5LCJjaG9jaGFuZ3RoYWkiLDM1OTQsImNob2NoYW50aGFpIiwzNTkyLCJjaG9jaGluZ3RoYWkiLDM1OTMsImNob2Nob2V0aGFpIiwzNTk2LCJjaG9vayIsMzkyLCJjaWV1Y2FjaXJjbGVrb3JlYW4iLDEyOTE4LCJjaWV1Y2FwYXJlbmtvcmVhbiIsMTI4MjIsImNpZXVjY2lyY2xla29yZWFuIiwxMjkwNCwiY2lldWNrb3JlYW4iLDEyNjE2LCJjaWV1Y3BhcmVua29yZWFuIiwxMjgwOCwiY2lldWN1cGFyZW5rb3JlYW4iLDEyODI4LCJjaXJjbGUiLDk2NzUsImNpcmNsZWNvcHlydCIsMTY5LCJjaXJjbGVtdWx0aXBseSIsODg1NSwiY2lyY2xlb3QiLDg4NTcsImNpcmNsZXBsdXMiLDg4NTMsImNpcmNsZXBvc3RhbG1hcmsiLDEyMzQyLCJjaXJjbGV3aXRobGVmdGhhbGZibGFjayIsOTY4MCwiY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrIiw5NjgxLCJjaXJjdW1mbGV4Iiw3MTAsImNpcmN1bWZsZXhiZWxvd2NtYiIsODEzLCJjaXJjdW1mbGV4Y21iIiw3NzAsImNsZWFyIiw4OTk5LCJjbGlja2FsdmVvbGFyIiw0NTAsImNsaWNrZGVudGFsIiw0NDgsImNsaWNrbGF0ZXJhbCIsNDQ5LCJjbGlja3JldHJvZmxleCIsNDUxLCJjbHViIiw5ODI3LCJjbHVic3VpdGJsYWNrIiw5ODI3LCJjbHVic3VpdHdoaXRlIiw5ODMxLCJjbWN1YmVkc3F1YXJlIiwxMzIyMCwiY21vbm9zcGFjZSIsNjUzNDcsImNtc3F1YXJlZHNxdWFyZSIsMTMyMTYsImNvYXJtZW5pYW4iLDE0MDksImNvbG9uIiw1OCwiY29sb25tb25ldGFyeSIsODM1MywiY29sb25tb25vc3BhY2UiLDY1MzA2LCJjb2xvbnNpZ24iLDgzNTMsImNvbG9uc21hbGwiLDY1MTA5LCJjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kIiw3MjEsImNvbG9udHJpYW5ndWxhcm1vZCIsNzIwLCJjb21tYSIsNDQsImNvbW1hYWJvdmVjbWIiLDc4NywiY29tbWFhYm92ZXJpZ2h0Y21iIiw3ODksImNvbW1hYWNjZW50Iiw2MzE3MSwiY29tbWFhcmFiaWMiLDE1NDgsImNvbW1hYXJtZW5pYW4iLDEzNzMsImNvbW1haW5mZXJpb3IiLDYzMjAxLCJjb21tYW1vbm9zcGFjZSIsNjUyOTIsImNvbW1hcmV2ZXJzZWRhYm92ZWNtYiIsNzg4LCJjb21tYXJldmVyc2VkbW9kIiw3MDEsImNvbW1hc21hbGwiLDY1MTA0LCJjb21tYXN1cGVyaW9yIiw2MzIwMiwiY29tbWF0dXJuZWRhYm92ZWNtYiIsNzg2LCJjb21tYXR1cm5lZG1vZCIsNjk5LCJjb21wYXNzIiw5Nzg4LCJjb25ncnVlbnQiLDg3NzMsImNvbnRvdXJpbnRlZ3JhbCIsODc1MCwiY29udHJvbCIsODk2MywiY29udHJvbEFDSyIsNiwiY29udHJvbEJFTCIsNywiY29udHJvbEJTIiw4LCJjb250cm9sQ0FOIiwyNCwiY29udHJvbENSIiwxMywiY29udHJvbERDMSIsMTcsImNvbnRyb2xEQzIiLDE4LCJjb250cm9sREMzIiwxOSwiY29udHJvbERDNCIsMjAsImNvbnRyb2xERUwiLDEyNywiY29udHJvbERMRSIsMTYsImNvbnRyb2xFTSIsMjUsImNvbnRyb2xFTlEiLDUsImNvbnRyb2xFT1QiLDQsImNvbnRyb2xFU0MiLDI3LCJjb250cm9sRVRCIiwyMywiY29udHJvbEVUWCIsMywiY29udHJvbEZGIiwxMiwiY29udHJvbEZTIiwyOCwiY29udHJvbEdTIiwyOSwiY29udHJvbEhUIiw5LCJjb250cm9sTEYiLDEwLCJjb250cm9sTkFLIiwyMSwiY29udHJvbE5VTEwiLDAsImNvbnRyb2xSUyIsMzAsImNvbnRyb2xTSSIsMTUsImNvbnRyb2xTTyIsMTQsImNvbnRyb2xTT1QiLDIsImNvbnRyb2xTVFgiLDEsImNvbnRyb2xTVUIiLDI2LCJjb250cm9sU1lOIiwyMiwiY29udHJvbFVTIiwzMSwiY29udHJvbFZUIiwxMSwiY29weXJpZ2h0IiwxNjksImNvcHlyaWdodHNhbnMiLDYzNzIxLCJjb3B5cmlnaHRzZXJpZiIsNjMxOTMsImNvcm5lcmJyYWNrZXRsZWZ0IiwxMjMwMCwiY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGgiLDY1Mzc4LCJjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4OSwiY29ybmVyYnJhY2tldHJpZ2h0IiwxMjMwMSwiY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoIiw2NTM3OSwiY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkwLCJjb3Jwb3JhdGlvbnNxdWFyZSIsMTMxODMsImNvc3F1YXJlIiwxMzI1NSwiY292ZXJrZ3NxdWFyZSIsMTMyNTQsImNwYXJlbiIsOTM3NCwiY3J1emVpcm8iLDgzNTQsImNzdHJldGNoZWQiLDY2MywiY3VybHlhbmQiLDg5MTEsImN1cmx5b3IiLDg5MTAsImN1cnJlbmN5IiwxNjQsImN5ckJyZXZlIiw2MzE4NSwiY3lyRmxleCIsNjMxODYsImN5cmJyZXZlIiw2MzE4OCwiY3lyZmxleCIsNjMxODksImQiLDEwMCwiZGFhcm1lbmlhbiIsMTM4MCwiZGFiZW5nYWxpIiwyNDcwLCJkYWRhcmFiaWMiLDE1OTAsImRhZGV2YSIsMjM0MiwiZGFkZmluYWxhcmFiaWMiLDY1MjE0LCJkYWRpbml0aWFsYXJhYmljIiw2NTIxNSwiZGFkbWVkaWFsYXJhYmljIiw2NTIxNiwiZGFnZXNoIiwxNDY4LCJkYWdlc2hoZWJyZXciLDE0NjgsImRhZ2dlciIsODIyNCwiZGFnZ2VyZGJsIiw4MjI1LCJkYWd1amFyYXRpIiwyNzI2LCJkYWd1cm11a2hpIiwyNTk4LCJkYWhpcmFnYW5hIiwxMjM4NCwiZGFrYXRha2FuYSIsMTI0ODAsImRhbGFyYWJpYyIsMTU4MywiZGFsZXQiLDE0OTEsImRhbGV0ZGFnZXNoIiw2NDMwNywiZGFsZXRkYWdlc2hoZWJyZXciLDY0MzA3LCJkYWxldGhlYnJldyIsMTQ5MSwiZGFsZmluYWxhcmFiaWMiLDY1MTk0LCJkYW1tYWFyYWJpYyIsMTYxNSwiZGFtbWFsb3dhcmFiaWMiLDE2MTUsImRhbW1hdGFuYWx0b25lYXJhYmljIiwxNjEyLCJkYW1tYXRhbmFyYWJpYyIsMTYxMiwiZGFuZGEiLDI0MDQsImRhcmdhaGVicmV3IiwxNDQ3LCJkYXJnYWxlZnRoZWJyZXciLDE0NDcsImRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1NywiZGJsR3JhdmUiLDYzMTg3LCJkYmxhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5OCwiZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NSwiZGJsYW5nbGVicmFja2V0cmlnaHQiLDEyMjk5LCJkYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4NiwiZGJsYXJjaGludmVydGVkYmVsb3djbWIiLDgxMSwiZGJsYXJyb3dsZWZ0Iiw4NjYwLCJkYmxhcnJvd3JpZ2h0Iiw4NjU4LCJkYmxkYW5kYSIsMjQwNSwiZGJsZ3JhdmUiLDYzMTkwLCJkYmxncmF2ZWNtYiIsNzgzLCJkYmxpbnRlZ3JhbCIsODc0OCwiZGJsbG93bGluZSIsODIxNSwiZGJsbG93bGluZWNtYiIsODE5LCJkYmxvdmVybGluZWNtYiIsODMxLCJkYmxwcmltZW1vZCIsNjk4LCJkYmx2ZXJ0aWNhbGJhciIsODIxNCwiZGJsdmVydGljYWxsaW5lYWJvdmVjbWIiLDc4MiwiZGJvcG9tb2ZvIiwxMjU1MywiZGJzcXVhcmUiLDEzMjU2LCJkY2Fyb24iLDI3MSwiZGNlZGlsbGEiLDc2OTcsImRjaXJjbGUiLDk0MjcsImRjaXJjdW1mbGV4YmVsb3ciLDc2OTksImRjcm9hdCIsMjczLCJkZGFiZW5nYWxpIiwyNDY1LCJkZGFkZXZhIiwyMzM3LCJkZGFndWphcmF0aSIsMjcyMSwiZGRhZ3VybXVraGkiLDI1OTMsImRkYWxhcmFiaWMiLDE2NzIsImRkYWxmaW5hbGFyYWJpYyIsNjQzOTMsImRkZGhhZGV2YSIsMjM5NiwiZGRoYWJlbmdhbGkiLDI0NjYsImRkaGFkZXZhIiwyMzM4LCJkZGhhZ3VqYXJhdGkiLDI3MjIsImRkaGFndXJtdWtoaSIsMjU5NCwiZGRvdGFjY2VudCIsNzY5MSwiZGRvdGJlbG93Iiw3NjkzLCJkZWNpbWFsc2VwYXJhdG9yYXJhYmljIiwxNjQzLCJkZWNpbWFsc2VwYXJhdG9ycGVyc2lhbiIsMTY0MywiZGVjeXJpbGxpYyIsMTA3NiwiZGVncmVlIiwxNzYsImRlaGloZWJyZXciLDE0NTMsImRlaGlyYWdhbmEiLDEyMzkxLCJkZWljb3B0aWMiLDEwMDcsImRla2F0YWthbmEiLDEyNDg3LCJkZWxldGVsZWZ0Iiw5MDAzLCJkZWxldGVyaWdodCIsODk5OCwiZGVsdGEiLDk0OCwiZGVsdGF0dXJuZWQiLDM5NywiZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGkiLDI1NTIsImRlemgiLDY3NiwiZGhhYmVuZ2FsaSIsMjQ3MSwiZGhhZGV2YSIsMjM0MywiZGhhZ3VqYXJhdGkiLDI3MjcsImRoYWd1cm11a2hpIiwyNTk5LCJkaG9vayIsNTk5LCJkaWFseXRpa2F0b25vcyIsOTAxLCJkaWFseXRpa2F0b25vc2NtYiIsODM2LCJkaWFtb25kIiw5ODMwLCJkaWFtb25kc3VpdHdoaXRlIiw5ODI2LCJkaWVyZXNpcyIsMTY4LCJkaWVyZXNpc2FjdXRlIiw2MzE5MSwiZGllcmVzaXNiZWxvd2NtYiIsODA0LCJkaWVyZXNpc2NtYiIsNzc2LCJkaWVyZXNpc2dyYXZlIiw2MzE5MiwiZGllcmVzaXN0b25vcyIsOTAxLCJkaWhpcmFnYW5hIiwxMjM4NiwiZGlrYXRha2FuYSIsMTI0ODIsImRpdHRvbWFyayIsMTIyOTEsImRpdmlkZSIsMjQ3LCJkaXZpZGVzIiw4NzM5LCJkaXZpc2lvbnNsYXNoIiw4NzI1LCJkamVjeXJpbGxpYyIsMTEwNiwiZGtzaGFkZSIsOTYxOSwiZGxpbmViZWxvdyIsNzY5NSwiZGxzcXVhcmUiLDEzMjA3LCJkbWFjcm9uIiwyNzMsImRtb25vc3BhY2UiLDY1MzQ4LCJkbmJsb2NrIiw5NjA0LCJkb2NoYWRhdGhhaSIsMzU5OCwiZG9kZWt0aGFpIiwzNjA0LCJkb2hpcmFnYW5hIiwxMjM5MywiZG9rYXRha2FuYSIsMTI0ODksImRvbGxhciIsMzYsImRvbGxhcmluZmVyaW9yIiw2MzIwMywiZG9sbGFybW9ub3NwYWNlIiw2NTI4NCwiZG9sbGFyb2xkc3R5bGUiLDYzMjY4LCJkb2xsYXJzbWFsbCIsNjUxMjksImRvbGxhcnN1cGVyaW9yIiw2MzIwNCwiZG9uZyIsODM2MywiZG9ydXNxdWFyZSIsMTMwOTQsImRvdGFjY2VudCIsNzI5LCJkb3RhY2NlbnRjbWIiLDc3NSwiZG90YmVsb3djbWIiLDgwMywiZG90YmVsb3djb21iIiw4MDMsImRvdGthdGFrYW5hIiwxMjUzOSwiZG90bGVzc2kiLDMwNSwiZG90bGVzc2oiLDYzMTY2LCJkb3RsZXNzanN0cm9rZWhvb2siLDY0NCwiZG90bWF0aCIsODkwMSwiZG90dGVkY2lyY2xlIiw5Njc2LCJkb3VibGV5b2RwYXRhaCIsNjQyODcsImRvdWJsZXlvZHBhdGFoaGVicmV3Iiw2NDI4NywiZG93bnRhY2tiZWxvd2NtYiIsNzk4LCJkb3dudGFja21vZCIsNzI1LCJkcGFyZW4iLDkzNzUsImRzdXBlcmlvciIsNjMyMTEsImR0YWlsIiw1OTgsImR0b3BiYXIiLDM5NiwiZHVoaXJhZ2FuYSIsMTIzODksImR1a2F0YWthbmEiLDEyNDg1LCJkeiIsNDk5LCJkemFsdG9uZSIsNjc1LCJkemNhcm9uIiw0NTQsImR6Y3VybCIsNjc3LCJkemVhYmtoYXNpYW5jeXJpbGxpYyIsMTI0OSwiZHplY3lyaWxsaWMiLDExMDksImR6aGVjeXJpbGxpYyIsMTExOSwiZSIsMTAxLCJlYWN1dGUiLDIzMywiZWFydGgiLDk3OTMsImViZW5nYWxpIiwyNDQ3LCJlYm9wb21vZm8iLDEyNTcyLCJlYnJldmUiLDI3NywiZWNhbmRyYWRldmEiLDIzMTcsImVjYW5kcmFndWphcmF0aSIsMjcwMSwiZWNhbmRyYXZvd2Vsc2lnbmRldmEiLDIzNzMsImVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aSIsMjc1NywiZWNhcm9uIiwyODMsImVjZWRpbGxhYnJldmUiLDc3MDksImVjaGFybWVuaWFuIiwxMzgxLCJlY2h5aXduYXJtZW5pYW4iLDE0MTUsImVjaXJjbGUiLDk0MjgsImVjaXJjdW1mbGV4IiwyMzQsImVjaXJjdW1mbGV4YWN1dGUiLDc4NzEsImVjaXJjdW1mbGV4YmVsb3ciLDc3MDUsImVjaXJjdW1mbGV4ZG90YmVsb3ciLDc4NzksImVjaXJjdW1mbGV4Z3JhdmUiLDc4NzMsImVjaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODc1LCJlY2lyY3VtZmxleHRpbGRlIiw3ODc3LCJlY3lyaWxsaWMiLDExMDgsImVkYmxncmF2ZSIsNTE3LCJlZGV2YSIsMjMxOSwiZWRpZXJlc2lzIiwyMzUsImVkb3QiLDI3OSwiZWRvdGFjY2VudCIsMjc5LCJlZG90YmVsb3ciLDc4NjUsImVlZ3VybXVraGkiLDI1NzUsImVlbWF0cmFndXJtdWtoaSIsMjYzMSwiZWZjeXJpbGxpYyIsMTA5MiwiZWdyYXZlIiwyMzIsImVndWphcmF0aSIsMjcwMywiZWhhcm1lbmlhbiIsMTM4MywiZWhib3BvbW9mbyIsMTI1NzMsImVoaXJhZ2FuYSIsMTIzNjAsImVob29rYWJvdmUiLDc4NjcsImVpYm9wb21vZm8iLDEyNTc1LCJlaWdodCIsNTYsImVpZ2h0YXJhYmljIiwxNjQwLCJlaWdodGJlbmdhbGkiLDI1NDIsImVpZ2h0Y2lyY2xlIiw5MzE5LCJlaWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI5LCJlaWdodGRldmEiLDI0MTQsImVpZ2h0ZWVuY2lyY2xlIiw5MzI5LCJlaWdodGVlbnBhcmVuIiw5MzQ5LCJlaWdodGVlbnBlcmlvZCIsOTM2OSwiZWlnaHRndWphcmF0aSIsMjc5OCwiZWlnaHRndXJtdWtoaSIsMjY3MCwiZWlnaHRoYWNrYXJhYmljIiwxNjQwLCJlaWdodGhhbmd6aG91IiwxMjMyOCwiZWlnaHRobm90ZWJlYW1lZCIsOTgzNSwiZWlnaHRpZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOSwiZWlnaHRpbmZlcmlvciIsODMyOCwiZWlnaHRtb25vc3BhY2UiLDY1MzA0LCJlaWdodG9sZHN0eWxlIiw2MzI4OCwiZWlnaHRwYXJlbiIsOTMzOSwiZWlnaHRwZXJpb2QiLDkzNTksImVpZ2h0cGVyc2lhbiIsMTc4NCwiZWlnaHRyb21hbiIsODU2NywiZWlnaHRzdXBlcmlvciIsODMxMiwiZWlnaHR0aGFpIiwzNjcyLCJlaW52ZXJ0ZWRicmV2ZSIsNTE5LCJlaW90aWZpZWRjeXJpbGxpYyIsMTEyNSwiZWthdGFrYW5hIiwxMjQ1NiwiZWthdGFrYW5haGFsZndpZHRoIiw2NTM5NiwiZWtvbmthcmd1cm11a2hpIiwyNjc2LCJla29yZWFuIiwxMjYyOCwiZWxjeXJpbGxpYyIsMTA4MywiZWxlbWVudCIsODcxMiwiZWxldmVuY2lyY2xlIiw5MzIyLCJlbGV2ZW5wYXJlbiIsOTM0MiwiZWxldmVucGVyaW9kIiw5MzYyLCJlbGV2ZW5yb21hbiIsODU3MCwiZWxsaXBzaXMiLDgyMzAsImVsbGlwc2lzdmVydGljYWwiLDg5NDIsImVtYWNyb24iLDI3NSwiZW1hY3JvbmFjdXRlIiw3NzAzLCJlbWFjcm9uZ3JhdmUiLDc3MDEsImVtY3lyaWxsaWMiLDEwODQsImVtZGFzaCIsODIxMiwiZW1kYXNodmVydGljYWwiLDY1MDczLCJlbW9ub3NwYWNlIiw2NTM0OSwiZW1waGFzaXNtYXJrYXJtZW5pYW4iLDEzNzEsImVtcHR5c2V0Iiw4NzA5LCJlbmJvcG9tb2ZvIiwxMjU3OSwiZW5jeXJpbGxpYyIsMTA4NSwiZW5kYXNoIiw4MjExLCJlbmRhc2h2ZXJ0aWNhbCIsNjUwNzQsImVuZGVzY2VuZGVyY3lyaWxsaWMiLDExODcsImVuZyIsMzMxLCJlbmdib3BvbW9mbyIsMTI1ODEsImVuZ2hlY3lyaWxsaWMiLDExODksImVuaG9va2N5cmlsbGljIiwxMjI0LCJlbnNwYWNlIiw4MTk0LCJlb2dvbmVrIiwyODEsImVva29yZWFuIiwxMjYyNywiZW9wZW4iLDYwMywiZW9wZW5jbG9zZWQiLDY2NiwiZW9wZW5yZXZlcnNlZCIsNjA0LCJlb3BlbnJldmVyc2VkY2xvc2VkIiw2MDYsImVvcGVucmV2ZXJzZWRob29rIiw2MDUsImVwYXJlbiIsOTM3NiwiZXBzaWxvbiIsOTQ5LCJlcHNpbG9udG9ub3MiLDk0MSwiZXF1YWwiLDYxLCJlcXVhbG1vbm9zcGFjZSIsNjUzMDksImVxdWFsc21hbGwiLDY1MTI2LCJlcXVhbHN1cGVyaW9yIiw4MzE2LCJlcXVpdmFsZW5jZSIsODgwMSwiZXJib3BvbW9mbyIsMTI1ODIsImVyY3lyaWxsaWMiLDEwODgsImVyZXZlcnNlZCIsNjAwLCJlcmV2ZXJzZWRjeXJpbGxpYyIsMTEwMSwiZXNjeXJpbGxpYyIsMTA4OSwiZXNkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NSwiZXNoIiw2NDMsImVzaGN1cmwiLDY0NiwiZXNob3J0ZGV2YSIsMjMxOCwiZXNob3J0dm93ZWxzaWduZGV2YSIsMjM3NCwiZXNocmV2ZXJzZWRsb29wIiw0MjYsImVzaHNxdWF0cmV2ZXJzZWQiLDY0NSwiZXNtYWxsaGlyYWdhbmEiLDEyMzU5LCJlc21hbGxrYXRha2FuYSIsMTI0NTUsImVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NiwiZXN0aW1hdGVkIiw4NDk0LCJlc3VwZXJpb3IiLDYzMjEyLCJldGEiLDk1MSwiZXRhcm1lbmlhbiIsMTM4NCwiZXRhdG9ub3MiLDk0MiwiZXRoIiwyNDAsImV0aWxkZSIsNzg2OSwiZXRpbGRlYmVsb3ciLDc3MDcsImV0bmFodGFmb3VraGhlYnJldyIsMTQyNSwiZXRuYWh0YWZvdWtobGVmdGhlYnJldyIsMTQyNSwiZXRuYWh0YWhlYnJldyIsMTQyNSwiZXRuYWh0YWxlZnRoZWJyZXciLDE0MjUsImV0dXJuZWQiLDQ3NywiZXVrb3JlYW4iLDEyNjQxLCJldXJvIiw4MzY0LCJldm93ZWxzaWduYmVuZ2FsaSIsMjUwMywiZXZvd2Vsc2lnbmRldmEiLDIzNzUsImV2b3dlbHNpZ25ndWphcmF0aSIsMjc1OSwiZXhjbGFtIiwzMywiZXhjbGFtYXJtZW5pYW4iLDEzNzIsImV4Y2xhbWRibCIsODI1MiwiZXhjbGFtZG93biIsMTYxLCJleGNsYW1kb3duc21hbGwiLDYzMzkzLCJleGNsYW1tb25vc3BhY2UiLDY1MjgxLCJleGNsYW1zbWFsbCIsNjMyNjUsImV4aXN0ZW50aWFsIiw4NzA3LCJlemgiLDY1OCwiZXpoY2Fyb24iLDQ5NSwiZXpoY3VybCIsNjU5LCJlemhyZXZlcnNlZCIsNDQxLCJlemh0YWlsIiw0NDIsImYiLDEwMiwiZmFkZXZhIiwyMzk4LCJmYWd1cm11a2hpIiwyNjU0LCJmYWhyZW5oZWl0Iiw4NDU3LCJmYXRoYWFyYWJpYyIsMTYxNCwiZmF0aGFsb3dhcmFiaWMiLDE2MTQsImZhdGhhdGFuYXJhYmljIiwxNjExLCJmYm9wb21vZm8iLDEyNTUyLCJmY2lyY2xlIiw5NDI5LCJmZG90YWNjZW50Iiw3NzExLCJmZWhhcmFiaWMiLDE2MDEsImZlaGFybWVuaWFuIiwxNDE0LCJmZWhmaW5hbGFyYWJpYyIsNjUyMzQsImZlaGluaXRpYWxhcmFiaWMiLDY1MjM1LCJmZWhtZWRpYWxhcmFiaWMiLDY1MjM2LCJmZWljb3B0aWMiLDk5NywiZmVtYWxlIiw5NzkyLCJmZiIsNjQyNTYsImZfZiIsNjQyNTYsImZmaSIsNjQyNTksImZfZl9pIiw2NDI1OSwiZmZsIiw2NDI2MCwiZl9mX2wiLDY0MjYwLCJmaSIsNjQyNTcsImZfaSIsNjQyNTcsImZpZnRlZW5jaXJjbGUiLDkzMjYsImZpZnRlZW5wYXJlbiIsOTM0NiwiZmlmdGVlbnBlcmlvZCIsOTM2NiwiZmlndXJlZGFzaCIsODIxMCwiZmlsbGVkYm94Iiw5NjMyLCJmaWxsZWRyZWN0Iiw5NjQ0LCJmaW5hbGthZiIsMTQ5OCwiZmluYWxrYWZkYWdlc2giLDY0MzE0LCJmaW5hbGthZmRhZ2VzaGhlYnJldyIsNjQzMTQsImZpbmFsa2FmaGVicmV3IiwxNDk4LCJmaW5hbG1lbSIsMTUwMSwiZmluYWxtZW1oZWJyZXciLDE1MDEsImZpbmFsbnVuIiwxNTAzLCJmaW5hbG51bmhlYnJldyIsMTUwMywiZmluYWxwZSIsMTUwNywiZmluYWxwZWhlYnJldyIsMTUwNywiZmluYWx0c2FkaSIsMTUwOSwiZmluYWx0c2FkaWhlYnJldyIsMTUwOSwiZmlyc3R0b25lY2hpbmVzZSIsNzEzLCJmaXNoZXllIiw5NjczLCJmaXRhY3lyaWxsaWMiLDExMzksImZpdmUiLDUzLCJmaXZlYXJhYmljIiwxNjM3LCJmaXZlYmVuZ2FsaSIsMjUzOSwiZml2ZWNpcmNsZSIsOTMxNiwiZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI2LCJmaXZlZGV2YSIsMjQxMSwiZml2ZWVpZ2h0aHMiLDg1NDEsImZpdmVndWphcmF0aSIsMjc5NSwiZml2ZWd1cm11a2hpIiwyNjY3LCJmaXZlaGFja2FyYWJpYyIsMTYzNywiZml2ZWhhbmd6aG91IiwxMjMyNSwiZml2ZWlkZW9ncmFwaGljcGFyZW4iLDEyODM2LCJmaXZlaW5mZXJpb3IiLDgzMjUsImZpdmVtb25vc3BhY2UiLDY1MzAxLCJmaXZlb2xkc3R5bGUiLDYzMjg1LCJmaXZlcGFyZW4iLDkzMzYsImZpdmVwZXJpb2QiLDkzNTYsImZpdmVwZXJzaWFuIiwxNzgxLCJmaXZlcm9tYW4iLDg1NjQsImZpdmVzdXBlcmlvciIsODMwOSwiZml2ZXRoYWkiLDM2NjksImZsIiw2NDI1OCwiZl9sIiw2NDI1OCwiZmxvcmluIiw0MDIsImZtb25vc3BhY2UiLDY1MzUwLCJmbXNxdWFyZSIsMTMyMDksImZvZmFudGhhaSIsMzYxNSwiZm9mYXRoYWkiLDM2MTMsImZvbmdtYW50aGFpIiwzNjYzLCJmb3JhbGwiLDg3MDQsImZvdXIiLDUyLCJmb3VyYXJhYmljIiwxNjM2LCJmb3VyYmVuZ2FsaSIsMjUzOCwiZm91cmNpcmNsZSIsOTMxNSwiZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI1LCJmb3VyZGV2YSIsMjQxMCwiZm91cmd1amFyYXRpIiwyNzk0LCJmb3VyZ3VybXVraGkiLDI2NjYsImZvdXJoYWNrYXJhYmljIiwxNjM2LCJmb3VyaGFuZ3pob3UiLDEyMzI0LCJmb3VyaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzUsImZvdXJpbmZlcmlvciIsODMyNCwiZm91cm1vbm9zcGFjZSIsNjUzMDAsImZvdXJudW1lcmF0b3JiZW5nYWxpIiwyNTUxLCJmb3Vyb2xkc3R5bGUiLDYzMjg0LCJmb3VycGFyZW4iLDkzMzUsImZvdXJwZXJpb2QiLDkzNTUsImZvdXJwZXJzaWFuIiwxNzgwLCJmb3Vycm9tYW4iLDg1NjMsImZvdXJzdXBlcmlvciIsODMwOCwiZm91cnRlZW5jaXJjbGUiLDkzMjUsImZvdXJ0ZWVucGFyZW4iLDkzNDUsImZvdXJ0ZWVucGVyaW9kIiw5MzY1LCJmb3VydGhhaSIsMzY2OCwiZm91cnRodG9uZWNoaW5lc2UiLDcxNSwiZnBhcmVuIiw5Mzc3LCJmcmFjdGlvbiIsODI2MCwiZnJhbmMiLDgzNTUsImciLDEwMywiZ2FiZW5nYWxpIiwyNDU1LCJnYWN1dGUiLDUwMSwiZ2FkZXZhIiwyMzI3LCJnYWZhcmFiaWMiLDE3MTEsImdhZmZpbmFsYXJhYmljIiw2NDQwMywiZ2FmaW5pdGlhbGFyYWJpYyIsNjQ0MDQsImdhZm1lZGlhbGFyYWJpYyIsNjQ0MDUsImdhZ3VqYXJhdGkiLDI3MTEsImdhZ3VybXVraGkiLDI1ODMsImdhaGlyYWdhbmEiLDEyMzY0LCJnYWthdGFrYW5hIiwxMjQ2MCwiZ2FtbWEiLDk0NywiZ2FtbWFsYXRpbnNtYWxsIiw2MTEsImdhbW1hc3VwZXJpb3IiLDczNiwiZ2FuZ2lhY29wdGljIiwxMDAzLCJnYm9wb21vZm8iLDEyNTU3LCJnYnJldmUiLDI4NywiZ2Nhcm9uIiw0ODcsImdjZWRpbGxhIiwyOTEsImdjaXJjbGUiLDk0MzAsImdjaXJjdW1mbGV4IiwyODUsImdjb21tYWFjY2VudCIsMjkxLCJnZG90IiwyODksImdkb3RhY2NlbnQiLDI4OSwiZ2VjeXJpbGxpYyIsMTA3NSwiZ2VoaXJhZ2FuYSIsMTIzNzAsImdla2F0YWthbmEiLDEyNDY2LCJnZW9tZXRyaWNhbGx5ZXF1YWwiLDg3ODUsImdlcmVzaGFjY2VudGhlYnJldyIsMTQzNiwiZ2VyZXNoaGVicmV3IiwxNTIzLCJnZXJlc2htdXFkYW1oZWJyZXciLDE0MzcsImdlcm1hbmRibHMiLDIyMywiZ2Vyc2hheWltYWNjZW50aGVicmV3IiwxNDM4LCJnZXJzaGF5aW1oZWJyZXciLDE1MjQsImdldGFtYXJrIiwxMjMwNywiZ2hhYmVuZ2FsaSIsMjQ1NiwiZ2hhZGFybWVuaWFuIiwxMzk0LCJnaGFkZXZhIiwyMzI4LCJnaGFndWphcmF0aSIsMjcxMiwiZ2hhZ3VybXVraGkiLDI1ODQsImdoYWluYXJhYmljIiwxNTk0LCJnaGFpbmZpbmFsYXJhYmljIiw2NTIzMCwiZ2hhaW5pbml0aWFsYXJhYmljIiw2NTIzMSwiZ2hhaW5tZWRpYWxhcmFiaWMiLDY1MjMyLCJnaGVtaWRkbGVob29rY3lyaWxsaWMiLDExNzMsImdoZXN0cm9rZWN5cmlsbGljIiwxMTcxLCJnaGV1cHR1cm5jeXJpbGxpYyIsMTE2OSwiZ2hoYWRldmEiLDIzOTQsImdoaGFndXJtdWtoaSIsMjY1MCwiZ2hvb2siLDYwOCwiZ2h6c3F1YXJlIiwxMzIwMywiZ2loaXJhZ2FuYSIsMTIzNjYsImdpa2F0YWthbmEiLDEyNDYyLCJnaW1hcm1lbmlhbiIsMTM3OSwiZ2ltZWwiLDE0OTAsImdpbWVsZGFnZXNoIiw2NDMwNiwiZ2ltZWxkYWdlc2hoZWJyZXciLDY0MzA2LCJnaW1lbGhlYnJldyIsMTQ5MCwiZ2plY3lyaWxsaWMiLDExMDcsImdsb3R0YWxpbnZlcnRlZHN0cm9rZSIsNDQ2LCJnbG90dGFsc3RvcCIsNjYwLCJnbG90dGFsc3RvcGludmVydGVkIiw2NjIsImdsb3R0YWxzdG9wbW9kIiw3MDQsImdsb3R0YWxzdG9wcmV2ZXJzZWQiLDY2MSwiZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZCIsNzA1LCJnbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3IiLDc0MCwiZ2xvdHRhbHN0b3BzdHJva2UiLDY3MywiZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZCIsNjc0LCJnbWFjcm9uIiw3NzEzLCJnbW9ub3NwYWNlIiw2NTM1MSwiZ29oaXJhZ2FuYSIsMTIzNzIsImdva2F0YWthbmEiLDEyNDY4LCJncGFyZW4iLDkzNzgsImdwYXNxdWFyZSIsMTMyMjgsImdyYWRpZW50Iiw4NzExLCJncmF2ZSIsOTYsImdyYXZlYmVsb3djbWIiLDc5MCwiZ3JhdmVjbWIiLDc2OCwiZ3JhdmVjb21iIiw3NjgsImdyYXZlZGV2YSIsMjM4NywiZ3JhdmVsb3dtb2QiLDcxOCwiZ3JhdmVtb25vc3BhY2UiLDY1MzQ0LCJncmF2ZXRvbmVjbWIiLDgzMiwiZ3JlYXRlciIsNjIsImdyZWF0ZXJlcXVhbCIsODgwNSwiZ3JlYXRlcmVxdWFsb3JsZXNzIiw4OTIzLCJncmVhdGVybW9ub3NwYWNlIiw2NTMxMCwiZ3JlYXRlcm9yZXF1aXZhbGVudCIsODgxOSwiZ3JlYXRlcm9ybGVzcyIsODgyMywiZ3JlYXRlcm92ZXJlcXVhbCIsODgwNywiZ3JlYXRlcnNtYWxsIiw2NTEyNSwiZ3NjcmlwdCIsNjA5LCJnc3Ryb2tlIiw0ODUsImd1aGlyYWdhbmEiLDEyMzY4LCJndWlsbGVtb3RsZWZ0IiwxNzEsImd1aWxsZW1vdHJpZ2h0IiwxODcsImd1aWxzaW5nbGxlZnQiLDgyNDksImd1aWxzaW5nbHJpZ2h0Iiw4MjUwLCJndWthdGFrYW5hIiwxMjQ2NCwiZ3VyYW11c3F1YXJlIiwxMzA4MCwiZ3lzcXVhcmUiLDEzMjU3LCJoIiwxMDQsImhhYWJraGFzaWFuY3lyaWxsaWMiLDExOTMsImhhYWx0b25lYXJhYmljIiwxNzI5LCJoYWJlbmdhbGkiLDI0ODksImhhZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDMsImhhZGV2YSIsMjM2MSwiaGFndWphcmF0aSIsMjc0NSwiaGFndXJtdWtoaSIsMjYxNywiaGFoYXJhYmljIiwxNTgxLCJoYWhmaW5hbGFyYWJpYyIsNjUxODYsImhhaGluaXRpYWxhcmFiaWMiLDY1MTg3LCJoYWhpcmFnYW5hIiwxMjM5OSwiaGFobWVkaWFsYXJhYmljIiw2NTE4OCwiaGFpdHVzcXVhcmUiLDEzMDk4LCJoYWthdGFrYW5hIiwxMjQ5NSwiaGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTgsImhhbGFudGd1cm11a2hpIiwyNjM3LCJoYW16YWFyYWJpYyIsMTU2OSwiaGFtemFsb3dhcmFiaWMiLDE1NjksImhhbmd1bGZpbGxlciIsMTI2NDQsImhhcmRzaWduY3lyaWxsaWMiLDEwOTgsImhhcnBvb25sZWZ0YmFyYnVwIiw4NjM2LCJoYXJwb29ucmlnaHRiYXJidXAiLDg2NDAsImhhc3F1YXJlIiwxMzI1OCwiaGF0YWZwYXRhaCIsMTQ1OCwiaGF0YWZwYXRhaDE2IiwxNDU4LCJoYXRhZnBhdGFoMjMiLDE0NTgsImhhdGFmcGF0YWgyZiIsMTQ1OCwiaGF0YWZwYXRhaGhlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaG5hcnJvd2hlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NTgsImhhdGFmcGF0YWh3aWRlaGVicmV3IiwxNDU4LCJoYXRhZnFhbWF0cyIsMTQ1OSwiaGF0YWZxYW1hdHMxYiIsMTQ1OSwiaGF0YWZxYW1hdHMyOCIsMTQ1OSwiaGF0YWZxYW1hdHMzNCIsMTQ1OSwiaGF0YWZxYW1hdHNoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzbmFycm93aGVicmV3IiwxNDU5LCJoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzd2lkZWhlYnJldyIsMTQ1OSwiaGF0YWZzZWdvbCIsMTQ1NywiaGF0YWZzZWdvbDE3IiwxNDU3LCJoYXRhZnNlZ29sMjQiLDE0NTcsImhhdGFmc2Vnb2wzMCIsMTQ1NywiaGF0YWZzZWdvbGhlYnJldyIsMTQ1NywiaGF0YWZzZWdvbG5hcnJvd2hlYnJldyIsMTQ1NywiaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXciLDE0NTcsImhhdGFmc2Vnb2x3aWRlaGVicmV3IiwxNDU3LCJoYmFyIiwyOTUsImhib3BvbW9mbyIsMTI1NTksImhicmV2ZWJlbG93Iiw3NzIzLCJoY2VkaWxsYSIsNzcyMSwiaGNpcmNsZSIsOTQzMSwiaGNpcmN1bWZsZXgiLDI5MywiaGRpZXJlc2lzIiw3NzE5LCJoZG90YWNjZW50Iiw3NzE1LCJoZG90YmVsb3ciLDc3MTcsImhlIiwxNDkyLCJoZWFydCIsOTgyOSwiaGVhcnRzdWl0YmxhY2siLDk4MjksImhlYXJ0c3VpdHdoaXRlIiw5ODI1LCJoZWRhZ2VzaCIsNjQzMDgsImhlZGFnZXNoaGVicmV3Iiw2NDMwOCwiaGVoYWx0b25lYXJhYmljIiwxNzI5LCJoZWhhcmFiaWMiLDE2MDcsImhlaGVicmV3IiwxNDkyLCJoZWhmaW5hbGFsdG9uZWFyYWJpYyIsNjQ0MjMsImhlaGZpbmFsYWx0dHdvYXJhYmljIiw2NTI1OCwiaGVoZmluYWxhcmFiaWMiLDY1MjU4LCJoZWhoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY0NDIxLCJoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWMiLDY0NDIwLCJoZWhpbml0aWFsYWx0b25lYXJhYmljIiw2NDQyNCwiaGVoaW5pdGlhbGFyYWJpYyIsNjUyNTksImhlaGlyYWdhbmEiLDEyNDA4LCJoZWhtZWRpYWxhbHRvbmVhcmFiaWMiLDY0NDI1LCJoZWhtZWRpYWxhcmFiaWMiLDY1MjYwLCJoZWlzZWllcmFzcXVhcmUiLDEzMTc5LCJoZWthdGFrYW5hIiwxMjUwNCwiaGVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjEsImhla3V0YWFydXNxdWFyZSIsMTMxMTAsImhlbmdob29rIiw2MTUsImhlcnV0dXNxdWFyZSIsMTMxMTMsImhldCIsMTQ5NSwiaGV0aGVicmV3IiwxNDk1LCJoaG9vayIsNjE0LCJoaG9va3N1cGVyaW9yIiw2ODksImhpZXVoYWNpcmNsZWtvcmVhbiIsMTI5MjMsImhpZXVoYXBhcmVua29yZWFuIiwxMjgyNywiaGlldWhjaXJjbGVrb3JlYW4iLDEyOTA5LCJoaWV1aGtvcmVhbiIsMTI2MjIsImhpZXVocGFyZW5rb3JlYW4iLDEyODEzLCJoaWhpcmFnYW5hIiwxMjQwMiwiaGlrYXRha2FuYSIsMTI0OTgsImhpa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE5LCJoaXJpcSIsMTQ2MCwiaGlyaXExNCIsMTQ2MCwiaGlyaXEyMSIsMTQ2MCwiaGlyaXEyZCIsMTQ2MCwiaGlyaXFoZWJyZXciLDE0NjAsImhpcmlxbmFycm93aGVicmV3IiwxNDYwLCJoaXJpcXF1YXJ0ZXJoZWJyZXciLDE0NjAsImhpcmlxd2lkZWhlYnJldyIsMTQ2MCwiaGxpbmViZWxvdyIsNzgzMCwiaG1vbm9zcGFjZSIsNjUzNTIsImhvYXJtZW5pYW4iLDEzOTIsImhvaGlwdGhhaSIsMzYyNywiaG9oaXJhZ2FuYSIsMTI0MTEsImhva2F0YWthbmEiLDEyNTA3LCJob2thdGFrYW5haGFsZndpZHRoIiw2NTQyMiwiaG9sYW0iLDE0NjUsImhvbGFtMTkiLDE0NjUsImhvbGFtMjYiLDE0NjUsImhvbGFtMzIiLDE0NjUsImhvbGFtaGVicmV3IiwxNDY1LCJob2xhbW5hcnJvd2hlYnJldyIsMTQ2NSwiaG9sYW1xdWFydGVyaGVicmV3IiwxNDY1LCJob2xhbXdpZGVoZWJyZXciLDE0NjUsImhvbm9raHVrdGhhaSIsMzYzMCwiaG9va2Fib3ZlY29tYiIsNzc3LCJob29rY21iIiw3NzcsImhvb2twYWxhdGFsaXplZGJlbG93Y21iIiw4MDEsImhvb2tyZXRyb2ZsZXhiZWxvd2NtYiIsODAyLCJob29uc3F1YXJlIiwxMzEyMiwiaG9yaWNvcHRpYyIsMTAwMSwiaG9yaXpvbnRhbGJhciIsODIxMywiaG9ybmNtYiIsNzk1LCJob3RzcHJpbmdzIiw5ODMyLCJob3VzZSIsODk2MiwiaHBhcmVuIiw5Mzc5LCJoc3VwZXJpb3IiLDY4OCwiaHR1cm5lZCIsNjEzLCJodWhpcmFnYW5hIiwxMjQwNSwiaHVpaXRvc3F1YXJlIiwxMzEwNywiaHVrYXRha2FuYSIsMTI1MDEsImh1a2F0YWthbmFoYWxmd2lkdGgiLDY1NDIwLCJodW5nYXJ1bWxhdXQiLDczMywiaHVuZ2FydW1sYXV0Y21iIiw3NzksImh2Iiw0MDUsImh5cGhlbiIsNDUsImh5cGhlbmluZmVyaW9yIiw2MzIwNSwiaHlwaGVubW9ub3NwYWNlIiw2NTI5MywiaHlwaGVuc21hbGwiLDY1MTIzLCJoeXBoZW5zdXBlcmlvciIsNjMyMDYsImh5cGhlbnR3byIsODIwOCwiaSIsMTA1LCJpYWN1dGUiLDIzNywiaWFjeXJpbGxpYyIsMTEwMywiaWJlbmdhbGkiLDI0MzksImlib3BvbW9mbyIsMTI1ODMsImlicmV2ZSIsMzAxLCJpY2Fyb24iLDQ2NCwiaWNpcmNsZSIsOTQzMiwiaWNpcmN1bWZsZXgiLDIzOCwiaWN5cmlsbGljIiwxMTEwLCJpZGJsZ3JhdmUiLDUyMSwiaWRlb2dyYXBoZWFydGhjaXJjbGUiLDEyOTQzLCJpZGVvZ3JhcGhmaXJlY2lyY2xlIiwxMjkzOSwiaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuIiwxMjg2MywiaWRlb2dyYXBoaWNjYWxscGFyZW4iLDEyODU4LCJpZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZSIsMTI5NjUsImlkZW9ncmFwaGljY2xvc2UiLDEyMjk0LCJpZGVvZ3JhcGhpY2NvbW1hIiwxMjI4OSwiaWRlb2dyYXBoaWNjb21tYWxlZnQiLDY1MzgwLCJpZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW4iLDEyODU1LCJpZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGUiLDEyOTYzLCJpZGVvZ3JhcGhpY2VhcnRocGFyZW4iLDEyODQ3LCJpZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbiIsMTI4NjEsImlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlIiwxMjk1NywiaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuIiwxMjg2NCwiaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGUiLDEyOTUwLCJpZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuIiwxMjg1NCwiaWRlb2dyYXBoaWNmaXJlcGFyZW4iLDEyODQzLCJpZGVvZ3JhcGhpY2hhdmVwYXJlbiIsMTI4NTAsImlkZW9ncmFwaGljaGlnaGNpcmNsZSIsMTI5NjQsImlkZW9ncmFwaGljaXRlcmF0aW9ubWFyayIsMTIyOTMsImlkZW9ncmFwaGljbGFib3JjaXJjbGUiLDEyOTUyLCJpZGVvZ3JhcGhpY2xhYm9ycGFyZW4iLDEyODU2LCJpZGVvZ3JhcGhpY2xlZnRjaXJjbGUiLDEyOTY3LCJpZGVvZ3JhcGhpY2xvd2NpcmNsZSIsMTI5NjYsImlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGUiLDEyOTY5LCJpZGVvZ3JhcGhpY21ldGFscGFyZW4iLDEyODQ2LCJpZGVvZ3JhcGhpY21vb25wYXJlbiIsMTI4NDIsImlkZW9ncmFwaGljbmFtZXBhcmVuIiwxMjg1MiwiaWRlb2dyYXBoaWNwZXJpb2QiLDEyMjkwLCJpZGVvZ3JhcGhpY3ByaW50Y2lyY2xlIiwxMjk1OCwiaWRlb2dyYXBoaWNyZWFjaHBhcmVuIiwxMjg2NywiaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbiIsMTI4NTcsImlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbiIsMTI4NjIsImlkZW9ncmFwaGljcmlnaHRjaXJjbGUiLDEyOTY4LCJpZGVvZ3JhcGhpY3NlY3JldGNpcmNsZSIsMTI5NTMsImlkZW9ncmFwaGljc2VsZnBhcmVuIiwxMjg2NiwiaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW4iLDEyODUxLCJpZGVvZ3JhcGhpY3NwYWNlIiwxMjI4OCwiaWRlb2dyYXBoaWNzcGVjaWFscGFyZW4iLDEyODUzLCJpZGVvZ3JhcGhpY3N0b2NrcGFyZW4iLDEyODQ5LCJpZGVvZ3JhcGhpY3N0dWR5cGFyZW4iLDEyODU5LCJpZGVvZ3JhcGhpY3N1bnBhcmVuIiwxMjg0OCwiaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbiIsMTI4NjAsImlkZW9ncmFwaGljd2F0ZXJwYXJlbiIsMTI4NDQsImlkZW9ncmFwaGljd29vZHBhcmVuIiwxMjg0NSwiaWRlb2dyYXBoaWN6ZXJvIiwxMjI5NSwiaWRlb2dyYXBobWV0YWxjaXJjbGUiLDEyOTQyLCJpZGVvZ3JhcGhtb29uY2lyY2xlIiwxMjkzOCwiaWRlb2dyYXBobmFtZWNpcmNsZSIsMTI5NDgsImlkZW9ncmFwaHN1bmNpcmNsZSIsMTI5NDQsImlkZW9ncmFwaHdhdGVyY2lyY2xlIiwxMjk0MCwiaWRlb2dyYXBod29vZGNpcmNsZSIsMTI5NDEsImlkZXZhIiwyMzExLCJpZGllcmVzaXMiLDIzOSwiaWRpZXJlc2lzYWN1dGUiLDc3MjcsImlkaWVyZXNpc2N5cmlsbGljIiwxMjUzLCJpZG90YmVsb3ciLDc4ODMsImllYnJldmVjeXJpbGxpYyIsMTIzOSwiaWVjeXJpbGxpYyIsMTA3NywiaWV1bmdhY2lyY2xla29yZWFuIiwxMjkxNywiaWV1bmdhcGFyZW5rb3JlYW4iLDEyODIxLCJpZXVuZ2NpcmNsZWtvcmVhbiIsMTI5MDMsImlldW5na29yZWFuIiwxMjYxNSwiaWV1bmdwYXJlbmtvcmVhbiIsMTI4MDcsImlncmF2ZSIsMjM2LCJpZ3VqYXJhdGkiLDI2OTUsImlndXJtdWtoaSIsMjU2NywiaWhpcmFnYW5hIiwxMjM1NiwiaWhvb2thYm92ZSIsNzg4MSwiaWliZW5nYWxpIiwyNDQwLCJpaWN5cmlsbGljIiwxMDgwLCJpaWRldmEiLDIzMTIsImlpZ3VqYXJhdGkiLDI2OTYsImlpZ3VybXVraGkiLDI1NjgsImlpbWF0cmFndXJtdWtoaSIsMjYyNCwiaWludmVydGVkYnJldmUiLDUyMywiaWlzaG9ydGN5cmlsbGljIiwxMDgxLCJpaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTYsImlpdm93ZWxzaWduZGV2YSIsMjM2OCwiaWl2b3dlbHNpZ25ndWphcmF0aSIsMjc1MiwiaWoiLDMwNywiaWthdGFrYW5hIiwxMjQ1MiwiaWthdGFrYW5haGFsZndpZHRoIiw2NTM5NCwiaWtvcmVhbiIsMTI2NDMsImlsZGUiLDczMiwiaWx1eWhlYnJldyIsMTQ1MiwiaW1hY3JvbiIsMjk5LCJpbWFjcm9uY3lyaWxsaWMiLDEyNTEsImltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3ODcsImltYXRyYWd1cm11a2hpIiwyNjIzLCJpbW9ub3NwYWNlIiw2NTM1MywiaW5jcmVtZW50Iiw4NzEwLCJpbmZpbml0eSIsODczNCwiaW5pYXJtZW5pYW4iLDEzODcsImludGVncmFsIiw4NzQ3LCJpbnRlZ3JhbGJvdHRvbSIsODk5MywiaW50ZWdyYWxidCIsODk5MywiaW50ZWdyYWxleCIsNjM3MzMsImludGVncmFsdG9wIiw4OTkyLCJpbnRlZ3JhbHRwIiw4OTkyLCJpbnRlcnNlY3Rpb24iLDg3NDUsImludGlzcXVhcmUiLDEzMDYxLCJpbnZidWxsZXQiLDk2ODgsImludmNpcmNsZSIsOTY4OSwiaW52c21pbGVmYWNlIiw5Nzg3LCJpb2N5cmlsbGljIiwxMTA1LCJpb2dvbmVrIiwzMDMsImlvdGEiLDk1MywiaW90YWRpZXJlc2lzIiw5NzAsImlvdGFkaWVyZXNpc3Rvbm9zIiw5MTIsImlvdGFsYXRpbiIsNjE3LCJpb3RhdG9ub3MiLDk0MywiaXBhcmVuIiw5MzgwLCJpcmlndXJtdWtoaSIsMjY3NCwiaXNtYWxsaGlyYWdhbmEiLDEyMzU1LCJpc21hbGxrYXRha2FuYSIsMTI0NTEsImlzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NCwiaXNzaGFyYmVuZ2FsaSIsMjU1NCwiaXN0cm9rZSIsNjE2LCJpc3VwZXJpb3IiLDYzMjEzLCJpdGVyYXRpb25oaXJhZ2FuYSIsMTI0NDUsIml0ZXJhdGlvbmthdGFrYW5hIiwxMjU0MSwiaXRpbGRlIiwyOTcsIml0aWxkZWJlbG93Iiw3NzI1LCJpdWJvcG9tb2ZvIiwxMjU4NSwiaXVjeXJpbGxpYyIsMTEwMiwiaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTUsIml2b3dlbHNpZ25kZXZhIiwyMzY3LCJpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTEsIml6aGl0c2FjeXJpbGxpYyIsMTE0MSwiaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMiLDExNDMsImoiLDEwNiwiamFhcm1lbmlhbiIsMTM5MywiamFiZW5nYWxpIiwyNDYwLCJqYWRldmEiLDIzMzIsImphZ3VqYXJhdGkiLDI3MTYsImphZ3VybXVraGkiLDI1ODgsImpib3BvbW9mbyIsMTI1NjAsImpjYXJvbiIsNDk2LCJqY2lyY2xlIiw5NDMzLCJqY2lyY3VtZmxleCIsMzA5LCJqY3Jvc3NlZHRhaWwiLDY2OSwiamRvdGxlc3NzdHJva2UiLDYwNywiamVjeXJpbGxpYyIsMTExMiwiamVlbWFyYWJpYyIsMTU4MCwiamVlbWZpbmFsYXJhYmljIiw2NTE4MiwiamVlbWluaXRpYWxhcmFiaWMiLDY1MTgzLCJqZWVtbWVkaWFsYXJhYmljIiw2NTE4NCwiamVoYXJhYmljIiwxNjg4LCJqZWhmaW5hbGFyYWJpYyIsNjQzOTUsImpoYWJlbmdhbGkiLDI0NjEsImpoYWRldmEiLDIzMzMsImpoYWd1amFyYXRpIiwyNzE3LCJqaGFndXJtdWtoaSIsMjU4OSwiamhlaGFybWVuaWFuIiwxNDAzLCJqaXMiLDEyMjkyLCJqbW9ub3NwYWNlIiw2NTM1NCwianBhcmVuIiw5MzgxLCJqc3VwZXJpb3IiLDY5MCwiayIsMTA3LCJrYWJhc2hraXJjeXJpbGxpYyIsMTE4NSwia2FiZW5nYWxpIiwyNDUzLCJrYWN1dGUiLDc3MjksImthY3lyaWxsaWMiLDEwODIsImthZGVzY2VuZGVyY3lyaWxsaWMiLDExNzksImthZGV2YSIsMjMyNSwia2FmIiwxNDk5LCJrYWZhcmFiaWMiLDE2MDMsImthZmRhZ2VzaCIsNjQzMTUsImthZmRhZ2VzaGhlYnJldyIsNjQzMTUsImthZmZpbmFsYXJhYmljIiw2NTI0Miwia2FmaGVicmV3IiwxNDk5LCJrYWZpbml0aWFsYXJhYmljIiw2NTI0Mywia2FmbWVkaWFsYXJhYmljIiw2NTI0NCwia2FmcmFmZWhlYnJldyIsNjQzMzMsImthZ3VqYXJhdGkiLDI3MDksImthZ3VybXVraGkiLDI1ODEsImthaGlyYWdhbmEiLDEyMzYzLCJrYWhvb2tjeXJpbGxpYyIsMTIyMCwia2FrYXRha2FuYSIsMTI0NTksImtha2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk4LCJrYXBwYSIsOTU0LCJrYXBwYXN5bWJvbGdyZWVrIiwxMDA4LCJrYXB5ZW91bm1pZXVta29yZWFuIiwxMjY1Nywia2FweWVvdW5waGlldXBoa29yZWFuIiwxMjY3Niwia2FweWVvdW5waWV1cGtvcmVhbiIsMTI2NjQsImthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbiIsMTI2NjUsImthcm9yaWlzcXVhcmUiLDEzMDY5LCJrYXNoaWRhYXV0b2FyYWJpYyIsMTYwMCwia2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljIiwxNjAwLCJrYXNtYWxsa2F0YWthbmEiLDEyNTMzLCJrYXNxdWFyZSIsMTMxODgsImthc3JhYXJhYmljIiwxNjE2LCJrYXNyYXRhbmFyYWJpYyIsMTYxMywia2FzdHJva2VjeXJpbGxpYyIsMTE4Mywia2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aCIsNjUzOTIsImthdmVydGljYWxzdHJva2VjeXJpbGxpYyIsMTE4MSwia2JvcG9tb2ZvIiwxMjU1OCwia2NhbHNxdWFyZSIsMTMxOTMsImtjYXJvbiIsNDg5LCJrY2VkaWxsYSIsMzExLCJrY2lyY2xlIiw5NDM0LCJrY29tbWFhY2NlbnQiLDMxMSwia2RvdGJlbG93Iiw3NzMxLCJrZWhhcm1lbmlhbiIsMTQxMiwia2VoaXJhZ2FuYSIsMTIzNjksImtla2F0YWthbmEiLDEyNDY1LCJrZWthdGFrYW5haGFsZndpZHRoIiw2NTQwMSwia2VuYXJtZW5pYW4iLDEzOTEsImtlc21hbGxrYXRha2FuYSIsMTI1MzQsImtncmVlbmxhbmRpYyIsMzEyLCJraGFiZW5nYWxpIiwyNDU0LCJraGFjeXJpbGxpYyIsMTA5Mywia2hhZGV2YSIsMjMyNiwia2hhZ3VqYXJhdGkiLDI3MTAsImtoYWd1cm11a2hpIiwyNTgyLCJraGFoYXJhYmljIiwxNTgyLCJraGFoZmluYWxhcmFiaWMiLDY1MTkwLCJraGFoaW5pdGlhbGFyYWJpYyIsNjUxOTEsImtoYWhtZWRpYWxhcmFiaWMiLDY1MTkyLCJraGVpY29wdGljIiw5OTksImtoaGFkZXZhIiwyMzkzLCJraGhhZ3VybXVraGkiLDI2NDksImtoaWV1a2hhY2lyY2xla29yZWFuIiwxMjkyMCwia2hpZXVraGFwYXJlbmtvcmVhbiIsMTI4MjQsImtoaWV1a2hjaXJjbGVrb3JlYW4iLDEyOTA2LCJraGlldWtoa29yZWFuIiwxMjYxOSwia2hpZXVraHBhcmVua29yZWFuIiwxMjgxMCwia2hva2hhaXRoYWkiLDM1ODYsImtob2tob250aGFpIiwzNTg5LCJraG9raHVhdHRoYWkiLDM1ODcsImtob2tod2FpdGhhaSIsMzU4OCwia2hvbXV0dGhhaSIsMzY3NSwia2hvb2siLDQwOSwia2hvcmFraGFuZ3RoYWkiLDM1OTAsImtoenNxdWFyZSIsMTMyMDEsImtpaGlyYWdhbmEiLDEyMzY1LCJraWthdGFrYW5hIiwxMjQ2MSwia2lrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTksImtpcm9ndXJhbXVzcXVhcmUiLDEzMDc3LCJraXJvbWVldG9ydXNxdWFyZSIsMTMwNzgsImtpcm9zcXVhcmUiLDEzMDc2LCJraXllb2thY2lyY2xla29yZWFuIiwxMjkxMCwia2l5ZW9rYXBhcmVua29yZWFuIiwxMjgxNCwia2l5ZW9rY2lyY2xla29yZWFuIiwxMjg5Niwia2l5ZW9ra29yZWFuIiwxMjU5Mywia2l5ZW9rcGFyZW5rb3JlYW4iLDEyODAwLCJraXllb2tzaW9za29yZWFuIiwxMjU5NSwia2plY3lyaWxsaWMiLDExMTYsImtsaW5lYmVsb3ciLDc3MzMsImtsc3F1YXJlIiwxMzIwOCwia21jdWJlZHNxdWFyZSIsMTMyMjIsImttb25vc3BhY2UiLDY1MzU1LCJrbXNxdWFyZWRzcXVhcmUiLDEzMjE4LCJrb2hpcmFnYW5hIiwxMjM3MSwia29obXNxdWFyZSIsMTMyNDgsImtva2FpdGhhaSIsMzU4NSwia29rYXRha2FuYSIsMTI0NjcsImtva2F0YWthbmFoYWxmd2lkdGgiLDY1NDAyLCJrb29wb3NxdWFyZSIsMTMwODYsImtvcHBhY3lyaWxsaWMiLDExNTMsImtvcmVhbnN0YW5kYXJkc3ltYm9sIiwxMjkyNywia29yb25pc2NtYiIsODM1LCJrcGFyZW4iLDkzODIsImtwYXNxdWFyZSIsMTMyMjYsImtzaWN5cmlsbGljIiwxMTM1LCJrdHNxdWFyZSIsMTMyNjMsImt0dXJuZWQiLDY3MCwia3VoaXJhZ2FuYSIsMTIzNjcsImt1a2F0YWthbmEiLDEyNDYzLCJrdWthdGFrYW5haGFsZndpZHRoIiw2NTQwMCwia3ZzcXVhcmUiLDEzMjQwLCJrd3NxdWFyZSIsMTMyNDYsImwiLDEwOCwibGFiZW5nYWxpIiwyNDgyLCJsYWN1dGUiLDMxNCwibGFkZXZhIiwyMzU0LCJsYWd1amFyYXRpIiwyNzM4LCJsYWd1cm11a2hpIiwyNjEwLCJsYWtraGFuZ3lhb3RoYWkiLDM2NTMsImxhbWFsZWZmaW5hbGFyYWJpYyIsNjUyNzYsImxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MjcyLCJsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljIiw2NTI3MSwibGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUyNzQsImxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWMiLDY1MjczLCJsYW1hbGVmaXNvbGF0ZWRhcmFiaWMiLDY1Mjc1LCJsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTI3MCwibGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYyIsNjUyNjksImxhbWFyYWJpYyIsMTYwNCwibGFtYmRhIiw5NTUsImxhbWJkYXN0cm9rZSIsNDExLCJsYW1lZCIsMTUwMCwibGFtZWRkYWdlc2giLDY0MzE2LCJsYW1lZGRhZ2VzaGhlYnJldyIsNjQzMTYsImxhbWVkaGVicmV3IiwxNTAwLCJsYW1maW5hbGFyYWJpYyIsNjUyNDYsImxhbWhhaGluaXRpYWxhcmFiaWMiLDY0NzE0LCJsYW1pbml0aWFsYXJhYmljIiw2NTI0NywibGFtamVlbWluaXRpYWxhcmFiaWMiLDY0NzEzLCJsYW1raGFoaW5pdGlhbGFyYWJpYyIsNjQ3MTUsImxhbWxhbWhlaGlzb2xhdGVkYXJhYmljIiw2NTAxMCwibGFtbWVkaWFsYXJhYmljIiw2NTI0OCwibGFtbWVlbWhhaGluaXRpYWxhcmFiaWMiLDY0OTA0LCJsYW1tZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MTYsImxhcmdlY2lyY2xlIiw5NzExLCJsYmFyIiw0MTAsImxiZWx0Iiw2MjAsImxib3BvbW9mbyIsMTI1NTYsImxjYXJvbiIsMzE4LCJsY2VkaWxsYSIsMzE2LCJsY2lyY2xlIiw5NDM1LCJsY2lyY3VtZmxleGJlbG93Iiw3NzQxLCJsY29tbWFhY2NlbnQiLDMxNiwibGRvdCIsMzIwLCJsZG90YWNjZW50IiwzMjAsImxkb3RiZWxvdyIsNzczNSwibGRvdGJlbG93bWFjcm9uIiw3NzM3LCJsZWZ0YW5nbGVhYm92ZWNtYiIsNzk0LCJsZWZ0dGFja2JlbG93Y21iIiw3OTIsImxlc3MiLDYwLCJsZXNzZXF1YWwiLDg4MDQsImxlc3NlcXVhbG9yZ3JlYXRlciIsODkyMiwibGVzc21vbm9zcGFjZSIsNjUzMDgsImxlc3NvcmVxdWl2YWxlbnQiLDg4MTgsImxlc3NvcmdyZWF0ZXIiLDg4MjIsImxlc3NvdmVyZXF1YWwiLDg4MDYsImxlc3NzbWFsbCIsNjUxMjQsImxlemgiLDYyMiwibGZibG9jayIsOTYxMiwibGhvb2tyZXRyb2ZsZXgiLDYyMSwibGlyYSIsODM1NiwibGl3bmFybWVuaWFuIiwxMzg4LCJsaiIsNDU3LCJsamVjeXJpbGxpYyIsMTExMywibGwiLDYzMTY4LCJsbGFkZXZhIiwyMzU1LCJsbGFndWphcmF0aSIsMjczOSwibGxpbmViZWxvdyIsNzczOSwibGxsYWRldmEiLDIzNTYsImxsdm9jYWxpY2JlbmdhbGkiLDI1MjksImxsdm9jYWxpY2RldmEiLDI0MDEsImxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzEsImxsdm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDI0MDMsImxtaWRkbGV0aWxkZSIsNjE5LCJsbW9ub3NwYWNlIiw2NTM1NiwibG1zcXVhcmUiLDEzMjY0LCJsb2NodWxhdGhhaSIsMzYyOCwibG9naWNhbGFuZCIsODc0MywibG9naWNhbG5vdCIsMTcyLCJsb2dpY2Fsbm90cmV2ZXJzZWQiLDg5NzYsImxvZ2ljYWxvciIsODc0NCwibG9saW5ndGhhaSIsMzYyMSwibG9uZ3MiLDM4MywibG93bGluZWNlbnRlcmxpbmUiLDY1MTAyLCJsb3dsaW5lY21iIiw4MTgsImxvd2xpbmVkYXNoZWQiLDY1MTAxLCJsb3plbmdlIiw5Njc0LCJscGFyZW4iLDkzODMsImxzbGFzaCIsMzIyLCJsc3F1YXJlIiw4NDY3LCJsc3VwZXJpb3IiLDYzMjE0LCJsdHNoYWRlIiw5NjE3LCJsdXRoYWkiLDM2MjIsImx2b2NhbGljYmVuZ2FsaSIsMjQ0NCwibHZvY2FsaWNkZXZhIiwyMzE2LCJsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzAsImx2b2NhbGljdm93ZWxzaWduZGV2YSIsMjQwMiwibHhzcXVhcmUiLDEzMjY3LCJtIiwxMDksIm1hYmVuZ2FsaSIsMjQ3OCwibWFjcm9uIiwxNzUsIm1hY3JvbmJlbG93Y21iIiw4MTcsIm1hY3JvbmNtYiIsNzcyLCJtYWNyb25sb3dtb2QiLDcxNywibWFjcm9ubW9ub3NwYWNlIiw2NTUwNywibWFjdXRlIiw3NzQzLCJtYWRldmEiLDIzNTAsIm1hZ3VqYXJhdGkiLDI3MzQsIm1hZ3VybXVraGkiLDI2MDYsIm1haGFwYWtoaGVicmV3IiwxNDQ0LCJtYWhhcGFraGxlZnRoZWJyZXciLDE0NDQsIm1haGlyYWdhbmEiLDEyNDE0LCJtYWljaGF0dGF3YWxvd2xlZnR0aGFpIiw2MzYzNywibWFpY2hhdHRhd2Fsb3dyaWdodHRoYWkiLDYzNjM2LCJtYWljaGF0dGF3YXRoYWkiLDM2NTksIm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaSIsNjM2MzUsIm1haWVrbG93bGVmdHRoYWkiLDYzNjI4LCJtYWlla2xvd3JpZ2h0dGhhaSIsNjM2MjcsIm1haWVrdGhhaSIsMzY1NiwibWFpZWt1cHBlcmxlZnR0aGFpIiw2MzYyNiwibWFpaGFuYWthdGxlZnR0aGFpIiw2MzYyMCwibWFpaGFuYWthdHRoYWkiLDM2MzMsIm1haXRhaWtodWxlZnR0aGFpIiw2MzYyNSwibWFpdGFpa2h1dGhhaSIsMzY1NSwibWFpdGhvbG93bGVmdHRoYWkiLDYzNjMxLCJtYWl0aG9sb3dyaWdodHRoYWkiLDYzNjMwLCJtYWl0aG90aGFpIiwzNjU3LCJtYWl0aG91cHBlcmxlZnR0aGFpIiw2MzYyOSwibWFpdHJpbG93bGVmdHRoYWkiLDYzNjM0LCJtYWl0cmlsb3dyaWdodHRoYWkiLDYzNjMzLCJtYWl0cml0aGFpIiwzNjU4LCJtYWl0cml1cHBlcmxlZnR0aGFpIiw2MzYzMiwibWFpeWFtb2t0aGFpIiwzNjU0LCJtYWthdGFrYW5hIiwxMjUxMCwibWFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjMsIm1hbGUiLDk3OTQsIm1hbnN5b25zcXVhcmUiLDEzMTI3LCJtYXFhZmhlYnJldyIsMTQ3MCwibWFycyIsOTc5NCwibWFzb3JhY2lyY2xlaGVicmV3IiwxNDU1LCJtYXNxdWFyZSIsMTMxODcsIm1ib3BvbW9mbyIsMTI1NTEsIm1ic3F1YXJlIiwxMzI2OCwibWNpcmNsZSIsOTQzNiwibWN1YmVkc3F1YXJlIiwxMzIyMSwibWRvdGFjY2VudCIsNzc0NSwibWRvdGJlbG93Iiw3NzQ3LCJtZWVtYXJhYmljIiwxNjA1LCJtZWVtZmluYWxhcmFiaWMiLDY1MjUwLCJtZWVtaW5pdGlhbGFyYWJpYyIsNjUyNTEsIm1lZW1tZWRpYWxhcmFiaWMiLDY1MjUyLCJtZWVtbWVlbWluaXRpYWxhcmFiaWMiLDY0NzIxLCJtZWVtbWVlbWlzb2xhdGVkYXJhYmljIiw2NDU4NCwibWVldG9ydXNxdWFyZSIsMTMxMzMsIm1laGlyYWdhbmEiLDEyNDE3LCJtZWl6aWVyYXNxdWFyZSIsMTMxODIsIm1la2F0YWthbmEiLDEyNTEzLCJtZWthdGFrYW5haGFsZndpZHRoIiw2NTQyNiwibWVtIiwxNTAyLCJtZW1kYWdlc2giLDY0MzE4LCJtZW1kYWdlc2hoZWJyZXciLDY0MzE4LCJtZW1oZWJyZXciLDE1MDIsIm1lbmFybWVuaWFuIiwxMzk2LCJtZXJraGFoZWJyZXciLDE0NDUsIm1lcmtoYWtlZnVsYWhlYnJldyIsMTQ0NiwibWVya2hha2VmdWxhbGVmdGhlYnJldyIsMTQ0NiwibWVya2hhbGVmdGhlYnJldyIsMTQ0NSwibWhvb2siLDYyNSwibWh6c3F1YXJlIiwxMzIwMiwibWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGgiLDY1MzgxLCJtaWRkb3QiLDE4MywibWlldW1hY2lyY2xla29yZWFuIiwxMjkxNCwibWlldW1hcGFyZW5rb3JlYW4iLDEyODE4LCJtaWV1bWNpcmNsZWtvcmVhbiIsMTI5MDAsIm1pZXVta29yZWFuIiwxMjYwOSwibWlldW1wYW5zaW9za29yZWFuIiwxMjY1NiwibWlldW1wYXJlbmtvcmVhbiIsMTI4MDQsIm1pZXVtcGlldXBrb3JlYW4iLDEyNjU0LCJtaWV1bXNpb3Nrb3JlYW4iLDEyNjU1LCJtaWhpcmFnYW5hIiwxMjQxNSwibWlrYXRha2FuYSIsMTI1MTEsIm1pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDI0LCJtaW51cyIsODcyMiwibWludXNiZWxvd2NtYiIsODAwLCJtaW51c2NpcmNsZSIsODg1NCwibWludXNtb2QiLDcyNywibWludXNwbHVzIiw4NzIzLCJtaW51dGUiLDgyNDIsIm1pcmliYWFydXNxdWFyZSIsMTMxMzAsIm1pcmlzcXVhcmUiLDEzMTI5LCJtbG9uZ2xlZ3R1cm5lZCIsNjI0LCJtbHNxdWFyZSIsMTMyMDYsIm1tY3ViZWRzcXVhcmUiLDEzMjE5LCJtbW9ub3NwYWNlIiw2NTM1NywibW1zcXVhcmVkc3F1YXJlIiwxMzIxNSwibW9oaXJhZ2FuYSIsMTI0MTgsIm1vaG1zcXVhcmUiLDEzMjQ5LCJtb2thdGFrYW5hIiwxMjUxNCwibW9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjcsIm1vbHNxdWFyZSIsMTMyNzAsIm1vbWF0aGFpIiwzNjE3LCJtb3ZlcnNzcXVhcmUiLDEzMjIzLCJtb3ZlcnNzcXVhcmVkc3F1YXJlIiwxMzIyNCwibXBhcmVuIiw5Mzg0LCJtcGFzcXVhcmUiLDEzMjI3LCJtc3NxdWFyZSIsMTMyMzUsIm1zdXBlcmlvciIsNjMyMTUsIm10dXJuZWQiLDYyMywibXUiLDE4MSwibXUxIiwxODEsIm11YXNxdWFyZSIsMTMxODYsIm11Y2hncmVhdGVyIiw4ODExLCJtdWNobGVzcyIsODgxMCwibXVmc3F1YXJlIiwxMzE5NiwibXVncmVlayIsOTU2LCJtdWdzcXVhcmUiLDEzMTk3LCJtdWhpcmFnYW5hIiwxMjQxNiwibXVrYXRha2FuYSIsMTI1MTIsIm11a2F0YWthbmFoYWxmd2lkdGgiLDY1NDI1LCJtdWxzcXVhcmUiLDEzMjA1LCJtdWx0aXBseSIsMjE1LCJtdW1zcXVhcmUiLDEzMjExLCJtdW5haGhlYnJldyIsMTQ0MywibXVuYWhsZWZ0aGVicmV3IiwxNDQzLCJtdXNpY2Fsbm90ZSIsOTgzNCwibXVzaWNhbG5vdGVkYmwiLDk4MzUsIm11c2ljZmxhdHNpZ24iLDk4MzcsIm11c2ljc2hhcnBzaWduIiw5ODM5LCJtdXNzcXVhcmUiLDEzMjM0LCJtdXZzcXVhcmUiLDEzMjM4LCJtdXdzcXVhcmUiLDEzMjQ0LCJtdm1lZ2FzcXVhcmUiLDEzMjQxLCJtdnNxdWFyZSIsMTMyMzksIm13bWVnYXNxdWFyZSIsMTMyNDcsIm13c3F1YXJlIiwxMzI0NSwibiIsMTEwLCJuYWJlbmdhbGkiLDI0NzIsIm5hYmxhIiw4NzExLCJuYWN1dGUiLDMyNCwibmFkZXZhIiwyMzQ0LCJuYWd1amFyYXRpIiwyNzI4LCJuYWd1cm11a2hpIiwyNjAwLCJuYWhpcmFnYW5hIiwxMjM5NCwibmFrYXRha2FuYSIsMTI0OTAsIm5ha2F0YWthbmFoYWxmd2lkdGgiLDY1NDEzLCJuYXBvc3Ryb3BoZSIsMzI5LCJuYXNxdWFyZSIsMTMxODUsIm5ib3BvbW9mbyIsMTI1NTUsIm5ic3BhY2UiLDE2MCwibmNhcm9uIiwzMjgsIm5jZWRpbGxhIiwzMjYsIm5jaXJjbGUiLDk0MzcsIm5jaXJjdW1mbGV4YmVsb3ciLDc3NTUsIm5jb21tYWFjY2VudCIsMzI2LCJuZG90YWNjZW50Iiw3NzQ5LCJuZG90YmVsb3ciLDc3NTEsIm5laGlyYWdhbmEiLDEyMzk3LCJuZWthdGFrYW5hIiwxMjQ5MywibmVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTYsIm5ld3NoZXFlbHNpZ24iLDgzNjIsIm5mc3F1YXJlIiwxMzE5NSwibmdhYmVuZ2FsaSIsMjQ1NywibmdhZGV2YSIsMjMyOSwibmdhZ3VqYXJhdGkiLDI3MTMsIm5nYWd1cm11a2hpIiwyNTg1LCJuZ29uZ3V0aGFpIiwzNTkxLCJuaGlyYWdhbmEiLDEyNDM1LCJuaG9va2xlZnQiLDYyNiwibmhvb2tyZXRyb2ZsZXgiLDYyNywibmlldW5hY2lyY2xla29yZWFuIiwxMjkxMSwibmlldW5hcGFyZW5rb3JlYW4iLDEyODE1LCJuaWV1bmNpZXVja29yZWFuIiwxMjU5NywibmlldW5jaXJjbGVrb3JlYW4iLDEyODk3LCJuaWV1bmhpZXVoa29yZWFuIiwxMjU5OCwibmlldW5rb3JlYW4iLDEyNTk2LCJuaWV1bnBhbnNpb3Nrb3JlYW4iLDEyNjQ4LCJuaWV1bnBhcmVua29yZWFuIiwxMjgwMSwibmlldW5zaW9za29yZWFuIiwxMjY0NywibmlldW50aWtldXRrb3JlYW4iLDEyNjQ2LCJuaWhpcmFnYW5hIiwxMjM5NSwibmlrYXRha2FuYSIsMTI0OTEsIm5pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE0LCJuaWtoYWhpdGxlZnR0aGFpIiw2MzY0MSwibmlraGFoaXR0aGFpIiwzNjYxLCJuaW5lIiw1NywibmluZWFyYWJpYyIsMTY0MSwibmluZWJlbmdhbGkiLDI1NDMsIm5pbmVjaXJjbGUiLDkzMjAsIm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEzMCwibmluZWRldmEiLDI0MTUsIm5pbmVndWphcmF0aSIsMjc5OSwibmluZWd1cm11a2hpIiwyNjcxLCJuaW5laGFja2FyYWJpYyIsMTY0MSwibmluZWhhbmd6aG91IiwxMjMyOSwibmluZWlkZW9ncmFwaGljcGFyZW4iLDEyODQwLCJuaW5laW5mZXJpb3IiLDgzMjksIm5pbmVtb25vc3BhY2UiLDY1MzA1LCJuaW5lb2xkc3R5bGUiLDYzMjg5LCJuaW5lcGFyZW4iLDkzNDAsIm5pbmVwZXJpb2QiLDkzNjAsIm5pbmVwZXJzaWFuIiwxNzg1LCJuaW5lcm9tYW4iLDg1NjgsIm5pbmVzdXBlcmlvciIsODMxMywibmluZXRlZW5jaXJjbGUiLDkzMzAsIm5pbmV0ZWVucGFyZW4iLDkzNTAsIm5pbmV0ZWVucGVyaW9kIiw5MzcwLCJuaW5ldGhhaSIsMzY3MywibmoiLDQ2MCwibmplY3lyaWxsaWMiLDExMTQsIm5rYXRha2FuYSIsMTI1MzEsIm5rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzcsIm5sZWdyaWdodGxvbmciLDQxNCwibmxpbmViZWxvdyIsNzc1Mywibm1vbm9zcGFjZSIsNjUzNTgsIm5tc3F1YXJlIiwxMzIxMCwibm5hYmVuZ2FsaSIsMjQ2Nywibm5hZGV2YSIsMjMzOSwibm5hZ3VqYXJhdGkiLDI3MjMsIm5uYWd1cm11a2hpIiwyNTk1LCJubm5hZGV2YSIsMjM0NSwibm9oaXJhZ2FuYSIsMTIzOTgsIm5va2F0YWthbmEiLDEyNDk0LCJub2thdGFrYW5haGFsZndpZHRoIiw2NTQxNywibm9uYnJlYWtpbmdzcGFjZSIsMTYwLCJub25lbnRoYWkiLDM2MDMsIm5vbnV0aGFpIiwzNjA5LCJub29uYXJhYmljIiwxNjA2LCJub29uZmluYWxhcmFiaWMiLDY1MjU0LCJub29uZ2h1bm5hYXJhYmljIiwxNzIyLCJub29uZ2h1bm5hZmluYWxhcmFiaWMiLDY0NDE1LCJub29uaW5pdGlhbGFyYWJpYyIsNjUyNTUsIm5vb25qZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MjIsIm5vb25qZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTg3LCJub29ubWVkaWFsYXJhYmljIiw2NTI1Niwibm9vbm1lZW1pbml0aWFsYXJhYmljIiw2NDcyNSwibm9vbm1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1OTAsIm5vb25ub29uZmluYWxhcmFiaWMiLDY0NjUzLCJub3Rjb250YWlucyIsODcxNiwibm90ZWxlbWVudCIsODcxMywibm90ZWxlbWVudG9mIiw4NzEzLCJub3RlcXVhbCIsODgwMCwibm90Z3JlYXRlciIsODgxNSwibm90Z3JlYXRlcm5vcmVxdWFsIiw4ODE3LCJub3RncmVhdGVybm9ybGVzcyIsODgyNSwibm90aWRlbnRpY2FsIiw4ODAyLCJub3RsZXNzIiw4ODE0LCJub3RsZXNzbm9yZXF1YWwiLDg4MTYsIm5vdHBhcmFsbGVsIiw4NzQyLCJub3RwcmVjZWRlcyIsODgzMiwibm90c3Vic2V0Iiw4ODM2LCJub3RzdWNjZWVkcyIsODgzMywibm90c3VwZXJzZXQiLDg4MzcsIm5vd2FybWVuaWFuIiwxMzk4LCJucGFyZW4iLDkzODUsIm5zc3F1YXJlIiwxMzIzMywibnN1cGVyaW9yIiw4MzE5LCJudGlsZGUiLDI0MSwibnUiLDk1NywibnVoaXJhZ2FuYSIsMTIzOTYsIm51a2F0YWthbmEiLDEyNDkyLCJudWthdGFrYW5haGFsZndpZHRoIiw2NTQxNSwibnVrdGFiZW5nYWxpIiwyNDkyLCJudWt0YWRldmEiLDIzNjQsIm51a3RhZ3VqYXJhdGkiLDI3NDgsIm51a3RhZ3VybXVraGkiLDI2MjAsIm51bWJlcnNpZ24iLDM1LCJudW1iZXJzaWdubW9ub3NwYWNlIiw2NTI4MywibnVtYmVyc2lnbnNtYWxsIiw2NTExOSwibnVtZXJhbHNpZ25ncmVlayIsODg0LCJudW1lcmFsc2lnbmxvd2VyZ3JlZWsiLDg4NSwibnVtZXJvIiw4NDcwLCJudW4iLDE1MDQsIm51bmRhZ2VzaCIsNjQzMjAsIm51bmRhZ2VzaGhlYnJldyIsNjQzMjAsIm51bmhlYnJldyIsMTUwNCwibnZzcXVhcmUiLDEzMjM3LCJud3NxdWFyZSIsMTMyNDMsIm55YWJlbmdhbGkiLDI0NjIsIm55YWRldmEiLDIzMzQsIm55YWd1amFyYXRpIiwyNzE4LCJueWFndXJtdWtoaSIsMjU5MCwibyIsMTExLCJvYWN1dGUiLDI0Mywib2FuZ3RoYWkiLDM2MjksIm9iYXJyZWQiLDYyOSwib2JhcnJlZGN5cmlsbGljIiwxMjU3LCJvYmFycmVkZGllcmVzaXNjeXJpbGxpYyIsMTI1OSwib2JlbmdhbGkiLDI0NTEsIm9ib3BvbW9mbyIsMTI1NzEsIm9icmV2ZSIsMzM1LCJvY2FuZHJhZGV2YSIsMjMyMSwib2NhbmRyYWd1amFyYXRpIiwyNzA1LCJvY2FuZHJhdm93ZWxzaWduZGV2YSIsMjM3Nywib2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzYxLCJvY2Fyb24iLDQ2Niwib2NpcmNsZSIsOTQzOCwib2NpcmN1bWZsZXgiLDI0NCwib2NpcmN1bWZsZXhhY3V0ZSIsNzg4OSwib2NpcmN1bWZsZXhkb3RiZWxvdyIsNzg5Nywib2NpcmN1bWZsZXhncmF2ZSIsNzg5MSwib2NpcmN1bWZsZXhob29rYWJvdmUiLDc4OTMsIm9jaXJjdW1mbGV4dGlsZGUiLDc4OTUsIm9jeXJpbGxpYyIsMTA4Niwib2RibGFjdXRlIiwzMzcsIm9kYmxncmF2ZSIsNTI1LCJvZGV2YSIsMjMyMywib2RpZXJlc2lzIiwyNDYsIm9kaWVyZXNpc2N5cmlsbGljIiwxMjU1LCJvZG90YmVsb3ciLDc4ODUsIm9lIiwzMzksIm9la29yZWFuIiwxMjYzNCwib2dvbmVrIiw3MzEsIm9nb25la2NtYiIsODA4LCJvZ3JhdmUiLDI0Miwib2d1amFyYXRpIiwyNzA3LCJvaGFybWVuaWFuIiwxNDEzLCJvaGlyYWdhbmEiLDEyMzYyLCJvaG9va2Fib3ZlIiw3ODg3LCJvaG9ybiIsNDE3LCJvaG9ybmFjdXRlIiw3ODk5LCJvaG9ybmRvdGJlbG93Iiw3OTA3LCJvaG9ybmdyYXZlIiw3OTAxLCJvaG9ybmhvb2thYm92ZSIsNzkwMywib2hvcm50aWxkZSIsNzkwNSwib2h1bmdhcnVtbGF1dCIsMzM3LCJvaSIsNDE5LCJvaW52ZXJ0ZWRicmV2ZSIsNTI3LCJva2F0YWthbmEiLDEyNDU4LCJva2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk3LCJva29yZWFuIiwxMjYzMSwib2xlaGVicmV3IiwxNDUxLCJvbWFjcm9uIiwzMzMsIm9tYWNyb25hY3V0ZSIsNzc2Mywib21hY3JvbmdyYXZlIiw3NzYxLCJvbWRldmEiLDIzODQsIm9tZWdhIiw5NjksIm9tZWdhMSIsOTgyLCJvbWVnYWN5cmlsbGljIiwxMTIxLCJvbWVnYWxhdGluY2xvc2VkIiw2MzEsIm9tZWdhcm91bmRjeXJpbGxpYyIsMTE0Nywib21lZ2F0aXRsb2N5cmlsbGljIiwxMTQ5LCJvbWVnYXRvbm9zIiw5NzQsIm9tZ3VqYXJhdGkiLDI3NjgsIm9taWNyb24iLDk1OSwib21pY3JvbnRvbm9zIiw5NzIsIm9tb25vc3BhY2UiLDY1MzU5LCJvbmUiLDQ5LCJvbmVhcmFiaWMiLDE2MzMsIm9uZWJlbmdhbGkiLDI1MzUsIm9uZWNpcmNsZSIsOTMxMiwib25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZiIsMTAxMjIsIm9uZWRldmEiLDI0MDcsIm9uZWRvdGVubGVhZGVyIiw4MjI4LCJvbmVlaWdodGgiLDg1MzksIm9uZWZpdHRlZCIsNjMxOTYsIm9uZWd1amFyYXRpIiwyNzkxLCJvbmVndXJtdWtoaSIsMjY2Mywib25laGFja2FyYWJpYyIsMTYzMywib25laGFsZiIsMTg5LCJvbmVoYW5nemhvdSIsMTIzMjEsIm9uZWlkZW9ncmFwaGljcGFyZW4iLDEyODMyLCJvbmVpbmZlcmlvciIsODMyMSwib25lbW9ub3NwYWNlIiw2NTI5Nywib25lbnVtZXJhdG9yYmVuZ2FsaSIsMjU0OCwib25lb2xkc3R5bGUiLDYzMjgxLCJvbmVwYXJlbiIsOTMzMiwib25lcGVyaW9kIiw5MzUyLCJvbmVwZXJzaWFuIiwxNzc3LCJvbmVxdWFydGVyIiwxODgsIm9uZXJvbWFuIiw4NTYwLCJvbmVzdXBlcmlvciIsMTg1LCJvbmV0aGFpIiwzNjY1LCJvbmV0aGlyZCIsODUzMSwib29nb25layIsNDkxLCJvb2dvbmVrbWFjcm9uIiw0OTMsIm9vZ3VybXVraGkiLDI1NzksIm9vbWF0cmFndXJtdWtoaSIsMjYzNSwib29wZW4iLDU5Niwib3BhcmVuIiw5Mzg2LCJvcGVuYnVsbGV0Iiw5NzAyLCJvcHRpb24iLDg5OTcsIm9yZGZlbWluaW5lIiwxNzAsIm9yZG1hc2N1bGluZSIsMTg2LCJvcnRob2dvbmFsIiw4NzM1LCJvc2hvcnRkZXZhIiwyMzIyLCJvc2hvcnR2b3dlbHNpZ25kZXZhIiwyMzc4LCJvc2xhc2giLDI0OCwib3NsYXNoYWN1dGUiLDUxMSwib3NtYWxsaGlyYWdhbmEiLDEyMzYxLCJvc21hbGxrYXRha2FuYSIsMTI0NTcsIm9zbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4Nywib3N0cm9rZWFjdXRlIiw1MTEsIm9zdXBlcmlvciIsNjMyMTYsIm90Y3lyaWxsaWMiLDExNTEsIm90aWxkZSIsMjQ1LCJvdGlsZGVhY3V0ZSIsNzc1Nywib3RpbGRlZGllcmVzaXMiLDc3NTksIm91Ym9wb21vZm8iLDEyNTc3LCJvdmVybGluZSIsODI1NCwib3ZlcmxpbmVjZW50ZXJsaW5lIiw2NTA5OCwib3ZlcmxpbmVjbWIiLDc3Mywib3ZlcmxpbmVkYXNoZWQiLDY1MDk3LCJvdmVybGluZWRibHdhdnkiLDY1MTAwLCJvdmVybGluZXdhdnkiLDY1MDk5LCJvdmVyc2NvcmUiLDE3NSwib3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MDcsIm92b3dlbHNpZ25kZXZhIiwyMzc5LCJvdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjMsInAiLDExMiwicGFhbXBzc3F1YXJlIiwxMzE4NCwicGFhc2VudG9zcXVhcmUiLDEzMDk5LCJwYWJlbmdhbGkiLDI0NzQsInBhY3V0ZSIsNzc2NSwicGFkZXZhIiwyMzQ2LCJwYWdlZG93biIsODY3MSwicGFnZXVwIiw4NjcwLCJwYWd1amFyYXRpIiwyNzMwLCJwYWd1cm11a2hpIiwyNjAyLCJwYWhpcmFnYW5hIiwxMjQwMSwicGFpeWFubm9pdGhhaSIsMzYzMSwicGFrYXRha2FuYSIsMTI0OTcsInBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWIiLDExNTYsInBhbG9jaGthY3lyaWxsaWMiLDEyMTYsInBhbnNpb3Nrb3JlYW4iLDEyNjcxLCJwYXJhZ3JhcGgiLDE4MiwicGFyYWxsZWwiLDg3NDEsInBhcmVubGVmdCIsNDAsInBhcmVubGVmdGFsdG9uZWFyYWJpYyIsNjQ4MzAsInBhcmVubGVmdGJ0Iiw2MzcyNSwicGFyZW5sZWZ0ZXgiLDYzNzI0LCJwYXJlbmxlZnRpbmZlcmlvciIsODMzMywicGFyZW5sZWZ0bW9ub3NwYWNlIiw2NTI4OCwicGFyZW5sZWZ0c21hbGwiLDY1MTEzLCJwYXJlbmxlZnRzdXBlcmlvciIsODMxNywicGFyZW5sZWZ0dHAiLDYzNzIzLCJwYXJlbmxlZnR2ZXJ0aWNhbCIsNjUwNzcsInBhcmVucmlnaHQiLDQxLCJwYXJlbnJpZ2h0YWx0b25lYXJhYmljIiw2NDgzMSwicGFyZW5yaWdodGJ0Iiw2MzczNiwicGFyZW5yaWdodGV4Iiw2MzczNSwicGFyZW5yaWdodGluZmVyaW9yIiw4MzM0LCJwYXJlbnJpZ2h0bW9ub3NwYWNlIiw2NTI4OSwicGFyZW5yaWdodHNtYWxsIiw2NTExNCwicGFyZW5yaWdodHN1cGVyaW9yIiw4MzE4LCJwYXJlbnJpZ2h0dHAiLDYzNzM0LCJwYXJlbnJpZ2h0dmVydGljYWwiLDY1MDc4LCJwYXJ0aWFsZGlmZiIsODcwNiwicGFzZXFoZWJyZXciLDE0NzIsInBhc2h0YWhlYnJldyIsMTQzMywicGFzcXVhcmUiLDEzMjI1LCJwYXRhaCIsMTQ2MywicGF0YWgxMSIsMTQ2MywicGF0YWgxZCIsMTQ2MywicGF0YWgyYSIsMTQ2MywicGF0YWhoZWJyZXciLDE0NjMsInBhdGFobmFycm93aGVicmV3IiwxNDYzLCJwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NjMsInBhdGFod2lkZWhlYnJldyIsMTQ2MywicGF6ZXJoZWJyZXciLDE0NDEsInBib3BvbW9mbyIsMTI1NTAsInBjaXJjbGUiLDk0MzksInBkb3RhY2NlbnQiLDc3NjcsInBlIiwxNTA4LCJwZWN5cmlsbGljIiwxMDg3LCJwZWRhZ2VzaCIsNjQzMjQsInBlZGFnZXNoaGVicmV3Iiw2NDMyNCwicGVlemlzcXVhcmUiLDEzMTE1LCJwZWZpbmFsZGFnZXNoaGVicmV3Iiw2NDMyMywicGVoYXJhYmljIiwxNjYyLCJwZWhhcm1lbmlhbiIsMTQwMiwicGVoZWJyZXciLDE1MDgsInBlaGZpbmFsYXJhYmljIiw2NDM0MywicGVoaW5pdGlhbGFyYWJpYyIsNjQzNDQsInBlaGlyYWdhbmEiLDEyNDEwLCJwZWhtZWRpYWxhcmFiaWMiLDY0MzQ1LCJwZWthdGFrYW5hIiwxMjUwNiwicGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTEsInBlcmFmZWhlYnJldyIsNjQzMzQsInBlcmNlbnQiLDM3LCJwZXJjZW50YXJhYmljIiwxNjQyLCJwZXJjZW50bW9ub3NwYWNlIiw2NTI4NSwicGVyY2VudHNtYWxsIiw2NTEzMCwicGVyaW9kIiw0NiwicGVyaW9kYXJtZW5pYW4iLDE0MTcsInBlcmlvZGNlbnRlcmVkIiwxODMsInBlcmlvZGhhbGZ3aWR0aCIsNjUzNzcsInBlcmlvZGluZmVyaW9yIiw2MzIwNywicGVyaW9kbW9ub3NwYWNlIiw2NTI5NCwicGVyaW9kc21hbGwiLDY1MTA2LCJwZXJpb2RzdXBlcmlvciIsNjMyMDgsInBlcmlzcG9tZW5pZ3JlZWtjbWIiLDgzNCwicGVycGVuZGljdWxhciIsODg2OSwicGVydGhvdXNhbmQiLDgyNDAsInBlc2V0YSIsODM1OSwicGZzcXVhcmUiLDEzMTk0LCJwaGFiZW5nYWxpIiwyNDc1LCJwaGFkZXZhIiwyMzQ3LCJwaGFndWphcmF0aSIsMjczMSwicGhhZ3VybXVraGkiLDI2MDMsInBoaSIsOTY2LCJwaGkxIiw5ODEsInBoaWV1cGhhY2lyY2xla29yZWFuIiwxMjkyMiwicGhpZXVwaGFwYXJlbmtvcmVhbiIsMTI4MjYsInBoaWV1cGhjaXJjbGVrb3JlYW4iLDEyOTA4LCJwaGlldXBoa29yZWFuIiwxMjYyMSwicGhpZXVwaHBhcmVua29yZWFuIiwxMjgxMiwicGhpbGF0aW4iLDYzMiwicGhpbnRodXRoYWkiLDM2NDIsInBoaXN5bWJvbGdyZWVrIiw5ODEsInBob29rIiw0MjEsInBob3BoYW50aGFpIiwzNjE0LCJwaG9waHVuZ3RoYWkiLDM2MTIsInBob3NhbXBoYW90aGFpIiwzNjE2LCJwaSIsOTYwLCJwaWV1cGFjaXJjbGVrb3JlYW4iLDEyOTE1LCJwaWV1cGFwYXJlbmtvcmVhbiIsMTI4MTksInBpZXVwY2lldWNrb3JlYW4iLDEyNjYyLCJwaWV1cGNpcmNsZWtvcmVhbiIsMTI5MDEsInBpZXVwa2l5ZW9ra29yZWFuIiwxMjY1OCwicGlldXBrb3JlYW4iLDEyNjEwLCJwaWV1cHBhcmVua29yZWFuIiwxMjgwNSwicGlldXBzaW9za2l5ZW9ra29yZWFuIiwxMjY2MCwicGlldXBzaW9za29yZWFuIiwxMjYxMiwicGlldXBzaW9zdGlrZXV0a29yZWFuIiwxMjY2MSwicGlldXB0aGlldXRoa29yZWFuIiwxMjY2MywicGlldXB0aWtldXRrb3JlYW4iLDEyNjU5LCJwaWhpcmFnYW5hIiwxMjQwNCwicGlrYXRha2FuYSIsMTI1MDAsInBpc3ltYm9sZ3JlZWsiLDk4MiwicGl3cmFybWVuaWFuIiwxNDExLCJwbHVzIiw0MywicGx1c2JlbG93Y21iIiw3OTksInBsdXNjaXJjbGUiLDg4NTMsInBsdXNtaW51cyIsMTc3LCJwbHVzbW9kIiw3MjYsInBsdXNtb25vc3BhY2UiLDY1MjkxLCJwbHVzc21hbGwiLDY1MTIyLCJwbHVzc3VwZXJpb3IiLDgzMTQsInBtb25vc3BhY2UiLDY1MzYwLCJwbXNxdWFyZSIsMTMyNzIsInBvaGlyYWdhbmEiLDEyNDEzLCJwb2ludGluZ2luZGV4ZG93bndoaXRlIiw5NzU5LCJwb2ludGluZ2luZGV4bGVmdHdoaXRlIiw5NzU2LCJwb2ludGluZ2luZGV4cmlnaHR3aGl0ZSIsOTc1OCwicG9pbnRpbmdpbmRleHVwd2hpdGUiLDk3NTcsInBva2F0YWthbmEiLDEyNTA5LCJwb3BsYXRoYWkiLDM2MTEsInBvc3RhbG1hcmsiLDEyMzA2LCJwb3N0YWxtYXJrZmFjZSIsMTIzMjAsInBwYXJlbiIsOTM4NywicHJlY2VkZXMiLDg4MjYsInByZXNjcmlwdGlvbiIsODQ3OCwicHJpbWVtb2QiLDY5NywicHJpbWVyZXZlcnNlZCIsODI0NSwicHJvZHVjdCIsODcxOSwicHJvamVjdGl2ZSIsODk2NSwicHJvbG9uZ2Vka2FuYSIsMTI1NDAsInByb3BlbGxvciIsODk4NCwicHJvcGVyc3Vic2V0Iiw4ODM0LCJwcm9wZXJzdXBlcnNldCIsODgzNSwicHJvcG9ydGlvbiIsODc1OSwicHJvcG9ydGlvbmFsIiw4NzMzLCJwc2kiLDk2OCwicHNpY3lyaWxsaWMiLDExMzcsInBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1OCwicHNzcXVhcmUiLDEzMjMyLCJwdWhpcmFnYW5hIiwxMjQwNywicHVrYXRha2FuYSIsMTI1MDMsInB2c3F1YXJlIiwxMzIzNiwicHdzcXVhcmUiLDEzMjQyLCJxIiwxMTMsInFhZGV2YSIsMjM5MiwicWFkbWFoZWJyZXciLDE0NDgsInFhZmFyYWJpYyIsMTYwMiwicWFmZmluYWxhcmFiaWMiLDY1MjM4LCJxYWZpbml0aWFsYXJhYmljIiw2NTIzOSwicWFmbWVkaWFsYXJhYmljIiw2NTI0MCwicWFtYXRzIiwxNDY0LCJxYW1hdHMxMCIsMTQ2NCwicWFtYXRzMWEiLDE0NjQsInFhbWF0czFjIiwxNDY0LCJxYW1hdHMyNyIsMTQ2NCwicWFtYXRzMjkiLDE0NjQsInFhbWF0czMzIiwxNDY0LCJxYW1hdHNkZSIsMTQ2NCwicWFtYXRzaGVicmV3IiwxNDY0LCJxYW1hdHNuYXJyb3doZWJyZXciLDE0NjQsInFhbWF0c3FhdGFuaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbm5hcnJvd2hlYnJldyIsMTQ2NCwicWFtYXRzcWF0YW5xdWFydGVyaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbndpZGVoZWJyZXciLDE0NjQsInFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NjQsInFhbWF0c3dpZGVoZWJyZXciLDE0NjQsInFhcm5leXBhcmFoZWJyZXciLDE0MzksInFib3BvbW9mbyIsMTI1NjEsInFjaXJjbGUiLDk0NDAsInFob29rIiw2NzIsInFtb25vc3BhY2UiLDY1MzYxLCJxb2YiLDE1MTEsInFvZmRhZ2VzaCIsNjQzMjcsInFvZmRhZ2VzaGhlYnJldyIsNjQzMjcsInFvZmhlYnJldyIsMTUxMSwicXBhcmVuIiw5Mzg4LCJxdWFydGVybm90ZSIsOTgzMywicXVidXRzIiwxNDY3LCJxdWJ1dHMxOCIsMTQ2NywicXVidXRzMjUiLDE0NjcsInF1YnV0czMxIiwxNDY3LCJxdWJ1dHNoZWJyZXciLDE0NjcsInF1YnV0c25hcnJvd2hlYnJldyIsMTQ2NywicXVidXRzcXVhcnRlcmhlYnJldyIsMTQ2NywicXVidXRzd2lkZWhlYnJldyIsMTQ2NywicXVlc3Rpb24iLDYzLCJxdWVzdGlvbmFyYWJpYyIsMTU2NywicXVlc3Rpb25hcm1lbmlhbiIsMTM3NCwicXVlc3Rpb25kb3duIiwxOTEsInF1ZXN0aW9uZG93bnNtYWxsIiw2MzQyMywicXVlc3Rpb25ncmVlayIsODk0LCJxdWVzdGlvbm1vbm9zcGFjZSIsNjUzMTEsInF1ZXN0aW9uc21hbGwiLDYzMjk1LCJxdW90ZWRibCIsMzQsInF1b3RlZGJsYmFzZSIsODIyMiwicXVvdGVkYmxsZWZ0Iiw4MjIwLCJxdW90ZWRibG1vbm9zcGFjZSIsNjUyODIsInF1b3RlZGJscHJpbWUiLDEyMzE4LCJxdW90ZWRibHByaW1lcmV2ZXJzZWQiLDEyMzE3LCJxdW90ZWRibHJpZ2h0Iiw4MjIxLCJxdW90ZWxlZnQiLDgyMTYsInF1b3RlbGVmdHJldmVyc2VkIiw4MjE5LCJxdW90ZXJldmVyc2VkIiw4MjE5LCJxdW90ZXJpZ2h0Iiw4MjE3LCJxdW90ZXJpZ2h0biIsMzI5LCJxdW90ZXNpbmdsYmFzZSIsODIxOCwicXVvdGVzaW5nbGUiLDM5LCJxdW90ZXNpbmdsZW1vbm9zcGFjZSIsNjUyODcsInIiLDExNCwicmFhcm1lbmlhbiIsMTQwNCwicmFiZW5nYWxpIiwyNDgwLCJyYWN1dGUiLDM0MSwicmFkZXZhIiwyMzUyLCJyYWRpY2FsIiw4NzMwLCJyYWRpY2FsZXgiLDYzNzE3LCJyYWRvdmVyc3NxdWFyZSIsMTMyMzAsInJhZG92ZXJzc3F1YXJlZHNxdWFyZSIsMTMyMzEsInJhZHNxdWFyZSIsMTMyMjksInJhZmUiLDE0NzEsInJhZmVoZWJyZXciLDE0NzEsInJhZ3VqYXJhdGkiLDI3MzYsInJhZ3VybXVraGkiLDI2MDgsInJhaGlyYWdhbmEiLDEyNDI1LCJyYWthdGFrYW5hIiwxMjUyMSwicmFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzEsInJhbG93ZXJkaWFnb25hbGJlbmdhbGkiLDI1NDUsInJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpIiwyNTQ0LCJyYW1zaG9ybiIsNjEyLCJyYXRpbyIsODc1OCwicmJvcG9tb2ZvIiwxMjU2NiwicmNhcm9uIiwzNDUsInJjZWRpbGxhIiwzNDMsInJjaXJjbGUiLDk0NDEsInJjb21tYWFjY2VudCIsMzQzLCJyZGJsZ3JhdmUiLDUyOSwicmRvdGFjY2VudCIsNzc2OSwicmRvdGJlbG93Iiw3NzcxLCJyZG90YmVsb3dtYWNyb24iLDc3NzMsInJlZmVyZW5jZW1hcmsiLDgyNTEsInJlZmxleHN1YnNldCIsODgzOCwicmVmbGV4c3VwZXJzZXQiLDg4MzksInJlZ2lzdGVyZWQiLDE3NCwicmVnaXN0ZXJzYW5zIiw2MzcyMCwicmVnaXN0ZXJzZXJpZiIsNjMxOTQsInJlaGFyYWJpYyIsMTU4NSwicmVoYXJtZW5pYW4iLDE0MDgsInJlaGZpbmFsYXJhYmljIiw2NTE5OCwicmVoaXJhZ2FuYSIsMTI0MjgsInJla2F0YWthbmEiLDEyNTI0LCJyZWthdGFrYW5haGFsZndpZHRoIiw2NTQzNCwicmVzaCIsMTUxMiwicmVzaGRhZ2VzaGhlYnJldyIsNjQzMjgsInJlc2hoZWJyZXciLDE1MTIsInJldmVyc2VkdGlsZGUiLDg3NjUsInJldmlhaGVicmV3IiwxNDMxLCJyZXZpYW11Z3Jhc2hoZWJyZXciLDE0MzEsInJldmxvZ2ljYWxub3QiLDg5NzYsInJmaXNoaG9vayIsNjM4LCJyZmlzaGhvb2tyZXZlcnNlZCIsNjM5LCJyaGFiZW5nYWxpIiwyNTI1LCJyaGFkZXZhIiwyMzk3LCJyaG8iLDk2MSwicmhvb2siLDYzNywicmhvb2t0dXJuZWQiLDYzNSwicmhvb2t0dXJuZWRzdXBlcmlvciIsNjkzLCJyaG9zeW1ib2xncmVlayIsMTAwOSwicmhvdGljaG9va21vZCIsNzM0LCJyaWV1bGFjaXJjbGVrb3JlYW4iLDEyOTEzLCJyaWV1bGFwYXJlbmtvcmVhbiIsMTI4MTcsInJpZXVsY2lyY2xla29yZWFuIiwxMjg5OSwicmlldWxoaWV1aGtvcmVhbiIsMTI2MDgsInJpZXVsa2l5ZW9ra29yZWFuIiwxMjYwMiwicmlldWxraXllb2tzaW9za29yZWFuIiwxMjY0OSwicmlldWxrb3JlYW4iLDEyNjAxLCJyaWV1bG1pZXVta29yZWFuIiwxMjYwMywicmlldWxwYW5zaW9za29yZWFuIiwxMjY1MiwicmlldWxwYXJlbmtvcmVhbiIsMTI4MDMsInJpZXVscGhpZXVwaGtvcmVhbiIsMTI2MDcsInJpZXVscGlldXBrb3JlYW4iLDEyNjA0LCJyaWV1bHBpZXVwc2lvc2tvcmVhbiIsMTI2NTEsInJpZXVsc2lvc2tvcmVhbiIsMTI2MDUsInJpZXVsdGhpZXV0aGtvcmVhbiIsMTI2MDYsInJpZXVsdGlrZXV0a29yZWFuIiwxMjY1MCwicmlldWx5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NTMsInJpZ2h0YW5nbGUiLDg3MzUsInJpZ2h0dGFja2JlbG93Y21iIiw3OTMsInJpZ2h0dHJpYW5nbGUiLDg4OTUsInJpaGlyYWdhbmEiLDEyNDI2LCJyaWthdGFrYW5hIiwxMjUyMiwicmlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzIsInJpbmciLDczMCwicmluZ2JlbG93Y21iIiw4MDUsInJpbmdjbWIiLDc3OCwicmluZ2hhbGZsZWZ0Iiw3MDMsInJpbmdoYWxmbGVmdGFybWVuaWFuIiwxMzY5LCJyaW5naGFsZmxlZnRiZWxvd2NtYiIsNzk2LCJyaW5naGFsZmxlZnRjZW50ZXJlZCIsNzIzLCJyaW5naGFsZnJpZ2h0Iiw3MDIsInJpbmdoYWxmcmlnaHRiZWxvd2NtYiIsODI1LCJyaW5naGFsZnJpZ2h0Y2VudGVyZWQiLDcyMiwicmludmVydGVkYnJldmUiLDUzMSwicml0dG9ydXNxdWFyZSIsMTMxMzcsInJsaW5lYmVsb3ciLDc3NzUsInJsb25nbGVnIiw2MzYsInJsb25nbGVndHVybmVkIiw2MzQsInJtb25vc3BhY2UiLDY1MzYyLCJyb2hpcmFnYW5hIiwxMjQyOSwicm9rYXRha2FuYSIsMTI1MjUsInJva2F0YWthbmFoYWxmd2lkdGgiLDY1NDM1LCJyb3J1YXRoYWkiLDM2MTksInJwYXJlbiIsOTM4OSwicnJhYmVuZ2FsaSIsMjUyNCwicnJhZGV2YSIsMjM1MywicnJhZ3VybXVraGkiLDI2NTIsInJyZWhhcmFiaWMiLDE2ODEsInJyZWhmaW5hbGFyYWJpYyIsNjQzOTcsInJydm9jYWxpY2JlbmdhbGkiLDI1MjgsInJydm9jYWxpY2RldmEiLDI0MDAsInJydm9jYWxpY2d1amFyYXRpIiwyNzg0LCJycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNTAwLCJycnZvY2FsaWN2b3dlbHNpZ25kZXZhIiwyMzcyLCJycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aSIsMjc1NiwicnN1cGVyaW9yIiw2MzIxNywicnRibG9jayIsOTYxNiwicnR1cm5lZCIsNjMzLCJydHVybmVkc3VwZXJpb3IiLDY5MiwicnVoaXJhZ2FuYSIsMTI0MjcsInJ1a2F0YWthbmEiLDEyNTIzLCJydWthdGFrYW5haGFsZndpZHRoIiw2NTQzMywicnVwZWVtYXJrYmVuZ2FsaSIsMjU0NiwicnVwZWVzaWduYmVuZ2FsaSIsMjU0NywicnVwaWFoIiw2MzE5NywicnV0aGFpIiwzNjIwLCJydm9jYWxpY2JlbmdhbGkiLDI0NDMsInJ2b2NhbGljZGV2YSIsMjMxNSwicnZvY2FsaWNndWphcmF0aSIsMjY5OSwicnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNDk5LCJydm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDIzNzEsInJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTUsInMiLDExNSwic2FiZW5nYWxpIiwyNDg4LCJzYWN1dGUiLDM0Nywic2FjdXRlZG90YWNjZW50Iiw3NzgxLCJzYWRhcmFiaWMiLDE1ODksInNhZGV2YSIsMjM2MCwic2FkZmluYWxhcmFiaWMiLDY1MjEwLCJzYWRpbml0aWFsYXJhYmljIiw2NTIxMSwic2FkbWVkaWFsYXJhYmljIiw2NTIxMiwic2FndWphcmF0aSIsMjc0NCwic2FndXJtdWtoaSIsMjYxNiwic2FoaXJhZ2FuYSIsMTIzNzMsInNha2F0YWthbmEiLDEyNDY5LCJzYWthdGFrYW5haGFsZndpZHRoIiw2NTQwMywic2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYyIsNjUwMTgsInNhbWVraCIsMTUwNSwic2FtZWtoZGFnZXNoIiw2NDMyMSwic2FtZWtoZGFnZXNoaGVicmV3Iiw2NDMyMSwic2FtZWtoaGVicmV3IiwxNTA1LCJzYXJhYWF0aGFpIiwzNjM0LCJzYXJhYWV0aGFpIiwzNjQ5LCJzYXJhYWltYWltYWxhaXRoYWkiLDM2NTIsInNhcmFhaW1haW11YW50aGFpIiwzNjUxLCJzYXJhYW10aGFpIiwzNjM1LCJzYXJhYXRoYWkiLDM2MzIsInNhcmFldGhhaSIsMzY0OCwic2FyYWlpbGVmdHRoYWkiLDYzNjIyLCJzYXJhaWl0aGFpIiwzNjM3LCJzYXJhaWxlZnR0aGFpIiw2MzYyMSwic2FyYWl0aGFpIiwzNjM2LCJzYXJhb3RoYWkiLDM2NTAsInNhcmF1ZWVsZWZ0dGhhaSIsNjM2MjQsInNhcmF1ZWV0aGFpIiwzNjM5LCJzYXJhdWVsZWZ0dGhhaSIsNjM2MjMsInNhcmF1ZXRoYWkiLDM2MzgsInNhcmF1dGhhaSIsMzY0MCwic2FyYXV1dGhhaSIsMzY0MSwic2JvcG9tb2ZvIiwxMjU2OSwic2Nhcm9uIiwzNTMsInNjYXJvbmRvdGFjY2VudCIsNzc4Mywic2NlZGlsbGEiLDM1MSwic2Nod2EiLDYwMSwic2Nod2FjeXJpbGxpYyIsMTI0MSwic2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQzLCJzY2h3YWhvb2siLDYwMiwic2NpcmNsZSIsOTQ0Miwic2NpcmN1bWZsZXgiLDM0OSwic2NvbW1hYWNjZW50Iiw1MzcsInNkb3RhY2NlbnQiLDc3NzcsInNkb3RiZWxvdyIsNzc3OSwic2RvdGJlbG93ZG90YWNjZW50Iiw3Nzg1LCJzZWFndWxsYmVsb3djbWIiLDgyOCwic2Vjb25kIiw4MjQzLCJzZWNvbmR0b25lY2hpbmVzZSIsNzE0LCJzZWN0aW9uIiwxNjcsInNlZW5hcmFiaWMiLDE1ODcsInNlZW5maW5hbGFyYWJpYyIsNjUyMDIsInNlZW5pbml0aWFsYXJhYmljIiw2NTIwMywic2Vlbm1lZGlhbGFyYWJpYyIsNjUyMDQsInNlZ29sIiwxNDYyLCJzZWdvbDEzIiwxNDYyLCJzZWdvbDFmIiwxNDYyLCJzZWdvbDJjIiwxNDYyLCJzZWdvbGhlYnJldyIsMTQ2Miwic2Vnb2xuYXJyb3doZWJyZXciLDE0NjIsInNlZ29scXVhcnRlcmhlYnJldyIsMTQ2Miwic2Vnb2x0YWhlYnJldyIsMTQyNiwic2Vnb2x3aWRlaGVicmV3IiwxNDYyLCJzZWhhcm1lbmlhbiIsMTQwNSwic2VoaXJhZ2FuYSIsMTIzNzksInNla2F0YWthbmEiLDEyNDc1LCJzZWthdGFrYW5haGFsZndpZHRoIiw2NTQwNiwic2VtaWNvbG9uIiw1OSwic2VtaWNvbG9uYXJhYmljIiwxNTYzLCJzZW1pY29sb25tb25vc3BhY2UiLDY1MzA3LCJzZW1pY29sb25zbWFsbCIsNjUxMDgsInNlbWl2b2ljZWRtYXJra2FuYSIsMTI0NDQsInNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aCIsNjU0MzksInNlbnRpc3F1YXJlIiwxMzA5MCwic2VudG9zcXVhcmUiLDEzMDkxLCJzZXZlbiIsNTUsInNldmVuYXJhYmljIiwxNjM5LCJzZXZlbmJlbmdhbGkiLDI1NDEsInNldmVuY2lyY2xlIiw5MzE4LCJzZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI4LCJzZXZlbmRldmEiLDI0MTMsInNldmVuZWlnaHRocyIsODU0Miwic2V2ZW5ndWphcmF0aSIsMjc5Nywic2V2ZW5ndXJtdWtoaSIsMjY2OSwic2V2ZW5oYWNrYXJhYmljIiwxNjM5LCJzZXZlbmhhbmd6aG91IiwxMjMyNywic2V2ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOCwic2V2ZW5pbmZlcmlvciIsODMyNywic2V2ZW5tb25vc3BhY2UiLDY1MzAzLCJzZXZlbm9sZHN0eWxlIiw2MzI4Nywic2V2ZW5wYXJlbiIsOTMzOCwic2V2ZW5wZXJpb2QiLDkzNTgsInNldmVucGVyc2lhbiIsMTc4Mywic2V2ZW5yb21hbiIsODU2Niwic2V2ZW5zdXBlcmlvciIsODMxMSwic2V2ZW50ZWVuY2lyY2xlIiw5MzI4LCJzZXZlbnRlZW5wYXJlbiIsOTM0OCwic2V2ZW50ZWVucGVyaW9kIiw5MzY4LCJzZXZlbnRoYWkiLDM2NzEsInNmdGh5cGhlbiIsMTczLCJzaGFhcm1lbmlhbiIsMTM5OSwic2hhYmVuZ2FsaSIsMjQ4Niwic2hhY3lyaWxsaWMiLDEwOTYsInNoYWRkYWFyYWJpYyIsMTYxNywic2hhZGRhZGFtbWFhcmFiaWMiLDY0NjA5LCJzaGFkZGFkYW1tYXRhbmFyYWJpYyIsNjQ2MDYsInNoYWRkYWZhdGhhYXJhYmljIiw2NDYwOCwic2hhZGRha2FzcmFhcmFiaWMiLDY0NjEwLCJzaGFkZGFrYXNyYXRhbmFyYWJpYyIsNjQ2MDcsInNoYWRlIiw5NjE4LCJzaGFkZWRhcmsiLDk2MTksInNoYWRlbGlnaHQiLDk2MTcsInNoYWRlbWVkaXVtIiw5NjE4LCJzaGFkZXZhIiwyMzU4LCJzaGFndWphcmF0aSIsMjc0Miwic2hhZ3VybXVraGkiLDI2MTQsInNoYWxzaGVsZXRoZWJyZXciLDE0MjcsInNoYm9wb21vZm8iLDEyNTY1LCJzaGNoYWN5cmlsbGljIiwxMDk3LCJzaGVlbmFyYWJpYyIsMTU4OCwic2hlZW5maW5hbGFyYWJpYyIsNjUyMDYsInNoZWVuaW5pdGlhbGFyYWJpYyIsNjUyMDcsInNoZWVubWVkaWFsYXJhYmljIiw2NTIwOCwic2hlaWNvcHRpYyIsOTk1LCJzaGVxZWwiLDgzNjIsInNoZXFlbGhlYnJldyIsODM2Miwic2hldmEiLDE0NTYsInNoZXZhMTE1IiwxNDU2LCJzaGV2YTE1IiwxNDU2LCJzaGV2YTIyIiwxNDU2LCJzaGV2YTJlIiwxNDU2LCJzaGV2YWhlYnJldyIsMTQ1Niwic2hldmFuYXJyb3doZWJyZXciLDE0NTYsInNoZXZhcXVhcnRlcmhlYnJldyIsMTQ1Niwic2hldmF3aWRlaGVicmV3IiwxNDU2LCJzaGhhY3lyaWxsaWMiLDEyMTEsInNoaW1hY29wdGljIiwxMDA1LCJzaGluIiwxNTEzLCJzaGluZGFnZXNoIiw2NDMyOSwic2hpbmRhZ2VzaGhlYnJldyIsNjQzMjksInNoaW5kYWdlc2hzaGluZG90Iiw2NDMwMCwic2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXciLDY0MzAwLCJzaGluZGFnZXNoc2luZG90Iiw2NDMwMSwic2hpbmRhZ2VzaHNpbmRvdGhlYnJldyIsNjQzMDEsInNoaW5kb3RoZWJyZXciLDE0NzMsInNoaW5oZWJyZXciLDE1MTMsInNoaW5zaGluZG90Iiw2NDI5OCwic2hpbnNoaW5kb3RoZWJyZXciLDY0Mjk4LCJzaGluc2luZG90Iiw2NDI5OSwic2hpbnNpbmRvdGhlYnJldyIsNjQyOTksInNob29rIiw2NDIsInNpZ21hIiw5NjMsInNpZ21hMSIsOTYyLCJzaWdtYWZpbmFsIiw5NjIsInNpZ21hbHVuYXRlc3ltYm9sZ3JlZWsiLDEwMTAsInNpaGlyYWdhbmEiLDEyMzc1LCJzaWthdGFrYW5hIiwxMjQ3MSwic2lrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDQsInNpbHVxaGVicmV3IiwxNDY5LCJzaWx1cWxlZnRoZWJyZXciLDE0NjksInNpbWlsYXIiLDg3NjQsInNpbmRvdGhlYnJldyIsMTQ3NCwic2lvc2FjaXJjbGVrb3JlYW4iLDEyOTE2LCJzaW9zYXBhcmVua29yZWFuIiwxMjgyMCwic2lvc2NpZXVja29yZWFuIiwxMjY3MCwic2lvc2NpcmNsZWtvcmVhbiIsMTI5MDIsInNpb3NraXllb2trb3JlYW4iLDEyNjY2LCJzaW9za29yZWFuIiwxMjYxMywic2lvc25pZXVua29yZWFuIiwxMjY2Nywic2lvc3BhcmVua29yZWFuIiwxMjgwNiwic2lvc3BpZXVwa29yZWFuIiwxMjY2OSwic2lvc3Rpa2V1dGtvcmVhbiIsMTI2NjgsInNpeCIsNTQsInNpeGFyYWJpYyIsMTYzOCwic2l4YmVuZ2FsaSIsMjU0MCwic2l4Y2lyY2xlIiw5MzE3LCJzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNywic2l4ZGV2YSIsMjQxMiwic2l4Z3VqYXJhdGkiLDI3OTYsInNpeGd1cm11a2hpIiwyNjY4LCJzaXhoYWNrYXJhYmljIiwxNjM4LCJzaXhoYW5nemhvdSIsMTIzMjYsInNpeGlkZW9ncmFwaGljcGFyZW4iLDEyODM3LCJzaXhpbmZlcmlvciIsODMyNiwic2l4bW9ub3NwYWNlIiw2NTMwMiwic2l4b2xkc3R5bGUiLDYzMjg2LCJzaXhwYXJlbiIsOTMzNywic2l4cGVyaW9kIiw5MzU3LCJzaXhwZXJzaWFuIiwxNzgyLCJzaXhyb21hbiIsODU2NSwic2l4c3VwZXJpb3IiLDgzMTAsInNpeHRlZW5jaXJjbGUiLDkzMjcsInNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaSIsMjU1Mywic2l4dGVlbnBhcmVuIiw5MzQ3LCJzaXh0ZWVucGVyaW9kIiw5MzY3LCJzaXh0aGFpIiwzNjcwLCJzbGFzaCIsNDcsInNsYXNobW9ub3NwYWNlIiw2NTI5NSwic2xvbmciLDM4Mywic2xvbmdkb3RhY2NlbnQiLDc4MzUsInNtaWxlZmFjZSIsOTc4Niwic21vbm9zcGFjZSIsNjUzNjMsInNvZnBhc3VxaGVicmV3IiwxNDc1LCJzb2Z0aHlwaGVuIiwxNzMsInNvZnRzaWduY3lyaWxsaWMiLDExMDAsInNvaGlyYWdhbmEiLDEyMzgxLCJzb2thdGFrYW5hIiwxMjQ3Nywic29rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDcsInNvbGlkdXNsb25nb3ZlcmxheWNtYiIsODI0LCJzb2xpZHVzc2hvcnRvdmVybGF5Y21iIiw4MjMsInNvcnVzaXRoYWkiLDM2MjUsInNvc2FsYXRoYWkiLDM2MjQsInNvc290aGFpIiwzNTk1LCJzb3N1YXRoYWkiLDM2MjYsInNwYWNlIiwzMiwic3BhY2VoYWNrYXJhYmljIiwzMiwic3BhZGUiLDk4MjQsInNwYWRlc3VpdGJsYWNrIiw5ODI0LCJzcGFkZXN1aXR3aGl0ZSIsOTgyOCwic3BhcmVuIiw5MzkwLCJzcXVhcmViZWxvd2NtYiIsODI3LCJzcXVhcmVjYyIsMTMyNTIsInNxdWFyZWNtIiwxMzIxMywic3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTY0MSwic3F1YXJlaG9yaXpvbnRhbGZpbGwiLDk2MzYsInNxdWFyZWtnIiwxMzE5OSwic3F1YXJla20iLDEzMjE0LCJzcXVhcmVrbWNhcGl0YWwiLDEzMjYyLCJzcXVhcmVsbiIsMTMyNjUsInNxdWFyZWxvZyIsMTMyNjYsInNxdWFyZW1nIiwxMzE5OCwic3F1YXJlbWlsIiwxMzI2OSwic3F1YXJlbW0iLDEzMjEyLCJzcXVhcmVtc3F1YXJlZCIsMTMyMTcsInNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTYzOCwic3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbCIsOTYzOSwic3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbCIsOTY0MCwic3F1YXJldmVydGljYWxmaWxsIiw5NjM3LCJzcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrIiw5NjM1LCJzcnNxdWFyZSIsMTMyNzUsInNzYWJlbmdhbGkiLDI0ODcsInNzYWRldmEiLDIzNTksInNzYWd1amFyYXRpIiwyNzQzLCJzc2FuZ2NpZXVja29yZWFuIiwxMjYxNywic3NhbmdoaWV1aGtvcmVhbiIsMTI2NzcsInNzYW5naWV1bmdrb3JlYW4iLDEyNjcyLCJzc2FuZ2tpeWVva2tvcmVhbiIsMTI1OTQsInNzYW5nbmlldW5rb3JlYW4iLDEyNjQ1LCJzc2FuZ3BpZXVwa29yZWFuIiwxMjYxMSwic3NhbmdzaW9za29yZWFuIiwxMjYxNCwic3Nhbmd0aWtldXRrb3JlYW4iLDEyNjAwLCJzc3VwZXJpb3IiLDYzMjE4LCJzdGVybGluZyIsMTYzLCJzdGVybGluZ21vbm9zcGFjZSIsNjU1MDUsInN0cm9rZWxvbmdvdmVybGF5Y21iIiw4MjIsInN0cm9rZXNob3J0b3ZlcmxheWNtYiIsODIxLCJzdWJzZXQiLDg4MzQsInN1YnNldG5vdGVxdWFsIiw4ODQyLCJzdWJzZXRvcmVxdWFsIiw4ODM4LCJzdWNjZWVkcyIsODgyNywic3VjaHRoYXQiLDg3MTUsInN1aGlyYWdhbmEiLDEyMzc3LCJzdWthdGFrYW5hIiwxMjQ3Mywic3VrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDUsInN1a3VuYXJhYmljIiwxNjE4LCJzdW1tYXRpb24iLDg3MjEsInN1biIsOTc4OCwic3VwZXJzZXQiLDg4MzUsInN1cGVyc2V0bm90ZXF1YWwiLDg4NDMsInN1cGVyc2V0b3JlcXVhbCIsODgzOSwic3ZzcXVhcmUiLDEzMjc2LCJzeW91d2FlcmFzcXVhcmUiLDEzMTgwLCJ0IiwxMTYsInRhYmVuZ2FsaSIsMjQ2OCwidGFja2Rvd24iLDg4NjgsInRhY2tsZWZ0Iiw4ODY3LCJ0YWRldmEiLDIzNDAsInRhZ3VqYXJhdGkiLDI3MjQsInRhZ3VybXVraGkiLDI1OTYsInRhaGFyYWJpYyIsMTU5MSwidGFoZmluYWxhcmFiaWMiLDY1MjE4LCJ0YWhpbml0aWFsYXJhYmljIiw2NTIxOSwidGFoaXJhZ2FuYSIsMTIzODMsInRhaG1lZGlhbGFyYWJpYyIsNjUyMjAsInRhaXN5b3VlcmFzcXVhcmUiLDEzMTgxLCJ0YWthdGFrYW5hIiwxMjQ3OSwidGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDgsInRhdHdlZWxhcmFiaWMiLDE2MDAsInRhdSIsOTY0LCJ0YXYiLDE1MTQsInRhdmRhZ2VzIiw2NDMzMCwidGF2ZGFnZXNoIiw2NDMzMCwidGF2ZGFnZXNoaGVicmV3Iiw2NDMzMCwidGF2aGVicmV3IiwxNTE0LCJ0YmFyIiwzNTksInRib3BvbW9mbyIsMTI1NTQsInRjYXJvbiIsMzU3LCJ0Y2N1cmwiLDY4MCwidGNlZGlsbGEiLDM1NSwidGNoZWhhcmFiaWMiLDE2NzAsInRjaGVoZmluYWxhcmFiaWMiLDY0Mzc5LCJ0Y2hlaGluaXRpYWxhcmFiaWMiLDY0MzgwLCJ0Y2hlaG1lZGlhbGFyYWJpYyIsNjQzODEsInRjaXJjbGUiLDk0NDMsInRjaXJjdW1mbGV4YmVsb3ciLDc3OTMsInRjb21tYWFjY2VudCIsMzU1LCJ0ZGllcmVzaXMiLDc4MzEsInRkb3RhY2NlbnQiLDc3ODcsInRkb3RiZWxvdyIsNzc4OSwidGVjeXJpbGxpYyIsMTA5MCwidGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NywidGVoYXJhYmljIiwxNTc4LCJ0ZWhmaW5hbGFyYWJpYyIsNjUxNzQsInRlaGhhaGluaXRpYWxhcmFiaWMiLDY0Njc0LCJ0ZWhoYWhpc29sYXRlZGFyYWJpYyIsNjQ1MjQsInRlaGluaXRpYWxhcmFiaWMiLDY1MTc1LCJ0ZWhpcmFnYW5hIiwxMjM5MCwidGVoamVlbWluaXRpYWxhcmFiaWMiLDY0NjczLCJ0ZWhqZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIzLCJ0ZWhtYXJidXRhYXJhYmljIiwxNTc3LCJ0ZWhtYXJidXRhZmluYWxhcmFiaWMiLDY1MTcyLCJ0ZWhtZWRpYWxhcmFiaWMiLDY1MTc2LCJ0ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ2NzYsInRlaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1MjYsInRlaG5vb25maW5hbGFyYWJpYyIsNjQ2MjcsInRla2F0YWthbmEiLDEyNDg2LCJ0ZWthdGFrYW5haGFsZndpZHRoIiw2NTQxMSwidGVsZXBob25lIiw4NDgxLCJ0ZWxlcGhvbmVibGFjayIsOTc0MiwidGVsaXNoYWdlZG9sYWhlYnJldyIsMTQ0MCwidGVsaXNoYXFldGFuYWhlYnJldyIsMTQ0OSwidGVuY2lyY2xlIiw5MzIxLCJ0ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjg0MSwidGVucGFyZW4iLDkzNDEsInRlbnBlcmlvZCIsOTM2MSwidGVucm9tYW4iLDg1NjksInRlc2giLDY3OSwidGV0IiwxNDk2LCJ0ZXRkYWdlc2giLDY0MzEyLCJ0ZXRkYWdlc2hoZWJyZXciLDY0MzEyLCJ0ZXRoZWJyZXciLDE0OTYsInRldHNlY3lyaWxsaWMiLDEyMDUsInRldmlyaGVicmV3IiwxNDM1LCJ0ZXZpcmxlZnRoZWJyZXciLDE0MzUsInRoYWJlbmdhbGkiLDI0NjksInRoYWRldmEiLDIzNDEsInRoYWd1amFyYXRpIiwyNzI1LCJ0aGFndXJtdWtoaSIsMjU5NywidGhhbGFyYWJpYyIsMTU4NCwidGhhbGZpbmFsYXJhYmljIiw2NTE5NiwidGhhbnRoYWtoYXRsb3dsZWZ0dGhhaSIsNjM2NDAsInRoYW50aGFraGF0bG93cmlnaHR0aGFpIiw2MzYzOSwidGhhbnRoYWtoYXR0aGFpIiwzNjYwLCJ0aGFudGhha2hhdHVwcGVybGVmdHRoYWkiLDYzNjM4LCJ0aGVoYXJhYmljIiwxNTc5LCJ0aGVoZmluYWxhcmFiaWMiLDY1MTc4LCJ0aGVoaW5pdGlhbGFyYWJpYyIsNjUxNzksInRoZWhtZWRpYWxhcmFiaWMiLDY1MTgwLCJ0aGVyZWV4aXN0cyIsODcwNywidGhlcmVmb3JlIiw4NzU2LCJ0aGV0YSIsOTUyLCJ0aGV0YTEiLDk3NywidGhldGFzeW1ib2xncmVlayIsOTc3LCJ0aGlldXRoYWNpcmNsZWtvcmVhbiIsMTI5MjEsInRoaWV1dGhhcGFyZW5rb3JlYW4iLDEyODI1LCJ0aGlldXRoY2lyY2xla29yZWFuIiwxMjkwNywidGhpZXV0aGtvcmVhbiIsMTI2MjAsInRoaWV1dGhwYXJlbmtvcmVhbiIsMTI4MTEsInRoaXJ0ZWVuY2lyY2xlIiw5MzI0LCJ0aGlydGVlbnBhcmVuIiw5MzQ0LCJ0aGlydGVlbnBlcmlvZCIsOTM2NCwidGhvbmFuZ21vbnRob3RoYWkiLDM2MDEsInRob29rIiw0MjksInRob3BodXRoYW90aGFpIiwzNjAyLCJ0aG9ybiIsMjU0LCJ0aG90aGFoYW50aGFpIiwzNjA3LCJ0aG90aGFudGhhaSIsMzYwMCwidGhvdGhvbmd0aGFpIiwzNjA4LCJ0aG90aHVuZ3RoYWkiLDM2MDYsInRob3VzYW5kY3lyaWxsaWMiLDExNTQsInRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYyIsMTY0NCwidGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbiIsMTY0NCwidGhyZWUiLDUxLCJ0aHJlZWFyYWJpYyIsMTYzNSwidGhyZWViZW5nYWxpIiwyNTM3LCJ0aHJlZWNpcmNsZSIsOTMxNCwidGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNCwidGhyZWVkZXZhIiwyNDA5LCJ0aHJlZWVpZ2h0aHMiLDg1NDAsInRocmVlZ3VqYXJhdGkiLDI3OTMsInRocmVlZ3VybXVraGkiLDI2NjUsInRocmVlaGFja2FyYWJpYyIsMTYzNSwidGhyZWVoYW5nemhvdSIsMTIzMjMsInRocmVlaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzQsInRocmVlaW5mZXJpb3IiLDgzMjMsInRocmVlbW9ub3NwYWNlIiw2NTI5OSwidGhyZWVudW1lcmF0b3JiZW5nYWxpIiwyNTUwLCJ0aHJlZW9sZHN0eWxlIiw2MzI4MywidGhyZWVwYXJlbiIsOTMzNCwidGhyZWVwZXJpb2QiLDkzNTQsInRocmVlcGVyc2lhbiIsMTc3OSwidGhyZWVxdWFydGVycyIsMTkwLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiw2MzE5OCwidGhyZWVyb21hbiIsODU2MiwidGhyZWVzdXBlcmlvciIsMTc5LCJ0aHJlZXRoYWkiLDM2NjcsInRoenNxdWFyZSIsMTMyMDQsInRpaGlyYWdhbmEiLDEyMzg1LCJ0aWthdGFrYW5hIiwxMjQ4MSwidGlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDksInRpa2V1dGFjaXJjbGVrb3JlYW4iLDEyOTEyLCJ0aWtldXRhcGFyZW5rb3JlYW4iLDEyODE2LCJ0aWtldXRjaXJjbGVrb3JlYW4iLDEyODk4LCJ0aWtldXRrb3JlYW4iLDEyNTk5LCJ0aWtldXRwYXJlbmtvcmVhbiIsMTI4MDIsInRpbGRlIiw3MzIsInRpbGRlYmVsb3djbWIiLDgxNiwidGlsZGVjbWIiLDc3MSwidGlsZGVjb21iIiw3NzEsInRpbGRlZG91YmxlY21iIiw4NjQsInRpbGRlb3BlcmF0b3IiLDg3NjQsInRpbGRlb3ZlcmxheWNtYiIsODIwLCJ0aWxkZXZlcnRpY2FsY21iIiw4MzAsInRpbWVzY2lyY2xlIiw4ODU1LCJ0aXBlaGFoZWJyZXciLDE0MzAsInRpcGVoYWxlZnRoZWJyZXciLDE0MzAsInRpcHBpZ3VybXVraGkiLDI2NzIsInRpdGxvY3lyaWxsaWNjbWIiLDExNTUsInRpd25hcm1lbmlhbiIsMTQwNywidGxpbmViZWxvdyIsNzc5MSwidG1vbm9zcGFjZSIsNjUzNjQsInRvYXJtZW5pYW4iLDEzODUsInRvaGlyYWdhbmEiLDEyMzkyLCJ0b2thdGFrYW5hIiwxMjQ4OCwidG9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTIsInRvbmViYXJleHRyYWhpZ2htb2QiLDc0MSwidG9uZWJhcmV4dHJhbG93bW9kIiw3NDUsInRvbmViYXJoaWdobW9kIiw3NDIsInRvbmViYXJsb3dtb2QiLDc0NCwidG9uZWJhcm1pZG1vZCIsNzQzLCJ0b25lZml2ZSIsNDQ1LCJ0b25lc2l4IiwzODksInRvbmV0d28iLDQyNCwidG9ub3MiLDkwMCwidG9uc3F1YXJlIiwxMzA5NSwidG9wYXRha3RoYWkiLDM1OTksInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMDgsInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsIiw2NTExNywidG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDgxLCJ0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0IiwxMjMwOSwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsIiw2NTExOCwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4MiwidG90YW90aGFpIiwzNjA1LCJ0cGFsYXRhbGhvb2siLDQyNywidHBhcmVuIiw5MzkxLCJ0cmFkZW1hcmsiLDg0ODIsInRyYWRlbWFya3NhbnMiLDYzNzIyLCJ0cmFkZW1hcmtzZXJpZiIsNjMxOTUsInRyZXRyb2ZsZXhob29rIiw2NDgsInRyaWFnZG4iLDk2NjAsInRyaWFnbGYiLDk2NjgsInRyaWFncnQiLDk2NTgsInRyaWFndXAiLDk2NTAsInRzIiw2NzgsInRzYWRpIiwxNTEwLCJ0c2FkaWRhZ2VzaCIsNjQzMjYsInRzYWRpZGFnZXNoaGVicmV3Iiw2NDMyNiwidHNhZGloZWJyZXciLDE1MTAsInRzZWN5cmlsbGljIiwxMDk0LCJ0c2VyZSIsMTQ2MSwidHNlcmUxMiIsMTQ2MSwidHNlcmUxZSIsMTQ2MSwidHNlcmUyYiIsMTQ2MSwidHNlcmVoZWJyZXciLDE0NjEsInRzZXJlbmFycm93aGVicmV3IiwxNDYxLCJ0c2VyZXF1YXJ0ZXJoZWJyZXciLDE0NjEsInRzZXJld2lkZWhlYnJldyIsMTQ2MSwidHNoZWN5cmlsbGljIiwxMTE1LCJ0c3VwZXJpb3IiLDYzMjE5LCJ0dGFiZW5nYWxpIiwyNDYzLCJ0dGFkZXZhIiwyMzM1LCJ0dGFndWphcmF0aSIsMjcxOSwidHRhZ3VybXVraGkiLDI1OTEsInR0ZWhhcmFiaWMiLDE2NTcsInR0ZWhmaW5hbGFyYWJpYyIsNjQzNTksInR0ZWhpbml0aWFsYXJhYmljIiw2NDM2MCwidHRlaG1lZGlhbGFyYWJpYyIsNjQzNjEsInR0aGFiZW5nYWxpIiwyNDY0LCJ0dGhhZGV2YSIsMjMzNiwidHRoYWd1amFyYXRpIiwyNzIwLCJ0dGhhZ3VybXVraGkiLDI1OTIsInR0dXJuZWQiLDY0NywidHVoaXJhZ2FuYSIsMTIzODgsInR1a2F0YWthbmEiLDEyNDg0LCJ0dWthdGFrYW5haGFsZndpZHRoIiw2NTQxMCwidHVzbWFsbGhpcmFnYW5hIiwxMjM4NywidHVzbWFsbGthdGFrYW5hIiwxMjQ4MywidHVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM5MSwidHdlbHZlY2lyY2xlIiw5MzIzLCJ0d2VsdmVwYXJlbiIsOTM0MywidHdlbHZlcGVyaW9kIiw5MzYzLCJ0d2VsdmVyb21hbiIsODU3MSwidHdlbnR5Y2lyY2xlIiw5MzMxLCJ0d2VudHloYW5nemhvdSIsMjEzMTYsInR3ZW50eXBhcmVuIiw5MzUxLCJ0d2VudHlwZXJpb2QiLDkzNzEsInR3byIsNTAsInR3b2FyYWJpYyIsMTYzNCwidHdvYmVuZ2FsaSIsMjUzNiwidHdvY2lyY2xlIiw5MzEzLCJ0d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyMywidHdvZGV2YSIsMjQwOCwidHdvZG90ZW5sZWFkZXIiLDgyMjksInR3b2RvdGxlYWRlciIsODIyOSwidHdvZG90bGVhZGVydmVydGljYWwiLDY1MDcyLCJ0d29ndWphcmF0aSIsMjc5MiwidHdvZ3VybXVraGkiLDI2NjQsInR3b2hhY2thcmFiaWMiLDE2MzQsInR3b2hhbmd6aG91IiwxMjMyMiwidHdvaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzMsInR3b2luZmVyaW9yIiw4MzIyLCJ0d29tb25vc3BhY2UiLDY1Mjk4LCJ0d29udW1lcmF0b3JiZW5nYWxpIiwyNTQ5LCJ0d29vbGRzdHlsZSIsNjMyODIsInR3b3BhcmVuIiw5MzMzLCJ0d29wZXJpb2QiLDkzNTMsInR3b3BlcnNpYW4iLDE3NzgsInR3b3JvbWFuIiw4NTYxLCJ0d29zdHJva2UiLDQ0MywidHdvc3VwZXJpb3IiLDE3OCwidHdvdGhhaSIsMzY2NiwidHdvdGhpcmRzIiw4NTMyLCJ1IiwxMTcsInVhY3V0ZSIsMjUwLCJ1YmFyIiw2NDksInViZW5nYWxpIiwyNDQxLCJ1Ym9wb21vZm8iLDEyNTg0LCJ1YnJldmUiLDM2NSwidWNhcm9uIiw0NjgsInVjaXJjbGUiLDk0NDQsInVjaXJjdW1mbGV4IiwyNTEsInVjaXJjdW1mbGV4YmVsb3ciLDc3OTksInVjeXJpbGxpYyIsMTA5MSwidWRhdHRhZGV2YSIsMjM4NSwidWRibGFjdXRlIiwzNjksInVkYmxncmF2ZSIsNTMzLCJ1ZGV2YSIsMjMxMywidWRpZXJlc2lzIiwyNTIsInVkaWVyZXNpc2FjdXRlIiw0NzIsInVkaWVyZXNpc2JlbG93Iiw3Nzk1LCJ1ZGllcmVzaXNjYXJvbiIsNDc0LCJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI2NSwidWRpZXJlc2lzZ3JhdmUiLDQ3NiwidWRpZXJlc2lzbWFjcm9uIiw0NzAsInVkb3RiZWxvdyIsNzkwOSwidWdyYXZlIiwyNDksInVndWphcmF0aSIsMjY5NywidWd1cm11a2hpIiwyNTY5LCJ1aGlyYWdhbmEiLDEyMzU4LCJ1aG9va2Fib3ZlIiw3OTExLCJ1aG9ybiIsNDMyLCJ1aG9ybmFjdXRlIiw3OTEzLCJ1aG9ybmRvdGJlbG93Iiw3OTIxLCJ1aG9ybmdyYXZlIiw3OTE1LCJ1aG9ybmhvb2thYm92ZSIsNzkxNywidWhvcm50aWxkZSIsNzkxOSwidWh1bmdhcnVtbGF1dCIsMzY5LCJ1aHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjcsInVpbnZlcnRlZGJyZXZlIiw1MzUsInVrYXRha2FuYSIsMTI0NTQsInVrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTUsInVrY3lyaWxsaWMiLDExNDUsInVrb3JlYW4iLDEyNjM2LCJ1bWFjcm9uIiwzNjMsInVtYWNyb25jeXJpbGxpYyIsMTI2MywidW1hY3JvbmRpZXJlc2lzIiw3ODAzLCJ1bWF0cmFndXJtdWtoaSIsMjYyNSwidW1vbm9zcGFjZSIsNjUzNjUsInVuZGVyc2NvcmUiLDk1LCJ1bmRlcnNjb3JlZGJsIiw4MjE1LCJ1bmRlcnNjb3JlbW9ub3NwYWNlIiw2NTM0MywidW5kZXJzY29yZXZlcnRpY2FsIiw2NTA3NSwidW5kZXJzY29yZXdhdnkiLDY1MTAzLCJ1bmlvbiIsODc0NiwidW5pdmVyc2FsIiw4NzA0LCJ1b2dvbmVrIiwzNzEsInVwYXJlbiIsOTM5MiwidXBibG9jayIsOTYwMCwidXBwZXJkb3RoZWJyZXciLDE0NzYsInVwc2lsb24iLDk2NSwidXBzaWxvbmRpZXJlc2lzIiw5NzEsInVwc2lsb25kaWVyZXNpc3Rvbm9zIiw5NDQsInVwc2lsb25sYXRpbiIsNjUwLCJ1cHNpbG9udG9ub3MiLDk3MywidXB0YWNrYmVsb3djbWIiLDc5NywidXB0YWNrbW9kIiw3MjQsInVyYWd1cm11a2hpIiwyNjc1LCJ1cmluZyIsMzY3LCJ1c2hvcnRjeXJpbGxpYyIsMTExOCwidXNtYWxsaGlyYWdhbmEiLDEyMzU3LCJ1c21hbGxrYXRha2FuYSIsMTI0NTMsInVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NSwidXN0cmFpZ2h0Y3lyaWxsaWMiLDExOTksInVzdHJhaWdodHN0cm9rZWN5cmlsbGljIiwxMjAxLCJ1dGlsZGUiLDM2MSwidXRpbGRlYWN1dGUiLDc4MDEsInV0aWxkZWJlbG93Iiw3Nzk3LCJ1dWJlbmdhbGkiLDI0NDIsInV1ZGV2YSIsMjMxNCwidXVndWphcmF0aSIsMjY5OCwidXVndXJtdWtoaSIsMjU3MCwidXVtYXRyYWd1cm11a2hpIiwyNjI2LCJ1dXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTgsInV1dm93ZWxzaWduZGV2YSIsMjM3MCwidXV2b3dlbHNpZ25ndWphcmF0aSIsMjc1NCwidXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTcsInV2b3dlbHNpZ25kZXZhIiwyMzY5LCJ1dm93ZWxzaWduZ3VqYXJhdGkiLDI3NTMsInYiLDExOCwidmFkZXZhIiwyMzU3LCJ2YWd1amFyYXRpIiwyNzQxLCJ2YWd1cm11a2hpIiwyNjEzLCJ2YWthdGFrYW5hIiwxMjUzNSwidmF2IiwxNDkzLCJ2YXZkYWdlc2giLDY0MzA5LCJ2YXZkYWdlc2g2NSIsNjQzMDksInZhdmRhZ2VzaGhlYnJldyIsNjQzMDksInZhdmhlYnJldyIsMTQ5MywidmF2aG9sYW0iLDY0MzMxLCJ2YXZob2xhbWhlYnJldyIsNjQzMzEsInZhdnZhdmhlYnJldyIsMTUyMCwidmF2eW9kaGVicmV3IiwxNTIxLCJ2Y2lyY2xlIiw5NDQ1LCJ2ZG90YmVsb3ciLDc4MDcsInZlY3lyaWxsaWMiLDEwNzQsInZlaGFyYWJpYyIsMTcwMCwidmVoZmluYWxhcmFiaWMiLDY0MzYzLCJ2ZWhpbml0aWFsYXJhYmljIiw2NDM2NCwidmVobWVkaWFsYXJhYmljIiw2NDM2NSwidmVrYXRha2FuYSIsMTI1MzcsInZlbnVzIiw5NzkyLCJ2ZXJ0aWNhbGJhciIsMTI0LCJ2ZXJ0aWNhbGxpbmVhYm92ZWNtYiIsNzgxLCJ2ZXJ0aWNhbGxpbmViZWxvd2NtYiIsODA5LCJ2ZXJ0aWNhbGxpbmVsb3dtb2QiLDcxNiwidmVydGljYWxsaW5lbW9kIiw3MTIsInZld2FybWVuaWFuIiwxNDA2LCJ2aG9vayIsNjUxLCJ2aWthdGFrYW5hIiwxMjUzNiwidmlyYW1hYmVuZ2FsaSIsMjUwOSwidmlyYW1hZGV2YSIsMjM4MSwidmlyYW1hZ3VqYXJhdGkiLDI3NjUsInZpc2FyZ2FiZW5nYWxpIiwyNDM1LCJ2aXNhcmdhZGV2YSIsMjMwNywidmlzYXJnYWd1amFyYXRpIiwyNjkxLCJ2bW9ub3NwYWNlIiw2NTM2Niwidm9hcm1lbmlhbiIsMTQwMCwidm9pY2VkaXRlcmF0aW9uaGlyYWdhbmEiLDEyNDQ2LCJ2b2ljZWRpdGVyYXRpb25rYXRha2FuYSIsMTI1NDIsInZvaWNlZG1hcmtrYW5hIiwxMjQ0Mywidm9pY2VkbWFya2thbmFoYWxmd2lkdGgiLDY1NDM4LCJ2b2thdGFrYW5hIiwxMjUzOCwidnBhcmVuIiw5MzkzLCJ2dGlsZGUiLDc4MDUsInZ0dXJuZWQiLDY1MiwidnVoaXJhZ2FuYSIsMTI0MzYsInZ1a2F0YWthbmEiLDEyNTMyLCJ3IiwxMTksIndhY3V0ZSIsNzgxMSwid2Fla29yZWFuIiwxMjYzMywid2FoaXJhZ2FuYSIsMTI0MzEsIndha2F0YWthbmEiLDEyNTI3LCJ3YWthdGFrYW5haGFsZndpZHRoIiw2NTQzNiwid2Frb3JlYW4iLDEyNjMyLCJ3YXNtYWxsaGlyYWdhbmEiLDEyNDMwLCJ3YXNtYWxsa2F0YWthbmEiLDEyNTI2LCJ3YXR0b3NxdWFyZSIsMTMxNDMsIndhdmVkYXNoIiwxMjMxNiwid2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbCIsNjUwNzYsIndhd2FyYWJpYyIsMTYwOCwid2F3ZmluYWxhcmFiaWMiLDY1MjYyLCJ3YXdoYW16YWFib3ZlYXJhYmljIiwxNTcyLCJ3YXdoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU4LCJ3YnNxdWFyZSIsMTMyNzcsIndjaXJjbGUiLDk0NDYsIndjaXJjdW1mbGV4IiwzNzMsIndkaWVyZXNpcyIsNzgxMywid2RvdGFjY2VudCIsNzgxNSwid2RvdGJlbG93Iiw3ODE3LCJ3ZWhpcmFnYW5hIiwxMjQzMywid2VpZXJzdHJhc3MiLDg0NzIsIndla2F0YWthbmEiLDEyNTI5LCJ3ZWtvcmVhbiIsMTI2MzgsIndlb2tvcmVhbiIsMTI2MzcsIndncmF2ZSIsNzgwOSwid2hpdGVidWxsZXQiLDk3MDIsIndoaXRlY2lyY2xlIiw5Njc1LCJ3aGl0ZWNpcmNsZWludmVyc2UiLDk2ODksIndoaXRlY29ybmVyYnJhY2tldGxlZnQiLDEyMzAyLCJ3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDkxLCJ3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodCIsMTIzMDMsIndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkyLCJ3aGl0ZWRpYW1vbmQiLDk2NzEsIndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZCIsOTY3Miwid2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlIiw5NjYzLCJ3aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlIiw5NjYxLCJ3aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NjcsIndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGUiLDk2NjUsIndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0IiwxMjMxMCwid2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMxMSwid2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1Nywid2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGUiLDk2NTUsIndoaXRlc21hbGxzcXVhcmUiLDk2NDMsIndoaXRlc21pbGluZ2ZhY2UiLDk3ODYsIndoaXRlc3F1YXJlIiw5NjMzLCJ3aGl0ZXN0YXIiLDk3MzQsIndoaXRldGVsZXBob25lIiw5NzQzLCJ3aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMTIsIndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodCIsMTIzMTMsIndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NTMsIndoaXRldXBwb2ludGluZ3RyaWFuZ2xlIiw5NjUxLCJ3aWhpcmFnYW5hIiwxMjQzMiwid2lrYXRha2FuYSIsMTI1MjgsIndpa29yZWFuIiwxMjYzOSwid21vbm9zcGFjZSIsNjUzNjcsIndvaGlyYWdhbmEiLDEyNDM0LCJ3b2thdGFrYW5hIiwxMjUzMCwid29rYXRha2FuYWhhbGZ3aWR0aCIsNjUzODIsIndvbiIsODM2MSwid29ubW9ub3NwYWNlIiw2NTUxMCwid293YWVudGhhaSIsMzYyMywid3BhcmVuIiw5Mzk0LCJ3cmluZyIsNzgzMiwid3N1cGVyaW9yIiw2OTUsInd0dXJuZWQiLDY1Mywid3lubiIsNDQ3LCJ4IiwxMjAsInhhYm92ZWNtYiIsODI5LCJ4Ym9wb21vZm8iLDEyNTYyLCJ4Y2lyY2xlIiw5NDQ3LCJ4ZGllcmVzaXMiLDc4MjEsInhkb3RhY2NlbnQiLDc4MTksInhlaGFybWVuaWFuIiwxMzg5LCJ4aSIsOTU4LCJ4bW9ub3NwYWNlIiw2NTM2OCwieHBhcmVuIiw5Mzk1LCJ4c3VwZXJpb3IiLDczOSwieSIsMTIxLCJ5YWFkb3NxdWFyZSIsMTMxMzQsInlhYmVuZ2FsaSIsMjQ3OSwieWFjdXRlIiwyNTMsInlhZGV2YSIsMjM1MSwieWFla29yZWFuIiwxMjYyNiwieWFndWphcmF0aSIsMjczNSwieWFndXJtdWtoaSIsMjYwNywieWFoaXJhZ2FuYSIsMTI0MjAsInlha2F0YWthbmEiLDEyNTE2LCJ5YWthdGFrYW5haGFsZndpZHRoIiw2NTQyOCwieWFrb3JlYW4iLDEyNjI1LCJ5YW1ha2thbnRoYWkiLDM2NjIsInlhc21hbGxoaXJhZ2FuYSIsMTI0MTksInlhc21hbGxrYXRha2FuYSIsMTI1MTUsInlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aCIsNjUzODgsInlhdGN5cmlsbGljIiwxMTIzLCJ5Y2lyY2xlIiw5NDQ4LCJ5Y2lyY3VtZmxleCIsMzc1LCJ5ZGllcmVzaXMiLDI1NSwieWRvdGFjY2VudCIsNzgyMywieWRvdGJlbG93Iiw3OTI1LCJ5ZWhhcmFiaWMiLDE2MTAsInllaGJhcnJlZWFyYWJpYyIsMTc0NiwieWVoYmFycmVlZmluYWxhcmFiaWMiLDY0NDMxLCJ5ZWhmaW5hbGFyYWJpYyIsNjUyNjYsInllaGhhbXphYWJvdmVhcmFiaWMiLDE1NzQsInllaGhhbXphYWJvdmVmaW5hbGFyYWJpYyIsNjUxNjIsInllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljIiw2NTE2MywieWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYyIsNjUxNjQsInllaGluaXRpYWxhcmFiaWMiLDY1MjY3LCJ5ZWhtZWRpYWxhcmFiaWMiLDY1MjY4LCJ5ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MzMsInllaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ2MDAsInllaG5vb25maW5hbGFyYWJpYyIsNjQ2NjAsInllaHRocmVlZG90c2JlbG93YXJhYmljIiwxNzQ1LCJ5ZWtvcmVhbiIsMTI2MzAsInllbiIsMTY1LCJ5ZW5tb25vc3BhY2UiLDY1NTA5LCJ5ZW9rb3JlYW4iLDEyNjI5LCJ5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NzgsInllcmFoYmVueW9tb2hlYnJldyIsMTQ1MCwieWVyYWhiZW55b21vbGVmdGhlYnJldyIsMTQ1MCwieWVyaWN5cmlsbGljIiwxMDk5LCJ5ZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MywieWVzaWV1bmdrb3JlYW4iLDEyNjczLCJ5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW4iLDEyNjc1LCJ5ZXNpZXVuZ3Npb3Nrb3JlYW4iLDEyNjc0LCJ5ZXRpdmhlYnJldyIsMTQzNCwieWdyYXZlIiw3OTIzLCJ5aG9vayIsNDM2LCJ5aG9va2Fib3ZlIiw3OTI3LCJ5aWFybWVuaWFuIiwxMzk3LCJ5aWN5cmlsbGljIiwxMTExLCJ5aWtvcmVhbiIsMTI2NDIsInlpbnlhbmciLDk3NzUsInlpd25hcm1lbmlhbiIsMTQxMCwieW1vbm9zcGFjZSIsNjUzNjksInlvZCIsMTQ5NywieW9kZGFnZXNoIiw2NDMxMywieW9kZGFnZXNoaGVicmV3Iiw2NDMxMywieW9kaGVicmV3IiwxNDk3LCJ5b2R5b2RoZWJyZXciLDE1MjIsInlvZHlvZHBhdGFoaGVicmV3Iiw2NDI4NywieW9oaXJhZ2FuYSIsMTI0MjQsInlvaWtvcmVhbiIsMTI2ODEsInlva2F0YWthbmEiLDEyNTIwLCJ5b2thdGFrYW5haGFsZndpZHRoIiw2NTQzMCwieW9rb3JlYW4iLDEyNjM1LCJ5b3NtYWxsaGlyYWdhbmEiLDEyNDIzLCJ5b3NtYWxsa2F0YWthbmEiLDEyNTE5LCJ5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1MzkwLCJ5b3RncmVlayIsMTAxMSwieW95YWVrb3JlYW4iLDEyNjgwLCJ5b3lha29yZWFuIiwxMjY3OSwieW95YWt0aGFpIiwzNjE4LCJ5b3lpbmd0aGFpIiwzNTk3LCJ5cGFyZW4iLDkzOTYsInlwb2dlZ3JhbW1lbmkiLDg5MCwieXBvZ2VncmFtbWVuaWdyZWVrY21iIiw4MzcsInlyIiw0MjIsInlyaW5nIiw3ODMzLCJ5c3VwZXJpb3IiLDY5NiwieXRpbGRlIiw3OTI5LCJ5dHVybmVkIiw2NTQsInl1aGlyYWdhbmEiLDEyNDIyLCJ5dWlrb3JlYW4iLDEyNjg0LCJ5dWthdGFrYW5hIiwxMjUxOCwieXVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjksInl1a29yZWFuIiwxMjY0MCwieXVzYmlnY3lyaWxsaWMiLDExMzEsInl1c2JpZ2lvdGlmaWVkY3lyaWxsaWMiLDExMzMsInl1c2xpdHRsZWN5cmlsbGljIiwxMTI3LCJ5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljIiwxMTI5LCJ5dXNtYWxsaGlyYWdhbmEiLDEyNDIxLCJ5dXNtYWxsa2F0YWthbmEiLDEyNTE3LCJ5dXNtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1Mzg5LCJ5dXlla29yZWFuIiwxMjY4MywieXV5ZW9rb3JlYW4iLDEyNjgyLCJ5eWFiZW5nYWxpIiwyNTI3LCJ5eWFkZXZhIiwyMzk5LCJ6IiwxMjIsInphYXJtZW5pYW4iLDEzODIsInphY3V0ZSIsMzc4LCJ6YWRldmEiLDIzOTUsInphZ3VybXVraGkiLDI2NTEsInphaGFyYWJpYyIsMTU5MiwiemFoZmluYWxhcmFiaWMiLDY1MjIyLCJ6YWhpbml0aWFsYXJhYmljIiw2NTIyMywiemFoaXJhZ2FuYSIsMTIzNzQsInphaG1lZGlhbGFyYWJpYyIsNjUyMjQsInphaW5hcmFiaWMiLDE1ODYsInphaW5maW5hbGFyYWJpYyIsNjUyMDAsInpha2F0YWthbmEiLDEyNDcwLCJ6YXFlZmdhZG9saGVicmV3IiwxNDI5LCJ6YXFlZnFhdGFuaGVicmV3IiwxNDI4LCJ6YXJxYWhlYnJldyIsMTQzMiwiemF5aW4iLDE0OTQsInpheWluZGFnZXNoIiw2NDMxMCwiemF5aW5kYWdlc2hoZWJyZXciLDY0MzEwLCJ6YXlpbmhlYnJldyIsMTQ5NCwiemJvcG9tb2ZvIiwxMjU2NywiemNhcm9uIiwzODIsInpjaXJjbGUiLDk0NDksInpjaXJjdW1mbGV4Iiw3ODI1LCJ6Y3VybCIsNjU3LCJ6ZG90IiwzODAsInpkb3RhY2NlbnQiLDM4MCwiemRvdGJlbG93Iiw3ODI3LCJ6ZWN5cmlsbGljIiwxMDc5LCJ6ZWRlc2NlbmRlcmN5cmlsbGljIiwxMTc3LCJ6ZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDcsInplaGlyYWdhbmEiLDEyMzgwLCJ6ZWthdGFrYW5hIiwxMjQ3NiwiemVybyIsNDgsInplcm9hcmFiaWMiLDE2MzIsInplcm9iZW5nYWxpIiwyNTM0LCJ6ZXJvZGV2YSIsMjQwNiwiemVyb2d1amFyYXRpIiwyNzkwLCJ6ZXJvZ3VybXVraGkiLDI2NjIsInplcm9oYWNrYXJhYmljIiwxNjMyLCJ6ZXJvaW5mZXJpb3IiLDgzMjAsInplcm9tb25vc3BhY2UiLDY1Mjk2LCJ6ZXJvb2xkc3R5bGUiLDYzMjgwLCJ6ZXJvcGVyc2lhbiIsMTc3NiwiemVyb3N1cGVyaW9yIiw4MzA0LCJ6ZXJvdGhhaSIsMzY2NCwiemVyb3dpZHRoam9pbmVyIiw2NTI3OSwiemVyb3dpZHRobm9uam9pbmVyIiw4MjA0LCJ6ZXJvd2lkdGhzcGFjZSIsODIwMywiemV0YSIsOTUwLCJ6aGJvcG9tb2ZvIiwxMjU2MywiemhlYXJtZW5pYW4iLDEzODYsInpoZWJyZXZlY3lyaWxsaWMiLDEyMTgsInpoZWN5cmlsbGljIiwxMDc4LCJ6aGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NSwiemhlZGllcmVzaXNjeXJpbGxpYyIsMTI0NSwiemloaXJhZ2FuYSIsMTIzNzYsInppa2F0YWthbmEiLDEyNDcyLCJ6aW5vcmhlYnJldyIsMTQ1NCwiemxpbmViZWxvdyIsNzgyOSwiem1vbm9zcGFjZSIsNjUzNzAsInpvaGlyYWdhbmEiLDEyMzgyLCJ6b2thdGFrYW5hIiwxMjQ3OCwienBhcmVuIiw5Mzk3LCJ6cmV0cm9mbGV4aG9vayIsNjU2LCJ6c3Ryb2tlIiw0MzgsInp1aGlyYWdhbmEiLDEyMzc4LCJ6dWthdGFrYW5hIiwxMjQ3NCwiLm5vdGRlZiIsMCwiYW5nYnJhY2tldGxlZnRiaWciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnIiw5MDAxLCJhbmdicmFja2V0bGVmdGJpZ2ciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnZyIsOTAwMSwiYW5nYnJhY2tldHJpZ2h0QmlnIiw5MDAyLCJhbmdicmFja2V0cmlnaHRiaWciLDkwMDIsImFuZ2JyYWNrZXRyaWdodEJpZ2ciLDkwMDIsImFuZ2JyYWNrZXRyaWdodGJpZ2ciLDkwMDIsImFycm93aG9va2xlZnQiLDg2MTgsImFycm93aG9va3JpZ2h0Iiw4NjE3LCJhcnJvd2xlZnR0b3BoYWxmIiw4NjM2LCJhcnJvd2xlZnRib3RoYWxmIiw4NjM3LCJhcnJvd25vcnRoZWFzdCIsODU5OSwiYXJyb3dub3J0aHdlc3QiLDg1OTgsImFycm93cmlnaHR0b3BoYWxmIiw4NjQwLCJhcnJvd3JpZ2h0Ym90aGFsZiIsODY0MSwiYXJyb3dzb3V0aGVhc3QiLDg2MDAsImFycm93c291dGh3ZXN0Iiw4NjAxLCJiYWNrc2xhc2hiaWciLDg3MjYsImJhY2tzbGFzaEJpZyIsODcyNiwiYmFja3NsYXNoQmlnZyIsODcyNiwiYmFja3NsYXNoYmlnZyIsODcyNiwiYmFyZGJsIiw4MjE0LCJicmFjZWh0aXBkb3dubGVmdCIsNjUwNzksImJyYWNlaHRpcGRvd25yaWdodCIsNjUwNzksImJyYWNlaHRpcHVwbGVmdCIsNjUwODAsImJyYWNlaHRpcHVwcmlnaHQiLDY1MDgwLCJicmFjZWxlZnRCaWciLDEyMywiYnJhY2VsZWZ0YmlnIiwxMjMsImJyYWNlbGVmdGJpZ2ciLDEyMywiYnJhY2VsZWZ0QmlnZyIsMTIzLCJicmFjZXJpZ2h0QmlnIiwxMjUsImJyYWNlcmlnaHRiaWciLDEyNSwiYnJhY2VyaWdodGJpZ2ciLDEyNSwiYnJhY2VyaWdodEJpZ2ciLDEyNSwiYnJhY2tldGxlZnRiaWciLDkxLCJicmFja2V0bGVmdEJpZyIsOTEsImJyYWNrZXRsZWZ0YmlnZyIsOTEsImJyYWNrZXRsZWZ0QmlnZyIsOTEsImJyYWNrZXRyaWdodEJpZyIsOTMsImJyYWNrZXRyaWdodGJpZyIsOTMsImJyYWNrZXRyaWdodGJpZ2ciLDkzLCJicmFja2V0cmlnaHRCaWdnIiw5MywiY2VpbGluZ2xlZnRiaWciLDg5NjgsImNlaWxpbmdsZWZ0QmlnIiw4OTY4LCJjZWlsaW5nbGVmdEJpZ2ciLDg5NjgsImNlaWxpbmdsZWZ0YmlnZyIsODk2OCwiY2VpbGluZ3JpZ2h0YmlnIiw4OTY5LCJjZWlsaW5ncmlnaHRCaWciLDg5NjksImNlaWxpbmdyaWdodGJpZ2ciLDg5NjksImNlaWxpbmdyaWdodEJpZ2ciLDg5NjksImNpcmNsZWRvdGRpc3BsYXkiLDg4NTcsImNpcmNsZWRvdHRleHQiLDg4NTcsImNpcmNsZW11bHRpcGx5ZGlzcGxheSIsODg1NSwiY2lyY2xlbXVsdGlwbHl0ZXh0Iiw4ODU1LCJjaXJjbGVwbHVzZGlzcGxheSIsODg1MywiY2lyY2xlcGx1c3RleHQiLDg4NTMsImNvbnRpbnRlZ3JhbGRpc3BsYXkiLDg3NTAsImNvbnRpbnRlZ3JhbHRleHQiLDg3NTAsImNvcHJvZHVjdGRpc3BsYXkiLDg3MjAsImNvcHJvZHVjdHRleHQiLDg3MjAsImZsb29ybGVmdEJpZyIsODk3MCwiZmxvb3JsZWZ0YmlnIiw4OTcwLCJmbG9vcmxlZnRiaWdnIiw4OTcwLCJmbG9vcmxlZnRCaWdnIiw4OTcwLCJmbG9vcnJpZ2h0YmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnZyIsODk3MSwiZmxvb3JyaWdodGJpZ2ciLDg5NzEsImhhdHdpZGUiLDc3MCwiaGF0d2lkZXIiLDc3MCwiaGF0d2lkZXN0Iiw3NzAsImludGVyY2FsIiw3NDg4LCJpbnRlZ3JhbGRpc3BsYXkiLDg3NDcsImludGVncmFsdGV4dCIsODc0NywiaW50ZXJzZWN0aW9uZGlzcGxheSIsODg5OCwiaW50ZXJzZWN0aW9udGV4dCIsODg5OCwibG9naWNhbGFuZGRpc3BsYXkiLDg3NDMsImxvZ2ljYWxhbmR0ZXh0Iiw4NzQzLCJsb2dpY2Fsb3JkaXNwbGF5Iiw4NzQ0LCJsb2dpY2Fsb3J0ZXh0Iiw4NzQ0LCJwYXJlbmxlZnRCaWciLDQwLCJwYXJlbmxlZnRiaWciLDQwLCJwYXJlbmxlZnRCaWdnIiw0MCwicGFyZW5sZWZ0YmlnZyIsNDAsInBhcmVucmlnaHRCaWciLDQxLCJwYXJlbnJpZ2h0YmlnIiw0MSwicGFyZW5yaWdodEJpZ2ciLDQxLCJwYXJlbnJpZ2h0YmlnZyIsNDEsInByaW1lIiw4MjQyLCJwcm9kdWN0ZGlzcGxheSIsODcxOSwicHJvZHVjdHRleHQiLDg3MTksInJhZGljYWxiaWciLDg3MzAsInJhZGljYWxCaWciLDg3MzAsInJhZGljYWxCaWdnIiw4NzMwLCJyYWRpY2FsYmlnZyIsODczMCwicmFkaWNhbGJ0Iiw4NzMwLCJyYWRpY2FsdHAiLDg3MzAsInJhZGljYWx2ZXJ0ZXgiLDg3MzAsInNsYXNoYmlnIiw0Nywic2xhc2hCaWciLDQ3LCJzbGFzaEJpZ2ciLDQ3LCJzbGFzaGJpZ2ciLDQ3LCJzdW1tYXRpb25kaXNwbGF5Iiw4NzIxLCJzdW1tYXRpb250ZXh0Iiw4NzIxLCJ0aWxkZXdpZGUiLDczMiwidGlsZGV3aWRlciIsNzMyLCJ0aWxkZXdpZGVzdCIsNzMyLCJ1bmlvbmRpc3BsYXkiLDg4OTksInVuaW9ubXVsdGlkaXNwbGF5Iiw4ODQ2LCJ1bmlvbm11bHRpdGV4dCIsODg0NiwidW5pb25zcWRpc3BsYXkiLDg4NTIsInVuaW9uc3F0ZXh0Iiw4ODUyLCJ1bmlvbnRleHQiLDg4OTksInZleHRlbmRkb3VibGUiLDg3NDEsInZleHRlbmRzaW5nbGUiLDg3MzldfSkpLGk9KDAsci5nZXRBcnJheUxvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKCl7cmV0dXJuWyJzcGFjZSIsMzIsImExIiw5OTg1LCJhMiIsOTk4NiwiYTIwMiIsOTk4NywiYTMiLDk5ODgsImE0Iiw5NzQyLCJhNSIsOTk5MCwiYTExOSIsOTk5MSwiYTExOCIsOTk5MiwiYTExNyIsOTk5MywiYTExIiw5NzU1LCJhMTIiLDk3NTgsImExMyIsOTk5NiwiYTE0Iiw5OTk3LCJhMTUiLDk5OTgsImExNiIsOTk5OSwiYTEwNSIsMWU0LCJhMTciLDEwMDAxLCJhMTgiLDEwMDAyLCJhMTkiLDEwMDAzLCJhMjAiLDEwMDA0LCJhMjEiLDEwMDA1LCJhMjIiLDEwMDA2LCJhMjMiLDEwMDA3LCJhMjQiLDEwMDA4LCJhMjUiLDEwMDA5LCJhMjYiLDEwMDEwLCJhMjciLDEwMDExLCJhMjgiLDEwMDEyLCJhNiIsMTAwMTMsImE3IiwxMDAxNCwiYTgiLDEwMDE1LCJhOSIsMTAwMTYsImExMCIsMTAwMTcsImEyOSIsMTAwMTgsImEzMCIsMTAwMTksImEzMSIsMTAwMjAsImEzMiIsMTAwMjEsImEzMyIsMTAwMjIsImEzNCIsMTAwMjMsImEzNSIsOTczMywiYTM2IiwxMDAyNSwiYTM3IiwxMDAyNiwiYTM4IiwxMDAyNywiYTM5IiwxMDAyOCwiYTQwIiwxMDAyOSwiYTQxIiwxMDAzMCwiYTQyIiwxMDAzMSwiYTQzIiwxMDAzMiwiYTQ0IiwxMDAzMywiYTQ1IiwxMDAzNCwiYTQ2IiwxMDAzNSwiYTQ3IiwxMDAzNiwiYTQ4IiwxMDAzNywiYTQ5IiwxMDAzOCwiYTUwIiwxMDAzOSwiYTUxIiwxMDA0MCwiYTUyIiwxMDA0MSwiYTUzIiwxMDA0MiwiYTU0IiwxMDA0MywiYTU1IiwxMDA0NCwiYTU2IiwxMDA0NSwiYTU3IiwxMDA0NiwiYTU4IiwxMDA0NywiYTU5IiwxMDA0OCwiYTYwIiwxMDA0OSwiYTYxIiwxMDA1MCwiYTYyIiwxMDA1MSwiYTYzIiwxMDA1MiwiYTY0IiwxMDA1MywiYTY1IiwxMDA1NCwiYTY2IiwxMDA1NSwiYTY3IiwxMDA1NiwiYTY4IiwxMDA1NywiYTY5IiwxMDA1OCwiYTcwIiwxMDA1OSwiYTcxIiw5Njc5LCJhNzIiLDEwMDYxLCJhNzMiLDk2MzIsImE3NCIsMTAwNjMsImEyMDMiLDEwMDY0LCJhNzUiLDEwMDY1LCJhMjA0IiwxMDA2NiwiYTc2Iiw5NjUwLCJhNzciLDk2NjAsImE3OCIsOTY3MCwiYTc5IiwxMDA3MCwiYTgxIiw5Njg3LCJhODIiLDEwMDcyLCJhODMiLDEwMDczLCJhODQiLDEwMDc0LCJhOTciLDEwMDc1LCJhOTgiLDEwMDc2LCJhOTkiLDEwMDc3LCJhMTAwIiwxMDA3OCwiYTEwMSIsMTAwODEsImExMDIiLDEwMDgyLCJhMTAzIiwxMDA4MywiYTEwNCIsMTAwODQsImExMDYiLDEwMDg1LCJhMTA3IiwxMDA4NiwiYTEwOCIsMTAwODcsImExMTIiLDk4MjcsImExMTEiLDk4MzAsImExMTAiLDk4MjksImExMDkiLDk4MjQsImExMjAiLDkzMTIsImExMjEiLDkzMTMsImExMjIiLDkzMTQsImExMjMiLDkzMTUsImExMjQiLDkzMTYsImExMjUiLDkzMTcsImExMjYiLDkzMTgsImExMjciLDkzMTksImExMjgiLDkzMjAsImExMjkiLDkzMjEsImExMzAiLDEwMTAyLCJhMTMxIiwxMDEwMywiYTEzMiIsMTAxMDQsImExMzMiLDEwMTA1LCJhMTM0IiwxMDEwNiwiYTEzNSIsMTAxMDcsImExMzYiLDEwMTA4LCJhMTM3IiwxMDEwOSwiYTEzOCIsMTAxMTAsImExMzkiLDEwMTExLCJhMTQwIiwxMDExMiwiYTE0MSIsMTAxMTMsImExNDIiLDEwMTE0LCJhMTQzIiwxMDExNSwiYTE0NCIsMTAxMTYsImExNDUiLDEwMTE3LCJhMTQ2IiwxMDExOCwiYTE0NyIsMTAxMTksImExNDgiLDEwMTIwLCJhMTQ5IiwxMDEyMSwiYTE1MCIsMTAxMjIsImExNTEiLDEwMTIzLCJhMTUyIiwxMDEyNCwiYTE1MyIsMTAxMjUsImExNTQiLDEwMTI2LCJhMTU1IiwxMDEyNywiYTE1NiIsMTAxMjgsImExNTciLDEwMTI5LCJhMTU4IiwxMDEzMCwiYTE1OSIsMTAxMzEsImExNjAiLDEwMTMyLCJhMTYxIiw4NTk0LCJhMTYzIiw4NTk2LCJhMTY0Iiw4NTk3LCJhMTk2IiwxMDEzNiwiYTE2NSIsMTAxMzcsImExOTIiLDEwMTM4LCJhMTY2IiwxMDEzOSwiYTE2NyIsMTAxNDAsImExNjgiLDEwMTQxLCJhMTY5IiwxMDE0MiwiYTE3MCIsMTAxNDMsImExNzEiLDEwMTQ0LCJhMTcyIiwxMDE0NSwiYTE3MyIsMTAxNDYsImExNjIiLDEwMTQ3LCJhMTc0IiwxMDE0OCwiYTE3NSIsMTAxNDksImExNzYiLDEwMTUwLCJhMTc3IiwxMDE1MSwiYTE3OCIsMTAxNTIsImExNzkiLDEwMTUzLCJhMTkzIiwxMDE1NCwiYTE4MCIsMTAxNTUsImExOTkiLDEwMTU2LCJhMTgxIiwxMDE1NywiYTIwMCIsMTAxNTgsImExODIiLDEwMTU5LCJhMjAxIiwxMDE2MSwiYTE4MyIsMTAxNjIsImExODQiLDEwMTYzLCJhMTk3IiwxMDE2NCwiYTE4NSIsMTAxNjUsImExOTQiLDEwMTY2LCJhMTk4IiwxMDE2NywiYTE4NiIsMTAxNjgsImExOTUiLDEwMTY5LCJhMTg3IiwxMDE3MCwiYTE4OCIsMTAxNzEsImExODkiLDEwMTcyLCJhMTkwIiwxMDE3MywiYTE5MSIsMTAxNzQsImE4OSIsMTAwODgsImE5MCIsMTAwODksImE5MyIsMTAwOTAsImE5NCIsMTAwOTEsImE5MSIsMTAwOTIsImE5MiIsMTAwOTMsImEyMDUiLDEwMDk0LCJhODUiLDEwMDk1LCJhMjA2IiwxMDA5NiwiYTg2IiwxMDA5NywiYTg3IiwxMDA5OCwiYTg4IiwxMDA5OSwiYTk1IiwxMDEwMCwiYTk2IiwxMDEwMSwiLm5vdGRlZiIsMF19KSl9LChlLHQsYSk9PnthLnIodCk7YS5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+Y2xlYXJVbmljb2RlQ2FjaGVzLGdldENoYXJVbmljb2RlQ2F0ZWdvcnk6KCk9PmdldENoYXJVbmljb2RlQ2F0ZWdvcnksZ2V0Tm9ybWFsaXplZFVuaWNvZGVzOigpPT5zLGdldFVuaWNvZGVGb3JHbHlwaDooKT0+Z2V0VW5pY29kZUZvckdseXBoLGdldFVuaWNvZGVSYW5nZUZvcjooKT0+Z2V0VW5pY29kZVJhbmdlRm9yLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5tYXBTcGVjaWFsVW5pY29kZVZhbHVlcyxyZXZlcnNlSWZSdGw6KCk9PnJldmVyc2VJZlJ0bH0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9uKClbZV18fGU6MTczPT09ZT80NTplfWZ1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBpPVt7YmVnaW46MCxlbmQ6MTI3fSx7YmVnaW46MTI4LGVuZDoyNTV9LHtiZWdpbjoyNTYsZW5kOjM4M30se2JlZ2luOjM4NCxlbmQ6NTkxfSx7YmVnaW46NTkyLGVuZDo2ODd9LHtiZWdpbjo2ODgsZW5kOjc2N30se2JlZ2luOjc2OCxlbmQ6ODc5fSx7YmVnaW46ODgwLGVuZDoxMDIzfSx7YmVnaW46MTEzOTIsZW5kOjExNTE5fSx7YmVnaW46MTAyNCxlbmQ6MTI3OX0se2JlZ2luOjEzMjgsZW5kOjE0MjN9LHtiZWdpbjoxNDI0LGVuZDoxNTM1fSx7YmVnaW46NDIyNDAsZW5kOjQyNTU5fSx7YmVnaW46MTUzNixlbmQ6MTc5MX0se2JlZ2luOjE5ODQsZW5kOjIwNDd9LHtiZWdpbjoyMzA0LGVuZDoyNDMxfSx7YmVnaW46MjQzMixlbmQ6MjU1OX0se2JlZ2luOjI1NjAsZW5kOjI2ODd9LHtiZWdpbjoyNjg4LGVuZDoyODE1fSx7YmVnaW46MjgxNixlbmQ6Mjk0M30se2JlZ2luOjI5NDQsZW5kOjMwNzF9LHtiZWdpbjozMDcyLGVuZDozMTk5fSx7YmVnaW46MzIwMCxlbmQ6MzMyN30se2JlZ2luOjMzMjgsZW5kOjM0NTV9LHtiZWdpbjozNTg0LGVuZDozNzExfSx7YmVnaW46MzcxMixlbmQ6MzgzOX0se2JlZ2luOjQyNTYsZW5kOjQzNTF9LHtiZWdpbjo2OTEyLGVuZDo3MDM5fSx7YmVnaW46NDM1MixlbmQ6NDYwN30se2JlZ2luOjc2ODAsZW5kOjc5MzV9LHtiZWdpbjo3OTM2LGVuZDo4MTkxfSx7YmVnaW46ODE5MixlbmQ6ODMwM30se2JlZ2luOjgzMDQsZW5kOjgzNTF9LHtiZWdpbjo4MzUyLGVuZDo4Mzk5fSx7YmVnaW46ODQwMCxlbmQ6ODQ0N30se2JlZ2luOjg0NDgsZW5kOjg1Mjd9LHtiZWdpbjo4NTI4LGVuZDo4NTkxfSx7YmVnaW46ODU5MixlbmQ6ODcwM30se2JlZ2luOjg3MDQsZW5kOjg5NTl9LHtiZWdpbjo4OTYwLGVuZDo5MjE1fSx7YmVnaW46OTIxNixlbmQ6OTI3OX0se2JlZ2luOjkyODAsZW5kOjkzMTF9LHtiZWdpbjo5MzEyLGVuZDo5NDcxfSx7YmVnaW46OTQ3MixlbmQ6OTU5OX0se2JlZ2luOjk2MDAsZW5kOjk2MzF9LHtiZWdpbjo5NjMyLGVuZDo5NzI3fSx7YmVnaW46OTcyOCxlbmQ6OTk4M30se2JlZ2luOjk5ODQsZW5kOjEwMTc1fSx7YmVnaW46MTIyODgsZW5kOjEyMzUxfSx7YmVnaW46MTIzNTIsZW5kOjEyNDQ3fSx7YmVnaW46MTI0NDgsZW5kOjEyNTQzfSx7YmVnaW46MTI1NDQsZW5kOjEyNTkxfSx7YmVnaW46MTI1OTIsZW5kOjEyNjg3fSx7YmVnaW46NDMwNzIsZW5kOjQzMTM1fSx7YmVnaW46MTI4MDAsZW5kOjEzMDU1fSx7YmVnaW46MTMwNTYsZW5kOjEzMzExfSx7YmVnaW46NDQwMzIsZW5kOjU1MjE1fSx7YmVnaW46NTUyOTYsZW5kOjU3MzQzfSx7YmVnaW46Njc4NDAsZW5kOjY3ODcxfSx7YmVnaW46MTk5NjgsZW5kOjQwOTU5fSx7YmVnaW46NTczNDQsZW5kOjYzNzQzfSx7YmVnaW46MTI3MzYsZW5kOjEyNzgzfSx7YmVnaW46NjQyNTYsZW5kOjY0MzM1fSx7YmVnaW46NjQzMzYsZW5kOjY1MDIzfSx7YmVnaW46NjUwNTYsZW5kOjY1MDcxfSx7YmVnaW46NjUwNDAsZW5kOjY1MDU1fSx7YmVnaW46NjUxMDQsZW5kOjY1MTM1fSx7YmVnaW46NjUxMzYsZW5kOjY1Mjc5fSx7YmVnaW46NjUyODAsZW5kOjY1NTE5fSx7YmVnaW46NjU1MjAsZW5kOjY1NTM1fSx7YmVnaW46Mzg0MCxlbmQ6NDA5NX0se2JlZ2luOjE3OTIsZW5kOjE4NzF9LHtiZWdpbjoxOTIwLGVuZDoxOTgzfSx7YmVnaW46MzQ1NixlbmQ6MzU4M30se2JlZ2luOjQwOTYsZW5kOjQyNTV9LHtiZWdpbjo0NjA4LGVuZDo0OTkxfSx7YmVnaW46NTAyNCxlbmQ6NTExOX0se2JlZ2luOjUxMjAsZW5kOjU3NTl9LHtiZWdpbjo1NzYwLGVuZDo1NzkxfSx7YmVnaW46NTc5MixlbmQ6NTg4N30se2JlZ2luOjYwMTYsZW5kOjYxNDN9LHtiZWdpbjo2MTQ0LGVuZDo2MzE5fSx7YmVnaW46MTAyNDAsZW5kOjEwNDk1fSx7YmVnaW46NDA5NjAsZW5kOjQyMTI3fSx7YmVnaW46NTg4OCxlbmQ6NTkxOX0se2JlZ2luOjY2MzA0LGVuZDo2NjM1MX0se2JlZ2luOjY2MzUyLGVuZDo2NjM4M30se2JlZ2luOjY2NTYwLGVuZDo2NjYzOX0se2JlZ2luOjExODc4NCxlbmQ6MTE5MDM5fSx7YmVnaW46MTE5ODA4LGVuZDoxMjA4MzF9LHtiZWdpbjoxMDQ0NDgwLGVuZDoxMDQ4NTczfSx7YmVnaW46NjUwMjQsZW5kOjY1MDM5fSx7YmVnaW46OTE3NTA0LGVuZDo5MTc2MzF9LHtiZWdpbjo2NDAwLGVuZDo2NDc5fSx7YmVnaW46NjQ4MCxlbmQ6NjUyN30se2JlZ2luOjY1MjgsZW5kOjY2MjN9LHtiZWdpbjo2NjU2LGVuZDo2Njg3fSx7YmVnaW46MTEyNjQsZW5kOjExMzU5fSx7YmVnaW46MTE1NjgsZW5kOjExNjQ3fSx7YmVnaW46MTk5MDQsZW5kOjE5OTY3fSx7YmVnaW46NDMwMDgsZW5kOjQzMDU1fSx7YmVnaW46NjU1MzYsZW5kOjY1NjYzfSx7YmVnaW46NjU4NTYsZW5kOjY1OTM1fSx7YmVnaW46NjY0MzIsZW5kOjY2NDYzfSx7YmVnaW46NjY0NjQsZW5kOjY2NTI3fSx7YmVnaW46NjY2NDAsZW5kOjY2Njg3fSx7YmVnaW46NjY2ODgsZW5kOjY2NzM1fSx7YmVnaW46Njc1ODQsZW5kOjY3NjQ3fSx7YmVnaW46NjgwOTYsZW5kOjY4MTkxfSx7YmVnaW46MTE5NTUyLGVuZDoxMTk2NDd9LHtiZWdpbjo3MzcyOCxlbmQ6NzQ3NTF9LHtiZWdpbjoxMTk2NDgsZW5kOjExOTY3OX0se2JlZ2luOjcwNDAsZW5kOjcxMDN9LHtiZWdpbjo3MTY4LGVuZDo3MjQ3fSx7YmVnaW46NzI0OCxlbmQ6NzI5NX0se2JlZ2luOjQzMTM2LGVuZDo0MzIzMX0se2JlZ2luOjQzMjY0LGVuZDo0MzMxMX0se2JlZ2luOjQzMzEyLGVuZDo0MzM1OX0se2JlZ2luOjQzNTIwLGVuZDo0MzYxNX0se2JlZ2luOjY1OTM2LGVuZDo2NTk5OX0se2JlZ2luOjY2ZTMsZW5kOjY2MDQ3fSx7YmVnaW46NjYyMDgsZW5kOjY2MjcxfSx7YmVnaW46MTI3MDI0LGVuZDoxMjcxMzV9XTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSl7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWlbdF07aWYoZT49YS5iZWdpbiYmZTxhLmVuZClyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBzPSgwLHIuZ2V0QXJyYXlMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbigpe3JldHVyblsiwqgiLCIgzIgiLCLCryIsIiDMhCIsIsK0IiwiIMyBIiwiwrUiLCLOvCIsIsK4IiwiIMynIiwixLIiLCJJSiIsIsSzIiwiaWoiLCLEvyIsIkzCtyIsIsWAIiwibMK3IiwixYkiLCLKvG4iLCLFvyIsInMiLCLHhCIsIkTFvSIsIseFIiwiRMW+Iiwix4YiLCJkxb4iLCLHhyIsIkxKIiwix4giLCJMaiIsIseJIiwibGoiLCLHiiIsIk5KIiwix4siLCJOaiIsIseMIiwibmoiLCLHsSIsIkRaIiwix7IiLCJEeiIsIsezIiwiZHoiLCLLmCIsIiDMhiIsIsuZIiwiIMyHIiwiy5oiLCIgzIoiLCLLmyIsIiDMqCIsIsucIiwiIMyDIiwiy50iLCIgzIsiLCLNuiIsIiDNhSIsIs6EIiwiIMyBIiwiz5AiLCLOsiIsIs+RIiwizrgiLCLPkiIsIs6lIiwiz5UiLCLPhiIsIs+WIiwiz4AiLCLPsCIsIs66Iiwiz7EiLCLPgSIsIs+yIiwiz4IiLCLPtCIsIs6YIiwiz7UiLCLOtSIsIs+5IiwizqMiLCLWhyIsItWl1oIiLCLZtSIsItin2bQiLCLZtiIsItmI2bQiLCLZtyIsItuH2bQiLCLZuCIsItmK2bQiLCLguLMiLCLguY3guLIiLCLgurMiLCLgu43gurIiLCLgu5wiLCLguqvgupkiLCLgu50iLCLguqvguqEiLCLgvbciLCLgvrLgvoEiLCLgvbkiLCLgvrPgvoEiLCLhupoiLCJhyr4iLCLhvr0iLCIgzJMiLCLhvr8iLCIgzJMiLCLhv4AiLCIgzYIiLCLhv74iLCIgzJQiLCLigIIiLCIgIiwi4oCDIiwiICIsIuKAhCIsIiAiLCLigIUiLCIgIiwi4oCGIiwiICIsIuKAiCIsIiAiLCLigIkiLCIgIiwi4oCKIiwiICIsIuKAlyIsIiDMsyIsIuKApCIsIi4iLCLigKUiLCIuLiIsIuKApiIsIi4uLiIsIuKAsyIsIuKAsuKAsiIsIuKAtCIsIuKAsuKAsuKAsiIsIuKAtiIsIuKAteKAtSIsIuKAtyIsIuKAteKAteKAtSIsIuKAvCIsIiEhIiwi4oC+IiwiIMyFIiwi4oGHIiwiPz8iLCLigYgiLCI/ISIsIuKBiSIsIiE/Iiwi4oGXIiwi4oCy4oCy4oCy4oCyIiwi4oGfIiwiICIsIuKCqCIsIlJzIiwi4oSAIiwiYS9jIiwi4oSBIiwiYS9zIiwi4oSDIiwiwrBDIiwi4oSFIiwiYy9vIiwi4oSGIiwiYy91Iiwi4oSHIiwixpAiLCLihIkiLCLCsEYiLCLihJYiLCJObyIsIuKEoSIsIlRFTCIsIuKEtSIsIteQIiwi4oS2Iiwi15EiLCLihLciLCLXkiIsIuKEuCIsIteTIiwi4oS7IiwiRkFYIiwi4oWgIiwiSSIsIuKFoSIsIklJIiwi4oWiIiwiSUlJIiwi4oWjIiwiSVYiLCLihaQiLCJWIiwi4oWlIiwiVkkiLCLihaYiLCJWSUkiLCLihaciLCJWSUlJIiwi4oWoIiwiSVgiLCLihakiLCJYIiwi4oWqIiwiWEkiLCLihasiLCJYSUkiLCLihawiLCJMIiwi4oWtIiwiQyIsIuKFriIsIkQiLCLiha8iLCJNIiwi4oWwIiwiaSIsIuKFsSIsImlpIiwi4oWyIiwiaWlpIiwi4oWzIiwiaXYiLCLihbQiLCJ2Iiwi4oW1IiwidmkiLCLihbYiLCJ2aWkiLCLihbciLCJ2aWlpIiwi4oW4IiwiaXgiLCLihbkiLCJ4Iiwi4oW6IiwieGkiLCLihbsiLCJ4aWkiLCLihbwiLCJsIiwi4oW9IiwiYyIsIuKFviIsImQiLCLihb8iLCJtIiwi4oisIiwi4oir4oirIiwi4oitIiwi4oir4oir4oirIiwi4oivIiwi4oiu4oiuIiwi4oiwIiwi4oiu4oiu4oiuIiwi4pG0IiwiKDEpIiwi4pG1IiwiKDIpIiwi4pG2IiwiKDMpIiwi4pG3IiwiKDQpIiwi4pG4IiwiKDUpIiwi4pG5IiwiKDYpIiwi4pG6IiwiKDcpIiwi4pG7IiwiKDgpIiwi4pG8IiwiKDkpIiwi4pG9IiwiKDEwKSIsIuKRviIsIigxMSkiLCLikb8iLCIoMTIpIiwi4pKAIiwiKDEzKSIsIuKSgSIsIigxNCkiLCLikoIiLCIoMTUpIiwi4pKDIiwiKDE2KSIsIuKShCIsIigxNykiLCLikoUiLCIoMTgpIiwi4pKGIiwiKDE5KSIsIuKShyIsIigyMCkiLCLikogiLCIxLiIsIuKSiSIsIjIuIiwi4pKKIiwiMy4iLCLikosiLCI0LiIsIuKSjCIsIjUuIiwi4pKNIiwiNi4iLCLiko4iLCI3LiIsIuKSjyIsIjguIiwi4pKQIiwiOS4iLCLikpEiLCIxMC4iLCLikpIiLCIxMS4iLCLikpMiLCIxMi4iLCLikpQiLCIxMy4iLCLikpUiLCIxNC4iLCLikpYiLCIxNS4iLCLikpciLCIxNi4iLCLikpgiLCIxNy4iLCLikpkiLCIxOC4iLCLikpoiLCIxOS4iLCLikpsiLCIyMC4iLCLikpwiLCIoYSkiLCLikp0iLCIoYikiLCLikp4iLCIoYykiLCLikp8iLCIoZCkiLCLikqAiLCIoZSkiLCLikqEiLCIoZikiLCLikqIiLCIoZykiLCLikqMiLCIoaCkiLCLikqQiLCIoaSkiLCLikqUiLCIoaikiLCLikqYiLCIoaykiLCLikqciLCIobCkiLCLikqgiLCIobSkiLCLikqkiLCIobikiLCLikqoiLCIobykiLCLikqsiLCIocCkiLCLikqwiLCIocSkiLCLikq0iLCIocikiLCLikq4iLCIocykiLCLikq8iLCIodCkiLCLikrAiLCIodSkiLCLikrEiLCIodikiLCLikrIiLCIodykiLCLikrMiLCIoeCkiLCLikrQiLCIoeSkiLCLikrUiLCIoeikiLCLiqIwiLCLiiKviiKviiKviiKsiLCLiqbQiLCI6Oj0iLCLiqbUiLCI9PSIsIuKptiIsIj09PSIsIuK6nyIsIuavjSIsIuK7syIsIum+nyIsIuK8gCIsIuS4gCIsIuK8gSIsIuS4qCIsIuK8giIsIuS4tiIsIuK8gyIsIuS4vyIsIuK8hCIsIuS5mSIsIuK8hSIsIuS6hSIsIuK8hiIsIuS6jCIsIuK8hyIsIuS6oCIsIuK8iCIsIuS6uiIsIuK8iSIsIuWEvyIsIuK8iiIsIuWFpSIsIuK8iyIsIuWFqyIsIuK8jCIsIuWGgiIsIuK8jSIsIuWGliIsIuK8jiIsIuWGqyIsIuK8jyIsIuWHoCIsIuK8kCIsIuWHtSIsIuK8kSIsIuWIgCIsIuK8kiIsIuWKmyIsIuK8kyIsIuWLuSIsIuK8lCIsIuWMlSIsIuK8lSIsIuWMmiIsIuK8liIsIuWMuCIsIuK8lyIsIuWNgSIsIuK8mCIsIuWNnCIsIuK8mSIsIuWNqSIsIuK8miIsIuWOgiIsIuK8myIsIuWOtiIsIuK8nCIsIuWPiCIsIuK8nSIsIuWPoyIsIuK8niIsIuWblyIsIuK8nyIsIuWcnyIsIuK8oCIsIuWjqyIsIuK8oSIsIuWkgiIsIuK8oiIsIuWkiiIsIuK8oyIsIuWklSIsIuK8pCIsIuWkpyIsIuK8pSIsIuWlsyIsIuK8piIsIuWtkCIsIuK8pyIsIuWugCIsIuK8qCIsIuWvuCIsIuK8qSIsIuWwjyIsIuK8qiIsIuWwoiIsIuK8qyIsIuWwuCIsIuK8rCIsIuWxriIsIuK8rSIsIuWxsSIsIuK8riIsIuW3myIsIuK8ryIsIuW3pSIsIuK8sCIsIuW3sSIsIuK8sSIsIuW3viIsIuK8siIsIuW5siIsIuK8syIsIuW5uiIsIuK8tCIsIuW5vyIsIuK8tSIsIuW7tCIsIuK8tiIsIuW7viIsIuK8tyIsIuW8iyIsIuK8uCIsIuW8kyIsIuK8uSIsIuW9kCIsIuK8uiIsIuW9oSIsIuK8uyIsIuW9syIsIuK8vCIsIuW/gyIsIuK8vSIsIuaIiCIsIuK8viIsIuaItiIsIuK8vyIsIuaJiyIsIuK9gCIsIuaUryIsIuK9gSIsIuaUtCIsIuK9giIsIuaWhyIsIuK9gyIsIuaWlyIsIuK9hCIsIuaWpCIsIuK9hSIsIuaWuSIsIuK9hiIsIuaXoCIsIuK9hyIsIuaXpSIsIuK9iCIsIuabsCIsIuK9iSIsIuaciCIsIuK9iiIsIuacqCIsIuK9iyIsIuasoCIsIuK9jCIsIuatoiIsIuK9jSIsIuatuSIsIuK9jiIsIuausyIsIuK9jyIsIuaviyIsIuK9kCIsIuavlCIsIuK9kSIsIuavmyIsIuK9kiIsIuawjyIsIuK9kyIsIuawlCIsIuK9lCIsIuawtCIsIuK9lSIsIueBqyIsIuK9liIsIueIqiIsIuK9lyIsIueItiIsIuK9mCIsIueIuyIsIuK9mSIsIueIvyIsIuK9miIsIueJhyIsIuK9myIsIueJmSIsIuK9nCIsIueJmyIsIuK9nSIsIueKrCIsIuK9niIsIueOhCIsIuK9nyIsIueOiSIsIuK9oCIsIueTnCIsIuK9oSIsIueTpiIsIuK9oiIsIueUmCIsIuK9oyIsIueUnyIsIuK9pCIsIueUqCIsIuK9pSIsIueUsCIsIuK9piIsIueWiyIsIuK9pyIsIueWkiIsIuK9qCIsIueZtiIsIuK9qSIsIueZvSIsIuK9qiIsIueariIsIuK9qyIsIueavyIsIuK9rCIsIuebriIsIuK9rSIsIuefmyIsIuK9riIsIuefoiIsIuK9ryIsIuefsyIsIuK9sCIsIuekuiIsIuK9sSIsIuemuCIsIuK9siIsIuemviIsIuK9syIsIueptCIsIuK9tCIsIueriyIsIuK9tSIsIueruSIsIuK9tiIsIuexsyIsIuK9tyIsIuezuCIsIuK9uCIsIue8tiIsIuK9uSIsIue9kSIsIuK9uiIsIue+iiIsIuK9uyIsIue+vSIsIuK9vCIsIuiAgSIsIuK9vSIsIuiAjCIsIuK9viIsIuiAkiIsIuK9vyIsIuiAsyIsIuK+gCIsIuiBvyIsIuK+gSIsIuiCiSIsIuK+giIsIuiHoyIsIuK+gyIsIuiHqiIsIuK+hCIsIuiHsyIsIuK+hSIsIuiHvCIsIuK+hiIsIuiIjCIsIuK+hyIsIuiImyIsIuK+iCIsIuiInyIsIuK+iSIsIuiJriIsIuK+iiIsIuiJsiIsIuK+iyIsIuiJuCIsIuK+jCIsIuiZjSIsIuK+jSIsIuiZqyIsIuK+jiIsIuihgCIsIuK+jyIsIuihjCIsIuK+kCIsIuihoyIsIuK+kSIsIuilviIsIuK+kiIsIuimiyIsIuK+kyIsIuinkiIsIuK+lCIsIuiogCIsIuK+lSIsIuiwtyIsIuK+liIsIuixhiIsIuK+lyIsIuixlSIsIuK+mCIsIuixuCIsIuK+mSIsIuiynSIsIuK+miIsIui1pCIsIuK+myIsIui1sCIsIuK+nCIsIui2syIsIuK+nSIsIui6qyIsIuK+niIsIui7iiIsIuK+nyIsIui+myIsIuK+oCIsIui+sCIsIuK+oSIsIui+tSIsIuK+oiIsIumCkSIsIuK+oyIsIumFiSIsIuK+pCIsIumHhiIsIuK+pSIsIumHjCIsIuK+piIsIumHkSIsIuK+pyIsIumVtyIsIuK+qCIsIumWgCIsIuK+qSIsIumYnCIsIuK+qiIsIumatiIsIuK+qyIsIumauSIsIuK+rCIsIumbqCIsIuK+rSIsIumdkSIsIuK+riIsIumdniIsIuK+ryIsIumdoiIsIuK+sCIsIumdqSIsIuK+sSIsIumfiyIsIuK+siIsIumfrSIsIuK+syIsIumfsyIsIuK+tCIsIumggSIsIuK+tSIsIumiqCIsIuK+tiIsIumjmyIsIuK+tyIsIumjnyIsIuK+uCIsIummliIsIuK+uSIsIummmSIsIuK+uiIsIummrCIsIuK+uyIsIumqqCIsIuK+vCIsIumrmCIsIuK+vSIsIumrnyIsIuK+viIsIumspSIsIuK+vyIsIumsryIsIuK/gCIsIumssiIsIuK/gSIsIumsvCIsIuK/giIsIumtmiIsIuK/gyIsIumzpSIsIuK/hCIsIum5tSIsIuK/hSIsIum5vyIsIuK/hiIsIum6pSIsIuK/hyIsIum6uyIsIuK/iCIsIum7gyIsIuK/iSIsIum7jSIsIuK/iiIsIum7kSIsIuK/iyIsIum7uSIsIuK/jCIsIum7vSIsIuK/jSIsIum8jiIsIuK/jiIsIum8kyIsIuK/jyIsIum8oCIsIuK/kCIsIum8uyIsIuK/kSIsIum9iiIsIuK/kiIsIum9kiIsIuK/kyIsIum+jSIsIuK/lCIsIum+nCIsIuK/lSIsIum+oCIsIuOAtiIsIuOAkiIsIuOAuCIsIuWNgSIsIuOAuSIsIuWNhCIsIuOAuiIsIuWNhSIsIuOCmyIsIiDjgpkiLCLjgpwiLCIg44KaIiwi44SxIiwi4YSAIiwi44SyIiwi4YSBIiwi44SzIiwi4YaqIiwi44S0Iiwi4YSCIiwi44S1Iiwi4YasIiwi44S2Iiwi4YatIiwi44S3Iiwi4YSDIiwi44S4Iiwi4YSEIiwi44S5Iiwi4YSFIiwi44S6Iiwi4YawIiwi44S7Iiwi4YaxIiwi44S8Iiwi4YayIiwi44S9Iiwi4YazIiwi44S+Iiwi4Ya0Iiwi44S/Iiwi4Ya1Iiwi44WAIiwi4YSaIiwi44WBIiwi4YSGIiwi44WCIiwi4YSHIiwi44WDIiwi4YSIIiwi44WEIiwi4YShIiwi44WFIiwi4YSJIiwi44WGIiwi4YSKIiwi44WHIiwi4YSLIiwi44WIIiwi4YSMIiwi44WJIiwi4YSNIiwi44WKIiwi4YSOIiwi44WLIiwi4YSPIiwi44WMIiwi4YSQIiwi44WNIiwi4YSRIiwi44WOIiwi4YSSIiwi44WPIiwi4YWhIiwi44WQIiwi4YWiIiwi44WRIiwi4YWjIiwi44WSIiwi4YWkIiwi44WTIiwi4YWlIiwi44WUIiwi4YWmIiwi44WVIiwi4YWnIiwi44WWIiwi4YWoIiwi44WXIiwi4YWpIiwi44WYIiwi4YWqIiwi44WZIiwi4YWrIiwi44WaIiwi4YWsIiwi44WbIiwi4YWtIiwi44WcIiwi4YWuIiwi44WdIiwi4YWvIiwi44WeIiwi4YWwIiwi44WfIiwi4YWxIiwi44WgIiwi4YWyIiwi44WhIiwi4YWzIiwi44WiIiwi4YW0Iiwi44WjIiwi4YW1Iiwi44WkIiwi4YWgIiwi44WlIiwi4YSUIiwi44WmIiwi4YSVIiwi44WnIiwi4YeHIiwi44WoIiwi4YeIIiwi44WpIiwi4YeMIiwi44WqIiwi4YeOIiwi44WrIiwi4YeTIiwi44WsIiwi4YeXIiwi44WtIiwi4YeZIiwi44WuIiwi4YScIiwi44WvIiwi4YedIiwi44WwIiwi4YefIiwi44WxIiwi4YSdIiwi44WyIiwi4YSeIiwi44WzIiwi4YSgIiwi44W0Iiwi4YSiIiwi44W1Iiwi4YSjIiwi44W2Iiwi4YSnIiwi44W3Iiwi4YSpIiwi44W4Iiwi4YSrIiwi44W5Iiwi4YSsIiwi44W6Iiwi4YStIiwi44W7Iiwi4YSuIiwi44W8Iiwi4YSvIiwi44W9Iiwi4YSyIiwi44W+Iiwi4YS2Iiwi44W/Iiwi4YWAIiwi44aAIiwi4YWHIiwi44aBIiwi4YWMIiwi44aCIiwi4YexIiwi44aDIiwi4YeyIiwi44aEIiwi4YWXIiwi44aFIiwi4YWYIiwi44aGIiwi4YWZIiwi44aHIiwi4YaEIiwi44aIIiwi4YaFIiwi44aJIiwi4YaIIiwi44aKIiwi4YaRIiwi44aLIiwi4YaSIiwi44aMIiwi4YaUIiwi44aNIiwi4YaeIiwi44aOIiwi4YahIiwi44iAIiwiKOGEgCkiLCLjiIEiLCIo4YSCKSIsIuOIgiIsIijhhIMpIiwi44iDIiwiKOGEhSkiLCLjiIQiLCIo4YSGKSIsIuOIhSIsIijhhIcpIiwi44iGIiwiKOGEiSkiLCLjiIciLCIo4YSLKSIsIuOIiCIsIijhhIwpIiwi44iJIiwiKOGEjikiLCLjiIoiLCIo4YSPKSIsIuOIiyIsIijhhJApIiwi44iMIiwiKOGEkSkiLCLjiI0iLCIo4YSSKSIsIuOIjiIsIijhhIDhhaEpIiwi44iPIiwiKOGEguGFoSkiLCLjiJAiLCIo4YSD4YWhKSIsIuOIkSIsIijhhIXhhaEpIiwi44iSIiwiKOGEhuGFoSkiLCLjiJMiLCIo4YSH4YWhKSIsIuOIlCIsIijhhInhhaEpIiwi44iVIiwiKOGEi+GFoSkiLCLjiJYiLCIo4YSM4YWhKSIsIuOIlyIsIijhhI7hhaEpIiwi44iYIiwiKOGEj+GFoSkiLCLjiJkiLCIo4YSQ4YWhKSIsIuOImiIsIijhhJHhhaEpIiwi44ibIiwiKOGEkuGFoSkiLCLjiJwiLCIo4YSM4YWuKSIsIuOInSIsIijhhIvhhanhhIzhhaXhhqspIiwi44ieIiwiKOGEi+GFqeGEkuGFrikiLCLjiKAiLCIo5LiAKSIsIuOIoSIsIijkuowpIiwi44iiIiwiKOS4iSkiLCLjiKMiLCIo5ZubKSIsIuOIpCIsIijkupQpIiwi44ilIiwiKOWFrSkiLCLjiKYiLCIo5LiDKSIsIuOIpyIsIijlhaspIiwi44ioIiwiKOS5nSkiLCLjiKkiLCIo5Y2BKSIsIuOIqiIsIijmnIgpIiwi44irIiwiKOeBqykiLCLjiKwiLCIo5rC0KSIsIuOIrSIsIijmnKgpIiwi44iuIiwiKOmHkSkiLCLjiK8iLCIo5ZyfKSIsIuOIsCIsIijml6UpIiwi44ixIiwiKOagqikiLCLjiLIiLCIo5pyJKSIsIuOIsyIsIijnpL4pIiwi44i0IiwiKOWQjSkiLCLjiLUiLCIo54m5KSIsIuOItiIsIijosqEpIiwi44i3IiwiKOelnSkiLCLjiLgiLCIo5Yq0KSIsIuOIuSIsIijku6MpIiwi44i6IiwiKOWRvCkiLCLjiLsiLCIo5a2mKSIsIuOIvCIsIijnm6MpIiwi44i9IiwiKOS8gSkiLCLjiL4iLCIo6LOHKSIsIuOIvyIsIijljZQpIiwi44mAIiwiKOelrSkiLCLjiYEiLCIo5LyRKSIsIuOJgiIsIijoh6opIiwi44mDIiwiKOiHsykiLCLji4AiLCIx5pyIIiwi44uBIiwiMuaciCIsIuOLgiIsIjPmnIgiLCLji4MiLCI05pyIIiwi44uEIiwiNeaciCIsIuOLhSIsIjbmnIgiLCLji4YiLCI35pyIIiwi44uHIiwiOOaciCIsIuOLiCIsIjnmnIgiLCLji4kiLCIxMOaciCIsIuOLiiIsIjEx5pyIIiwi44uLIiwiMTLmnIgiLCLjjZgiLCIw54K5Iiwi442ZIiwiMeeCuSIsIuONmiIsIjLngrkiLCLjjZsiLCIz54K5Iiwi442cIiwiNOeCuSIsIuONnSIsIjXngrkiLCLjjZ4iLCI254K5Iiwi442fIiwiN+eCuSIsIuONoCIsIjjngrkiLCLjjaEiLCI554K5Iiwi442iIiwiMTDngrkiLCLjjaMiLCIxMeeCuSIsIuONpCIsIjEy54K5Iiwi442lIiwiMTPngrkiLCLjjaYiLCIxNOeCuSIsIuONpyIsIjE154K5Iiwi442oIiwiMTbngrkiLCLjjakiLCIxN+eCuSIsIuONqiIsIjE454K5Iiwi442rIiwiMTnngrkiLCLjjawiLCIyMOeCuSIsIuONrSIsIjIx54K5Iiwi442uIiwiMjLngrkiLCLjja8iLCIyM+eCuSIsIuONsCIsIjI054K5Iiwi44+gIiwiMeaXpSIsIuOPoSIsIjLml6UiLCLjj6IiLCIz5pelIiwi44+jIiwiNOaXpSIsIuOPpCIsIjXml6UiLCLjj6UiLCI25pelIiwi44+mIiwiN+aXpSIsIuOPpyIsIjjml6UiLCLjj6giLCI55pelIiwi44+pIiwiMTDml6UiLCLjj6oiLCIxMeaXpSIsIuOPqyIsIjEy5pelIiwi44+sIiwiMTPml6UiLCLjj60iLCIxNOaXpSIsIuOPriIsIjE15pelIiwi44+vIiwiMTbml6UiLCLjj7AiLCIxN+aXpSIsIuOPsSIsIjE45pelIiwi44+yIiwiMTnml6UiLCLjj7MiLCIyMOaXpSIsIuOPtCIsIjIx5pelIiwi44+1IiwiMjLml6UiLCLjj7YiLCIyM+aXpSIsIuOPtyIsIjI05pelIiwi44+4IiwiMjXml6UiLCLjj7kiLCIyNuaXpSIsIuOPuiIsIjI35pelIiwi44+7IiwiMjjml6UiLCLjj7wiLCIyOeaXpSIsIuOPvSIsIjMw5pelIiwi44++IiwiMzHml6UiLCLvrIAiLCJmZiIsIu+sgSIsImZpIiwi76yCIiwiZmwiLCLvrIMiLCJmZmkiLCLvrIQiLCJmZmwiLCLvrIUiLCLFv3QiLCLvrIYiLCJzdCIsIu+skyIsItW01bYiLCLvrJQiLCLVtNWlIiwi76yVIiwi1bTVqyIsIu+sliIsItW+1bYiLCLvrJciLCLVtNWtIiwi762PIiwi15DXnCIsIu+tkCIsItmxIiwi762RIiwi2bEiLCLvrZIiLCLZuyIsIu+tkyIsItm7Iiwi762UIiwi2bsiLCLvrZUiLCLZuyIsIu+tliIsItm+Iiwi762XIiwi2b4iLCLvrZgiLCLZviIsIu+tmSIsItm+Iiwi762aIiwi2oAiLCLvrZsiLCLagCIsIu+tnCIsItqAIiwi762dIiwi2oAiLCLvrZ4iLCLZuiIsIu+tnyIsItm6Iiwi762gIiwi2boiLCLvraEiLCLZuiIsIu+toiIsItm/Iiwi762jIiwi2b8iLCLvraQiLCLZvyIsIu+tpSIsItm/Iiwi762mIiwi2bkiLCLvraciLCLZuSIsIu+tqCIsItm5Iiwi762pIiwi2bkiLCLvraoiLCLapCIsIu+tqyIsItqkIiwi762sIiwi2qQiLCLvra0iLCLapCIsIu+triIsItqmIiwi762vIiwi2qYiLCLvrbAiLCLapiIsIu+tsSIsItqmIiwi762yIiwi2oQiLCLvrbMiLCLahCIsIu+ttCIsItqEIiwi7621Iiwi2oQiLCLvrbYiLCLagyIsIu+ttyIsItqDIiwi7624Iiwi2oMiLCLvrbkiLCLagyIsIu+tuiIsItqGIiwi7627Iiwi2oYiLCLvrbwiLCLahiIsIu+tvSIsItqGIiwi762+Iiwi2ociLCLvrb8iLCLahyIsIu+ugCIsItqHIiwi766BIiwi2ociLCLvroIiLCLajSIsIu+ugyIsItqNIiwi766EIiwi2owiLCLvroUiLCLajCIsIu+uhiIsItqOIiwi766HIiwi2o4iLCLvrogiLCLaiCIsIu+uiSIsItqIIiwi766KIiwi2pgiLCLvrosiLCLamCIsIu+ujCIsItqRIiwi766NIiwi2pEiLCLvro4iLCLaqSIsIu+ujyIsItqpIiwi766QIiwi2qkiLCLvrpEiLCLaqSIsIu+ukiIsItqvIiwi766TIiwi2q8iLCLvrpQiLCLaryIsIu+ulSIsItqvIiwi766WIiwi2rMiLCLvrpciLCLasyIsIu+umCIsItqzIiwi766ZIiwi2rMiLCLvrpoiLCLasSIsIu+umyIsItqxIiwi766cIiwi2rEiLCLvrp0iLCLasSIsIu+uniIsItq6Iiwi766fIiwi2roiLCLvrqAiLCLauyIsIu+uoSIsItq7Iiwi766iIiwi2rsiLCLvrqMiLCLauyIsIu+upCIsItuAIiwi766lIiwi24AiLCLvrqYiLCLbgSIsIu+upyIsItuBIiwi766oIiwi24EiLCLvrqkiLCLbgSIsIu+uqiIsItq+Iiwi766rIiwi2r4iLCLvrqwiLCLaviIsIu+urSIsItq+Iiwi766uIiwi25IiLCLvrq8iLCLbkiIsIu+usCIsItuTIiwi766xIiwi25MiLCLvr5MiLCLarSIsIu+vlCIsItqtIiwi76+VIiwi2q0iLCLvr5YiLCLarSIsIu+vlyIsItuHIiwi76+YIiwi24ciLCLvr5kiLCLbhiIsIu+vmiIsItuGIiwi76+bIiwi24giLCLvr5wiLCLbiCIsIu+vnSIsItm3Iiwi76+eIiwi24siLCLvr58iLCLbiyIsIu+voCIsItuFIiwi76+hIiwi24UiLCLvr6IiLCLbiSIsIu+voyIsItuJIiwi76+kIiwi25AiLCLvr6UiLCLbkCIsIu+vpiIsItuQIiwi76+nIiwi25AiLCLvr6giLCLZiSIsIu+vqSIsItmJIiwi76+qIiwi2KbYpyIsIu+vqyIsItim2KciLCLvr6wiLCLYptuVIiwi76+tIiwi2KbblSIsIu+vriIsItim2YgiLCLvr68iLCLYptmIIiwi76+wIiwi2KbbhyIsIu+vsSIsItim24ciLCLvr7IiLCLYptuGIiwi76+zIiwi2KbbhiIsIu+vtCIsItim24giLCLvr7UiLCLYptuIIiwi76+2Iiwi2KbbkCIsIu+vtyIsItim25AiLCLvr7giLCLYptuQIiwi76+5Iiwi2KbZiSIsIu+vuiIsItim2YkiLCLvr7siLCLYptmJIiwi76+8Iiwi24wiLCLvr70iLCLbjCIsIu+vviIsItuMIiwi76+/Iiwi24wiLCLvsIAiLCLYptisIiwi77CBIiwi2KbYrSIsIu+wgiIsItim2YUiLCLvsIMiLCLYptmJIiwi77CEIiwi2KbZiiIsIu+whSIsItio2KwiLCLvsIYiLCLYqNitIiwi77CHIiwi2KjYriIsIu+wiCIsItio2YUiLCLvsIkiLCLYqNmJIiwi77CKIiwi2KjZiiIsIu+wiyIsItiq2KwiLCLvsIwiLCLYqtitIiwi77CNIiwi2KrYriIsIu+wjiIsItiq2YUiLCLvsI8iLCLYqtmJIiwi77CQIiwi2KrZiiIsIu+wkSIsItir2KwiLCLvsJIiLCLYq9mFIiwi77CTIiwi2KvZiSIsIu+wlCIsItir2YoiLCLvsJUiLCLYrNitIiwi77CWIiwi2KzZhSIsIu+wlyIsItit2KwiLCLvsJgiLCLYrdmFIiwi77CZIiwi2K7YrCIsIu+wmiIsItiu2K0iLCLvsJsiLCLYrtmFIiwi77CcIiwi2LPYrCIsIu+wnSIsItiz2K0iLCLvsJ4iLCLYs9iuIiwi77CfIiwi2LPZhSIsIu+woCIsIti12K0iLCLvsKEiLCLYtdmFIiwi77CiIiwi2LbYrCIsIu+woyIsIti22K0iLCLvsKQiLCLYttiuIiwi77ClIiwi2LbZhSIsIu+wpiIsIti32K0iLCLvsKciLCLYt9mFIiwi77CoIiwi2LjZhSIsIu+wqSIsIti52KwiLCLvsKoiLCLYudmFIiwi77CrIiwi2LrYrCIsIu+wrCIsIti62YUiLCLvsK0iLCLZgdisIiwi77CuIiwi2YHYrSIsIu+wryIsItmB2K4iLCLvsLAiLCLZgdmFIiwi77CxIiwi2YHZiSIsIu+wsiIsItmB2YoiLCLvsLMiLCLZgtitIiwi77C0Iiwi2YLZhSIsIu+wtSIsItmC2YkiLCLvsLYiLCLZgtmKIiwi77C3Iiwi2YPYpyIsIu+wuCIsItmD2KwiLCLvsLkiLCLZg9itIiwi77C6Iiwi2YPYriIsIu+wuyIsItmD2YQiLCLvsLwiLCLZg9mFIiwi77C9Iiwi2YPZiSIsIu+wviIsItmD2YoiLCLvsL8iLCLZhNisIiwi77GAIiwi2YTYrSIsIu+xgSIsItmE2K4iLCLvsYIiLCLZhNmFIiwi77GDIiwi2YTZiSIsIu+xhCIsItmE2YoiLCLvsYUiLCLZhdisIiwi77GGIiwi2YXYrSIsIu+xhyIsItmF2K4iLCLvsYgiLCLZhdmFIiwi77GJIiwi2YXZiSIsIu+xiiIsItmF2YoiLCLvsYsiLCLZhtisIiwi77GMIiwi2YbYrSIsIu+xjSIsItmG2K4iLCLvsY4iLCLZhtmFIiwi77GPIiwi2YbZiSIsIu+xkCIsItmG2YoiLCLvsZEiLCLZh9isIiwi77GSIiwi2YfZhSIsIu+xkyIsItmH2YkiLCLvsZQiLCLZh9mKIiwi77GVIiwi2YrYrCIsIu+xliIsItmK2K0iLCLvsZciLCLZitiuIiwi77GYIiwi2YrZhSIsIu+xmSIsItmK2YkiLCLvsZoiLCLZitmKIiwi77GbIiwi2LDZsCIsIu+xnCIsItix2bAiLCLvsZ0iLCLZidmwIiwi77GeIiwiINmM2ZEiLCLvsZ8iLCIg2Y3ZkSIsIu+xoCIsIiDZjtmRIiwi77GhIiwiINmP2ZEiLCLvsaIiLCIg2ZDZkSIsIu+xoyIsIiDZkdmwIiwi77GkIiwi2KbYsSIsIu+xpSIsItim2LIiLCLvsaYiLCLYptmFIiwi77GnIiwi2KbZhiIsIu+xqCIsItim2YkiLCLvsakiLCLYptmKIiwi77GqIiwi2KjYsSIsIu+xqyIsItio2LIiLCLvsawiLCLYqNmFIiwi77GtIiwi2KjZhiIsIu+xriIsItio2YkiLCLvsa8iLCLYqNmKIiwi77GwIiwi2KrYsSIsIu+xsSIsItiq2LIiLCLvsbIiLCLYqtmFIiwi77GzIiwi2KrZhiIsIu+xtCIsItiq2YkiLCLvsbUiLCLYqtmKIiwi77G2Iiwi2KvYsSIsIu+xtyIsItir2LIiLCLvsbgiLCLYq9mFIiwi77G5Iiwi2KvZhiIsIu+xuiIsItir2YkiLCLvsbsiLCLYq9mKIiwi77G8Iiwi2YHZiSIsIu+xvSIsItmB2YoiLCLvsb4iLCLZgtmJIiwi77G/Iiwi2YLZiiIsIu+ygCIsItmD2KciLCLvsoEiLCLZg9mEIiwi77KCIiwi2YPZhSIsIu+ygyIsItmD2YkiLCLvsoQiLCLZg9mKIiwi77KFIiwi2YTZhSIsIu+yhiIsItmE2YkiLCLvsociLCLZhNmKIiwi77KIIiwi2YXYpyIsIu+yiSIsItmF2YUiLCLvsooiLCLZhtixIiwi77KLIiwi2YbYsiIsIu+yjCIsItmG2YUiLCLvso0iLCLZhtmGIiwi77KOIiwi2YbZiSIsIu+yjyIsItmG2YoiLCLvspAiLCLZidmwIiwi77KRIiwi2YrYsSIsIu+ykiIsItmK2LIiLCLvspMiLCLZitmFIiwi77KUIiwi2YrZhiIsIu+ylSIsItmK2YkiLCLvspYiLCLZitmKIiwi77KXIiwi2KbYrCIsIu+ymCIsItim2K0iLCLvspkiLCLYptiuIiwi77KaIiwi2KbZhSIsIu+ymyIsItim2YciLCLvspwiLCLYqNisIiwi77KdIiwi2KjYrSIsIu+yniIsItio2K4iLCLvsp8iLCLYqNmFIiwi77KgIiwi2KjZhyIsIu+yoSIsItiq2KwiLCLvsqIiLCLYqtitIiwi77KjIiwi2KrYriIsIu+ypCIsItiq2YUiLCLvsqUiLCLYqtmHIiwi77KmIiwi2KvZhSIsIu+ypyIsItis2K0iLCLvsqgiLCLYrNmFIiwi77KpIiwi2K3YrCIsIu+yqiIsItit2YUiLCLvsqsiLCLYrtisIiwi77KsIiwi2K7ZhSIsIu+yrSIsItiz2KwiLCLvsq4iLCLYs9itIiwi77KvIiwi2LPYriIsIu+ysCIsItiz2YUiLCLvsrEiLCLYtditIiwi77KyIiwi2LXYriIsIu+ysyIsIti12YUiLCLvsrQiLCLYttisIiwi77K1Iiwi2LbYrSIsIu+ytiIsIti22K4iLCLvsrciLCLYttmFIiwi77K4Iiwi2LfYrSIsIu+yuSIsIti42YUiLCLvsroiLCLYudisIiwi77K7Iiwi2LnZhSIsIu+yvCIsIti62KwiLCLvsr0iLCLYutmFIiwi77K+Iiwi2YHYrCIsIu+yvyIsItmB2K0iLCLvs4AiLCLZgdiuIiwi77OBIiwi2YHZhSIsIu+zgiIsItmC2K0iLCLvs4MiLCLZgtmFIiwi77OEIiwi2YPYrCIsIu+zhSIsItmD2K0iLCLvs4YiLCLZg9iuIiwi77OHIiwi2YPZhCIsIu+ziCIsItmD2YUiLCLvs4kiLCLZhNisIiwi77OKIiwi2YTYrSIsIu+ziyIsItmE2K4iLCLvs4wiLCLZhNmFIiwi77ONIiwi2YTZhyIsIu+zjiIsItmF2KwiLCLvs48iLCLZhditIiwi77OQIiwi2YXYriIsIu+zkSIsItmF2YUiLCLvs5IiLCLZhtisIiwi77OTIiwi2YbYrSIsIu+zlCIsItmG2K4iLCLvs5UiLCLZhtmFIiwi77OWIiwi2YbZhyIsIu+zlyIsItmH2KwiLCLvs5giLCLZh9mFIiwi77OZIiwi2YfZsCIsIu+zmiIsItmK2KwiLCLvs5siLCLZititIiwi77OcIiwi2YrYriIsIu+znSIsItmK2YUiLCLvs54iLCLZitmHIiwi77OfIiwi2KbZhSIsIu+zoCIsItim2YciLCLvs6EiLCLYqNmFIiwi77OiIiwi2KjZhyIsIu+zoyIsItiq2YUiLCLvs6QiLCLYqtmHIiwi77OlIiwi2KvZhSIsIu+zpiIsItir2YciLCLvs6ciLCLYs9mFIiwi77OoIiwi2LPZhyIsIu+zqSIsIti02YUiLCLvs6oiLCLYtNmHIiwi77OrIiwi2YPZhCIsIu+zrCIsItmD2YUiLCLvs60iLCLZhNmFIiwi77OuIiwi2YbZhSIsIu+zryIsItmG2YciLCLvs7AiLCLZitmFIiwi77OxIiwi2YrZhyIsIu+zsiIsItmA2Y7ZkSIsIu+zsyIsItmA2Y/ZkSIsIu+ztCIsItmA2ZDZkSIsIu+ztSIsIti32YkiLCLvs7YiLCLYt9mKIiwi77O3Iiwi2LnZiSIsIu+zuCIsIti52YoiLCLvs7kiLCLYutmJIiwi77O6Iiwi2LrZiiIsIu+zuyIsItiz2YkiLCLvs7wiLCLYs9mKIiwi77O9Iiwi2LTZiSIsIu+zviIsIti02YoiLCLvs78iLCLYrdmJIiwi77SAIiwi2K3ZiiIsIu+0gSIsItis2YkiLCLvtIIiLCLYrNmKIiwi77SDIiwi2K7ZiSIsIu+0hCIsItiu2YoiLCLvtIUiLCLYtdmJIiwi77SGIiwi2LXZiiIsIu+0hyIsIti22YkiLCLvtIgiLCLYttmKIiwi77SJIiwi2LTYrCIsIu+0iiIsIti02K0iLCLvtIsiLCLYtNiuIiwi77SMIiwi2LTZhSIsIu+0jSIsIti02LEiLCLvtI4iLCLYs9ixIiwi77SPIiwi2LXYsSIsIu+0kCIsIti22LEiLCLvtJEiLCLYt9mJIiwi77SSIiwi2LfZiiIsIu+0kyIsIti52YkiLCLvtJQiLCLYudmKIiwi77SVIiwi2LrZiSIsIu+0liIsIti62YoiLCLvtJciLCLYs9mJIiwi77SYIiwi2LPZiiIsIu+0mSIsIti02YkiLCLvtJoiLCLYtNmKIiwi77SbIiwi2K3ZiSIsIu+0nCIsItit2YoiLCLvtJ0iLCLYrNmJIiwi77SeIiwi2KzZiiIsIu+0nyIsItiu2YkiLCLvtKAiLCLYrtmKIiwi77ShIiwi2LXZiSIsIu+0oiIsIti12YoiLCLvtKMiLCLYttmJIiwi77SkIiwi2LbZiiIsIu+0pSIsIti02KwiLCLvtKYiLCLYtNitIiwi77SnIiwi2LTYriIsIu+0qCIsIti02YUiLCLvtKkiLCLYtNixIiwi77SqIiwi2LPYsSIsIu+0qyIsIti12LEiLCLvtKwiLCLYttixIiwi77StIiwi2LTYrCIsIu+0riIsIti02K0iLCLvtK8iLCLYtNiuIiwi77SwIiwi2LTZhSIsIu+0sSIsItiz2YciLCLvtLIiLCLYtNmHIiwi77SzIiwi2LfZhSIsIu+0tCIsItiz2KwiLCLvtLUiLCLYs9itIiwi77S2Iiwi2LPYriIsIu+0tyIsIti02KwiLCLvtLgiLCLYtNitIiwi77S5Iiwi2LTYriIsIu+0uiIsIti32YUiLCLvtLsiLCLYuNmFIiwi77S8Iiwi2KfZiyIsIu+0vSIsItin2YsiLCLvtZAiLCLYqtis2YUiLCLvtZEiLCLYqtit2KwiLCLvtZIiLCLYqtit2KwiLCLvtZMiLCLYqtit2YUiLCLvtZQiLCLYqtiu2YUiLCLvtZUiLCLYqtmF2KwiLCLvtZYiLCLYqtmF2K0iLCLvtZciLCLYqtmF2K4iLCLvtZgiLCLYrNmF2K0iLCLvtZkiLCLYrNmF2K0iLCLvtZoiLCLYrdmF2YoiLCLvtZsiLCLYrdmF2YkiLCLvtZwiLCLYs9it2KwiLCLvtZ0iLCLYs9is2K0iLCLvtZ4iLCLYs9is2YkiLCLvtZ8iLCLYs9mF2K0iLCLvtaAiLCLYs9mF2K0iLCLvtaEiLCLYs9mF2KwiLCLvtaIiLCLYs9mF2YUiLCLvtaMiLCLYs9mF2YUiLCLvtaQiLCLYtdit2K0iLCLvtaUiLCLYtdit2K0iLCLvtaYiLCLYtdmF2YUiLCLvtaciLCLYtNit2YUiLCLvtagiLCLYtNit2YUiLCLvtakiLCLYtNis2YoiLCLvtaoiLCLYtNmF2K4iLCLvtasiLCLYtNmF2K4iLCLvtawiLCLYtNmF2YUiLCLvta0iLCLYtNmF2YUiLCLvta4iLCLYttit2YkiLCLvta8iLCLYttiu2YUiLCLvtbAiLCLYttiu2YUiLCLvtbEiLCLYt9mF2K0iLCLvtbIiLCLYt9mF2K0iLCLvtbMiLCLYt9mF2YUiLCLvtbQiLCLYt9mF2YoiLCLvtbUiLCLYudis2YUiLCLvtbYiLCLYudmF2YUiLCLvtbciLCLYudmF2YUiLCLvtbgiLCLYudmF2YkiLCLvtbkiLCLYutmF2YUiLCLvtboiLCLYutmF2YoiLCLvtbsiLCLYutmF2YkiLCLvtbwiLCLZgdiu2YUiLCLvtb0iLCLZgdiu2YUiLCLvtb4iLCLZgtmF2K0iLCLvtb8iLCLZgtmF2YUiLCLvtoAiLCLZhNit2YUiLCLvtoEiLCLZhNit2YoiLCLvtoIiLCLZhNit2YkiLCLvtoMiLCLZhNis2KwiLCLvtoQiLCLZhNis2KwiLCLvtoUiLCLZhNiu2YUiLCLvtoYiLCLZhNiu2YUiLCLvtociLCLZhNmF2K0iLCLvtogiLCLZhNmF2K0iLCLvtokiLCLZhdit2KwiLCLvtooiLCLZhdit2YUiLCLvtosiLCLZhdit2YoiLCLvtowiLCLZhdis2K0iLCLvto0iLCLZhdis2YUiLCLvto4iLCLZhdiu2KwiLCLvto8iLCLZhdiu2YUiLCLvtpIiLCLZhdis2K4iLCLvtpMiLCLZh9mF2KwiLCLvtpQiLCLZh9mF2YUiLCLvtpUiLCLZhtit2YUiLCLvtpYiLCLZhtit2YkiLCLvtpciLCLZhtis2YUiLCLvtpgiLCLZhtis2YUiLCLvtpkiLCLZhtis2YkiLCLvtpoiLCLZhtmF2YoiLCLvtpsiLCLZhtmF2YkiLCLvtpwiLCLZitmF2YUiLCLvtp0iLCLZitmF2YUiLCLvtp4iLCLYqNiu2YoiLCLvtp8iLCLYqtis2YoiLCLvtqAiLCLYqtis2YkiLCLvtqEiLCLYqtiu2YoiLCLvtqIiLCLYqtiu2YkiLCLvtqMiLCLYqtmF2YoiLCLvtqQiLCLYqtmF2YkiLCLvtqUiLCLYrNmF2YoiLCLvtqYiLCLYrNit2YkiLCLvtqciLCLYrNmF2YkiLCLvtqgiLCLYs9iu2YkiLCLvtqkiLCLYtdit2YoiLCLvtqoiLCLYtNit2YoiLCLvtqsiLCLYttit2YoiLCLvtqwiLCLZhNis2YoiLCLvtq0iLCLZhNmF2YoiLCLvtq4iLCLZitit2YoiLCLvtq8iLCLZitis2YoiLCLvtrAiLCLZitmF2YoiLCLvtrEiLCLZhdmF2YoiLCLvtrIiLCLZgtmF2YoiLCLvtrMiLCLZhtit2YoiLCLvtrQiLCLZgtmF2K0iLCLvtrUiLCLZhNit2YUiLCLvtrYiLCLYudmF2YoiLCLvtrciLCLZg9mF2YoiLCLvtrgiLCLZhtis2K0iLCLvtrkiLCLZhdiu2YoiLCLvtroiLCLZhNis2YUiLCLvtrsiLCLZg9mF2YUiLCLvtrwiLCLZhNis2YUiLCLvtr0iLCLZhtis2K0iLCLvtr4iLCLYrNit2YoiLCLvtr8iLCLYrdis2YoiLCLvt4AiLCLZhdis2YoiLCLvt4EiLCLZgdmF2YoiLCLvt4IiLCLYqNit2YoiLCLvt4MiLCLZg9mF2YUiLCLvt4QiLCLYudis2YUiLCLvt4UiLCLYtdmF2YUiLCLvt4YiLCLYs9iu2YoiLCLvt4ciLCLZhtis2YoiLCLvuYkiLCLigL4iLCLvuYoiLCLigL4iLCLvuYsiLCLigL4iLCLvuYwiLCLigL4iLCLvuY0iLCJfIiwi77mOIiwiXyIsIu+5jyIsIl8iLCLvuoAiLCLYoSIsIu+6gSIsItiiIiwi77qCIiwi2KIiLCLvuoMiLCLYoyIsIu+6hCIsItijIiwi77qFIiwi2KQiLCLvuoYiLCLYpCIsIu+6hyIsItilIiwi77qIIiwi2KUiLCLvuokiLCLYpiIsIu+6iiIsItimIiwi77qLIiwi2KYiLCLvuowiLCLYpiIsIu+6jSIsItinIiwi77qOIiwi2KciLCLvuo8iLCLYqCIsIu+6kCIsItioIiwi77qRIiwi2KgiLCLvupIiLCLYqCIsIu+6kyIsItipIiwi77qUIiwi2KkiLCLvupUiLCLYqiIsIu+6liIsItiqIiwi77qXIiwi2KoiLCLvupgiLCLYqiIsIu+6mSIsItirIiwi77qaIiwi2KsiLCLvupsiLCLYqyIsIu+6nCIsItirIiwi77qdIiwi2KwiLCLvup4iLCLYrCIsIu+6nyIsItisIiwi77qgIiwi2KwiLCLvuqEiLCLYrSIsIu+6oiIsItitIiwi77qjIiwi2K0iLCLvuqQiLCLYrSIsIu+6pSIsItiuIiwi77qmIiwi2K4iLCLvuqciLCLYriIsIu+6qCIsItiuIiwi77qpIiwi2K8iLCLvuqoiLCLYryIsIu+6qyIsItiwIiwi77qsIiwi2LAiLCLvuq0iLCLYsSIsIu+6riIsItixIiwi77qvIiwi2LIiLCLvurAiLCLYsiIsIu+6sSIsItizIiwi77qyIiwi2LMiLCLvurMiLCLYsyIsIu+6tCIsItizIiwi77q1Iiwi2LQiLCLvurYiLCLYtCIsIu+6tyIsIti0Iiwi77q4Iiwi2LQiLCLvurkiLCLYtSIsIu+6uiIsIti1Iiwi77q7Iiwi2LUiLCLvurwiLCLYtSIsIu+6vSIsIti2Iiwi77q+Iiwi2LYiLCLvur8iLCLYtiIsIu+7gCIsIti2Iiwi77uBIiwi2LciLCLvu4IiLCLYtyIsIu+7gyIsIti3Iiwi77uEIiwi2LciLCLvu4UiLCLYuCIsIu+7hiIsIti4Iiwi77uHIiwi2LgiLCLvu4giLCLYuCIsIu+7iSIsIti5Iiwi77uKIiwi2LkiLCLvu4siLCLYuSIsIu+7jCIsIti5Iiwi77uNIiwi2LoiLCLvu44iLCLYuiIsIu+7jyIsIti6Iiwi77uQIiwi2LoiLCLvu5EiLCLZgSIsIu+7kiIsItmBIiwi77uTIiwi2YEiLCLvu5QiLCLZgSIsIu+7lSIsItmCIiwi77uWIiwi2YIiLCLvu5ciLCLZgiIsIu+7mCIsItmCIiwi77uZIiwi2YMiLCLvu5oiLCLZgyIsIu+7myIsItmDIiwi77ucIiwi2YMiLCLvu50iLCLZhCIsIu+7niIsItmEIiwi77ufIiwi2YQiLCLvu6AiLCLZhCIsIu+7oSIsItmFIiwi77uiIiwi2YUiLCLvu6MiLCLZhSIsIu+7pCIsItmFIiwi77ulIiwi2YYiLCLvu6YiLCLZhiIsIu+7pyIsItmGIiwi77uoIiwi2YYiLCLvu6kiLCLZhyIsIu+7qiIsItmHIiwi77urIiwi2YciLCLvu6wiLCLZhyIsIu+7rSIsItmIIiwi77uuIiwi2YgiLCLvu68iLCLZiSIsIu+7sCIsItmJIiwi77uxIiwi2YoiLCLvu7IiLCLZiiIsIu+7syIsItmKIiwi77u0Iiwi2YoiLCLvu7UiLCLZhNiiIiwi77u2Iiwi2YTYoiIsIu+7tyIsItmE2KMiLCLvu7giLCLZhNijIiwi77u5Iiwi2YTYpSIsIu+7uiIsItmE2KUiLCLvu7siLCLZhNinIiwi77u8Iiwi2YTYpyJdfSkpO2Z1bmN0aW9uIHJldmVyc2VJZlJ0bChlKXtjb25zdCB0PWUubGVuZ3RoO2lmKHQ8PTF8fCFmdW5jdGlvbiBpc1JUTFJhbmdlRm9yKGUpe2xldCB0PWlbMTNdO2lmKGU+PXQuYmVnaW4mJmU8dC5lbmQpcmV0dXJuITA7dD1pWzExXTtyZXR1cm4gZT49dC5iZWdpbiYmZTx0LmVuZH0oZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gZTtjb25zdCBhPVtdO2ZvcihsZXQgcj10LTE7cj49MDtyLS0pYS5wdXNoKGVbcl0pO3JldHVybiBhLmpvaW4oIiIpfWNvbnN0IG89bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLGM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9Yy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2gobykscj17aXNXaGl0ZXNwYWNlOiEoIWF8fCFhWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKCFhfHwhYVsyXSksaXNJbnZpc2libGVGb3JtYXRNYXJrOiEoIWF8fCFhWzNdKX07Yy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtjLmNsZWFyKCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuZ2V0U2VyaWZGb250cz10LmdldE5vblN0ZEZvbnRNYXA9dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9dC5nZXRGb250TmFtZVRvRmlsZU1hcD12b2lkIDA7dC5nZXRTdGFuZGFyZEZvbnROYW1lPWZ1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxuLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfTt0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciByPWEoNCksbj1hKDM2KTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO2NvbnN0IHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iRm94aXRTYW5zLnBmYiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iRm94aXRTYW5zQm9sZC5wZmIiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJGb3hpdFNhbnNCb2xkSXRhbGljLnBmYiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iRm94aXRTYW5zSXRhbGljLnBmYiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKTt0LmdldEZvbnROYW1lVG9GaWxlTWFwPXM7Y29uc3Qgbz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EiO2UuV2luZ2RpbmdzPSJaYXBmRGluZ2JhdHMiO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09IlphcGZEaW5nYmF0cyJ9KSk7dC5nZXROb25TdGRGb250TWFwPW87Y29uc3QgYz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO2NvbnN0IGw9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwfSkpO3QuZ2V0U3ltYm9sc0ZvbnRzPWw7Y29uc3QgaD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgyKTt0LlRvVW5pY29kZU1hcD1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19O3QuSWRlbnRpdHlUb1VuaWNvZGVNYXA9Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMzMpLG49YSgzNiksaT1hKDIpO3QuQ0ZGRm9udD1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgci5DRkZQYXJzZXIoZSx0LG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IHIuQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChhKXsoMCxpLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbjtpZihhJiZhLmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAscj1hLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09ciYmKHRbcl09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBlPWlbb107bj1yLmNoYXJDb2RlT2YoZSk7dCYmdm9pZCAwIT09dFtuXSYmKG49dFtuXSk7c1tuXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKXtuPXIuY2hhckNvZGVPZihvKTtzW25dPW99cmV0dXJuIHN9bGV0IGM9ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKGM9dC5kZWZhdWx0RW5jb2RpbmcpO3M9KDAsbi50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsYyxpKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2Rpbmcsbj1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihuW2VdPXIpfX1uLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1uKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMzMpLGk9YSgzNykscz1hKDM1KSxvPWEoOCk7ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTMyNzY4O3Q8MTI0MD9hPTEwNzp0PDMzOTAwJiYoYT0xMTMxKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IG49MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxpPWdldFVpbnQxNihlLHQrbik7bGV0IHMsbyxjO2lmKDQ9PT1pKXtnZXRVaW50MTYoZSx0K24rMik7Y29uc3QgYT1nZXRVaW50MTYoZSx0K24rNik+PjE7bz10K24rMTQ7cz1bXTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdPXtlbmQ6Z2V0VWludDE2KGUsbyl9O28rPTI7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5zdGFydD1nZXRVaW50MTYoZSxvKTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdLmlkRGVsdGE9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpe2xldCB0PWdldFVpbnQxNihlLG8pO2lmKDAhPT10KXtzW2NdLmlkcz1bXTtmb3IobGV0IGE9MCxyPXNbY10uZW5kLXNbY10uc3RhcnQrMTthPHI7YSsrKXtzW2NdLmlkc1thXT1nZXRVaW50MTYoZSxvK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PWkpe2NvbnN0IGE9Z2V0VWludDMyKGUsdCtuKzEyKTtvPXQrbisxNjtzPVtdO2ZvcihjPTA7YzxhO2MrKyl7dD1nZXRVaW50MzIoZSxvKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG8rNCksaWREZWx0YTpnZXRVaW50MzIoZSxvKzgpLXR9KTtvKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtpfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IGk9bmV3IG4uQ0ZGUGFyc2VyKG5ldyBvLlN0cmVhbShlLHQsYS10KSx7fSxyKS5wYXJzZSgpO3JldHVybntnbHlwaHM6aS5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOmkudG9wRGljdC5wcml2YXRlRGljdCYmaS50b3BEaWN0LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgmJmkudG9wRGljdC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4JiZpLmdsb2JhbFN1YnJJbmRleC5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsbj0wLGk9ZS5sZW5ndGgtMTtmb3IoO248aTspe2NvbnN0IHQ9bitpKzE+PjE7YTxlW3RdLnN0YXJ0P2k9dC0xOm49dH1lW25dLnN0YXJ0PD1hJiZhPD1lW25dLmVuZCYmKHI9ZVtuXS5pZERlbHRhKyhlW25dLmlkcz9lW25dLmlkc1thLWVbbl0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsbil7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UsYSxyLG5dfSl9bGV0IHI9MDtjb25zdCBuPWdldEludDE2KGUscik7bGV0IGkscz0wLG89MDtyKz0xMDtpZihuPDApZG97aT1nZXRVaW50MTYoZSxyKTtjb25zdCBuPWdldFVpbnQxNihlLHIrMik7cis9NDtsZXQgYyxsO2lmKDEmaSl7aWYoMiZpKXtjPWdldEludDE2KGUscik7bD1nZXRJbnQxNihlLHIrMil9ZWxzZXtjPWdldFVpbnQxNihlLHIpO2w9Z2V0VWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZpKXtjPWdldEludDgoZSxyKyspO2w9Z2V0SW50OChlLHIrKyl9ZWxzZXtjPWVbcisrXTtsPWVbcisrXX1pZigyJmkpe3M9YztvPWx9ZWxzZXtzPTA7bz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZpKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmaSl7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmaSl7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tuXTtpZihnKXt0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbaCxkLGYsdSxzLG9dfSk7Y29tcGlsZUdseWYoZyx0LGEpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pfX13aGlsZSgzMiZpKTtlbHNle2NvbnN0IHQ9W107bGV0IGEsYztmb3IoYT0wO2E8bjthKyspe3QucHVzaChnZXRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK2dldFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe2k9ZVtyKytdO2xldCB0PTE7OCZpJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczppfSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOnMrPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDI6cy09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6cys9ZVtyKytdfWhbYV0ueD1zfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDM2JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0Om8tPWVbcisrXTticmVhaztjYXNlIDM2Om8rPWVbcisrXX1oW2FdLnk9b31sZXQgdT0wO2ZvcihyPTA7cjxuO3IrKyl7Y29uc3QgZT10W3JdLG49aC5zbGljZSh1LGUrMSk7aWYoMSZuWzBdLmZsYWdzKW4ucHVzaChuWzBdKTtlbHNlIGlmKDEmbi5hdCgtMSkuZmxhZ3Mpbi51bnNoaWZ0KG4uYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooblswXS54K24uYXQoLTEpLngpLzIseTooblswXS55K24uYXQoLTEpLnkpLzJ9O24udW5zaGlmdChlKTtuLnB1c2goZSl9bW92ZVRvKG5bMF0ueCxuWzBdLnkpO2ZvcihhPTEsYz1uLmxlbmd0aDthPGM7YSsrKWlmKDEmblthXS5mbGFncylsaW5lVG8oblthXS54LG5bYV0ueSk7ZWxzZSBpZigxJm5bYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhuW2FdLngsblthXS55LG5bYSsxXS54LG5bYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKG5bYV0ueCxuW2FdLnksKG5bYV0ueCtuW2ErMV0ueCkvMiwoblthXS55K25bYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEscixuLGkscyl7dC5wdXNoKHtjbWQ6ImJlemllckN1cnZlVG8iLGFyZ3M6W2UsYSxyLG4saSxzXX0pfWNvbnN0IGk9W107bGV0IG89MCxjPTAsbD0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgaD0wO2Zvcig7aDxlLmxlbmd0aDspe2xldCB1LGQsZixnLHAsbSxiLHksdyxTPSExLHg9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpsKz1pLmxlbmd0aD4+MTtTPSEwO2JyZWFrO2Nhc2UgNDpjKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAxMDp5PWkucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3QmJnQucHJpdmF0ZURpY3Quc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe3krPWdldFN1YnJvdXRpbmVCaWFzKHIpO3c9clt5XX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1hLnN1YnJzW3krYS5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6eD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMzQ6dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsYyxkLHAsbyxwKTt1PW8raS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUscCxkLGMsbyxjKTticmVhaztjYXNlIDM1OnU9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2kucG9wKCk7YnJlYWs7Y2FzZSAzNjp1PW8raS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTttPXAraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxtLG8sbSk7dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2I9bStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsbSxkLGIsbyxjKTticmVhaztjYXNlIDM3OmNvbnN0IGU9byx0PWM7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nO01hdGguYWJzKG8tZSk+TWF0aC5hYnMoYy10KT9vKz1pLnNoaWZ0KCk6Yys9aS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7eH1gKX1icmVhaztjYXNlIDE0OmlmKGkubGVuZ3RoPj00KXtjb25zdCBlPWkucG9wKCkscj1pLnBvcCgpO2M9aS5wb3AoKTtvPWkucG9wKCk7dC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W28sY119KTtsZXQgbj1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tuLmdseXBoSWRdLHQsYSxuLmdseXBoSWQpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pO249bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2Rpbmdbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbbi5nbHlwaElkXSx0LGEsbi5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOmwrPWkubGVuZ3RoPj4xO2grPWwrNz4+MztTPSEwO2JyZWFrO2Nhc2UgMjE6Yys9aS5wb3AoKTtvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyMjpvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2kubGVuZ3RoPjI7KXt1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1vKz1pLnNoaWZ0KCk7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtpLmxlbmd0aD42Oyl7bys9aS5zaGlmdCgpO2MrPWkuc2hpZnQoKTtsaW5lVG8obyxjKX11PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztjYXNlIDI2OmkubGVuZ3RoJTImJihvKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI3OmkubGVuZ3RoJTImJihjKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bytpLnNoaWZ0KCk7Zj1jO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZztiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI4OmkucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNik+PjE2KTtoKz0yO2JyZWFrO2Nhc2UgMjk6eT1pLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW3ldO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1pLmxlbmd0aClicmVhazt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAzMTpmb3IoO2kubGVuZ3RoPjA7KXt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZysoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztkZWZhdWx0OmlmKHg8MzIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7eH1gKTtpZih4PDI0NylpLnB1c2goeC0xMzkpO2Vsc2UgaWYoeDwyNTEpaS5wdXNoKDI1NiooeC0yNDcpK2VbaCsrXSsxMDgpO2Vsc2UgaWYoeDwyNTUpaS5wdXNoKDI1NiotKHgtMjUxKS1lW2grK10tMTA4KTtlbHNle2kucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdKS82NTUzNik7aCs9NH19UyYmKGkubGVuZ3RoPTApfX0oZSl9Y29uc3QgYz1bXTtjbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbXBpbGVkRm9udCYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbXBpbGVkRm9udC4iKTt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcj10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKCFyKXRyeXtyPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpO3RoaXMuY29tcGlsZWRHbHlwaHNbYV09cn1jYXRjaChlKXt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWM7dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3Rocm93IGV9dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gYztsZXQgYT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7YT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IG49W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6YS5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsbix0KTtuLnB1c2goe2NtZDoicmVzdG9yZSJ9KTtyZXR1cm4gbn1jb21waWxlR2x5cGhJbXBsKCl7KDAsci51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1yfHwoMCxpLmdldEdseXBoc1VuaWNvZGUpKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19dC5Gb250UmVuZGVyZXJGYWN0b3J5PWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgbixpLHMsbyxjLGw7Y29uc3QgaD1nZXRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCx1PTEyO2U8aDtlKyssdSs9MTYpe2NvbnN0IGU9KDAsci5ieXRlc1RvU3RyaW5nKShhLnN1YmFycmF5KHUsdSs0KSksaD1nZXRVaW50MzIoYSx1KzgpLGQ9Z2V0VWludDMyKGEsdSsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6bj1wYXJzZUNtYXAoYSxoKTticmVhaztjYXNlImdseWYiOmk9YS5zdWJhcnJheShoLGgrZCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UiaGVhZCI6bD1nZXRVaW50MTYoYSxoKzE4KTtjPWdldFVpbnQxNihhLGgrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGgsaCtkLHQpfX1pZihpKXtjb25zdCB0PWw/WzEvbCwwLDAsMS9sLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsbjtpZihhKXtyPTQ7bj1nZXRVaW50MzJ9ZWxzZXtyPTI7bj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBpPVtdO2xldCBzPW4odCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9bih0LGEpO2kucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gaX0oaSxzLGMpLG4sdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8sbixlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRNZXRyaWNzPXQuZ2V0Rm9udEJhc2ljTWV0cmljcz12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlLlN5bWJvbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KSk7ZVsiVGltZXMtUm9tYW4iXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUl0YWxpYyJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZS5aYXBmRGluZ2JhdHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1uO2NvbnN0IGk9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9aX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5HbHlmVGFibGU9dm9pZCAwO3QuR2x5ZlRhYmxlPWNsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IG49bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLGk9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9uLmdldFVpbnQzMigwKToyKm4uZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9uLmdldFVpbnQzMihjKToyKm4uZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxpKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksYT1lPjEzMTA3MCxyPWE/NDoyLG49bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKnIpKTthP24uc2V0VWludDMyKDAsMCk6bi5zZXRVaW50MTYoMCwwKTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7aSs9ZS53cml0ZShpLHQpO2k9aSszJi00O3MrPXI7YT9uLnNldFVpbnQzMihzLGkpOm4uc2V0VWludDE2KHMsaT4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmEsbG9jYTpuZXcgVWludDhBcnJheShuLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGE9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8YTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fTtjbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixuXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKG4pO2lmKCEoMzImbi5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3Qgbj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6bn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDpufSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PW59c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPGE7bisrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IG49clthLTFdKzEsaT10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWk7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPG47ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBuPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8bjtlKyspby5wdXNoKHIpO2ErPW59fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgbj1vW2FdO2lmKDImbil7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmbj9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2Jm4pbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49b1thXTtpZig0Jm4pe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJm4/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZuKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmbnw2NCZuKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IG49MCxpPXIueENvb3JkaW5hdGVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXIueENvb3JkaW5hdGVzW25dLHM9ci55Q29vcmRpbmF0ZXNbbl07bGV0IG89TWF0aC5hYnMoaS10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9aTtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10sbj1bXSxpPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O24ucHVzaChlKX1lbHNlIG4ucHVzaChsKX1vPWg7aS5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBpKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1yW2FdLHM9aVthXTtpZigyJnMpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW5bYV0scz1pW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLG49YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8bjtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjpuLGluc3RydWN0aW9uczppfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1uO3RoaXMuaW5zdHJ1Y3Rpb25zPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IG49dC5nZXRVaW50MTYoZSk7Y29uc3QgaT10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJm4pe2lmKDImbil7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtuXj0xfWVsc2V7aWYoMiZuKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmbil7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOm4sZ2x5cGhJbmRleDppLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9dm9pZCAwO3ZhciByPWEoNCksbj1hKDIpO2Z1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsbj1hLmxlbmd0aDtyPG47cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3Qgbj1hKnQ7cmV0dXJue3JhbmdlOm4sZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1ufX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCBpPWEubGVuZ3RoO2xldCBzLG8sYyxsLGgsdT0xMisxNippO2NvbnN0IGQ9W3VdO2ZvcihzPTA7czxpO3MrKyl7bD10W2Fbc11dO3UrPShsLmxlbmd0aCszJi00KT4+PjA7ZC5wdXNoKHUpfWNvbnN0IGY9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKHM9MDtzPGk7cysrKXtsPXRbYVtzXV07d3JpdGVEYXRhKGYsZFtzXSxsKX0idHJ1ZSI9PT1lJiYoZT0oMCxuLnN0cmluZzMyKSg2NTUzNikpO2ZbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtmWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7ZlsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2ZbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGYsNCxpKTtjb25zdCBnPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGksMTYpO3dyaXRlSW50MTYoZiw2LGcucmFuZ2UpO3dyaXRlSW50MTYoZiw4LGcuZW50cnkpO3dyaXRlSW50MTYoZiwxMCxnLnJhbmdlU2hpZnQpO3U9MTI7Zm9yKHM9MDtzPGk7cysrKXtoPWFbc107Zlt1XT0yNTUmaC5jaGFyQ29kZUF0KDApO2ZbdSsxXT0yNTUmaC5jaGFyQ29kZUF0KDEpO2ZbdSsyXT0yNTUmaC5jaGFyQ29kZUF0KDIpO2ZbdSszXT0yNTUmaC5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG89ZFtzXSxjPWRbcysxXTtvPGM7bys9NCl7ZT1lKygwLHIucmVhZFVpbnQzMikoZixvKT4+PjB9d3JpdGVJbnQzMihmLHUrNCxlKTt3cml0ZUludDMyKGYsdSs4LGRbc10pO3dyaXRlSW50MzIoZix1KzEyLHRbaF0ubGVuZ3RoKTt1Kz0xNn1yZXR1cm4gZn1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fXQuT3BlblR5cGVGaWxlQnVpbGRlcj1PcGVuVHlwZUZpbGVCdWlsZGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFGb250PXZvaWQgMDt2YXIgcj1hKDMzKSxuPWEoMiksaT1hKDM2KSxzPWEoNCksbz1hKDgpLGM9YSg0Nyk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT1yLW47bGV0IG89YSxjPSExO2Zvcig7bzxpOyl7bGV0IGE9MDtmb3IoO2E8biYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PW4pe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGkscyxjLGw7dHJ5e2k9ZS5nZXRCeXRlcyh0KTtzPWkubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCl7Yz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fX0oMCxuLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLG4ud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLG47Zm9yKG49MDtuPHQubGVuZ3RoO24rKylhLnB1c2godFtuXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe249YS5pbmRleE9mKHNbZV0pO24+PTAmJihyW2VdPW4pfX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IG47Zm9yKG49MDtuPHQ7bisrKXIucHVzaChbMTFdKTtmb3Iobj0wO248YTtuKyspci5wdXNoKGVbbl0pO3JldHVybiByfXdyYXAoZSx0LGEsbixpKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9bi5sZW5ndGg7dTxkO3UrKyltLmFkZChuW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIHI9YSgzNSksbj1hKDQpLGk9YSg4KSxzPWEoMik7Y29uc3Qgbz1bNF0sYz1bNV0sbD1bNl0saD1bN10sdT1bOF0sZD1bMTIsMzVdLGY9WzE0XSxnPVsyMV0scD1bMjJdLG09WzMwXSxiPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbixpLHksdz0hMTtmb3IobGV0IFM9MDtTPHI7UysrKXtsZXQgcj1lW1NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytTXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLG8pO2JyZWFrO2Nhc2UgNTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjKTticmVhaztjYXNlIDY6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbCk7YnJlYWs7Y2FzZSA3Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgODp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix1KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3ldKXt3PSEwO2JyZWFrfXc9dGhpcy5jb252ZXJ0KHRbeV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiB3O2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPWk7dGhpcy53aWR0aD1uO3RoaXMuc3RhY2sucHVzaChuLGkpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLHApO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChmWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhazt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLHApO2JyZWFrO2Nhc2UgMzA6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbSk7YnJlYWs7Y2FzZSAzMTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxiKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgwLGYpfWVsc2Ugdz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe3c9ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO2k9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1pO3RoaXMud2lkdGg9bjt0aGlzLnN0YWNrLnB1c2gobixpLGUpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGcpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWNvbnN0IFM9dGhpcy5zdGFjay5wb3AoKSx4PXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKHgvUyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGs9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09eSYmMz09PWspe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UodGhpcy5zdGFjay5sZW5ndGgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PWsmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYodylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK1NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytTXS0xMDg6KDI1NSZlWysrU10pPDwyNHwoMjU1JmVbKytTXSk8PDE2fCgyNTUmZVsrK1NdKTw8OHwoMjU1JmVbKytTXSk8PDA7dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gd31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3Qgbj1yLWU7Zm9yKGxldCBlPW47ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShuLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgcixuLGk9MHx0O2ZvcihyPTA7cjxhO3IrKylpPTUyODQ1KihlW3JdK2kpKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsbj0wO248cztyKyssbisrKXtjb25zdCB0PWVbcl07b1tuXT10Xmk+Pjg7aT01Mjg0NSoodCtpKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8KDAsbi5pc1doaXRlU3BhY2UpKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgaS5TdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3Qgbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8bjtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPG4mJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPG4pe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtpW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsbi5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLG49T2JqZWN0LmNyZWF0ZShudWxsKTtuLmxlbklWPTQ7Y29uc3QgaT17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6bn19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkZvcmNlQm9sZCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpufW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PW4/aS5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOmkuY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKG4pO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gaX1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KG4pKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPSgwLHIuZ2V0RW5jb2RpbmcpKG4pO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUGF0dGVybj12b2lkIDA7dC5nZXRUaWxpbmdQYXR0ZXJuSVI9ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxhKXtjb25zdCBuPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9ci5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxzPXQuZ2V0KCJYU3RlcCIpLG89dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksbD10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyR7aX1dLmApO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLG4saSxzLG8sYyxsXX07dmFyIHI9YSgyKSxuPWEoNSksaT1hKDEyKSxzPWEoNCk7Y29uc3Qgbz0yLGM9MyxsPTQsaD01LHU9NixkPTc7dC5QYXR0ZXJuPWNsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXsoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLGksZixnKXtjb25zdCBwPWUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0/ZS5kaWN0OmUsbT1wLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG0pe2Nhc2UgbzpjYXNlIGM6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcocCx0LGEsZixnKTtjYXNlIGw6Y2FzZSBoOmNhc2UgdTpjYXNlIGQ6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsYSxmLGcpO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK20pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2kuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuc2hhZGluZ1BhdHRlcm59KTsoMCxyLndhcm4pKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19O2NsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBnZXQgU01BTExfTlVNQkVSKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlNNQUxMX05VTUJFUiIsMWUtNil9Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLG4scyl7c3VwZXIoKTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IG89aS5Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLGw9ZS5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6dGhpcy5iYm94PW51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsbixpLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLW4sdC1pKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1uLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzEwLGI9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGg+PXV8fG08PTApeygwLHIuaW5mbykoIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgeT1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLHc9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgUztmb3IobGV0IGU9MDtlPD0xMDtlKyspe3dbMF09aCtlKm07cCh3LDAseSwwKTtTPW8uZ2V0UmdiKHksMCk7Y29uc3QgdD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtiLnB1c2goW2UvMTAsdF0pfWxldCB4PSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7Uz1vLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO3g9ci5VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSl9aWYoIWQpe2IudW5zaGlmdChbMCx4XSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFmKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSx4XSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdCBlPXRoaXMuY29vcmRzQXJyLHQ9dGhpcy5zaGFkaW5nVHlwZTtsZXQgYSxuLGkscyxsO2lmKHQ9PT1vKXtuPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07cz1udWxsO2w9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09Yyl7bj1bZVswXSxlWzFdXTtpPVtlWzNdLGVbNF1dO3M9ZVsyXTtsPWVbNV07YT0icmFkaWFsIn1lbHNlKDAsci51bnJlYWNoYWJsZSkoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4saSxzLGxdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgYT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShhKTtjb25zdCByPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkocik6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1hKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGEpLTE7cmV0dXJuKHQ8PDgtYXwoMjU1JmUpPj5hKT4+PjB9aWYoOD09PWUmJjA9PT1hKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDthPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2ErPTh9YS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1hO3RoaXMuYnVmZmVyPXQmKDE8PGEpLTE7cmV0dXJuIHQ+PmF9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGE9dGhpcy5yZWFkQml0cyhlKSxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0Km4qKHJbMV0tclswXSkrclswXSxhKm4qKHJbM10tclsyXSkrclsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGE9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgaT0wLHM9NDtpPGU7aSsrLHMrPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtuW2ldPWUqYSoocltzKzFdLXJbc10pK3Jbc119Y29uc3QgaT10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKG4sMCxpLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IoaSwwKX19Y29uc3QgZj1mdW5jdGlvbiBnZXRCQ2xvc3VyZSgpe2NvbnN0IGU9W107cmV0dXJuIGZ1bmN0aW9uKHQpe2VbdF18fChlW3RdPWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxuPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbbipuKm4sMypyKm4qbiwzKnIqcipuLHIqcipyXSkpfXJldHVybiB0fSh0KSk7cmV0dXJuIGVbdF19fSgpO2NsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIGdldCBNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMyl9c3RhdGljIGdldCBNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMjApfXN0YXRpYyBnZXQgVFJJQU5HTEVfREVOU0lUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJUUklBTkdMRV9ERU5TSVRZIiwyMCl9Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6dGhpcy5iYm94PW51bGw7Y29uc3QgZz1pLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/Zy5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IHA9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksbT1wP3MuY3JlYXRlRnJvbUFycmF5KHApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGI9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjptLGNvbG9yU3BhY2U6ZyxudW1Db21wczptPzE6Zy5udW1Db21wc30seT1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGIpO2xldCB3PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGw6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHkpO2JyZWFrO2Nhc2UgaDpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHksZSk7YnJlYWs7Y2FzZSB1OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyh5KTt3PSEwO2JyZWFrO2Nhc2UgZDp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoeSk7dz0hMDticmVhaztkZWZhdWx0OigwLHIudW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodyl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPVtdLGk9W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6aS5wdXNoKGkuYXQoLTIpLGkuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOmkucHVzaChpLmF0KC0zKSxpLmF0KC0xKSk7cz0xfW4ucHVzaChvKX1pLnB1c2godC5sZW5ndGgpO3QucHVzaChjKTthLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxuPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksaT1lLnJlYWRDb21wb25lbnRzKCk7bi5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKGkpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzg6MTI7YTxyO2ErKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPWEubGVuZ3RoO2ZvcihsZXQgdD0wLHI9MCE9PXM/Mjo0O3Q8cjt0KyspYS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDpuWzEyXT1vKzM7blsxM109bys0O25bMTRdPW8rNTtuWzE1XT1vKzY7bls4XT1vKzI7blsxMV09bys3O25bNF09bysxO25bN109bys4O25bMF09bztuWzFdPW8rMTE7blsyXT1vKzEwO25bM109bys5O2lbMl09YysxO2lbM109YysyO2lbMF09YztpWzFdPWMrMzticmVhaztjYXNlIDE6bD1uWzEyXTtoPW5bMTNdO3U9blsxNF07ZD1uWzE1XTtuWzEyXT1kO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09dTtuWzExXT1vKzM7bls0XT1oO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbMl07aD1pWzNdO2lbMl09aDtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2g9blsxMV07blsxMl09blszXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bN107blsxMV09byszO25bNF09aDtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzNdO2lbMl09aVsxXTtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09blsxXTtuWzExXT1vKzM7bls0XT1uWzJdO25bN109bys0O25bMF09blszXTtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtpWzJdPWlbMF07aVszXT1jO2lbMF09aVsxXTtpWzFdPWMrMX1uWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblswXV1bMF0tdFtuWzE1XV1bMF0rNioodFtuWzRdXVswXSt0W25bMV1dWzBdKS0yKih0W25bMTJdXVswXSt0W25bM11dWzBdKSszKih0W25bMTNdXVswXSt0W25bN11dWzBdKSkvOSwoLTQqdFtuWzBdXVsxXS10W25bMTVdXVsxXSs2Kih0W25bNF1dWzFdK3RbblsxXV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsxM11dWzFdK3Rbbls3XV1bMV0pKS85XSk7bls2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bM11dWzBdLXRbblsxMl1dWzBdKzYqKHRbblsyXV1bMF0rdFtuWzddXVswXSktMioodFtuWzBdXVswXSt0W25bMTVdXVswXSkrMyoodFtuWzRdXVswXSt0W25bMTRdXVswXSkpLzksKC00KnRbblszXV1bMV0tdFtuWzEyXV1bMV0rNioodFtuWzJdXVsxXSt0W25bN11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bNF1dWzFdK3RbblsxNF1dWzFdKSkvOV0pO25bOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzEyXV1bMF0tdFtuWzNdXVswXSs2Kih0W25bOF1dWzBdK3RbblsxM11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bMTFdXVswXSt0W25bMV1dWzBdKSkvOSwoLTQqdFtuWzEyXV1bMV0tdFtuWzNdXVsxXSs2Kih0W25bOF1dWzFdK3RbblsxM11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bMTFdXVsxXSt0W25bMV1dWzFdKSkvOV0pO25bMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblsxNV1dWzBdLXRbblswXV1bMF0rNioodFtuWzExXV1bMF0rdFtuWzE0XV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsyXV1bMF0rdFtuWzhdXVswXSkpLzksKC00KnRbblsxNV1dWzFdLXRbblswXV1bMV0rNioodFtuWzExXV1bMV0rdFtuWzE0XV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsyXV1bMV0rdFtuWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsbj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09cz8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOm5bMTJdPW8rMztuWzEzXT1vKzQ7blsxNF09bys1O25bMTVdPW8rNjtuWzhdPW8rMjtuWzldPW8rMTM7blsxMF09bysxNDtuWzExXT1vKzc7bls0XT1vKzE7bls1XT1vKzEyO25bNl09bysxNTtuWzddPW8rODtuWzBdPW87blsxXT1vKzExO25bMl09bysxMDtuWzNdPW8rOTtpWzJdPWMrMTtpWzNdPWMrMjtpWzBdPWM7aVsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07aD1uWzEzXTt1PW5bMTRdO2Q9blsxNV07blsxMl09ZDtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPXU7bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1oO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzJdO2g9aVszXTtpWzJdPWg7aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDI6bD1uWzE1XTtoPW5bMTFdO25bMTJdPW5bM107blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT1uWzddO25bOV09bys5O25bMTBdPW8rMTA7blsxMV09byszO25bNF09aDtuWzVdPW8rODtuWzZdPW8rMTE7bls3XT1vKzQ7blswXT1sO25bMV09bys3O25bMl09bys2O25bM109bys1O2w9aVszXTtpWzJdPWlbMV07aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bMV07bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1uWzJdO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPW5bM107blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7aVsyXT1pWzBdO2lbM109YztpWzBdPWlbMV07aVsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxyLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLGM9TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxsPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksaD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO3U9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsdSkpO2xldCBkPU1hdGguY2VpbCgoaC1jKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZCkpO2NvbnN0IGc9dSsxLHA9bmV3IEludDMyQXJyYXkoKGQrMSkqZyksbT1uZXcgSW50MzJBcnJheSgoZCsxKSpnKTtsZXQgYj0wO2NvbnN0IHk9bmV3IFVpbnQ4QXJyYXkoMyksdz1uZXcgVWludDhBcnJheSgzKSxTPW5bc1swXV0seD1uW3NbMV1dLGs9bltzWzJdXSxDPW5bc1szXV0sdj1mKGQpLEY9Zih1KTtmb3IobGV0IGU9MDtlPD1kO2UrKyl7eVswXT0oU1swXSooZC1lKStrWzBdKmUpL2R8MDt5WzFdPShTWzFdKihkLWUpK2tbMV0qZSkvZHwwO3lbMl09KFNbMl0qKGQtZSkra1syXSplKS9kfDA7d1swXT0oeFswXSooZC1lKStDWzBdKmUpL2R8MDt3WzFdPSh4WzFdKihkLWUpK0NbMV0qZSkvZHwwO3dbMl09KHhbMl0qKGQtZSkrQ1syXSplKS9kfDA7Zm9yKGxldCB0PTA7dDw9dTt0KyssYisrKXtpZighKDAhPT1lJiZlIT09ZHx8MCE9PXQmJnQhPT11KSljb250aW51ZTtsZXQgcj0wLHM9MCxvPTA7Zm9yKGxldCBuPTA7bjw9MztuKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bbl0qRlt0XVtjXTtyKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfXBbYl09YS5sZW5ndGg7YS5wdXNoKFtyLHNdKTttW2JdPW4ubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0oeVswXSoodS10KSt3WzBdKnQpL3V8MDtjWzFdPSh5WzFdKih1LXQpK3dbMV0qdCkvdXwwO2NbMl09KHlbMl0qKHUtdCkrd1syXSp0KS91fDA7bi5wdXNoKGMpfX1wWzBdPWlbMF07bVswXT1zWzBdO3BbdV09aVszXTttW3VdPXNbMV07cFtnKmRdPWlbMTJdO21bZypkXT1zWzJdO3BbZypkK3VdPWlbMTVdO21bZypkK3VdPXNbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6cCxjb2xvcnM6bSx2ZXJ0aWNlc1BlclJvdzpnfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgbj0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dGhpcy5jb29yZHNbbl1bMF0scz10aGlzLmNvb3Jkc1tuXVsxXTtlPWU+aT9pOmU7dD10PnM/czp0O2E9YTxpP2k6YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IG49dGhpcy5jb29yZHMsaT1uZXcgRmxvYXQzMkFycmF5KDIqbi5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1uW2VdO2lbYSsrXT10WzBdO2lbYSsrXT10WzFdfXRoaXMuY29vcmRzPWk7Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxuPXQuY29vcmRzLGk9dC5jb2xvcnM7Zm9yKGE9MCxyPW4ubGVuZ3RoO2E8cjthKyspe25bYV0qPTI7aVthXSo9M319fWdldElSKCl7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6bn09dDtsZXQgaTtpPW4/YS5tYXAoKChlLHQpPT5lKm5bdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtzLnB1c2goaVt0XSk7bys9MX1lbHNle289ZTtzPVtpW3RdXTtjLnB1c2goZSxzKX1yZXR1cm4gY30oZSksYT1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsbi5OYW1lLmdldChlKSk7YS5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLG4uTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLG4uTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7YS5zZXQoIkNJRFRvR0lETWFwIixuLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgcj1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgbi5EaWN0KG51bGwpO2kuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7aS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtpLnNldCgiU3VwcGxlbWVudCIsMCk7YS5zZXQoIkNJRFN5c3RlbUluZm8iLGkpO3JldHVybiBhfTt0LmdldFhmYUZvbnROYW1lPWdldFhmYUZvbnROYW1lO3ZhciByPWEoNTApLG49YSgzKSxpPWEoNTEpLHM9YSg1Miksbz1hKDUzKSxjPWEoNTQpLGw9YSg0KSxoPWEoMzYpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc307ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnIuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpUmVndWxhck1ldHJpY3N9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZE1ldHJpY3N9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUl0YWxpY01ldHJpY3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6aS5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZE1ldHJpY3N9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsaC5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIHUoKVt0XX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPXQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9dC5DYWxpYnJpSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkRmFjdG9ycz12b2lkIDA7dC5DYWxpYnJpQm9sZEZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlSZWd1bGFyRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz12b2lkIDA7dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXQuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9dC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRGYWN0b3JzPXZvaWQgMDt0Lk15cmlhZFByb0JvbGRGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdEV2YWx1YXRvcj10LlBvc3RTY3JpcHRDb21waWxlcj10LlBERkZ1bmN0aW9uRmFjdG9yeT12b2lkIDA7dC5pc1BERkZ1bmN0aW9uPWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfTt2YXIgcj1hKDMpLG49YSgyKSxpPWEoNTYpLHM9YSg1KSxvPWEoNTcpO3QuUERGRnVuY3Rpb25GYWN0b3J5PWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2Ygci5SZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGEpO3JldHVybiBhfWdldENhY2hlZChlKXtsZXQgdDtlIGluc3RhbmNlb2Ygci5SZWY/dD1lOmUgaW5zdGFuY2VvZiByLkRpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0mJih0PWUuZGljdCYmZS5kaWN0Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGE7ZSBpbnN0YW5jZW9mIHIuUmVmP2E9ZTplIGluc3RhbmNlb2Ygci5EaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtJiYoYT1lLmRpY3QmJmUuZGljdC5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgbixpLHM9MTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKylzKj1lW25dO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKG49MDtuPHM7bisrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tuXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphfSl7Y29uc3Qgcj1hLmRpY3R8fGE7c3dpdGNoKHIuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDpyfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OnJ9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6YX0pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46YX0pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG4gb2YgYSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihuKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsbil7Zm9yKGxldCBpPTAscz1yLmxlbmd0aDtpPHM7aSsrKXJbaV0oZSx0LGEsbitpKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bis9MilhW3IrK109W2Vbbl0sZVtuKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLG4pe3JldHVybiByKyhuLXIpLyhhLXQpKihlLXQpfWxldCBpPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJSYW5nZSIpKTtpZighaXx8IXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG89aS5sZW5ndGgvMixjPXMubGVuZ3RoLzI7aT10b011bHRpQXJyYXkoaSk7cz10b011bHRpQXJyYXkocyk7Y29uc3QgbD10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIlNpemUiKSksaD1yLmdldCgiQml0c1BlclNhbXBsZSIpLHU9ci5nZXQoIk9yZGVyIil8fDE7MSE9PXUmJigwLG4uaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK3UpO2xldCBkPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGQpZD10b011bHRpQXJyYXkoZCk7ZWxzZXtkPVtdO2ZvcihsZXQgZT0wO2U8bzsrK2UpZC5wdXNoKFswLGxbZV0tMV0pfWxldCBmPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRGVjb2RlIikpO2Y9Zj90b011bHRpQXJyYXkoZik6cztjb25zdCBnPXRoaXMuZ2V0U2FtcGxlQXJyYXkobCxjLGgsYSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBuPTE8PG8saD1uZXcgRmxvYXQ2NEFycmF5KG4pLHU9bmV3IFVpbnQzMkFycmF5KG4pO2xldCBwLG07Zm9yKG09MDttPG47bSsrKWhbbV09MTtsZXQgYj1jLHk9MTtmb3IocD0wO3A8bzsrK3Ape2NvbnN0IGE9aVtwXVswXSxyPWlbcF1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3BdLGEpLHIpLGEscixkW3BdWzBdLGRbcF1bMV0pO2NvbnN0IG89bFtwXTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksby0xKTtjb25zdCBjPXM8by0xP01hdGguZmxvb3Iocyk6cy0xLGY9YysxLXMsZz1zLWMsdz1jKmIsUz13K2I7Zm9yKG09MDttPG47bSsrKWlmKG0meSl7aFttXSo9Zzt1W21dKz1TfWVsc2V7aFttXSo9Zjt1W21dKz13fWIqPW87eTw8PTF9Zm9yKG09MDttPGM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxuO3ArKyllKz1nW3VbcF0rbV0qaFtwXTtlPWludGVycG9sYXRlKGUsMCwxLGZbbV1bMF0sZlttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsc1ttXVswXSksc1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMwIikpfHxbMF0sbj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMxIikpfHxbMV0saT1hLmdldCgiTiIpLHM9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXMucHVzaChuW2VdLXJbZV0pO2NvbnN0IG89cy5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxhLG4pe2NvbnN0IGM9MT09PWk/ZVt0XTplW3RdKippO2ZvcihsZXQgZT0wO2U8bzsrK2UpYVtuK2VdPXJbZV0rYypzW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSk7aWYoIXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1yLmxlbmd0aC8yKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3QgaT1bXTtmb3IoY29uc3QgciBvZiBhLmdldCgiRnVuY3Rpb25zIikpaS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocil9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkJvdW5kcyIpKSxvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLG4pe2NvbnN0IGw9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGEpe2U+YT9lPWE6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxyWzBdLHJbMV0pLGg9cy5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxzW3VdKTsrK3UpO2xldCBkPXJbMF07dT4wJiYoZD1zW3UtMV0pO2xldCBmPXJbMV07dTxzLmxlbmd0aCYmKGY9c1t1XSk7Y29uc3QgZz1vWzIqdV0scD1vWzIqdSsxXTtjWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtpW3VdKGMsMCxhLG4pfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl7Y29uc3Qgcz10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKSxvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighbyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgYz1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIoYSksbD1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobCxzLG8pO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLG4uaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgaD1vLmxlbmd0aD4+MSx1PXMubGVuZ3RoPj4xLGQ9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobCksZj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBnPTgxOTI7Y29uc3QgcD1uZXcgRmxvYXQzMkFycmF5KHUpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4saSxzPSIiO2NvbnN0IGM9cDtmb3Iobj0wO248dTtuKyspe2k9ZVt0K25dO2Nbbl09aTtzKz1pKyJfIn1jb25zdCBsPWZbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGgpLGI9ZC5leGVjdXRlKGMpLHk9Yi5sZW5ndGgtaDtmb3Iobj0wO248aDtuKyspe2k9Ylt5K25dO2xldCBlPW9bMipuXTtpZihpPGUpaT1lO2Vsc2V7ZT1vWzIqbisxXTtpPmUmJihpPWUpfW1bbl09aX1pZihnPjApe2ctLTtmW3NdPW19YS5zZXQobSxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgZ2V0IE1BWF9TVEFDS19TSVpFKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1BWF9TVEFDS19TSVpFIiwxMDApfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLG49YS5sZW5ndGgtMSxpPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1pLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1pLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLGk9ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxpOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguYXRhbihvKSk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6Yz10LnBvcCgpO289dC5wb3AoKTtvPjA/dC5wdXNoKG88PGMpOnQucHVzaChvPj5jKTticmVhaztjYXNlImNlaWxpbmciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG8pKTticmVhaztjYXNlImNvcHkiOm89dC5wb3AoKTt0LmNvcHkobyk7YnJlYWs7Y2FzZSJjb3MiOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobykpO2JyZWFrO2Nhc2UiY3ZpIjpvPTB8dC5wb3AoKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2MpO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobz09PWMpO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8qKmMpO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bz10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKG8pKTticmVhaztjYXNlImdlIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPj1jKTticmVhaztjYXNlImd0IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPmMpO2JyZWFrO2Nhc2UiaWRpdiI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2goby9jfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm89dC5wb3AoKTt0LmluZGV4KG8pO2JyZWFrO2Nhc2UibGUiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG88PWMpO2JyZWFrO2Nhc2UibG4iOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobykpO2JyZWFrO2Nhc2UibG9nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG8pL01hdGguTE4xMCk7YnJlYWs7Y2FzZSJsdCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzxjKTticmVhaztjYXNlIm1vZCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyVjKTticmVhaztjYXNlIm11bCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobypjKTticmVhaztjYXNlIm5lIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvIT09Yyk7YnJlYWs7Y2FzZSJuZWciOm89dC5wb3AoKTt0LnB1c2goLW8pO2JyZWFrO2Nhc2Uibm90IjpvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goIW8pOnQucHVzaCh+byk7YnJlYWs7Y2FzZSJvciI6Yz10LnBvcCgpO289dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvfHxjKTp0LnB1c2gob3xjKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5yb2xsKG8sYyk7YnJlYWs7Y2FzZSJyb3VuZCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG8pKTticmVhaztjYXNlInNpbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNpbihvKSk7YnJlYWs7Y2FzZSJzcXJ0IjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChvKSk7YnJlYWs7Y2FzZSJzdWIiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8tYyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm89dC5wb3AoKTtvPW88MD9NYXRoLmNlaWwobyk6TWF0aC5mbG9vcihvKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJ4b3IiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyE9PWMpOnQucHVzaChvXmMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtzfWApfWVsc2UgdC5wdXNoKHMpfXJldHVybiB0LnN0YWNrfX10LlBvc3RTY3JpcHRFdmFsdWF0b3I9UG9zdFNjcmlwdEV2YWx1YXRvcjtjbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpeygwLG4udW5yZWFjaGFibGUpKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsbil7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PW59dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLG49W10saT10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtuLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7bi5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxuPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChuKTtjb25zdCBpPWFbMiplXSxzPWFbMiplKzFdLG89W24udG9TdHJpbmcoKV07aWYoaT50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLGksIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19dC5Qb3N0U2NyaXB0Q29tcGlsZXI9UG9zdFNjcmlwdENvbXBpbGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtjb25zdCB0PVBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdO3JldHVybiB0fHwoUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV09bmV3IFBvc3RTY3JpcHRUb2tlbihzLk9QRVJBVE9SLGUpKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJMQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuUkJSQUNFLCJ9IikpfXN0YXRpYyBnZXQgSUYoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUZFTFNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUZFTFNFLCJJRkVMU0UiKSl9fXQuUG9zdFNjcmlwdExleGVyPWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbi5FT0Y7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsaS5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAke2F9YCk7cmV0dXJuIGF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyk7Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT0oZSYmZS5vbmx5UmVmcyk7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBuLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTtjbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBnZXQgTlVNX1BBR0VTX1RIUkVTSE9MRCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJOVU1fUEFHRVNfVEhSRVNIT0xEIiwyKX1zdGF0aWMgZ2V0IE1JTl9JTUFHRVNfVE9fQ0FDSEUoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUlOX0lNQUdFU19UT19DQUNIRSIsMTApfXN0YXRpYyBnZXQgTUFYX0JZVEVfU0laRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfQllURV9TSVpFIiw0ZTcpfWNvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgbi5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy5fYnl0ZVNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO3JldHVybiEoKGE/YS5zaXplKyhhLmhhcyh0KT8wOjEpOjEpPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZCl9YWRkUGFnZUluZGV4KGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJhZGRQYWdlSW5kZXgiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD8oMCxyLndhcm4pKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2V8fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCk7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX10Lkdsb2JhbEltYWdlQ2FjaGU9R2xvYmFsSW1hZ2VDYWNoZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmJpZGk9ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IGM9ITA7Y29uc3QgbD1lLmxlbmd0aDtpZigwPT09bHx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjLGEpO3MubGVuZ3RoPWw7by5sZW5ndGg9bDtsZXQgaCx1LGQ9MDtmb3IoaD0wO2g8bDsrK2gpe3NbaF09ZS5jaGFyQXQoaCk7Y29uc3QgdD1lLmNoYXJDb2RlQXQoaCk7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPW5bdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWE9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7YT1pWzI1NSZ0XTthfHwoMCxyLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UgMTc5Mjw9dCYmdDw9MjIyMCYmKGE9IkFMIik7IlIiIT09YSYmIkFMIiE9PWEmJiJBTiIhPT1hfHxkKys7b1toXT1hfWlmKDA9PT1kKXtjPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLGMpfWlmKC0xPT09dClpZihkL2w8LjMmJmw+NCl7Yz0hMDt0PTB9ZWxzZXtjPSExO3Q9MX1jb25zdCBmPVtdO2ZvcihoPTA7aDxsOysraClmW2hdPXQ7Y29uc3QgZz1pc09kZCh0KT8iUiI6IkwiLHA9ZyxtPXA7bGV0IGIseT1wO2ZvcihoPTA7aDxsOysraCkiTlNNIj09PW9baF0/b1toXT15Onk9b1toXTt5PXA7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkVOIj09PWI/b1toXT0iQUwiPT09eT8iQU4iOiJFTiI6IlIiIT09YiYmIkwiIT09YiYmIkFMIiE9PWJ8fCh5PWIpfWZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJBTCI9PT1iJiYob1toXT0iUiIpfWZvcihoPTE7aDxsLTE7KytoKXsiRVMiPT09b1toXSYmIkVOIj09PW9baC0xXSYmIkVOIj09PW9baCsxXSYmKG9baF09IkVOIik7IkNTIiE9PW9baF18fCJFTiIhPT1vW2gtMV0mJiJBTiIhPT1vW2gtMV18fG9baCsxXSE9PW9baC0xXXx8KG9baF09b1toLTFdKX1mb3IoaD0wO2g8bDsrK2gpaWYoIkVOIj09PW9baF0pe2ZvcihsZXQgZT1oLTE7ZT49MCYmIkVUIj09PW9bZV07LS1lKW9bZV09IkVOIjtmb3IobGV0IGU9aCsxO2U8bCYmIkVUIj09PW9bZV07KytlKW9bZV09IkVOIn1mb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiV1MiIT09YiYmIkVTIiE9PWImJiJFVCIhPT1iJiYiQ1MiIT09Ynx8KG9baF09Ik9OIil9eT1wO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJFTiI9PT1iP29baF09IkwiPT09eT8iTCI6IkVOIjoiUiIhPT1iJiYiTCIhPT1ifHwoeT1iKX1mb3IoaD0wO2g8bDsrK2gpaWYoIk9OIj09PW9baF0pe2NvbnN0IGU9ZmluZFVuZXF1YWwobyxoKzEsIk9OIik7bGV0IHQ9cDtoPjAmJih0PW9baC0xXSk7bGV0IGE9bTtlKzE8bCYmKGE9b1tlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWEmJihhPSJSIik7dD09PWEmJnNldFZhbHVlcyhvLGgsZSx0KTtoPWUtMX1mb3IoaD0wO2g8bDsrK2gpIk9OIj09PW9baF0mJihvW2hdPWcpO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdO2lzRXZlbihmW2hdKT8iUiI9PT1iP2ZbaF0rPTE6IkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9Mik6IkwiIT09YiYmIkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9MSl9bGV0IHcsUz0tMSx4PTk5O2ZvcihoPTAsdT1mLmxlbmd0aDtoPHU7KytoKXt3PWZbaF07Uzx3JiYoUz13KTt4PncmJmlzT2RkKHcpJiYoeD13KX1mb3Iodz1TO3c+PXg7LS13KXtsZXQgZT0tMTtmb3IoaD0wLHU9Zi5sZW5ndGg7aDx1OysraClpZihmW2hdPHcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMocyxlLGgpO2U9LTF9fWVsc2UgZTwwJiYoZT1oKTtlPj0wJiZyZXZlcnNlVmFsdWVzKHMsZSxmLmxlbmd0aCl9Zm9yKGg9MCx1PXMubGVuZ3RoO2g8dTsrK2gpe2NvbnN0IGU9c1toXTsiPCIhPT1lJiYiPiIhPT1lfHwoc1toXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHMuam9pbigiIiksYyl9O3ZhciByPWEoMik7Y29uc3Qgbj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0saT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IHIsbjtmb3Iocj10LG49ZS5sZW5ndGg7cjxuOysrcilpZihlW3JdIT09YSlyZXR1cm4gcjtyZXR1cm4gcn1mdW5jdGlvbiBzZXRWYWx1ZXMoZSx0LGEscil7Zm9yKGxldCBuPXQ7bjxhOysrbillW25dPXJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsbj1hLTE7cjxuOysrciwtLW4pe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbbl07ZVtuXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IHM9W10sbz1bXX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IG49MzI4NTM3NzUyMCxpPTQyOTQ5MDE3NjAscz02NTUzNTt0Lk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO2lmKG48PTI1NSl0W2ErK109bjtlbHNle3RbYSsrXT1uPj4+ODt0W2ErK109MjU1Jm59fX1lbHNle2lmKCEoMCxyLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixvPWEtNCpuLGM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGw9MCxoPTAsdT10aGlzLmgxLGQ9dGhpcy5oMjtjb25zdCBmPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcscD0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtsPWNbZV07bD1sKmYmaXxsKnAmcztsPWw8PDE1fGw+Pj4xNztsPWwqZyZpfGwqbSZzO3VePWw7dT11PDwxM3x1Pj4+MTk7dT01KnUrMzg2NDI5MjE5Nn1lbHNle2g9Y1tlXTtoPWgqZiZpfGgqcCZzO2g9aDw8MTV8aD4+PjE3O2g9aCpnJml8aCptJnM7ZF49aDtkPWQ8PDEzfGQ+Pj4xOTtkPTUqZCszODY0MjkyMTk2fWw9MDtzd2l0Y2gobyl7Y2FzZSAzOmxePXRbNCpuKzJdPDwxNjtjYXNlIDI6bF49dFs0Km4rMV08PDg7Y2FzZSAxOmxePXRbNCpuXTtsPWwqZiZpfGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJml8bCptJnM7MSZuP3VePWw6ZF49bH10aGlzLmgxPXU7dGhpcy5oMj1kfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzO3Q9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzO3Q9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtjb25zdCBhPShlPj4+MCkudG9TdHJpbmcoMTYpLHI9KHQ+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIGEucGFkU3RhcnQoOCwiMCIpK3IucGFkU3RhcnQoOCwiMCIpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PcGVyYXRvckxpc3Q9dm9pZCAwO3ZhciByPWEoMik7ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGEscixuKXtsZXQgaT1lO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPGE7ZSsrKXtjb25zdCBhPXRbZV07aT1pW2FdfHwoaVthXT1bXSl9aVt0LmF0KC0xKV09e2NoZWNrRm46YSxpdGVyYXRlRm46cixwcm9jZXNzRm46bn19Y29uc3Qgbj1bXTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXIuT1BTLnNhdmU7Y2FzZSAxOnJldHVybiBhW3RdPT09ci5PUFMudHJhbnNmb3JtO2Nhc2UgMjpyZXR1cm4gYVt0XT09PXIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke259YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIscz1pLTMsbz1pLTIsYz1pLTEsbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDIwMCk7aWYobDwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBoPTA7Y29uc3QgdT1bXTtsZXQgZD0wLGY9MSxnPTE7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW28rKGU8PDIpXSxhPW5bYysoZTw8MildWzBdO2lmKGYrYS53aWR0aD4xZTMpe2g9TWF0aC5tYXgoaCxmKTtnKz1kKzI7Zj0wO2Q9MH11LnB1c2goe3RyYW5zZm9ybTp0LHg6Zix5OmcsdzphLndpZHRoLGg6YS5oZWlnaHR9KTtmKz1hLndpZHRoKzI7ZD1NYXRoLm1heChkLGEuaGVpZ2h0KX1jb25zdCBwPU1hdGgubWF4KGgsZikrMSxtPWcrZCsxLGI9bmV3IFVpbnQ4QXJyYXkocCptKjQpLHk9cDw8Mjtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bYysoZTw8MildWzBdLmRhdGEsYT11W2VdLnc8PDI7bGV0IHI9MCxpPXVbZV0ueCt1W2VdLnkqcDw8MjtiLnNldCh0LnN1YmFycmF5KDAsYSksaS15KTtmb3IobGV0IG49MCxzPXVbZV0uaDtuPHM7bisrKXtiLnNldCh0LnN1YmFycmF5KHIscithKSxpKTtyKz1hO2krPXl9Yi5zZXQodC5zdWJhcnJheShyLWEsciksaSk7Zm9yKDtpPj0wOyl7dFtpLTRdPXRbaV07dFtpLTNdPXRbaSsxXTt0W2ktMl09dFtpKzJdO3RbaS0xXT10W2krM107dFtpK2FdPXRbaSthLTRdO3RbaSthKzFdPXRbaSthLTNdO3RbaSthKzJdPXRbaSthLTJdO3RbaSthKzNdPXRbaSthLTFdO2ktPXl9fWEuc3BsaWNlKHMsNCpsLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFt7d2lkdGg6cCxoZWlnaHQ6bSxraW5kOnIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTpifSx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9bltoXTtpZihuW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PW5baF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCBhPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0yLHM9bltpXVswXSxvPW5baV1bM107cmV0dXJuIG5bdF1bMF09PT1zJiYwPT09blt0XVsxXSYmMD09PW5bdF1bMl0mJm5bdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1uW2UuaUN1cnItMV1bMF07cmV0dXJuIG5bdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2l9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPW5baS0xXVswXSxsPW5bb11bMF0saD1uW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PW5bZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO24uc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUobixbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLHM9bltpXVswXSxvPW5baV1bMV07cmV0dXJuIG5bdF1bMF09PT1zJiZuW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxuPWUuaUN1cnIsaT1uLTQscz1uLTMsbz1uLTIsYz1uLTEsbD1uLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1pKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1pKSU1O2xldCBmPWk7aWYoaT49NCYmYVtpLTRdPT09YVtzXSYmYVtpLTNdPT09YVtvXSYmYVtpLTJdPT09YVtjXSYmYVtpLTFdPT09YVtsXSYmcltpLTRdWzBdPT09aCYmcltpLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxhPWUubGVuZ3RoLHI9dGhpcy5zdGF0ZSxpPXRoaXMubWF0Y2g7aWYoIXImJiFpJiZ0KzE9PT1hJiYhbltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWE7cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxhOyl7aWYoaSl7aWYoKDAsaS5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLGkucHJvY2Vzc0ZuKShzLHQrMSk7YT1lLmxlbmd0aDtpPW51bGw7cj1udWxsO2lmKHQ+PWEpYnJlYWt9cj0ocnx8bilbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe3MuaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShzKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIGdldCBDSFVOS19TSVpFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkUiLDFlMyl9c3RhdGljIGdldCBDSFVOS19TSVpFX0FCT1VUKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkVfQUJPVVQiLHRoaXMuQ0hVTktfU0laRS01KX1jb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTshdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBOdWxsT3B0aW1pemVyKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IGk9MDtpPG47aSsrKXN3aXRjaCh0W2ldKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbaV1bMF07IXQuY2FjaGVkJiZ0LmRhdGEmJnQuZGF0YS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKHQuZGF0YS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGE9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWE7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6YX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19dC5PcGVyYXRvckxpc3Q9T3BlcmF0b3JMaXN0fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUERGSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDYyKSxpPWEoNSkscz1hKDEyKSxvPWEoMTcpLGM9YSgyNSksbD1hKDI4KSxoPWEoMyk7ZnVuY3Rpb24gZGVjb2RlQW5kQ2xhbXAoZSx0LGEscil7KGU9dCtlKmEpPDA/ZT0wOmU+ciYmKGU9cik7cmV0dXJuIGV9ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPW4qaTtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBjPWEvbixsPXIvaTtsZXQgaCx1LGQsZixnPTA7Y29uc3QgcD1uZXcgVWludDE2QXJyYXkobiksbT1hO2ZvcihoPTA7aDxuO2grKylwW2hdPU1hdGguZmxvb3IoaCpjKTtmb3IoaD0wO2g8aTtoKyspe2Q9TWF0aC5mbG9vcihoKmwpKm07Zm9yKHU9MDt1PG47dSsrKXtmPWQrcFt1XTtvW2crK109ZVtmXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOm49ITEsc21hc2s6bz1udWxsLG1hc2s6Yz1udWxsLGlzTWFzazp1PSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpkLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KXt0aGlzLmltYWdlPWE7Y29uc3QgZz1hLmRpY3QscD1nLmdldCgiRiIsIkZpbHRlciIpO2xldCBtO2lmKHAgaW5zdGFuY2VvZiBoLk5hbWUpbT1wLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHApKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihwWzBdKTt0IGluc3RhbmNlb2YgaC5OYW1lJiYobT10Lm5hbWUpfXN3aXRjaChtKXtjYXNlIkpQWERlY29kZSI6Y29uc3QgZT1uZXcgbC5KcHhJbWFnZTtlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKTthLnN0cmVhbS5yZXNldCgpO2Eud2lkdGg9ZS53aWR0aDthLmhlaWdodD1lLmhlaWdodDthLmJpdHNQZXJDb21wb25lbnQ9ZS5iaXRzUGVyQ29tcG9uZW50O2EubnVtQ29tcHM9ZS5jb21wb25lbnRzQ291bnQ7YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBiPWcuZ2V0KCJXIiwiV2lkdGgiKSx5PWcuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1ifHxhLmhlaWdodCE9PXkpKXsoMCxyLndhcm4pKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2I9YS53aWR0aDt5PWEuaGVpZ2h0fWlmKGI8MXx8eTwxKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke2J9IG9yIGhlaWdodDogJHt5fWApO3RoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD15O3RoaXMuaW50ZXJwb2xhdGU9Zy5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPWcuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPWcuZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgdz1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXcpe3c9Zy5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighdyl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTt3PTF9fXRoaXMuYnBjPXc7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1nLmdldFJhdygiQ1MiKXx8Zy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighaSl7KDAsci5pbmZvKSgiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpO3N3aXRjaChhLm51bUNvbXBzKXtjYXNlIDE6aT1oLk5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9aC5OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0Omk9aC5OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBKUFggaW1hZ2VzIHdpdGggJHthLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9fXRoaXMuY29sb3JTcGFjZT1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHN9dGhpcy5kZWNvZGU9Zy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLHcpfHx1JiYhcy5Db2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8dyktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD10aGlzLmNvbG9yU3BhY2UmJiJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lO2ZvcihsZXQgYT0wLHI9MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrcil7Y29uc3Qgbj10aGlzLmRlY29kZVthXSxpPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbcl09dD8oaS1uKS9lOmktbjt0aGlzLmRlY29kZUFkZGVuZHNbcl09dD9uOmUqbn19aWYobyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7ZWxzZSBpZihjKWlmKGMgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmMsaXNJbmxpbmU6bixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pOigwLHIud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1jfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBjPWE7bGV0IGw9bnVsbCxoPW51bGw7Y29uc3QgdT1hLmRpY3QuZ2V0KCJTTWFzayIpLGQ9YS5kaWN0LmdldCgiTWFzayIpO3U/dSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9sPXU6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpkJiYoZCBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShkKT9oPWQ6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6Yyxpc0lubGluZTpuLHNtYXNrOmwsbWFzazpoLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDphLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIsaW52ZXJzZURlY29kZTpuLGludGVycG9sYXRlOml9KXtjb25zdCBzPSh0Kzc+PjMpKmEsbz1lLmJ5dGVMZW5ndGg7bGV0IGMsbDtpZighcnx8biYmIShzPT09bykpaWYobil7Yz1uZXcgVWludDhBcnJheShzKTtjLnNldChlKTtjLmZpbGwoMjU1LG8pfWVsc2UgYz1uZXcgVWludDhBcnJheShlKTtlbHNlIGM9ZTtpZihuKWZvcihsPTA7bDxvO2wrKyljW2xdXj0yNTU7cmV0dXJue2RhdGE6Yyx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOml9fXN0YXRpYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06aSxpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6byxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjPSEwfSl7Y29uc3QgbD0xPT09dCYmMT09PWEmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKGwpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6bH07aWYoYyYmci5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksaT1yLmdldENvbnRleHQoIjJkIix7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZX0pLGM9aS5jcmVhdGVJbWFnZURhdGEodCxhKTsoMCxuLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzplLGRlc3Q6Yy5kYXRhLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzfSk7aS5wdXRJbWFnZURhdGEoYywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTpvLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmksaW50ZXJwb2xhdGU6b30pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLndpZHRofHwwLHRoaXMubWFzayYmdGhpcy5tYXNrLndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLmhlaWdodHx8MCx0aGlzLm1hc2smJnRoaXMubWFzay5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxuPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLGk9KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPWRlY29kZUFuZENsYW1wKGVbY10sclt0XSxuW3RdLGkpO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5udW1Db21wcyxpPWEqcipuO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkoaSk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KGkpOm5ldyBVaW50MzJBcnJheShpKTtjb25zdCBjPWEqbixsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLG47Zm9yKGxldCBpPTA7aTxyO2krKyl7YT1kKygtOCZjKTtuPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPG4pe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxuOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPWk7ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBuPXU+PnI7bjwwP249MDpuPmwmJihuPWwpO3NbZF09bjt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxhLG4saSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQsZjtpZihzKXtsPXMud2lkdGg7aD1zLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO3MuZmlsbEdyYXlCdWZmZXIoYyk7bD09PXQmJmg9PT1hfHwoYz1yZXNpemVJbWFnZU1hc2soYyxzLmJwYyxsLGgsdCxhKSl9ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBQREZJbWFnZSl7bD1vLndpZHRoO2g9by5oZWlnaHQ7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKTtvLm51bUNvbXBzPTE7by5maWxsR3JheUJ1ZmZlcihjKTtmb3IodT0wLGQ9bCpoO3U8ZDsrK3UpY1t1XT0yNTUtY1t1XTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLG8uYnBjLGwsaCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCphO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3QgYT11KmU7Zm9yKGY9MDtmPGU7KytmKXtjb25zdCBlPWlbYStmXSxyPTIqZjtpZihlPG9bcl18fGU+b1tyKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLGY9MyxkPXQqbjt1PGQ7Kyt1LGYrPTQpZVtmXT1jW3VdO2Vsc2UgZm9yKHU9MCxmPTMsZD10Km47dTxkOysrdSxmKz00KWVbZl09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBuPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxpPW5bMF0scz1uWzFdLG89blsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1pKSpyK2k7ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319Y3JlYXRlSW1hZ2VEYXRhKGU9ITEpe2NvbnN0IHQ9dGhpcy5kcmF3V2lkdGgsYT10aGlzLmRyYXdIZWlnaHQsbj17d2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LGk9dGhpcy5udW1Db21wcyxzPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxsPXRoaXMuYnBjLGg9cyppKmwrNz4+MztpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1sP2U9ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJnQ9PT1zJiZhPT09byl7bi5raW5kPWU7bi5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse30pO2lmKHRoaXMubmVlZHNEZWNvZGUpeygwLHIuYXNzZXJ0KShlPT09ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9bi5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIG59aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGMuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe2xldCBlPW8qaDtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCXzI0QlBQO24uZGF0YT10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIG59fX1jb25zdCB1PXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse2ludGVybmFsOiEwfSksZD0wfHUubGVuZ3RoL2gqYS9vLGY9dGhpcy5nZXRDb21wb25lbnRzKHUpO2xldCBnLHA7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXtuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDtuLmRhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSo0KTtnPTE7cD0hMDt0aGlzLmZpbGxPcGFjaXR5KG4uZGF0YSx0LGEsZCxmKX1lbHNle24ua2luZD1yLkltYWdlS2luZC5SR0JfMjRCUFA7bi5kYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqMyk7Zz0wO3A9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2Iobi5kYXRhLHMsbyx0LGEsZCxsLGYsZyk7cCYmdGhpcy51bmRvUHJlYmxlbmQobi5kYXRhLHQsZCk7cmV0dXJuIG59ZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxzPWEqdCppKzc+PjMsbz10aGlzLmdldEltYWdlQnl0ZXMobipzLHtpbnRlcm5hbDohMH0pLGM9dGhpcy5nZXRDb21wb25lbnRzKG8pO2xldCBsLGg7aWYoMT09PWkpe2g9YSpuO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGw9MDtsPGg7KytsKWVbbF09Y1tsXS0xJjI1NTtlbHNlIGZvcihsPTA7bDxoOysrbCllW2xdPTI1NSYtY1tsXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoYyk7aD1hKm47Y29uc3QgdT0yNTUvKCgxPDxpKS0xKTtmb3IobD0wO2w8aDsrK2wpZVtsXT11KmNbbF19Z2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6bj0hMSxpbnRlcm5hbDppPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFuO2NvbnN0IHM9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtpZihpfHx0aGlzLmltYWdlIGluc3RhbmNlb2Ygby5EZWNvZGVTdHJlYW0pcmV0dXJuIHM7KDAsci5hc3NlcnQpKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocyl9fXQuUERGSW1hZ2U9UERGSW1hZ2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hcHBseU1hc2tJbWFnZURhdGE9ZnVuY3Rpb24gYXBwbHlNYXNrSW1hZ2VEYXRhKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOm49MCx3aWR0aDppLGhlaWdodDpzLGludmVyc2VEZWNvZGU6bz0hMX0pe2NvbnN0IGM9ci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxoXT1vP1swLGNdOltjLDBdLHU9aT4+MyxkPTcmaSxmPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtmb3IobGV0IHI9MDtyPHM7cisrKXtmb3IoY29uc3Qgcj10K3U7dDxyO3QrKyl7Y29uc3Qgcj10PGY/ZVt0XToyNTU7YVtuKytdPTEyOCZyP2g6bDthW24rK109NjQmcj9oOmw7YVtuKytdPTMyJnI/aDpsO2FbbisrXT0xNiZyP2g6bDthW24rK109OCZyP2g6bDthW24rK109NCZyP2g6bDthW24rK109MiZyP2g6bDthW24rK109MSZyP2g6bH1pZigwPT09ZCljb250aW51ZTtjb25zdCByPXQ8Zj9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8ZDtlKyspYVtuKytdPXImMTw8Ny1lP2g6bH1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpufX07dmFyIHI9YSgyKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmluY3JlbWVudGFsVXBkYXRlPWZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LG5ld1JlZnM6YSx4cmVmOm89bnVsbCxoYXNYZmE6bD0hMSx4ZmFEYXRhc2V0c1JlZjpoPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTp1PSExLGFjcm9Gb3JtUmVmOmQ9bnVsbCxhY3JvRm9ybTpmPW51bGwseGZhRGF0YTpnPW51bGx9KXtsJiZmdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGhhc1hmYURhdGFzZXRzRW50cnk6YSxhY3JvRm9ybVJlZjpuLGFjcm9Gb3JtOm8sbmV3UmVmczpjLHhyZWY6bCx4cmVmSW5mbzpofSl7aWYobnVsbD09PWwpcmV0dXJuO2lmKCFhKXtpZighbil7KDAsci53YXJuKSgiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtyZXR1cm59Y29uc3QgZT1vLmdldCgiWEZBIiksYT1lLnNsaWNlKCk7YS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Euc3BsaWNlKDMsMCx0KTtvLnNldCgiWEZBIixhKTtjb25zdCBpPWwuZW5jcnlwdDtsZXQgcz1udWxsO2kmJihzPWkuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKSk7Y29uc3QgaD1bYCR7bi5udW19ICR7bi5nZW59IG9ialxuYF07d3JpdGVEaWN0KG8saCxzKTtoLnB1c2goIlxuIik7by5zZXQoIlhGQSIsZSk7Yy5wdXNoKHtyZWY6bixkYXRhOmguam9pbigiIil9KX1pZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6bn09ZTtpZighdCljb250aW51ZTtjb25zdCBvPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoKDAsaS5wYXJzZVhGQVBhdGgpKHQpLDApO28/QXJyYXkuaXNBcnJheShuKT9vLmNoaWxkTm9kZXM9bi5tYXAoKGU9Pm5ldyBzLlNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOm8uY2hpbGROb2Rlcz1bbmV3IHMuU2ltcGxlRE9NTm9kZSgiI3RleHQiLG4pXTooMCxyLndhcm4pKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IG49W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChuKTtyZXR1cm4gbi5qb2luKCIiKX0obC5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGMpfWNvbnN0IHU9bC5lbmNyeXB0O2lmKHUpe2U9dS5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3QgZD1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7Yy5wdXNoKHtyZWY6dCxkYXRhOmR9KX0oe3hmYURhdGE6Zyx4ZmFEYXRhc2V0c1JlZjpoLGhhc1hmYURhdGFzZXRzRW50cnk6dSxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmYsbmV3UmVmczphLHhyZWY6byx4cmVmSW5mbzp0fSk7Y29uc3QgcD1uZXcgbi5EaWN0KG51bGwpLG09dC5uZXdSZWY7bGV0IGIseTtjb25zdCB3PWUuYXQoLTEpO2lmKDEwPT09d3x8MTM9PT13KXtiPVtdO3k9ZS5sZW5ndGh9ZWxzZXtiPVsiXG4iXTt5PWUubGVuZ3RoKzF9cC5zZXQoIlNpemUiLG0ubnVtKzEpO3Auc2V0KCJQcmV2Iix0LnN0YXJ0WFJlZik7cC5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIlhSZWYiKSk7bnVsbCE9PXQucm9vdFJlZiYmcC5zZXQoIlJvb3QiLHQucm9vdFJlZik7bnVsbCE9PXQuaW5mb1JlZiYmcC5zZXQoIkluZm8iLHQuaW5mb1JlZik7bnVsbCE9PXQuZW5jcnlwdFJlZiYmcC5zZXQoIkVuY3J5cHQiLHQuZW5jcnlwdFJlZik7YS5wdXNoKHtyZWY6bSxkYXRhOiIifSk7YT1hLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Y29uc3QgUz1bWzAsMSw2NTUzNV1dLHg9WzAsMV07bGV0IGs9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTp0fW9mIGEpe2s9TWF0aC5tYXgoayx5KTtTLnB1c2goWzEseSxNYXRoLm1pbihlLmdlbiw2NTUzNSldKTt5Kz10Lmxlbmd0aDt4LnB1c2goZS5udW0sMSk7Yi5wdXNoKHQpfXAuc2V0KCJJbmRleCIseCk7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGU9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksbj10LmZpbGVuYW1lfHwiIixpPVthLnRvU3RyaW5nKCksbixlLnRvU3RyaW5nKCldO2xldCBzPWkucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmluZm8pKXtpLnB1c2goZSk7cys9ZS5sZW5ndGh9Y29uc3Qgbz1uZXcgVWludDhBcnJheShzKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIGkpe3dyaXRlU3RyaW5nKGUsbCxvKTtsKz1lLmxlbmd0aH1yZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKCgwLGMuY2FsY3VsYXRlTUQ1KShvKSl9KHksdCk7cC5zZXQoIklEIixbdC5maWxlSWRzWzBdLGVdKX1jb25zdCBDPVsxLE1hdGguY2VpbChNYXRoLmxvZzIoaykvOCksMl0sdj0oQ1swXStDWzFdK0NbMl0pKlMubGVuZ3RoO3Auc2V0KCJXIixDKTtwLnNldCgiTGVuZ3RoIix2KTtiLnB1c2goYCR7bS5udW19ICR7bS5nZW59IG9ialxuYCk7d3JpdGVEaWN0KHAsYixudWxsKTtiLnB1c2goIiBzdHJlYW1cbiIpO2NvbnN0IEY9Yi5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKSxPPWBcbmVuZHN0cmVhbVxuZW5kb2JqXG5zdGFydHhyZWZcbiR7eX1cbiUlRU9GXG5gLFQ9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrRit2K08ubGVuZ3RoKTtULnNldChlKTtsZXQgTT1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBiKXt3cml0ZVN0cmluZyhlLE0sVCk7TSs9ZS5sZW5ndGh9Zm9yKGNvbnN0W2UsdCxhXW9mIFMpe009d3JpdGVJbnQoZSxDWzBdLE0sVCk7TT13cml0ZUludCh0LENbMV0sTSxUKTtNPXdyaXRlSW50KGEsQ1syXSxNLFQpfXdyaXRlU3RyaW5nKE8sTSxUKTtyZXR1cm4gVH07dC53cml0ZURpY3Q9d3JpdGVEaWN0O3Qud3JpdGVPYmplY3Q9ZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEscil7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBuLkRpY3Q/d3JpdGVEaWN0KHQsYSxyKTp0IGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZ3cml0ZVN0cmVhbSh0LGEscik7YS5wdXNoKCJcbmVuZG9ialxuIil9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNjQpLG89YSg1KSxjPWEoNjUpO2Z1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCByIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHsoMCxpLmVzY2FwZVBERk5hbWUpKHIpfSBgKTt3cml0ZVZhbHVlKGUuZ2V0UmF3KHIpLHQsYSl9dC5wdXNoKCI+PiIpfWZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXt3cml0ZURpY3QoZS5kaWN0LHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iKTtsZXQgcj1lLmdldFN0cmluZygpO251bGwhPT1hJiYocj1hLmVuY3J5cHRTdHJpbmcocikpO3QucHVzaChyLCJcbmVuZHN0cmVhbVxuIil9ZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl0LnB1c2goYC8keygwLGkuZXNjYXBlUERGTmFtZSkoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpIWZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEpe3QucHVzaCgiWyIpO2xldCByPSEwO2Zvcihjb25zdCBuIG9mIGUpe3I/cj0hMTp0LnB1c2goIiAiKTt3cml0ZVZhbHVlKG4sdCxhKX10LnB1c2goIl0iKX0oZSx0LGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtudWxsIT09YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIG4uRGljdD93cml0ZURpY3QoZSx0LGEpOmUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/d3JpdGVTdHJlYW0oZSx0LGEpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLHIud2FybikoYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsYSxyKXtmb3IobGV0IG49dCthLTE7bj5hLTE7bi0tKXtyW25dPTI1NSZlO2U+Pj04fXJldHVybiBhK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LGEpe2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylhW3Qrcl09MjU1JmUuY2hhckNvZGVBdChyKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O3QuWE1MUGFyc2VyRXJyb3JDb2RlPW47ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgYT1lW3RdO3JldHVybiIgIj09PWF8fCJcbiI9PT1hfHwiXHIiPT09YXx8Ilx0Ij09PWF9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsbj0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IGk9ZVtyXTtpZignIichPT1pJiYiJyIhPT1pKXJldHVybiBudWxsO2NvbnN0IHM9ZS5pbmRleE9mKGksKytyKTtpZihzPDApcmV0dXJuIG51bGw7bj1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOm4sYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBuPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcobixhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkQ29tbWVudCk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZENkYXQpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWk9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpO2ErPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1YTUxQYXJzZXJCYXNlO2NsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMmJnRoaXMuY2hpbGROb2Rlc1swXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2RlcyYmdGhpcy5jaGlsZE5vZGVzLmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBhPWVbdF0scj1bXTtsZXQgbj10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09bi5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W2ldPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBpLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gbi5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9bi5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYobi5jaGlsZE5vZGVzJiYwIT09bi5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtuLDBdKTtuPW4uY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7bj1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHsoMCxyLmVuY29kZVRvWG1sU3RyaW5nKSh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4keygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1TaW1wbGVET01Ob2RlO3QuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PW4uTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwO3QuY2FsY3VsYXRlU0hBMzg0PWNhbGN1bGF0ZVNIQTM4NDt0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDY2KTtjbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsbj0wO3I8MjU2Oysrcil7Y29uc3QgaT10W3JdO249bitpK2VbciVhXSYyNTU7dFtyXT10W25dO3Rbbl09aX10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLG49ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheShuKTtmb3IobGV0IHM9MDtzPG47KytzKXt0PXQrMSYyNTU7Y29uc3Qgbj1yW3RdO2E9YStuJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09bjtpW3NdPWVbc11ecltuK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gaX1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX10LkFSQ0ZvdXJDaXBoZXI9QVJDRm91ckNpcGhlcjtjb25zdCBzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGEscixuKXtsZXQgaT0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGM9MjcxNzMzODc4O2NvbnN0IGw9bis3MiYtNjQsaD1uZXcgVWludDhBcnJheShsKTtsZXQgdSxkO2Zvcih1PTA7dTxuOysrdSloW3VdPWFbcisrXTtoW3UrK109MTI4O2NvbnN0IGY9bC04O2Zvcig7dTxmOyloW3UrK109MDtoW3UrK109bjw8MyYyNTU7aFt1KytdPW4+PjUmMjU1O2hbdSsrXT1uPj4xMyYyNTU7aFt1KytdPW4+PjIxJjI1NTtoW3UrK109bj4+PjI5JjI1NTtoW3UrK109MDtoW3UrK109MDtoW3UrK109MDtjb25zdCBnPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IodT0wO3U8bDspe2ZvcihkPTA7ZDwxNjsrK2QsdSs9NClnW2RdPWhbdV18aFt1KzFdPDw4fGhbdSsyXTw8MTZ8aFt1KzNdPDwyNDtsZXQgYSxyLG49aSxsPXMsZj1vLHA9Yztmb3IoZD0wO2Q8NjQ7KytkKXtpZihkPDE2KXthPWwmZnx+bCZwO3I9ZH1lbHNlIGlmKGQ8MzIpe2E9cCZsfH5wJmY7cj01KmQrMSYxNX1lbHNlIGlmKGQ8NDgpe2E9bF5mXnA7cj0zKmQrNSYxNX1lbHNle2E9Zl4obHx+cCk7cj03KmQmMTV9Y29uc3QgaT1wLHM9bithK3RbZF0rZ1tyXXwwLG89ZVtkXTtwPWY7Zj1sO2w9bCsoczw8b3xzPj4+MzItbyl8MDtuPWl9aT1pK258MDtzPXMrbHwwO289bytmfDA7Yz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PXM7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGE7aWYoMzImZSl7YT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7YT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8YTw8MzItZTt0aGlzLmhpZ2g9YT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGE9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihhKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8YX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3Qgbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGEscil7bGV0IG49MTc3OTAzMzcwMyxpPTMxNDQxMzQyNzcscz0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixjPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGg9NTI4NzM0NjM1LHU9MTU0MTQ1OTIyNTtjb25zdCBkPTY0Kk1hdGguY2VpbCgocis5KS82NCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxyOysrZylmW2ddPXRbYSsrXTtmW2crK109MTI4O2NvbnN0IG09ZC04O2Zvcig7ZzxtOylmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109cj4+PjI5JjI1NTtmW2crK109cj4+MjEmMjU1O2ZbZysrXT1yPj4xMyYyNTU7ZltnKytdPXI+PjUmMjU1O2ZbZysrXT1yPDwzJjI1NTtjb25zdCBiPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdPWZbZ108PDI0fGZbZysxXTw8MTZ8ZltnKzJdPDw4fGZbZyszXTtnKz00fWZvcihwPTE2O3A8NjQ7KytwKWJbcF09KHJvdHIoeT1iW3AtMl0sMTcpXnJvdHIoeSwxOSleeT4+PjEwKStiW3AtN10rbGl0dGxlU2lnbWEoYltwLTE1XSkrYltwLTE2XXwwO2xldCB0LGEscj1uLGQ9aSxtPXMsdz1vLFM9Yyx4PWwsaz1oLEM9dTtmb3IocD0wO3A8NjQ7KytwKXt0PUMrc2lnbWFQcmltZShTKStjaChTLHgsaykrZVtwXStiW3BdO2E9c2lnbWEocikrbWFqKHIsZCxtKTtDPWs7az14O3g9UztTPXcrdHwwO3c9bTttPWQ7ZD1yO3I9dCthfDB9bj1uK3J8MDtpPWkrZHwwO3M9cyttfDA7bz1vK3d8MDtjPWMrU3wwO2w9bCt4fDA7aD1oK2t8MDt1PXUrQ3wwfXZhciB5O3JldHVybiBuZXcgVWludDhBcnJheShbbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCx1Pj4yNCYyNTUsdT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1XSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PW87Y29uc3QgYz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGEscixuKXtlLmFzc2lnbih0KTtlLmFuZChhKTtuLmFzc2lnbih0KTtuLm5vdCgpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIG1haihlLHQsYSxyLG4pe2UuYXNzaWduKHQpO2UuYW5kKGEpO24uYXNzaWduKHQpO24uYW5kKHIpO2UueG9yKG4pO24uYXNzaWduKGEpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyLG49ITEpe2xldCBpLHMsbyxjLGwsaCx1LGQ7aWYobil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cz1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2M9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7dT1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7ZD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtzPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtjPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO3U9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7ZD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBmPTEyOCpNYXRoLmNlaWwoKHIrMTcpLzEyOCksZz1uZXcgVWludDhBcnJheShmKTtsZXQgcCxtO2ZvcihwPTA7cDxyOysrcClnW3BdPXRbYSsrXTtnW3ArK109MTI4O2NvbnN0IGI9Zi0xNjtmb3IoO3A8YjspZ1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPXI+Pj4yOSYyNTU7Z1twKytdPXI+PjIxJjI1NTtnW3ArK109cj4+MTMmMjU1O2dbcCsrXT1yPj41JjI1NTtnW3ArK109cjw8MyYyNTU7Y29uc3QgeT1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspeVtwXT1uZXcgV29yZDY0KDAsMCk7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApO2NvbnN0IFQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEU9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApO2xldCBOLFI7Zm9yKHA9MDtwPGY7KXtmb3IobT0wO208MTY7KyttKXt5W21dLmhpZ2g9Z1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdO3lbbV0ubG93PWdbcCs0XTw8MjR8Z1twKzVdPDwxNnxnW3ArNl08PDh8Z1twKzddO3ArPTh9Zm9yKG09MTY7bTw4MDsrK20pe049eVttXTtsaXR0bGVTaWdtYVByaW1lKE4seVttLTJdLEQpO04uYWRkKHlbbS03XSk7bGl0dGxlU2lnbWEoRSx5W20tMTVdLEQpO04uYWRkKEUpO04uYWRkKHlbbS0xNl0pfXcuYXNzaWduKGkpO1MuYXNzaWduKHMpO3guYXNzaWduKG8pO2suYXNzaWduKGMpO0MuYXNzaWduKGwpO3YuYXNzaWduKGgpO0YuYXNzaWduKHUpO08uYXNzaWduKGQpO2ZvcihtPTA7bTw4MDsrK20pe1QuYXNzaWduKE8pO3NpZ21hUHJpbWUoRSxDLEQpO1QuYWRkKEUpO2NoKEUsQyx2LEYsRCk7VC5hZGQoRSk7VC5hZGQoZVttXSk7VC5hZGQoeVttXSk7c2lnbWEoTSx3LEQpO21haihFLHcsUyx4LEQpO00uYWRkKEUpO049TztPPUY7Rj12O3Y9QztrLmFkZChUKTtDPWs7az14O3g9UztTPXc7Ti5hc3NpZ24oVCk7Ti5hZGQoTSk7dz1OfWkuYWRkKHcpO3MuYWRkKFMpO28uYWRkKHgpO2MuYWRkKGspO2wuYWRkKEMpO2guYWRkKHYpO3UuYWRkKEYpO2QuYWRkKE8pfWlmKG4pe1I9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKX1lbHNle1I9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKTt1LmNvcHlUbyhSLDQ4KTtkLmNvcHlUbyhSLDU2KX1yZXR1cm4gUn19KCk7dC5jYWxjdWxhdGVTSEE1MTI9YztmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjKGUsdCxhLCEwKX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixuO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpaVtlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9aVsxM107aVsxM109aVs5XTtpWzldPWlbNV07aVs1XT1pWzFdO2lbMV09YTthPWlbMTRdO3I9aVsxMF07aVsxNF09aVs2XTtpWzEwXT1pWzJdO2lbNl09YTtpWzJdPXI7YT1pWzE1XTtyPWlbMTFdO249aVs3XTtpWzE1XT1pWzNdO2lbMTFdPWE7aVs3XT1yO2lbM109bjtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpaVthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W2lbZV1dLHI9dGhpcy5fbWl4W2lbZSsxXV0sbj10aGlzLl9taXhbaVtlKzJdXSxzPXRoaXMuX21peFtpW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5uPj4+MTZebjw8MTZecz4+PjI0XnM8PDg7aVtlXT1hPj4+MjQmMjU1O2lbZSsxXT1hPj4xNiYyNTU7aVtlKzJdPWE+PjgmMjU1O2lbZSszXT0yNTUmYX19YT1pWzEzXTtpWzEzXT1pWzldO2lbOV09aVs1XTtpWzVdPWlbMV07aVsxXT1hO2E9aVsxNF07cj1pWzEwXTtpWzE0XT1pWzZdO2lbMTBdPWlbMl07aVs2XT1hO2lbMl09cjthPWlbMTVdO3I9aVsxMV07bj1pWzddO2lbMTVdPWlbM107aVsxMV09YTtpWzddPXI7aVszXT1uO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2lbZV1ePXRbZV19cmV0dXJuIGl9X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsbixpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07aT1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1pO2k9c1syXTtuPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPWk7c1sxNF09bjtpPXNbM107bj1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPWk7c1sxMV09bjtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2UrMF0sYT1zW2UrMV0sbj1zW2UrMl0saT1zW2UrM107cj10XmFebl5pO3NbZSswXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2Febl07c1tlKzJdXj1yXnRoaXMuX21peENvbFtuXmldO3NbZSszXV49cl50aGlzLl9taXhDb2xbaV50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO2k9c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109aTtpPXNbMl07bj1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1pO3NbMTRdPW47aT1zWzNdO249c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1pO3NbMTFdPW47c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltuXT1lW3RdOysrbjtpZihuPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj1zO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqaS5sZW5ndGg7aWYodCl7Y29uc3QgZT1pLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7aVtpLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9aS5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChpW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLG49dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8cjsrK3QsKytpKW5baV09ZVt0XTtpZihpPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1pO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PW47ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltuXT1lW3NdOysrbjtpZihuPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj10O2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNippLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQoaVtlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixuPTE7ZTwxNzY7KytuKXtsZXQgaT1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07aT10W2ldO3M9dFtzXTtvPXRbb107Yz10W2NdO2lePWFbbl07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1pXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLG4saSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO249YVtlLTJdO2k9YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8oaSwwLGkubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9byhuLDAsbi5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShpLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7bi5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT1vKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjb25zdCBsPWZ1bmN0aW9uIFBERjIwQ2xvc3VyZSgpe2Z1bmN0aW9uIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLG49WzBdLGk9MDtmb3IoO2k8NjR8fG4uYXQoLTEpPmktMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7bj1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1uLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8obiwwLG4ubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChuLDAsbi5sZW5ndGgpOjI9PT11JiYocj1jKG4sMCxuLmxlbmd0aCkpO2krK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1yZXR1cm4gY2xhc3MgUERGMjB7aGFzaChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxhLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7aS5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz1jYWxjdWxhdGVQREYyMEhhc2goZSxpLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLG4pfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1jYWxjdWxhdGVQREYyMEhhc2goZSxuLFtdKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkoaSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO24uc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IGk9Y2FsY3VsYXRlUERGMjBIYXNoKGUsbixhKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKS5kZWNyeXB0QmxvY2sociwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtjb25zdCBuPWNhbGN1bGF0ZVBERjIwSGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fX0oKTt0LlBERjIwPWw7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKW5bZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IGk9KDAsci5zdHJpbmdUb0J5dGVzKShlKTtpPXQuZW5jcnlwdChpLG4pO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO3Muc2V0KG4pO3Muc2V0KGksMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBoPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLG4saSxvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jmk7dVtnKytdPWk+PjgmMjU1O3VbZysrXT1pPj4xNiYyNTU7dVtnKytdPWk+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9bi5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSxyPSExKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLGk9YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPGk7KytvKW5bb109YVtvXTtuW28rK109MjU1JmU7bltvKytdPWU+PjgmMjU1O25bbysrXT1lPj4xNiYyNTU7bltvKytdPTI1NSZ0O25bbysrXT10Pj44JjI1NTtpZihyKXtuW28rK109MTE1O25bbysrXT02NTtuW28rK109MTA4O25bbysrXT04NH1yZXR1cm4gcyhuLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxpLHMpe2lmKCEodCBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsaSxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLGkscywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLGksbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLG4uaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBoPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fDEhPT1oJiYyIT09aCYmNCE9PWgmJjUhPT1oKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWg7bGV0IHU9YS5nZXQoIkxlbmd0aCIpO2lmKCF1KWlmKGg8PTMpdT00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJnQgaW5zdGFuY2VvZiBuLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTt1PWEmJmEuZ2V0KCJMZW5ndGgiKXx8MTI4O3U8NDAmJih1PDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDQwfHx1JTghPTApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IGQ9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgwLDMyKSxmPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCwzMiksZz1hLmdldCgiUCIpLHA9YS5nZXQoIlIiKSxtPSg0PT09aHx8NT09PWgpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1tO2NvbnN0IGI9KDAsci5zdHJpbmdUb0J5dGVzKShpKTtsZXQgeSx3O2lmKG8pe2lmKDY9PT1wKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaChlKXsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9eT0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1oKXc9cHJlcGFyZUtleURhdGEoYix5LGQsZixnLHAsdSxtKTtlbHNle2NvbnN0IGU9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgzMiw0MCksdD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJPIikpLnN1YmFycmF5KDQwLDQ4KSxuPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCw0OCksaT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLnN1YmFycmF5KDMyLDQwKSxzPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTt3PWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLG4saSxzLG8sYyxoLHUsZCl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtsZXQgZjtmPTY9PT1lP25ldyBsOm5ldyBQREYxNztyZXR1cm4gZi5jaGVja1VzZXJQYXNzd29yZCh0LG8scyk/Zi5nZXRVc2VyS2V5KHQsYyx1KTp0Lmxlbmd0aCYmZi5jaGVja093bmVyUGFzc3dvcmQodCxyLGksYSk/Zi5nZXRPd25lcktleSh0LG4saSxoKTpudWxsfShwLHksZCxlLHQsbixmLGkscyxvLGMpfWlmKCF3JiYhbyl0aHJvdyBuZXcgci5QYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLHIuUGFzc3dvcmRSZXNwb25zZXMuTkVFRF9QQVNTV09SRCk7aWYoIXcmJm8pe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlVXNlclBhc3N3b3JkKHQsYSxyLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBvPTA7Y29uc3QgYz1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtvPGM7KytvKWlbb109dFtvXTtsZXQgbD0wO2Zvcig7bzwzMjspaVtvKytdPWVbbCsrXTtsZXQgaD1zKGksMCxvKTtjb25zdCB1PW4+PjM7aWYocj49Mylmb3IobD0wO2w8NTA7KytsKWg9cyhoLDAsaC5sZW5ndGgpO2xldCBkLGY7aWYocj49Myl7Zj1hO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKGw9MTk7bD49MDtsLS0pe2ZvcihsZXQgdD0wO3Q8dTsrK3QpZVt0XT1oW3RdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcihlKTtmPWQuZW5jcnlwdEJsb2NrKGYpfX1lbHNle2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoaC5zdWJhcnJheSgwLHUpKTtmPWQuZW5jcnlwdEJsb2NrKGEpfXJldHVybiBmfSh5LGQscCx1KTt3PXByZXBhcmVLZXlEYXRhKGIsdCxkLGYsZyxwLHUsbSl9aWYoIXcpdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsci5QYXNzd29yZFJlc3BvbnNlcy5JTkNPUlJFQ1RfUEFTU1dPUkQpO3RoaXMuZW5jcnlwdGlvbktleT13O2lmKGg+PTQpe2NvbnN0IGU9YS5nZXQoIkNGIik7ZSBpbnN0YW5jZW9mIG4uRGljdCYmKGUuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPWU7dGhpcy5zdG1mPWEuZ2V0KCJTdG1GIil8fHQ7dGhpcy5zdHJmPWEuZ2V0KCJTdHJGIil8fHQ7dGhpcy5lZmY9YS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksYnVpbGRDaXBoZXJDb25zdHJ1Y3Rvcih0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT1idWlsZE9iamVjdEtleShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxyPWZ1bmN0aW9uIGJ1aWxkQ2lwaGVyQ2lwaGVyQ29uc3RydWN0b3IoKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHIscil9fX0oKTt0LkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk9aH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRlY3J5cHRTdHJlYW09dm9pZCAwO3ZhciByPWEoMTcpO2NsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rJiZ0aGlzLm5leHRDaHVuay5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9cn19dC5EZWNyeXB0U3RyZWFtPURlY3J5cHRTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DYXRhbG9nPXZvaWQgMDt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMykscz1hKDY4KSxvPWEoNSksYz1hKDY5KSxsPWEoMTIpLGg9YSg3MCksdT1hKDU3KSxkPWEoNzEpLGY9YSg3Mik7ZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihlKXtlIGluc3RhbmNlb2YgaS5EaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOm51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0O3RoaXMuX2FjdHVhbE51bVBhZ2VzPW51bGw7dGhpcy5mb250Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IHUuR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZTt0aGlzLnBhZ2VJbmRleENhY2hlPW5ldyBpLlJlZlNldENhY2hlO3RoaXMubm9uQmxlbmRNb2Rlc1NldD1uZXcgaS5SZWZTZXR9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoci5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChlLm5hbWUpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpOygwLG4ud2FybikoYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgaS5SZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGE9ISh0aGlzLnhyZWYuZW5jcnlwdCYmdGhpcy54cmVmLmVuY3J5cHQuZW5jcnlwdE1ldGFkYXRhKSxyPXRoaXMueHJlZi5mZXRjaChlLGEpO2lmKHIgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJnIuZGljdCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1yLmRpY3QuZ2V0KCJUeXBlIiksYT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoKDAsaS5pc05hbWUpKGUsIk1ldGFkYXRhIikmJigwLGkuaXNOYW1lKShhLCJYTUwiKSl7Y29uc3QgZT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IGQuTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlN0cnVjdFRyZWVSb290Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBmLlN0cnVjdFRyZWVSb290KGUpO3QuaW5pdCgpO3JldHVybiB0fWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBpLlJlZlNldDtyLnB1dChlKTtjb25zdCBzPXRoaXMueHJlZixvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxjPXMuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PWMpY29udGludWU7aWYoIWMuaGFzKCJUaXRsZSIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YyxyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCB1PWMuZ2V0KCJUaXRsZSIpLGQ9Yy5nZXQoIkYiKXx8MCxmPWMuZ2V0QXJyYXkoIkMiKSxnPWMuZ2V0KCJDb3VudCIpO2xldCBwPW87IUFycmF5LmlzQXJyYXkoZil8fDMhPT1mLmxlbmd0aHx8MD09PWZbMF0mJjA9PT1mWzFdJiYwPT09ZlsyXXx8KHA9bC5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihmLDApKTtjb25zdCBtPXthY3Rpb246aC5hY3Rpb24sYXR0YWNobWVudDpoLmF0dGFjaG1lbnQsZGVzdDpoLmRlc3QsdXJsOmgudXJsLHVuc2FmZVVybDpoLnVuc2FmZVVybCxuZXdXaW5kb3c6aC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6aC5zZXRPQ0dTdGF0ZSx0aXRsZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh1KSxjb2xvcjpwLGNvdW50Ok51bWJlci5pc0ludGVnZXIoZyk/Zzp2b2lkIDAsYm9sZDohISgyJmQpLGl0YWxpYzohISgxJmQpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKG0pO2U9Yy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50Om19KTtyLnB1dChlKX1lPWMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gbi5QZXJtaXNzaW9uRmxhZyl7Y29uc3Qgcj1uLlBlcm1pc3Npb25GbGFnW2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHM9W10sbz1bXTtmb3IoY29uc3QgZSBvZiByKXtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpY29udGludWU7by5wdXNoKGUpO2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cy5wdXNoKHtpZDplLnRvU3RyaW5nKCksbmFtZToic3RyaW5nIj09dHlwZW9mIHQuZ2V0KCJOYW1lIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk5hbWUiKSk6bnVsbCxpbnRlbnQ6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiSW50ZW50Iik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIkludGVudCIpKTpudWxsfSl9ZT10aGlzLl9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGEsbyk7ZS5ncm91cHM9c31jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9X3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBpLlJlZiYmdC5pbmNsdWRlcyhyKSYmYS5wdXNoKHIudG9TdHJpbmcoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGE9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO24ucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJm4ucHVzaChlKX1pZihhPjApcmV0dXJuIG47Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmbi5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBufWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsbi53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IGkuUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBpLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxuLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGUmJmUuaGFzKCJEZXN0cyIpP25ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG89IiI7Y29uc3QgYz1uZXcgcy5OdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKTtsZXQgbD0iIixoPTE7Zm9yKGxldCBlPTAscz10aGlzLm51bVBhZ2VzO2U8cztlKyspe2NvbnN0IHM9Yy5nZXQoZSk7aWYodm9pZCAwIT09cyl7aWYoIShzIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYocy5oYXMoIlR5cGUiKSYmISgwLGkuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJTIikpe2NvbnN0IGU9cy5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKHMuaGFzKCJQIikpe2NvbnN0IGU9cy5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO289KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSl9ZWxzZSBvPSIiO2lmKHMuaGFzKCJTdCIpKXtjb25zdCBlPXMuZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aD1lfWVsc2UgaD0xfXN3aXRjaChhKXtjYXNlIkQiOmw9aDticmVhaztjYXNlIlIiOmNhc2UiciI6bD0oMCxyLnRvUm9tYW5OdW1lcmFscykoaCwiciI9PT1hKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PTY1LGk9OTcscz0iYSI9PT1hP2k6dCxvPWgtMTtsPVN0cmluZy5mcm9tQ2hhckNvZGUocytvJWUpLnJlcGVhdChNYXRoLmZsb29yKG8vZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2F9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtsPSIifXRbZV09bytsO2grK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUuZ2V0S2V5cygpKXtjb25zdCByPWUuZ2V0KGEpO2xldCBzO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKHM9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCUyPT0wKXtyLmV2ZXJ5KCgoZSx0LGEpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49YVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocz1yKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wJiYocz1yKTticmVhaztkZWZhdWx0OigwLG4ud2FybikoYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cyl7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFthXT1zfWVsc2UoMCxuLndhcm4pKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtyfS5gKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPW5ldyBpLkRpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgcj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOnJ9KTtBcnJheS5pc0FycmF5KHIuZGVzdCk/dC5kZXN0PXIuZGVzdDpyLmFjdGlvbiYmKHQuYWN0aW9uPXIuYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkoZSkmJih0LmRlc3Q9ZSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wZW5BY3Rpb24iLCgwLG4ub2JqZWN0U2l6ZSkodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IGguRmlsZVNwZWMocix0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7dHx8KHQ9bmV3IGkuRGljdCh0aGlzLnhyZWYpKTt0LnNldCgoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKSxyKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxhKXtpZighKGEgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybjtpZighKDAsaS5pc05hbWUpKGEuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IHI9YS5nZXQoIkpTIik7aWYociBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSlyPXIuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuO251bGw9PT10JiYodD1uZXcgTWFwKTtyPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIpLnJlcGxhY2UoL1x1MDAwMC9nLCIiKTt0LnNldChlLHIpfWlmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpLGEpfWNvbnN0IGE9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQgamF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsZT9bLi4uZS52YWx1ZXMoKV06bnVsbCl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD0oMCxyLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxuLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlKTtpZihlKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTtmb3IoY29uc3RbYSxyXW9mIGUpYSBpbiB0P3RbYV0ucHVzaChyKTp0W2FdPVtyXX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBhPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgciBvZiBhKWlmKHIubG9hZGVkTmFtZT09PWUpe3IuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpeygwLGMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sYT1uZXcgaS5SZWZTZXQscj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHIpO2NvbnN0IHM9dGhpcy54cmVmLG89dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsYz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IHI9dC5wb3AoKTtpZihyIGluc3RhbmNlb2YgaS5SZWYpe2NvbnN0IGg9by5nZXQocik7aWYoaD49MCYmbCtoPD1lKXtsKz1oO2NvbnRpbnVlfWlmKGEuaGFzKHIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTthLnB1dChyKTtjb25zdCB1PWF3YWl0IHMuZmV0Y2hBc3luYyhyKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtsZXQgdD11LmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhdS5oYXMoIktpZHMiKSl7by5oYXMocil8fG8ucHV0KHIsMSk7Yy5oYXMocil8fGMucHV0KHIsbCk7aWYobD09PWUpcmV0dXJuW3Uscl07bCsrO2NvbnRpbnVlfX10LnB1c2godSk7Y29udGludWV9aWYoIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmh9PXI7bGV0IHU9ci5nZXRSYXcoIkNvdW50Iik7dSBpbnN0YW5jZW9mIGkuUmVmJiYodT1hd2FpdCBzLmZldGNoQXN5bmModSkpO2lmKE51bWJlci5pc0ludGVnZXIodSkmJnU+PTApe2gmJiFvLmhhcyhoKSYmby5wdXQoaCx1KTtpZihsK3U8PWUpe2wrPXU7Y29udGludWV9fWxldCBkPXIuZ2V0UmF3KCJLaWRzIik7ZCBpbnN0YW5jZW9mIGkuUmVmJiYoZD1hd2FpdCBzLmZldGNoQXN5bmMoZCkpO2lmKCFBcnJheS5pc0FycmF5KGQpKXtsZXQgdD1yLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhci5oYXMoIktpZHMiKSl7aWYobD09PWUpcmV0dXJuW3IsbnVsbF07bCsrO2NvbnRpbnVlfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXQucHVzaChkW2VdKX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0IHQ9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgaS5SZWZTZXQscz10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHMpO2NvbnN0IG89bmV3IE1hcCxjPXRoaXMueHJlZixsPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGg9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFsLmhhcyh0KSYmbC5wdXQodCxoKTtvLnNldChoKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcih0KXtpZih0IGluc3RhbmNlb2Ygci5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IHQ7by5zZXQoaCsrLFt0LG51bGxdKX1mb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBlPXQuYXQoLTEpLHtjdXJyZW50Tm9kZTpyLHBvc0luS2lkczpzfT1lO2xldCBvPXIuZ2V0UmF3KCJLaWRzIik7aWYobyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtvPWF3YWl0IGMuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobykpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49by5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3QgbD1vW3NdO2xldCBoO2lmKGwgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMobCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KGwpO3RyeXtoPWF3YWl0IGMuZmV0Y2hBc3luYyhsKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgaD1sO2lmKCEoaCBpbnN0YW5jZW9mIGkuRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgdT1oLmdldFJhdygiVHlwZSIpO2lmKHUgaW5zdGFuY2VvZiBpLlJlZil0cnl7dT1hd2FpdCBjLmZldGNoQXN5bmModSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfSgwLGkuaXNOYW1lKSh1LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGgsbCBpbnN0YW5jZW9mIGkuUmVmP2w6bnVsbCk6dC5wdXNoKHtjdXJyZW50Tm9kZTpoLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gb31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKCgwLGkuaXNSZWZzRXF1YWwpKHQsZSkmJiEoMCxpLmlzRGljdCkoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBpLkRpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgaS5SZWYpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZigoMCxpLmlzUmVmc0VxdWFsKShyLHQpKXtjPSEwO2JyZWFrfW8ucHVzaChhLmZldGNoQXN5bmMocikudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighYyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcyxyXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2Esbl09dDtyKz1hO3JldHVybiBuZXh0KG4pfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLG51bGwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9ZS5kZXN0RGljdDtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiIT10eXBlb2YgYSl7KDAsbi53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIik7cmV0dXJufWNvbnN0IHM9ZS5kb2NCYXNlVXJsfHxudWxsLGM9ZS5kb2NBdHRhY2htZW50c3x8bnVsbDtsZXQgbCxoLHU9dC5nZXQoIkEiKTtpZighKHUgaW5zdGFuY2VvZiBpLkRpY3QpKWlmKHQuaGFzKCJEZXN0IikpdT10LmdldCgiRGVzdCIpO2Vsc2V7dT10LmdldCgiQUEiKTt1IGluc3RhbmNlb2YgaS5EaWN0JiYodS5oYXMoIkQiKT91PXUuZ2V0KCJEIik6dS5oYXMoIlUiKSYmKHU9dS5nZXQoIlUiKSkpfWlmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9dS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IHQ9ZS5uYW1lO3N3aXRjaCh0KXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT11LmdldCgiRmxhZ3MiKSxzPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIHUuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIGkuUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZC5wdXNoKCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpKTthLnJlc2V0Rm9ybT17ZmllbGRzOmQscmVmczpmLGluY2x1ZGU6c307YnJlYWs7Y2FzZSJVUkkiOmw9dS5nZXQoIlVSSSIpO2wgaW5zdGFuY2VvZiBpLk5hbWUmJihsPSIvIitsLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6aD11LmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBnPXUuZ2V0KCJGIik7ZyBpbnN0YW5jZW9mIGkuRGljdD9sPWcuZ2V0KCJGIil8fG51bGw6InN0cmluZyI9PXR5cGVvZiBnJiYobD1nKTtsZXQgcD11LmdldCgiRCIpO2lmKHApe3AgaW5zdGFuY2VvZiBpLk5hbWUmJihwPXAubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX19Y29uc3QgbT11LmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgbSYmKGEubmV3V2luZG93PW0pO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGI9dS5nZXQoIlQiKTtsZXQgeTtpZihjJiZiIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPWIuZ2V0KCJSIiksdD1iLmdldCgiTiIpOygwLGkuaXNOYW1lKShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHk9Y1soMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh0KV0pfXk/YS5hdHRhY2htZW50PXk6KDAsbi53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3Qgdz11LmdldCgiTiIpO3cgaW5zdGFuY2VvZiBpLk5hbWUmJihhLmFjdGlvbj13Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IFM9dS5nZXQoIlN0YXRlIikseD11LmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KFMpfHwwPT09Uy5sZW5ndGgpYnJlYWs7Y29uc3Qgaz1bXTtmb3IoY29uc3QgZSBvZiBTKWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjprLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBpLlJlZiYmay5wdXNoKGUudG9TdHJpbmcoKSk7aWYoay5sZW5ndGghPT1TLmxlbmd0aClicmVhazthLnNldE9DR1N0YXRlPXtzdGF0ZTprLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgeHx8eH07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBDPXUuZ2V0KCJKUyIpO2xldCB2O0MgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/dj1DLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgQyYmKHY9Qyk7Y29uc3QgRj12JiYoMCxyLnJlY292ZXJKc1VSTCkoKDAsbi5zdHJpbmdUb1BERlN0cmluZykodikpO2lmKEYpe2w9Ri51cmw7YS5uZXdXaW5kb3c9Ri5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT10fHwiU3VibWl0Rm9ybSI9PT10KWJyZWFrOygwLG4ud2FybikoYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke3R9Ii5gKX19ZWxzZSB0LmhhcygiRGVzdCIpJiYoaD10LmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShsLHMse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYoYS51cmw9ZS5ocmVmKTthLnVuc2FmZVVybD1sfWlmKGgpe2ggaW5zdGFuY2VvZiBpLk5hbWUmJihoPWgubmFtZSk7InN0cmluZyI9PXR5cGVvZiBoP2EuZGVzdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoYS5kZXN0PWgpfX19dC5DYXRhbG9nPUNhdGFsb2d9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO3ZhciByPWEoMyksbj1hKDIpO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuY29uc3RydWN0b3I9PT1OYW1lT3JOdW1iZXJUcmVlJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgTmFtZU9yTnVtYmVyVHJlZS4iKTt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsYT1uZXcgci5SZWZTZXQ7YS5wdXQodGhpcy5yb290KTtjb25zdCBpPVt0aGlzLnJvb3RdO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IHM9dC5mZXRjaElmUmVmKGkuc2hpZnQoKSk7aWYoIShzIGluc3RhbmNlb2Ygci5EaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtpLnB1c2godCk7YS5wdXQodCl9Y29udGludWV9Y29uc3Qgbz1zLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpZS5zZXQodC5mZXRjaElmUmVmKG9bYV0pLHQuZmV0Y2hJZlJlZihvW2ErMV0pKX1yZXR1cm4gZX1nZXQoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxyPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytyPjEwKXsoMCxuLndhcm4pKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2xldCBzPTAsbz1pLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IHI9cytvPj4xLG49dC5mZXRjaElmUmVmKGlbcl0pLGM9bi5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89ci0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe2E9bjticmVha31zPXIrMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IGk9YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShpKSl7bGV0IGE9MCxyPWkubGVuZ3RoLTI7Zm9yKDthPD1yOyl7Y29uc3Qgbj1hK3I+PjEscz1uKygxJm4pLG89dC5mZXRjaElmUmVmKGlbc10pO2lmKGU8bylyPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKGlbcysxXSk7YT1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fTt0Lk51bWJlclRyZWU9Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLG4uY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDMpLG49YSgzOCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GaWxlU3BlYz12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNSksaT1hKDMpO2Z1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGx9dC5GaWxlU3BlYz1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlLHQpe2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiYoMCxyLndhcm4pKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITA7aWYoIWUuaGFzKCJFRiIpKXt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITE7KDAsci53YXJuKSgiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19fWdldCBmaWxlbmFtZSgpe2lmKCF0aGlzLl9maWxlbmFtZSYmdGhpcy5yb290KXtjb25zdCBlPXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KXx8InVubmFtZWQiO3RoaXMuX2ZpbGVuYW1lPSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpLnJlcGxhY2UoL1xcXFwvZywiXFwiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9cXC9nLCIvIil9cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50KCl7aWYoIXRoaXMuY29udGVudEF2YWlsYWJsZSlyZXR1cm4gbnVsbDshdGhpcy5jb250ZW50UmVmJiZ0aGlzLnJvb3QmJih0aGlzLmNvbnRlbnRSZWY9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QuZ2V0KCJFRiIpKSk7bGV0IGU9bnVsbDtpZih0aGlzLmNvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxyLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXRhZGF0YVBhcnNlcj12b2lkIDA7dmFyIHI9YSg2NCk7dC5NZXRhZGF0YVBhcnNlcj1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyByLlNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2UoLz5cXDM3NlxcMzc3KFtePF0rKS9nLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLChmdW5jdGlvbihlLHQsYSxyKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqYSsxKnIpfSkpLnJlcGxhY2UoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csKGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pKSxyPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2KmEuY2hhckNvZGVBdChlKSthLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOnIucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiI+IityLmpvaW4oIiIpfSkpfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSkpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLGE9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLGEubWFwKChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDA7dmFyIHI9YSgzKSxuPWEoMiksaT1hKDY4KTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWU7dGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiByLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygci5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiByLk5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmhhcyh0KT9hLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIHIuUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdCk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cyxtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgYT1udWxsO3QgaW5zdGFuY2VvZiByLlJlZj9hPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiByLkRpY3QmJihhPXQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIHIuUmVmJiYoZT1uLnRvU3RyaW5nKCkpO2NvbnN0IGk9YS5nZXQoIlR5cGUiKWluc3RhbmNlb2Ygci5OYW1lP2EuZ2V0KCJUeXBlIikubmFtZTpudWxsO3JldHVybiJNQ1IiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6byxyZWZPYmpJZDphLmdldFJhdygiU3RtIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJTdG0iKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDphLmdldCgiTUNJRCIpfSk6Ik9CSlIiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6YyxyZWZPYmpJZDphLmdldFJhdygiT2JqIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJPYmoiKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KTpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpsLGRpY3Q6YX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDphPW51bGwscGFnZU9iaklkOnI9bnVsbCxyZWZPYmpJZDpuPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9YTt0aGlzLnBhZ2VPYmpJZD1yO3RoaXMucmVmT2JqSWQ9bjt0aGlzLnBhcmVudE5vZGU9bnVsbH19dC5TdHJ1Y3RUcmVlUGFnZT1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1wYXJzZSgpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCBlPXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm47Y29uc3QgYT1uZXcgaS5OdW1iZXJUcmVlKGUsdGhpcy5yb290RGljdC54cmVmKS5nZXQodCk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuO2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiByLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaChlKSxuKX1hZGROb2RlKGUsdCxhPTApe2lmKGE+NDApeygwLG4ud2FybikoIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxpKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fCgwLHIuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGkpfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1jb25zdCBvPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighbylyZXR1cm4gaTtsZXQgYz0hMTtmb3IoY29uc3QgdCBvZiBvLmtpZHMpaWYodC50eXBlPT09bCYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWk7Yz0hMH1jfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWEpcmV0dXJuITE7aWYoYSBpbnN0YW5jZW9mIHIuRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCBuPSExO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtjb25zdCBpPWFbcl07aWYoaSYmaS50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tyXT10O249ITB9fXJldHVybiBufWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsbi53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBpPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGkpKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcGFnZSR7dC5wYWdlT2JqSWR9X21jaWQke3QubWNpZH1gfSk6dC50eXBlPT09YyYmci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PYmplY3RMb2FkZXI9dm9pZCAwO3ZhciByPWEoMyksbj1hKDUpLGk9YSg0KSxzPWEoMik7ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2Ygci5EaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGkgb2YgZSkoKGE9aSlpbnN0YW5jZW9mIHIuUmVmfHxhIGluc3RhbmNlb2Ygci5EaWN0fHxhIGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmdC5wdXNoKGkpO3ZhciBhfXQuT2JqZWN0TG9hZGVyPWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWE7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IHIuUmVmU2V0O2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhyKTt2b2lkIDAhPT1lJiZhLnB1c2goZSl9cmV0dXJuIHRoaXMuX3dhbGsoYSl9YXN5bmMgX3dhbGsoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbz1lLnBvcCgpO2lmKG8gaW5zdGFuY2VvZiByLlJlZil7aWYodGhpcy5yZWZTZXQuaGFzKG8pKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQobyk7bz10aGlzLnhyZWYuZmV0Y2gobyl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpeygwLHMud2FybikoYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKG8pO2EucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYobyBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3QgZT1vLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHI9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3I9ITA7YS5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXImJnQucHVzaChvKX19YWRkQ2hpbGRyZW4obyxlKX1pZihhLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMoYSk7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2Ygci5SZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTtyZXR1cm4gdGhpcy5fd2Fsayh0KX10aGlzLnJlZlNldD1udWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YRkFGYWN0b3J5PXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNzkpLGk9YSg4NSkscz1hKDgzKSxvPWEoNzYpLGM9YSgyKSxsPWEoODYpLGg9YSg5Nik7Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgbC5YRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBuLkJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBpLkRhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW3IuJHRvUGFnZXNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pKX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXI9bmV3IHMuRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcyl7ZT0oMCxvLnN0cmlwUXVvdGVzKShlKTt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IGwuWEZBUGFyc2VyKGguWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbci4kbm9kZU5hbWVdKSl7Y29uc3QgZT1oLlhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO3Q9ZX1jb25zdCBhPXRbci4kdG9IVE1MXSgpO2lmKCFhLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDpufT1hLHthdHRyaWJ1dGVzOml9PW47aWYoaSl7aS5jbGFzcyYmKGkuY2xhc3M9aS5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO2kuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpuLHN0cjp0W3IuJHRleHRdKCl9fWNhdGNoKGUpeygwLGMud2FybikoYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX10LlhGQUZhY3Rvcnk9WEZBRmFjdG9yeX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhtbE9iamVjdD10LlhGQU9iamVjdEFycmF5PXQuWEZBT2JqZWN0PXQuWEZBQXR0cmlidXRlPXQuU3RyaW5nT2JqZWN0PXQuT3B0aW9uT2JqZWN0PXQuT3B0aW9uMTA9dC5PcHRpb24wMT10LkludGVnZXJPYmplY3Q9dC5Db250ZW50T2JqZWN0PXQuJHVpZD10LiR0b1N0eWxlPXQuJHRvU3RyaW5nPXQuJHRvUGFnZXM9dC4kdG9IVE1MPXQuJHRleHQ9dC4kdGFiSW5kZXg9dC4kc2V0VmFsdWU9dC4kc2V0U2V0QXR0cmlidXRlcz10LiRzZXRJZD10LiRzZWFyY2hOb2RlPXQuJHJvb3Q9dC4kcmVzb2x2ZVByb3RvdHlwZXM9dC4kcmVtb3ZlQ2hpbGQ9dC4kcHVzaFBhcmE9dC4kcHVzaEdseXBocz10LiRwb3BQYXJhPXQuJG9uVGV4dD10LiRvbkNoaWxkQ2hlY2s9dC4kb25DaGlsZD10LiRuc0F0dHJpYnV0ZXM9dC4kbm9kZU5hbWU9dC4kbmFtZXNwYWNlSWQ9dC4kaXNVc2FibGU9dC4kaXNUcmFuc3BhcmVudD10LiRpc1RoZXJlTW9yZVdpZHRoPXQuJGlzU3BsaXR0YWJsZT10LiRpc05zQWdub3N0aWM9dC4kaXNEZXNjZW5kZW50PXQuJGlzRGF0YVZhbHVlPXQuJGlzQ0RBVEFYbWw9dC4kaXNCaW5kYWJsZT10LiRpbnNlcnRBdD10LiRpbmRleE9mPXQuJGlkcz10LiRoYXNTZXR0YWJsZVZhbHVlPXQuJGdsb2JhbERhdGE9dC4kZ2V0VGVtcGxhdGVSb290PXQuJGdldFN1YmZvcm1QYXJlbnQ9dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0UGFyZW50PXQuJGdldE5leHRQYWdlPXQuJGdldEV4dHJhPXQuJGdldERhdGFWYWx1ZT10LiRnZXRDb250YWluZWRDaGlsZHJlbj10LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldENoaWxkcmVuQnlOYW1lPXQuJGdldENoaWxkcmVuQnlDbGFzcz10LiRnZXRDaGlsZHJlbj10LiRnZXRBdmFpbGFibGVTcGFjZT10LiRnZXRBdHRyaWJ1dGVzPXQuJGdldEF0dHJpYnV0ZUl0PXQuJGZsdXNoSFRNTD10LiRmaW5hbGl6ZT10LiRleHRyYT10LiRkdW1wPXQuJGRhdGE9dC4kY29udGVudD10LiRjb25zdW1lZD10LiRjbG9uZT10LiRjbGVhbnVwPXQuJGNsZWFuUGFnZT10LiRjbGVhbj10LiRjaGlsZHJlblRvSFRNTD10LiRhcHBlbmRDaGlsZD10LiRhZGRIVE1MPXQuJGFjY2VwdFdoaXRlc3BhY2U9dm9pZCAwO3ZhciByPWEoNzYpLG49YSgyKSxpPWEoNCkscz1hKDc3KSxvPWEoNzgpO2NvbnN0IGM9U3ltYm9sKCk7dC4kYWNjZXB0V2hpdGVzcGFjZT1jO2NvbnN0IGw9U3ltYm9sKCk7dC4kYWRkSFRNTD1sO2NvbnN0IGg9U3ltYm9sKCk7dC4kYXBwZW5kQ2hpbGQ9aDtjb25zdCB1PVN5bWJvbCgpO3QuJGNoaWxkcmVuVG9IVE1MPXU7Y29uc3QgZD1TeW1ib2woKTt0LiRjbGVhbj1kO2NvbnN0IGY9U3ltYm9sKCk7dC4kY2xlYW5QYWdlPWY7Y29uc3QgZz1TeW1ib2woKTt0LiRjbGVhbnVwPWc7Y29uc3QgcD1TeW1ib2woKTt0LiRjbG9uZT1wO2NvbnN0IG09U3ltYm9sKCk7dC4kY29uc3VtZWQ9bTtjb25zdCBiPVN5bWJvbCgiY29udGVudCIpO3QuJGNvbnRlbnQ9Yjtjb25zdCB5PVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9eTtjb25zdCB3PVN5bWJvbCgpO3QuJGR1bXA9dztjb25zdCBTPVN5bWJvbCgiZXh0cmEiKTt0LiRleHRyYT1TO2NvbnN0IHg9U3ltYm9sKCk7dC4kZmluYWxpemU9eDtjb25zdCBrPVN5bWJvbCgpO3QuJGZsdXNoSFRNTD1rO2NvbnN0IEM9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlSXQ9Qztjb25zdCB2PVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9djtjb25zdCBGPVN5bWJvbCgpO3QuJGdldEF2YWlsYWJsZVNwYWNlPUY7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9Tztjb25zdCBUPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPVQ7Y29uc3QgTT1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PU07Y29uc3QgRT1TeW1ib2woKTt0LiRnZXREYXRhVmFsdWU9RTtjb25zdCBEPVN5bWJvbCgpO3QuJGdldEV4dHJhPUQ7Y29uc3QgTj1TeW1ib2woKTt0LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD1OO2NvbnN0IFI9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW49Ujtjb25zdCBMPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPUw7Y29uc3Qgaj1TeW1ib2woKTt0LiRnZXROZXh0UGFnZT1qO2NvbnN0ICQ9U3ltYm9sKCk7dC4kZ2V0U3ViZm9ybVBhcmVudD0kO2NvbnN0IF89U3ltYm9sKCk7dC4kZ2V0UGFyZW50PV87Y29uc3QgVT1TeW1ib2woKTt0LiRnZXRUZW1wbGF0ZVJvb3Q9VTtjb25zdCBYPVN5bWJvbCgpO3QuJGdsb2JhbERhdGE9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGhhc1NldHRhYmxlVmFsdWU9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlkcz1xO2NvbnN0IFc9U3ltYm9sKCk7dC4kaW5kZXhPZj1XO2NvbnN0IHo9U3ltYm9sKCk7dC4kaW5zZXJ0QXQ9ejtjb25zdCBHPVN5bWJvbCgpO3QuJGlzQ0RBVEFYbWw9Rztjb25zdCBWPVN5bWJvbCgpO3QuJGlzQmluZGFibGU9Vjtjb25zdCBLPVN5bWJvbCgpO3QuJGlzRGF0YVZhbHVlPUs7Y29uc3QgWT1TeW1ib2woKTt0LiRpc0Rlc2NlbmRlbnQ9WTtjb25zdCBKPVN5bWJvbCgpO3QuJGlzTnNBZ25vc3RpYz1KO2NvbnN0IFo9U3ltYm9sKCk7dC4kaXNTcGxpdHRhYmxlPVo7Y29uc3QgUT1TeW1ib2woKTt0LiRpc1RoZXJlTW9yZVdpZHRoPVE7Y29uc3QgZWU9U3ltYm9sKCk7dC4kaXNUcmFuc3BhcmVudD1lZTtjb25zdCB0ZT1TeW1ib2woKTt0LiRpc1VzYWJsZT10ZTtjb25zdCBhZT1TeW1ib2woKSxyZT1TeW1ib2woIm5hbWVzcGFjZUlkIik7dC4kbmFtZXNwYWNlSWQ9cmU7Y29uc3QgbmU9U3ltYm9sKCJub2RlTmFtZSIpO3QuJG5vZGVOYW1lPW5lO2NvbnN0IGllPVN5bWJvbCgpO3QuJG5zQXR0cmlidXRlcz1pZTtjb25zdCBzZT1TeW1ib2woKTt0LiRvbkNoaWxkPXNlO2NvbnN0IG9lPVN5bWJvbCgpO3QuJG9uQ2hpbGRDaGVjaz1vZTtjb25zdCBjZT1TeW1ib2woKTt0LiRvblRleHQ9Y2U7Y29uc3QgbGU9U3ltYm9sKCk7dC4kcHVzaEdseXBocz1sZTtjb25zdCBoZT1TeW1ib2woKTt0LiRwb3BQYXJhPWhlO2NvbnN0IHVlPVN5bWJvbCgpO3QuJHB1c2hQYXJhPXVlO2NvbnN0IGRlPVN5bWJvbCgpO3QuJHJlbW92ZUNoaWxkPWRlO2NvbnN0IGZlPVN5bWJvbCgicm9vdCIpO3QuJHJvb3Q9ZmU7Y29uc3QgZ2U9U3ltYm9sKCk7dC4kcmVzb2x2ZVByb3RvdHlwZXM9Z2U7Y29uc3QgcGU9U3ltYm9sKCk7dC4kc2VhcmNoTm9kZT1wZTtjb25zdCBtZT1TeW1ib2woKTt0LiRzZXRJZD1tZTtjb25zdCBiZT1TeW1ib2woKTt0LiRzZXRTZXRBdHRyaWJ1dGVzPWJlO2NvbnN0IHllPVN5bWJvbCgpO3QuJHNldFZhbHVlPXllO2NvbnN0IHdlPVN5bWJvbCgpO3QuJHRhYkluZGV4PXdlO2NvbnN0IFNlPVN5bWJvbCgpO3QuJHRleHQ9U2U7Y29uc3QgeGU9U3ltYm9sKCk7dC4kdG9QYWdlcz14ZTtjb25zdCBBZT1TeW1ib2woKTt0LiR0b0hUTUw9QWU7Y29uc3Qga2U9U3ltYm9sKCk7dC4kdG9TdHJpbmc9a2U7Y29uc3QgQ2U9U3ltYm9sKCk7dC4kdG9TdHlsZT1DZTtjb25zdCB2ZT1TeW1ib2woInVpZCIpO3QuJHVpZD12ZTtjb25zdCBGZT1TeW1ib2woKSxPZT1TeW1ib2woKSxUZT1TeW1ib2woKSxJZT1TeW1ib2woIl9jaGlsZHJlbiIpLFBlPVN5bWJvbCgpLE1lPVN5bWJvbCgpLEVlPVN5bWJvbCgpLERlPVN5bWJvbCgpLE5lPVN5bWJvbCgpLEJlPVN5bWJvbCgpLFJlPVN5bWJvbCgpLExlPVN5bWJvbCgpLGplPVN5bWJvbCgpLCRlPVN5bWJvbCgicGFyZW50IiksX2U9U3ltYm9sKCksVWU9U3ltYm9sKCksWGU9U3ltYm9sKCk7bGV0IEhlPTA7Y29uc3QgcWU9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPSExKXt0aGlzW3JlXT1lO3RoaXNbbmVdPXQ7dGhpc1tSZV09YTt0aGlzWyRlXT1udWxsO3RoaXNbSWVdPVtdO3RoaXNbdmVdPWAke3R9JHtIZSsrfWA7dGhpc1tYXT1udWxsfVtzZV0oZSl7aWYoIXRoaXNbUmVdfHwhdGhpc1tvZV0oZSkpcmV0dXJuITE7Y29uc3QgdD1lW25lXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tkZV0oYSk7dGhpc1t0XT1lO3RoaXNbaF0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW2hdKGUpO3JldHVybiEwfWxldCByPSIiO3RoaXMuaWQ/cj1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKHI9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTsoMCxuLndhcm4pKGBYRkEgLSBub2RlICIke3RoaXNbbmVdfSIke3J9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W29lXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW25lXSkmJmVbcmVdPT09dGhpc1tyZV19W0pdKCl7cmV0dXJuITF9W2NdKCl7cmV0dXJuITF9W0ddKCl7cmV0dXJuITF9W1ZdKCl7cmV0dXJuITF9W2hlXSgpe3RoaXMucGFyYSYmdGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wb3AoKX1bdWVdKCl7dGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W21lXShlKXt0aGlzLmlkJiZ0aGlzW3JlXT09PXMuTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtVXSgpe3JldHVybiB0aGlzW1hdLnRlbXBsYXRlfVtaXSgpe3JldHVybiExfVtRXSgpe3JldHVybiExfVtoXShlKXtlWyRlXT10aGlzO3RoaXNbSWVdLnB1c2goZSk7IWVbWF0mJnRoaXNbWF0mJihlW1hdPXRoaXNbWF0pfVtkZV0oZSl7Y29uc3QgdD10aGlzW0llXS5pbmRleE9mKGUpO3RoaXNbSWVdLnNwbGljZSh0LDEpfVtIXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVt5ZV0oZSl7fVtjZV0oZSl7fVt4XSgpe31bZF0oZSl7ZGVsZXRlIHRoaXNbUmVdO2lmKHRoaXNbZ10pe2UuY2xlYW4odGhpc1tnXSk7ZGVsZXRlIHRoaXNbZ119fVtXXShlKXtyZXR1cm4gdGhpc1tJZV0uaW5kZXhPZihlKX1bel0oZSx0KXt0WyRlXT10aGlzO3RoaXNbSWVdLnNwbGljZShlLDAsdCk7IXRbWF0mJnRoaXNbWF0mJih0W1hdPXRoaXNbWF0pfVtlZV0oKXtyZXR1cm4hdGhpcy5uYW1lfVthZV0oKXtyZXR1cm4iIn1bU2VdKCl7cmV0dXJuIDA9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tiXTp0aGlzW0llXS5tYXAoKGU9PmVbU2VdKCkpKS5qb2luKCIiKX1nZXRbVGVdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsVGUsZS5fYXR0cmlidXRlcyl9W1ldKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W19dKCl9cmV0dXJuITF9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVskXSgpe3JldHVybiB0aGlzW19dKCl9W1JdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW0llXX1bd10oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tiXSYmKGUuJGNvbnRlbnQ9dGhpc1tiXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW3ddKCk6YSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2EuaXNFbXB0eSgpfHwoZVt0XT1hLmR1bXAoKSk6ZVt0XT1hKX1yZXR1cm4gZX1bQ2VdKCl7cmV0dXJuIG51bGx9W0FlXSgpe3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9KltMXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbUl0oKSl5aWVsZCBlfSpbRGVdKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tMXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtuZV0pKXtjb25zdCBlPXRoaXNbRl0oKSx0PWFbQWVdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbU10uZmFpbGluZ05vZGU9YSk7eWllbGQgdH19W2tdKCl7cmV0dXJuIG51bGx9W2xdKGUsdCl7dGhpc1tTXS5jaGlsZHJlbi5wdXNoKGUpfVtGXSgpe31bdV0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tTXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tGXSgpLHQ9dGhpc1tTXS5mYWlsaW5nTm9kZVtBZV0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbF0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbU10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW1NdLmdlbmVyYXRvcj10aGlzW0RlXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW1NdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tsXSh0Lmh0bWwsdC5iYm94KX10aGlzW1NdLmdlbmVyYXRvcj1udWxsO3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9W2JlXShlKXt0aGlzW1VlXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bQmVdKGUpe2NvbnN0IHQ9dGhpc1tUZV0sYT10aGlzW1VlXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWEuaGFzKGUpKSl9W2dlXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pYVtfZV0oZSx0KX1bX2VdKGUsdCl7Y29uc3QgYT10aGlzW05lXShlLHQpO2E/dGhpc1tGZV0oYSxlLHQpOnRoaXNbZ2VdKGUsdCl9W05lXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6cn09dGhpcztpZighYSYmIXIpcmV0dXJuIG51bGw7bGV0IGk9bnVsbCxzPW51bGwsYz1udWxsLGw9YTtpZihyKXtsPXI7ci5zdGFydHNXaXRoKCIjc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/cz1yLnNsaWNlKCIjc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiLiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9zPXIuc2xpY2UoIi4jc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiIyIpP2M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihjPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/Yz1hLnNsaWNlKDEpOnM9YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoYylpPWUuZ2V0KGMpO2Vsc2V7aT0oMCxvLnNlYXJjaE5vZGUpKGUuZ2V0KGZlKSx0aGlzLHMsITAsITEpO2kmJihpPWlbMF0pfWlmKCFpKXsoMCxuLndhcm4pKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7bH0uYCk7cmV0dXJuIG51bGx9aWYoaVtuZV0hPT10aGlzW25lXSl7KDAsbi53YXJuKShgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtpW25lXX0gIT09ICR7dGhpc1tuZV19LmApO3JldHVybiBudWxsfWlmKHQuaGFzKGkpKXsoMCxuLndhcm4pKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChpKTtjb25zdCBoPWlbTmVdKGUsdCk7aCYmaVtGZV0oaCxlLHQpO2lbZ2VdKGUsdCk7dC5kZWxldGUoaSk7cmV0dXJuIGl9W0ZlXShlLHQsYSl7aWYoYS5oYXMoZSkpeygwLG4ud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tiXSYmZVtiXSYmKHRoaXNbYl09ZVtiXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tCZV0oZVtVZV0pKXt0aGlzW3RdPWVbdF07dGhpc1tVZV0mJnRoaXNbVWVdLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tUZV0uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG49dGhpc1tyXSxpPWVbcl07aWYobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBuW0llXSllW19lXSh0LGEpO2ZvcihsZXQgcj1uW0llXS5sZW5ndGgscz1pW0llXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW0llXVtyXVtwXSgpO2lmKCFuLnB1c2goaSkpYnJlYWs7aVskZV09dGhpczt0aGlzW0llXS5wdXNoKGkpO2lbX2VdKHQsYSl9fWVsc2UgaWYobnVsbD09PW4pe2lmKG51bGwhPT1pKXtjb25zdCBlPWlbcF0oKTtlWyRlXT10aGlzO3RoaXNbcl09ZTt0aGlzW0llXS5wdXNoKGUpO2VbX2VdKHQsYSl9fWVsc2V7bltnZV0odCxhKTtpJiZuW0ZlXShpLHQsYSl9fX1zdGF0aWNbUGVdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbUGVdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3BdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoKGEpeygwLG4uc2hhZG93KShlLHQsdGhpc1t0XSl9ZVt2ZV09YCR7ZVtuZV19JHtIZSsrfWA7ZVtJZV09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbVGVdLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbUGVdKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtMZV0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tJZV0pe2NvbnN0IGE9dFtuZV0scj10W3BdKCk7ZVtJZV0ucHVzaChyKTtyWyRlXT1lO251bGw9PT1lW2FdP2VbYV09cjplW2FdW0llXS5wdXNoKHIpfXJldHVybiBlfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbSWVdLmZpbHRlcigodD0+dFtuZV09PT1lKSk6dGhpc1tJZV19W09dKGUpe3JldHVybiB0aGlzW2VdfVtUXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tNXShlLHQsYSkpfSpbTV0oZSx0LGE9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO2EubmFtZT09PWUmJih5aWVsZCBhKTsodHx8YVtlZV0oKSkmJih5aWVsZCphW01dKGUsdCwhMSkpfWEmJnRoaXNbVGVdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbJGVdfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbTGVdPWU7dGhpc1tJZV09W119cHVzaChlKXtpZih0aGlzW0llXS5sZW5ndGg8PXRoaXNbTGVdKXt0aGlzW0llXS5wdXNoKGUpO3JldHVybiEwfSgwLG4ud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtuZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbTGVdfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbSWVdLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tJZV1bMF1bd10oKTp0aGlzW0llXS5tYXAoKGU9PmVbd10oKSkpfVtwXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbTGVdKTtlW0llXT10aGlzW0llXS5tYXAoKGU9PmVbcF0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW0llXX1jbGVhcigpe3RoaXNbSWVdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVhGQU9iamVjdEFycmF5O2NsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpc1skZV09ZTt0aGlzW25lXT10O3RoaXNbYl09YTt0aGlzW21dPSExO3RoaXNbdmVdPSJhdHRyaWJ1dGUiK0hlKyt9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVtLXSgpe3JldHVybiEwfVtFXSgpe3JldHVybiB0aGlzW2JdLnRyaW0oKX1beWVdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tiXT1lLnRvU3RyaW5nKCl9W1NlXSgpe3JldHVybiB0aGlzW2JdfVtZXShlKXtyZXR1cm4gdGhpc1skZV09PT1lfHx0aGlzWyRlXVtZXShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT17fSl7c3VwZXIoZSx0KTt0aGlzW2JdPSIiO3RoaXNbTWVdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW09lXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShpZSkpe2NvbnN0IGU9YVtpZV0ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tNZV09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tNZV09ITApKX19dGhpc1ttXT0hMX1ba2VdKGUpe2NvbnN0IHQ9dGhpc1tuZV07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk7cmV0dXJufWNvbnN0IGE9KDAsbi51dGY4U3RyaW5nVG9TdHJpbmcpKHQpLHI9dGhpc1tyZV09PT1xZT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtyfSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbT2VdLmVudHJpZXMoKSl7Y29uc3Qgcj0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKGAgJHtyfT0iJHsoMCxpLmVuY29kZVRvWG1sU3RyaW5nKShhW2JdKX0iYCl9bnVsbCE9PXRoaXNbTWVdJiYodGhpc1tNZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbYl18fDAhPT10aGlzW0llXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbYl0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2JdP2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk6dGhpc1tiXVtrZV0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0llXSl0W2tlXShlKTtlLnB1c2goYDwvJHtyfSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W3NlXShlKXtpZih0aGlzW2JdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyZV0sIiN0ZXh0Iik7dGhpc1toXShlKTtlW2JdPXRoaXNbYl07dGhpc1tiXT0iIn10aGlzW2hdKGUpO3JldHVybiEwfVtjZV0oZSl7dGhpc1tiXSs9ZX1beF0oKXtpZih0aGlzW2JdJiZ0aGlzW0llXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbcmVdLCIjdGV4dCIpO3RoaXNbaF0oZSk7ZVtiXT10aGlzW2JdO2RlbGV0ZSB0aGlzW2JdfX1bQWVdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbbmVdP3IuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tiXX0pOnIuSFRNTFJlc3VsdC5FTVBUWX1bUl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW0llXS5maWx0ZXIoKHQ9PnRbbmVdPT09ZSkpOnRoaXNbSWVdfVt2XSgpe3JldHVybiB0aGlzW09lXX1bT10oZSl7Y29uc3QgdD10aGlzW09lXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1JdKGUpfSpbTV0oZSx0KXtjb25zdCBhPXRoaXNbT2VdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW01dKGUsdCkpfX0qW0NdKGUsdCl7Y29uc3QgYT10aGlzW09lXS5nZXQoZSk7IWF8fHQmJmFbbV18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW0llXSl5aWVsZCphW0NdKGUsdCl9KltOXShlLHQsYSl7Zm9yKGNvbnN0IHIgb2YgdGhpc1tJZV0pe3JbbmVdIT09ZXx8YSYmclttXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW05dKGUsdCxhKSl9fVtLXSgpe3JldHVybiBudWxsPT09dGhpc1tNZV0/MD09PXRoaXNbSWVdLmxlbmd0aHx8dGhpc1tJZV1bMF1bcmVdPT09cy5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tNZV19W0VdKCl7cmV0dXJuIG51bGw9PT10aGlzW01lXT8wPT09dGhpc1tJZV0ubGVuZ3RoP3RoaXNbYl0udHJpbSgpOnRoaXNbSWVdWzBdW3JlXT09PXMuTmFtZXNwYWNlSWRzLnhodG1sLmlkP3RoaXNbSWVdWzBdW1NlXSgpLnRyaW0oKTpudWxsOnRoaXNbYl0udHJpbSgpfVt5ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2JdPWUudG9TdHJpbmcoKX1bd10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3JlXSk7dGhpc1tiXSYmKHQuJGNvbnRlbnQ9dGhpc1tiXSk7dC4kbmFtZT10aGlzW25lXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbSWVdKXQuY2hpbGRyZW4ucHVzaChhW3ddKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbT2VdKXQuYXR0cmlidXRlc1tlXT1hW2JdO3JldHVybiB0fX10LlhtbE9iamVjdD1YbWxPYmplY3Q7Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tiXT0iIn1bY2VdKGUpe3RoaXNbYl0rPWV9W3hdKCl7fX10LkNvbnRlbnRPYmplY3Q9Q29udGVudE9iamVjdDt0Lk9wdGlvbk9iamVjdD1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbamVdPWF9W3hdKCl7dGhpc1tiXT0oMCxyLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbYl0sZGVmYXVsdFZhbHVlOnRoaXNbamVdWzBdLHZhbGlkYXRlOmU9PnRoaXNbamVdLmluY2x1ZGVzKGUpfSl9W2RdKGUpe3N1cGVyW2RdKGUpO2RlbGV0ZSB0aGlzW2plXX19O3QuU3RyaW5nT2JqZWN0PWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3hdKCl7dGhpc1tiXT10aGlzW2JdLnRyaW0oKX19O2NsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tFZV09YTt0aGlzW1hlXT1yfVt4XSgpe3RoaXNbYl09KDAsci5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW2JdLGRlZmF1bHRWYWx1ZTp0aGlzW0VlXSx2YWxpZGF0ZTp0aGlzW1hlXX0pfVtkXShlKXtzdXBlcltkXShlKTtkZWxldGUgdGhpc1tFZV07ZGVsZXRlIHRoaXNbWGVdfX10LkludGVnZXJPYmplY3Q9SW50ZWdlck9iamVjdDt0Lk9wdGlvbjAxPWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX07dC5PcHRpb24xMD1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixuLGksc109YTtyZXR1cm57eDpyLHk6bix3aWR0aDppLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixuXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6bn07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKGkubGVuZ3RoPDMpcmV0dXJue3I6YSxnOnIsYjpufTtbYSxyLG5dPWk7cmV0dXJue3I6YSxnOnIsYjpufX07dC5nZXRGbG9hdD1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0S2V5d29yZD1nZXRLZXl3b3JkO3QuZ2V0TWVhc3VyZW1lbnQ9Z2V0TWVhc3VyZW1lbnQ7dC5nZXRSYXRpbz1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fTt0LmdldFJlbGV2YW50PWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe2lmKCFlKXJldHVybltdO3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpfTt0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX07dC5zdHJpcFF1b3Rlcz1mdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtpZihlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJykpcmV0dXJuIGUuc2xpY2UoMSxlLmxlbmd0aC0xKTtyZXR1cm4gZX07dmFyIHI9YSgyKTtjb25zdCBuPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxpPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dD10fHwiMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2goaSk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPW5bc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlSWRzPXQuJGJ1aWxkWEZBT2JqZWN0PXZvaWQgMDtjb25zdCBhPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PWE7dC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgbj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zb21lKChlPT5lLm9wZXJhdG9yPT09bCkpKXJldHVybiBudWxsO2NvbnN0IHM9Zi5nZXQoblswXS5uYW1lKTtsZXQgbz0wO2lmKHMpe2U9cyhlLHQpO289MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9bi5sZW5ndGg7bzx0O28rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6c309bltvXTtpZighaXNGaW5pdGUocykpe25bb10uaW5kZXg9MDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX1sZXQgdTtzd2l0Y2goYSl7Y2FzZSBjOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMSk7YnJlYWs7Y2FzZSBsOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBoOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKHQpO3U9dSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/dS5jaGlsZHJlbjpbdV19aWYoMD09PXUubGVuZ3RoKXJldHVybiBjcmVhdGVOb2RlcyhlLG4uc2xpY2UobykpO2lmKCEoczx1Lmxlbmd0aCkpe25bb10uaW5kZXg9cy11Lmxlbmd0aDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX17Y29uc3QgdD11W3NdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSl7KDAsaS53YXJuKSgiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH07dC5zZWFyY2hOb2RlPWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEsbj0hMCxpPSEwKXtjb25zdCBzPXBhcnNlRXhwcmVzc2lvbihhLG4pO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IG89Zi5nZXQoc1swXS5uYW1lKTtsZXQgdSxkPTA7aWYobyl7dT0hMDtlPVtvKGUsdCldO2Q9MX1lbHNle3U9bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBhPXMubGVuZ3RoO2Q8YTtkKyspe2NvbnN0e25hbWU6YSxjYWNoZU5hbWU6bixvcGVyYXRvcjpvLGluZGV4OmZ9PXNbZF0scD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCkpY29udGludWU7bGV0IGUscztpZihpKXtzPWcuZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7Zy5zZXQodCxzKX1lPXMuZ2V0KG4pfWlmKCFlKXtzd2l0Y2gobyl7Y2FzZSBjOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMSk7YnJlYWs7Y2FzZSBsOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMCk7YnJlYWs7Y2FzZSBoOmU9dFtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGEpO2U9ZSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19aSYmcy5zZXQobixlKX1lLmxlbmd0aD4wJiZwLnB1c2goZSl9aWYoMCE9PXAubGVuZ3RofHx1fHwwIT09ZCllPWlzRmluaXRlKGYpP3AuZmlsdGVyKChlPT5mPGUubGVuZ3RoKSkubWFwKChlPT5lW2ZdKSk6cC5mbGF0KCk7ZWxzZXtjb25zdCBhPXRbci4kZ2V0UGFyZW50XSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtkPS0xO2U9W3RdfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIGV9O3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDIpO2NvbnN0IHM9L15bXi5bXSsvLG89L15bXlxdXSsvLGM9MCxsPTEsaD0yLHU9MyxkPTQsZj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3IuJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxnPW5ldyBXZWFrTWFwLHA9bi5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKHMpO2lmKCFyKXJldHVybiBudWxsO2xldFtuXT1yO2NvbnN0IGY9W3tuYW1lOm4sY2FjaGVOYW1lOiIuIituLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOmN9XTtsZXQgZz1uLmxlbmd0aDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBtPWc7aWYoIlsiPT09ZS5jaGFyQXQoZysrKSl7cj1lLnNsaWNlKGcpLm1hdGNoKG8pO2lmKCFyKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9Zi5hdCgtMSkuaW5kZXg9IioiPT09KHA9KHA9clswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQocCwxMCl8fDA7Zys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYjtzd2l0Y2goZS5jaGFyQXQoZykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7ZysrO2I9bDticmVhaztjYXNlIiMiOmcrKztiPWg7YnJlYWs7Y2FzZSJbIjppZihhKXsoMCxpLndhcm4pKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWI9dTticmVhaztjYXNlIigiOmlmKGEpeygwLGkud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1iPWQ7YnJlYWs7ZGVmYXVsdDpiPWN9cj1lLnNsaWNlKGcpLm1hdGNoKHMpO2lmKCFyKWJyZWFrO1tuXT1yO2crPW4ubGVuZ3RoO2YucHVzaCh7bmFtZTpuLGNhY2hlTmFtZTplLnNsaWNlKG0sZyksb3BlcmF0b3I6YixpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBwO3JldHVybiBmfWZ1bmN0aW9uIGNyZWF0ZU5vZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4Oml9b2YgdCl7Zm9yKGxldCB0PTAscz1pc0Zpbml0ZShpKT9pOjA7dDw9czt0Kyspe2NvbnN0IHQ9ZVtyLiRuYW1lc3BhY2VJZF09PT1wPy0xOmVbci4kbmFtZXNwYWNlSWRdO2E9bmV3IHIuWG1sT2JqZWN0KHQsbik7ZVtyLiRhcHBlbmRDaGlsZF0oYSl9ZT1hfXJldHVybiBhfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkJpbmRlcj12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDgwKSxpPWEoNzgpLHM9YSg3Nyksbz1hKDIpO2NvbnN0IGM9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBuLlRleHQoe30pO3Rbci4kY29udGVudF09ZTtyZXR1cm4gdH10LkJpbmRlcj1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO2UuZGF0YXNldHMmJmUuZGF0YXNldHMuZGF0YT90aGlzLmRhdGE9ZS5kYXRhc2V0cy5kYXRhOnRoaXMuZGF0YT1uZXcgci5YbWxPYmplY3Qocy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbci4kY2xvbmVdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyLiRkYXRhXT10O2lmKGVbci4kaGFzU2V0dGFibGVWYWx1ZV0oKSlpZih0W3IuJGlzRGF0YVZhbHVlXSgpKXtjb25zdCBhPXRbci4kZ2V0RGF0YVZhbHVlXSgpO2Vbci4kc2V0VmFsdWVdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRmllbGQmJmUudWkmJmUudWkuY2hvaWNlTGlzdCYmIm11bHRpU2VsZWN0Ij09PWUudWkuY2hvaWNlTGlzdC5vcGVuKXtjb25zdCBhPXRbci4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW3IuJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLG8ud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbci4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsby53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxuKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxvO2ZvcihsZXQgbj0wO248MztuKyspe2k9YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMSwhMCk7Zm9yKDs7KXtvPWkubmV4dCgpLnZhbHVlO2lmKCFvKWJyZWFrO2lmKHQ9PT1vW3IuJGlzRGF0YVZhbHVlXSgpKXJldHVybiBvfWlmKGFbci4kbmFtZXNwYWNlSWRdPT09cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbci4kbm9kZU5hbWVdKWJyZWFrO2E9YVtyLiRnZXRQYXJlbnRdKCl9aWYoIW4pcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpO289aS5uZXh0KCkudmFsdWU7aWYobylyZXR1cm4gbztpPXRoaXMuZGF0YVtyLiRnZXRBdHRyaWJ1dGVJdF0oZSwhMCk7bz1pLm5leHQoKS52YWx1ZTtyZXR1cm4gbyYmb1tyLiRpc0RhdGFWYWx1ZV0oKT9vOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6YSx0YXJnZXQ6cyxjb25uZWN0aW9uOmN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYoYyljb250aW51ZTtpZighYSljb250aW51ZTtjb25zdCBsPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsYSwhMSwhMSk7aWYoIWwpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWw7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGEpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3QgdT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCxlLHMsITEsITEpO2lmKCF1KXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0oZSkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgZj1kW3IuJGdldFBhcmVudF0oKTtpZihkIGluc3RhbmNlb2Ygbi5TZXRQcm9wZXJ0eXx8ZiBpbnN0YW5jZW9mIG4uU2V0UHJvcGVydHkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoZCBpbnN0YW5jZW9mIG4uQmluZEl0ZW1zfHxmIGluc3RhbmNlb2Ygbi5CaW5kSXRlbXMpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGc9aFtyLiR0ZXh0XSgpLHA9ZFtyLiRub2RlTmFtZV07aWYoZCBpbnN0YW5jZW9mIHIuWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtwXT1nO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltwXT10W3BdfWVsc2UgaWYoZC5oYXNPd25Qcm9wZXJ0eShyLiRjb250ZW50KSl7ZFtyLiRkYXRhXT1oO2Rbci4kY29udGVudF09ZztkW3IuJGZpbmFsaXplXSgpfWVsc2UoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtyLiRyZW1vdmVDaGlsZF0odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IG4uSXRlbXMoe30pLHM9bmV3IG4uSXRlbXMoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKGEpO2UuaXRlbXMucHVzaChhKTtlW3IuJGFwcGVuZENoaWxkXShzKTtlLml0ZW1zLnB1c2gocyk7Zm9yKGNvbnN0e3JlZjpuLGxhYmVsUmVmOmMsdmFsdWVSZWY6bCxjb25uZWN0aW9uOmh9b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKGgpY29udGludWU7aWYoIW4pY29udGludWU7Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LG4sITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWYgKCR7bn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGMsITAsITEpO2lmKCFlKXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke2N9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWU7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IHU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxsLCEwLCExKTtpZighdSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtsfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBmPWNyZWF0ZVRleHQoaFtyLiR0ZXh0XSgpKSxnPWNyZWF0ZVRleHQoZFtyLiR0ZXh0XSgpKTthW3IuJGFwcGVuZENoaWxkXShmKTthLnRleHQucHVzaChmKTtzW3IuJGFwcGVuZENoaWxkXShnKTtzLnRleHQucHVzaChnKX1lbHNlKDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7bn0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCBuO2lmKHQubGVuZ3RoPjEpe249ZVtyLiRjbG9uZV0oKTtuW3IuJHJlbW92ZUNoaWxkXShuLm9jY3VyKTtuLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbci4kZ2V0UGFyZW50XSgpLHM9ZVtyLiRub2RlTmFtZV0sbz1pW3IuJGluZGV4T2ZdKGUpO2ZvcihsZXQgZT0xLGM9dC5sZW5ndGg7ZTxjO2UrKyl7Y29uc3QgYz10W2VdLGw9bltyLiRjbG9uZV0oKTtpW3NdLnB1c2gobCk7aVtyLiRpbnNlcnRBdF0obytlLGwpO3RoaXMuX2JpbmRWYWx1ZShsLGMsYSk7dGhpcy5fc2V0UHJvcGVydGllcyhsLGMpO3RoaXMuX2JpbmRJdGVtcyhsLGMpfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbci4kZ2V0UGFyZW50XSgpLG49ZVtyLiRub2RlTmFtZV07aWYoIShhW25daW5zdGFuY2VvZiByLlhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/YVtuXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDphW25dLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBzPWFbci4kaW5kZXhPZl0oZSkrMSxvPXQuaW5pdGlhbC1pO2lmKG8pe2NvbnN0IHQ9ZVtyLiRjbG9uZV0oKTt0W3IuJHJlbW92ZUNoaWxkXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7YVtuXS5wdXNoKHQpO2Fbci4kaW5zZXJ0QXRdKHMsdCk7Zm9yKGxldCBlPTE7ZTxvO2UrKyl7Y29uc3QgaT10W3IuJGNsb25lXSgpO2Fbbl0ucHVzaChpKTthW3IuJGluc2VydEF0XShzK2UsaSl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjphfT1lO2lmKCFhfHwhdClyZXR1cm5bMSwxXTtjb25zdCByPS0xPT09YS5tYXg/MS8wOmEubWF4O3JldHVyblthLm1pbixyXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGE9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IG4gb2YgZVtyLiRnZXRDaGlsZHJlbl0oKSl7aWYobltyLiRkYXRhXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PW5bci4kbm9kZU5hbWVdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PW4ubWVyZ2VNb2RlO2NvbnN0IGU9dFtyLiRnZXRDaGlsZHJlbl0oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W3IuJG5hbWVzcGFjZUlkXT09PWM/LTE6dFtyLiRuYW1lc3BhY2VJZF0sYT1uW3IuJGRhdGFdPW5ldyByLlhtbE9iamVjdChlLG4ubmFtZXx8InJvb3QiKTt0W3IuJGFwcGVuZENoaWxkXShhKTt0aGlzLl9iaW5kRWxlbWVudChuLGEpfWNvbnRpbnVlfWlmKCFuW3IuJGlzQmluZGFibGVdKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLGw9bnVsbCxoPW51bGw7aWYobi5iaW5kKXtzd2l0Y2gobi5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFuLmJpbmQucmVmKXsoMCxvLndhcm4pKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke25bci4kbm9kZU5hbWVdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9bD1uLmJpbmQucmVmfW4uYmluZC5waWN0dXJlJiYocz1uLmJpbmQucGljdHVyZVtyLiRjb250ZW50XSl9Y29uc3RbdSxkXT10aGlzLl9nZXRPY2N1ckluZm8obik7aWYobCl7aD0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGwsITAsITEpO2lmKG51bGw9PT1oKXtoPSgwLGkuY3JlYXRlRGF0YU5vZGUpKHRoaXMuZGF0YSx0LGwpO2lmKCFoKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGhbci4kY29uc3VtZWRdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaD1oLmZpbHRlcigoZT0+IWVbci4kY29uc3VtZWRdKSkpO2gubGVuZ3RoPmQ/aD1oLnNsaWNlKDAsZCk6MD09PWgubGVuZ3RoJiYoaD1udWxsKTtoJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJmguZm9yRWFjaCgoZT0+e2Vbci4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIW4ubmFtZSl7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGQ7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKG4ubmFtZSxuW3IuJGhhc1NldHRhYmxlVmFsdWVdKCksdCxlKTtpZighaSlicmVhaztpW3IuJGNvbnN1bWVkXT0hMDthLnB1c2goaSl9aD1hLmxlbmd0aD4wP2E6bnVsbH1lbHNle2g9dFtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0obi5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFoKXtpZigwPT09dSl7YS5wdXNoKG4pO2NvbnRpbnVlfWNvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1jPy0xOnRbci4kbmFtZXNwYWNlSWRdO2g9bltyLiRkYXRhXT1uZXcgci5YbWxPYmplY3QoZSxuLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGhbci4kY29uc3VtZWRdPSEwKTt0W3IuJGFwcGVuZENoaWxkXShoKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaFtyLiRjb25zdW1lZF09ITApO2g9W2hdfX1oP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLGgscyk6dT4wP3RoaXMuX3NldEFuZEJpbmQobix0KTphLnB1c2gobil9YS5mb3JFYWNoKChlPT5lW3IuJGdldFBhcmVudF0oKVtyLiRyZW1vdmVDaGlsZF0oZSkpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDc3KSxpPWEoODEpLHM9YSg4Miksbz1hKDc2KSxjPWEoMiksbD1hKDgzKSxoPWEoNCksdT1hKDc4KTtjb25zdCBkPW4uTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkLGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixnPS9eSChcZCspJC8scD1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLG09W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO2UudmFsdWU9dH1lLnZhbHVlW3IuJHNldFZhbHVlXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW3IuJGdldENoaWxkcmVuXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiBlLnZhbGlkYXRlJiYiZXJyb3IiPT09ZS52YWxpZGF0ZS5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2Vbci4kdGFiSW5kZXhdPWVbci4kZ2V0UGFyZW50XSgpW3IuJHRhYkluZGV4XTtyZXR1cm59aWYoZVtyLiR0YWJJbmRleF0pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS50cmF2ZXJzYWxbci4kZ2V0Q2hpbGRyZW5dKCkpaWYoIm5leHQiPT09YS5vcGVyYXRpb24pe3Q9YTticmVha31pZighdHx8IXQucmVmKXtlW3IuJHRhYkluZGV4XT1lW3IuJGdldFBhcmVudF0oKVtyLiR0YWJJbmRleF07cmV0dXJufWNvbnN0IGE9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7ZVtyLiR0YWJJbmRleF09KythW3IuJHRhYkluZGV4XTtjb25zdCBuPWFbci4kc2VhcmNoTm9kZV0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtyLiR0b0hUTUxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3Qgbj1hLnJvbGUubWF0Y2goZyk7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7InJvdyI9PT1hLmxheW91dCYmKGEuYXNzaXN0JiYiVEgiPT09YS5hc3Npc3Qucm9sZT90LnJvbGU9ImNvbHVtbmhlYWRlciI6dC5yb2xlPSJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW3IuJGNvbnRlbnRdP3Quc3BlYWtbci4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtyLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7aWYobnVsbD09PXRbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlKXt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1lO3Rbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO3Rbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtyLiRleHRyYV0pcmV0dXJuITE7ZVtyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTtsZXQgYT1udWxsO2lmKGUudGFyZ2V0KXthPXRbci4kc2VhcmNoTm9kZV0oZS50YXJnZXQsZVtyLiRnZXRQYXJlbnRdKCkpO2lmKCFhKXJldHVybiExO2E9YVswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6bixjdXJyZW50Q29udGVudEFyZWE6aX09dFtyLiRleHRyYV07aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7YSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwoYT1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3IuJGV4dHJhXS50YXJnZXQ9YXx8bjtyZXR1cm4hMH1pZihhJiZhIT09bil7ZVtyLiRleHRyYV0udGFyZ2V0PWE7cmV0dXJuITB9cmV0dXJuITF9YSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwoYT1udWxsKTtjb25zdCBzPWEmJmFbci4kZ2V0UGFyZW50XSgpO2xldCBvLGM9cztpZihlLnN0YXJ0TmV3KWlmKGEpe2NvbnN0IGU9cy5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihpKSxyPWUuaW5kZXhPZihhKTstMSE9PXQmJnQ8ciYmKGM9bnVsbCk7bz1yLTF9ZWxzZSBvPW4uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKTtlbHNle2lmKCFhfHxhPT09aSlyZXR1cm4hMTtvPXMuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKS0xO2M9cz09PW4/bnVsbDpzfWVbci4kZXh0cmFdLnRhcmdldD1jO2Vbci4kZXh0cmFdLmluZGV4PW87cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGEpe2NvbnN0IG49ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCksaT1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUscz10W3IuJGdldFN1YmZvcm1QYXJlbnRdO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09KCk9PmU7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IG89dFtyLiR0b0hUTUxdKGEpO2Vbci4kYWRkSFRNTF0oby5odG1sLG8uYmJveCk7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWk7dFtyLiRnZXRTdWJmb3JtUGFyZW50XT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT0oMCxvLmdldEZsb2F0KSh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtyLiR0b1N0eWxlXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgbjtjb25zdCBpPXt4bWxuczpmLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpbj17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZixkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IGM9e25hbWU6InN2ZyIsY2hpbGRyZW46W25dLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2NdfSk7Yy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsbixpLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStpKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LG4rcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBuPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjpuLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3Mpe2lmKGkuaXNCcmVhaygpKXJldHVybiBpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMsbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXAmJnRoaXMudG9vbFRpcFtyLiRjb250ZW50XT90aGlzLnRvb2xUaXBbci4kY29udGVudF06bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxvLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsby5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyByLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcj10LmNvbG9yfHwiIzAwMDAwMCI7cmV0dXJuIHR9KSksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGEsdGhpcy5tYXJnaW5bci4kdG9TdHlsZV0oKSk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbci4kdG9TdHlsZV0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW3IuJHRvU3R5bGVdKCkpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9YS5ib3JkZXJSYWRpdXM9ZS5tYXAoKGU9PmUucmFkaXVzKSkuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKChlPT5lLnN0eWxlKSkuam9pbigiICIpfWEuYm9yZGVyV2lkdGg9dC5tYXAoKGU9PmUud2lkdGgpKS5qb2luKCIgIik7YS5ib3JkZXJDb2xvcj10Lm1hcCgoZT0+ZS5jb2xvcikpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtyLiR0b0hUTUxdKGUpe3RoaXNbci4kZXh0cmFdPXt9O3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PSgwLGgucmVjb3ZlckpzVVJMKShlLnNjcmlwdFtyLiRjb250ZW50XSk7aWYoIXQpY29udGludWU7Y29uc3Qgbj0oMCxzLmZpeFVSTCkodC51cmwpO24mJmEuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbci4kdWlkXSxocmVmOm4sbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhhKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoKDAsby5nZXRNZWFzdXJlbWVudCkoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3IuJHNldFZhbHVlXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bci4kZ2V0RXh0cmFdKGUpe2lmKCF0aGlzW3IuJGV4dHJhXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbci4kZXh0cmFdPSgwLHMubGF5b3V0Tm9kZSkodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW3IuJGV4dHJhXX1bci4kdG9IVE1MXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oZSkuaHRtbDtpZighdCl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgYT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDphfT10aGlzW3IuJGdldEV4dHJhXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWF9fWNvbnN0IG49W107InN0cmluZyI9PXR5cGVvZiB0P24ucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTpuLnB1c2godCk7Y29uc3QgaT0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoaS53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKGkuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJlc2VydmUpKX0oMCxzLnNldFBhcmEpKHRoaXMsbnVsbCx0KTt0aGlzW3IuJHBvcFBhcmFdKCk7dGhpcy5yZXNlcnZlPWE7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkoIm1hcmdpbiIpLGE9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1hO2xldCBuLGksYztjb25zdCBsPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxoPWwuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZsLml0ZW1zLmNoaWxkcmVuWzBdW3IuJHRvSFRNTF0oKS5odG1sfHxbXSx1PXtvbjoodm9pZCAwIT09aFswXT9oWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1oWzFdP2hbMV06Im9mZiIpLnRvU3RyaW5nKCl9LGQ9KGwudmFsdWUmJmwudmFsdWVbci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe2M9ZltyLiR1aWRdO249InJhZGlvIjtpPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdJiZmW3IuJGRhdGFdW3IuJHVpZF18fGZbci4kdWlkXX1lbHNle249ImNoZWNrYm94IjtpPSJ4ZmFDaGVja2JveCI7cD1sW3IuJGRhdGFdJiZsW3IuJGRhdGFdW3IuJHVpZF18fGxbci4kdWlkXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W2ldLHN0eWxlOnQsZmllbGRJZDpnLGRhdGFJZDpwLHR5cGU6bixjaGVja2VkOmQseGZhT246dS5vbix4ZmFPZmY6dS5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChsKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtjJiYobS5hdHRyaWJ1dGVzLm5hbWU9Yyk7aWYoaXNSZXF1aXJlZChsKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e2ZvbnRTaXplOmBjYWxjKCR7YS5mb250JiZhLmZvbnQuc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWUmJmEudmFsdWVbci4kdGV4dF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1vLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOmNbZV18fG9bZV0sc3R5bGU6bn0sdmFsdWU6b1tlXX07Y1tlXT09PWgmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7aS5wdXNoKHQpfWx8fGkuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IGM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoYSkpe2NbImFyaWEtcmVxdWlyZWQiXT0hMDtjLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihjLm11bHRpcGxlPSEwKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjppLGF0dHJpYnV0ZXM6Y31dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT8oMCxvLmdldENvbG9yKShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiExfVtyLiR0b1N0eWxlXSgpe3JldHVybiB0aGlzLnZhbHVlP2MuVXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KTt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9e2xlZnQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueCksdG9wOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnkpLHdpZHRoOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLncpLGhlaWdodDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5oKX0sYT1bInhmYUNvbnRlbnRhcmVhIl07KDAscy5pc1ByaW50T25seSkodGhpcykmJmEucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW3IuJHVpZF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9KDAsby5nZXRNZWFzdXJlbWVudCkoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXSYmYVtyLiRkYXRhXVtyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgci5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6Yyxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1ufWMmJiIiPT09dGhpcy5oJiYodGhpcy5oPWMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZWRnZSIsITApO3RoaXMuY2FwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBuPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6YyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtufHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxvLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxpPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPWk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7aT1hfWVsc2UgaT0oMCxsLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtuKz11Lnc7aSs9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6Yyxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPWM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1pfX1lbHNle3Q9bjthPWl9aWYodCYmIiI9PT10aGlzLncpe3QrPWM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1oO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9bjt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4mJncuY2hpbGRyZW5bMF0/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdOncuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW3IuJHRhYkluZGV4XSk7dy5hdHRyaWJ1dGVzLnN0eWxlfHwody5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCBTPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT13LmNoaWxkcmVuLmxlbmd0aCYmKFtTXT13LmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHcuYXR0cmlidXRlcy5zdHlsZSxiKX1lbHNlIE9iamVjdC5hc3NpZ24oZCxiKTtwLnB1c2godyk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdCl3LmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbci4kdGV4dF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtyLiRnZXRFeHRyYV0oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0JiZ0aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMmJih3LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT13LmNoaWxkcmVuWzBdLm5hbWU/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmdy5jaGlsZHJlbiYmdy5jaGlsZHJlblswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWgtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIsaT1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO2k9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249aT0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/bjppXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jbci4kdG9TdHlsZV0oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP246aV09ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRm9udCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXNbci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9KDAscy5tZWFzdXJlVG9TdHJpbmcpKC45OSp0aGlzLnNpemUpOygwLHMuc2V0Rm9udEZhbWlseSkodGhpcyx0aGlzLHRoaXNbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2UiKTt0aGlzLmFzcGVjdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiR0b0hUTUxdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIXAuaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW3IuJGdsb2JhbERhdGFdLmltYWdlcyYmdGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW3IuJGNvbnRlbnRdKSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT0oMCxjLnN0cmluZ1RvQnl0ZXMpKGF0b2IodGhpc1tyLiRjb250ZW50XSkpKTtpZighZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxhXW9mIG0paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGEpPT50PT09ZVthXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGE7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjphPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6YT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6YT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IG49dGhpc1tyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTphLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDpuP2FyaWFMYWJlbChuW3IuJGdldFBhcmVudF0oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9vLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSwxMCk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX1bci4kdG9IVE1MXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tyLiRnZXRDaGlsZHJlbl0oKSllLnB1c2godFtyLiR0ZXh0XSgpKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fXQuSXRlbXM9SXRlbXM7Y2xhc3MgS2VlcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmludGFjdCx0KTt0aGlzLm5leHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lIiwhMCk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGE9dFtyLiR0b1N0eWxlXSgpLG49T2JqZWN0LmNyZWF0ZShudWxsKSxpPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtuLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKShpKTtuLnN0cm9rZT1hLmNvbG9yO2xldCBjLGwsaCx1LGQ9IjEwMCUiLGc9IjEwMCUiO2lmKGUudzw9aSl7W2MsbCxoLHVdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07ZD1uLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1pKXtbYyxsLGgsdV09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtnPW4uc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tjLGwsaCx1XT1bMCwwLCIxMDAlIiwiMTAwJSJdOltjLGwsaCx1XT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHA9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpmLHgxOmMseTE6bCx4MjpoLHkyOnUsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOmQsaGVpZ2h0Omcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3BdfSk7cC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHApfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKSh0aGlzW3IuJGNvbnRlbnRdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtyZXR1cm57bWFyZ2luOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRvcEluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmlnaHRJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJvdHRvbUluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9KDAsby5nZXRCQm94KShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxuPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmEmJmFbMF18fG51bGwsbGVhZGVyOm4mJm5bMF18fG51bGwsdHJhaWxlcjppJiZpWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxvLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtyLiR0b1N0eWxlXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgbj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtyLiR0b1N0eWxlXSgpLGk9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6bi5yYWRpdXMscnk6bi5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX10LlNldFByb3BlcnR5PVNldFByb3BlcnR5O2NsYXNzIFNpZ25EYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtyZXR1cm4gZT9lW3IuJHRvU3R5bGVdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNwZWFrIik7dGhpcy5kaXNhYmxlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBjLlV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOigwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpKSk7dGhpcy5oPWUuaD8oMCxvLmdldE1lYXN1cmVtZW50KShlLmgpOiIiO3RoaXMuaEFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0Iik7dGhpcy5taW5XPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiI7dGhpcy54PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGdldFN1YmZvcm1QYXJlbnRdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpOmV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9W3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJnRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT4wfHx0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpfSpbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3IuJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W3IuJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W3IuJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtyLiRpc1NwbGl0dGFibGVdKCl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYoIWVbci4kaXNTcGxpdHRhYmxlXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kdG9IVE1MXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbci4kcmVtb3ZlQ2hpbGRdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJigwLGMud2FybikoIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gby5IVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW3IuJGV4dHJhXSYmdGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbXX07KDAscy5zZXRBY2Nlc3MpKHRoaXMsYS5jbGFzcyk7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbci4kZXh0cmFdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKCksbD1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUsaD10aGlzW3IuJGlzU3BsaXR0YWJsZV0oKTtofHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHU9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW3IuJGV4dHJhXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IGQ9KDAscy50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxmPVsieGZhU3ViZm9ybSJdLGc9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7ZyYmZi5wdXNoKGcpO2Euc3R5bGU9ZDthLmNsYXNzPWY7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3IuJGdldEV4dHJhXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHA9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbT1wPzI6MTtmb3IoO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQ8bTt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0Kyspe3AmJjE9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYodGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjp1LGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gZX1pZihwJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmMD09PXRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZSYmIW5bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdD1tO2JyZWFrfX10aGlzW3IuJHBvcFBhcmFdKCk7aHx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtuW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9bDtpZih0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PT09bSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7aHx8ZGVsZXRlIHRoaXNbci4kZXh0cmFdO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBiPTAseT0wO2lmKHRoaXMubWFyZ2luKXtiPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3k9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3Qgdz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtiLHRoaXMud3x8MCksUz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQreSx0aGlzLmh8fDApLHg9W3RoaXMueCx0aGlzLnksdyxTXTsiIj09PXRoaXMudyYmKGQud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHcpKTsiIj09PXRoaXMuaCYmKGQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShTKSk7aWYoKCIwcHgiPT09ZC53aWR0aHx8IjBweCI9PT1kLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGs9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7Y29uc3QgQz1vLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsaykseCk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbci4kZXh0cmFdLmFmdGVyQnJlYWtBZnRlcj1DO3JldHVybiBvLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIEN9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtsZXQgZT10aGlzW3IuJGdldFBhcmVudF0oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT1uZXcgTWFwKHRoaXNbci4kY29udGVudF0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRmaW5hbGl6ZV0oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmKDAsYy53YXJuKSgiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbci4kdGFiSW5kZXhdPTVlM31bci4kaXNTcGxpdHRhYmxlXSgpe3JldHVybiEwfVtyLiRzZWFyY2hOb2RlXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tyLiRpZHNdLmdldChlLnNsaWNlKDEpKV06KDAsdS5zZWFyY2hOb2RlKSh0aGlzLHQsZSwhMCwhMCl9KltyLiR0b1BhZ2VzXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbci4kZXh0cmFdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W3IuJGNsZWFuUGFnZV0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixhPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgbj1udWxsLGk9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2k9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPWkudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1pLnRhcmdldH1lbHNlIGlmKGUuYnJlYWsmJmUuYnJlYWsuYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhayYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLmJlZm9yZVRhcmdldCl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1pZihpKXtjb25zdCBlPXRoaXNbci4kc2VhcmNoTm9kZV0ocyxpW3IuJGdldFBhcmVudF0oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXtuPWU7aVtyLiRleHRyYV09e319fW58fChuPXRbMF0pO25bci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfTtjb25zdCBsPW5bci4kZ2V0UGFyZW50XSgpO2xbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpsLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBoLHU9bnVsbCxkPW51bGwsZj0hMCxnPTAscD0wO2Zvcig7Oyl7aWYoZilnPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsrZyl7KDAsYy53YXJuKSgiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBhfX1oPW51bGw7dGhpc1tyLiRleHRyYV0uY3VycmVudFBhZ2VBcmVhPW47Y29uc3QgdD1uW3IuJHRvSFRNTF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZih1KXt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShuW3IuJGV4dHJhXS5zcGFjZSkuaHRtbCk7dT1udWxsfWlmKGQpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZFtyLiR0b0hUTUxdKG5bci4kZXh0cmFdLnNwYWNlKS5odG1sKTtkPW51bGx9Y29uc3QgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2Y9ITE7dGhpc1tyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGE9ZVtyLiRmbHVzaEhUTUxdKCk7aWYoYSl7Zj1mfHxhLmNoaWxkcmVuJiYwIT09YS5jaGlsZHJlbi5sZW5ndGg7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLG89e3dpZHRoOm4udyxoZWlnaHQ6bi5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Y9Znx8Yy5odG1sLmNoaWxkcmVuJiYwIT09Yy5odG1sLmNoaWxkcmVuLmxlbmd0aDtzW3RdLmNoaWxkcmVuLnB1c2goYy5odG1sKX1lbHNlIWYmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYoYy5pc0JyZWFrKCkpe2NvbnN0IGU9Yy5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXt1PXRoaXNbci4kc2VhcmNoTm9kZV0oZS5sZWFkZXIsZVtyLiRnZXRQYXJlbnRdKCkpO3U9dT91WzBdOm51bGx9aWYoZS50cmFpbGVyKXtkPXRoaXNbci4kc2VhcmNoTm9kZV0oZS50cmFpbGVyLGVbci4kZ2V0UGFyZW50XSgpKTtkPWQ/ZFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtyLiRleHRyYV0udGFyZ2V0KXtoPWVbci4kZXh0cmFdLnRhcmdldDtwPWVbci4kZXh0cmFdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbci4kZXh0cmFdLmluZGV4fWVsc2UgaWYodGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZTt0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbci4kZ2V0RXh0cmFdKCksbj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcz10O3Q9MS8wO2lmKG4gaW5zdGFuY2VvZiBQYWdlQXJlYSloPW47ZWxzZSBpZihuIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKG4pO2lmKC0xIT09ZSllPnM/dD1lLTE6cD1lO2Vsc2V7aD1uW3IuJGdldFBhcmVudF0oKTtwPWguY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihuKX19fWVsc2UgZmx1c2godCl9dGhpc1tyLiRleHRyYV0ucGFnZU51bWJlcis9MTtoJiYoaFtyLiRpc1VzYWJsZV0oKT9oW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTpoPW51bGwpO249aHx8bltyLiRnZXROZXh0UGFnZV0oKTt5aWVsZCBudWxsfX19dC5UZW1wbGF0ZT1UZW1wbGF0ZTtjbGFzcyBUZXh0IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpe3JldHVybiEwfVtyLiRvbkNoaWxkXShlKXtpZihlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnhodG1sLmlkKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9KDAsYy53YXJuKShgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtyLiRub2RlTmFtZV19LmApO3JldHVybiExfVtyLiRvblRleHRdKGUpe3RoaXNbci4kY29udGVudF1pbnN0YW5jZW9mIHIuWEZBT2JqZWN0fHxzdXBlcltyLiRvblRleHRdKGUpfVtyLiRmaW5hbGl6ZV0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0mJih0aGlzW3IuJGNvbnRlbnRdPXRoaXNbci4kY29udGVudF0ucmVwbGFjZSgvXHJcbi9nLCJcbiIpKX1bci4kZ2V0RXh0cmFdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tyLiRjb250ZW50XVtyLiR0ZXh0XSgpfVtyLiR0b0hUTUxdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdKS5odG1sO2lmKHRoaXNbci4kY29udGVudF0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW3IuJGNvbnRlbnRdLnNwbGl0KCJcdTIwMjkiKS5tYXAoKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57ZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSk7cmV0dXJuIGV9KSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3IuJGNvbnRlbnRdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKX19dC5UZXh0PVRleHQ7Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgbj10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW4gaW5zdGFuY2VvZiBEcmF3PzE6MCk7YT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bci4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3IuJGdldEV4dHJhXSgpe2lmKHZvaWQgMD09PXRoaXNbci4kZXh0cmFdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe3RoaXNbci4kZXh0cmFdPXQ7cmV0dXJuIHR9fXRoaXNbci4kZXh0cmFdPW51bGx9cmV0dXJuIHRoaXNbci4kZXh0cmFdfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD90W3IuJHRvSFRNTF0oZSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3IuJHNldFZhbHVlXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aSYmdC51aS5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygci5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IGk9ZVtyLiRleHRyYV0scz1pLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6aS53aWR0aD1NYXRoLm1heChpLndpZHRoLG8rbCk7aS5oZWlnaHQ9TWF0aC5tYXgoaS5oZWlnaHQsYytoKTtpLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWkubGluZXx8MT09PWkuYXR0ZW1wdCl7aS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7aS5jaGlsZHJlbi5wdXNoKGkubGluZSk7aS5udW1iZXJJbkxpbmU9MH1pLm51bWJlckluTGluZSs9MTtpLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09aS5hdHRlbXB0KXtpLmN1cnJlbnRXaWR0aCs9bDtpLmhlaWdodD1NYXRoLm1heChpLmhlaWdodCxpLnByZXZIZWlnaHQraCl9ZWxzZXtpLmN1cnJlbnRXaWR0aD1sO2kucHJldkhlaWdodD1pLmhlaWdodDtpLmhlaWdodCs9aDtpLmF0dGVtcHQ9MH1pLndpZHRoPU1hdGgubWF4KGkud2lkdGgsaS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2kuY2hpbGRyZW4ucHVzaCh0KTtpLndpZHRoKz1sO2kuaGVpZ2h0PU1hdGgubWF4KGkuaGVpZ2h0LGgpO2NvbnN0IGU9KDAsbi5tZWFzdXJlVG9TdHJpbmcpKGkuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBpLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjppLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgoaS53aWR0aCxsKSk7aS5oZWlnaHQrPWg7aS5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLG49YVtyLiRleHRyYV0mJmFbci4kZXh0cmFdLmF0dGVtcHR8fDAsWyxpLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LG49IiI9PT1lLmg/TmFOOmUuaCxbaSxzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltpLHNdPVtyLzIsbl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbaSxzXT1bMCxuXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbaSxzXT1bcixuXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W2ksc109W3IvMixuLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W2ksc109WzAsbi8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbaSxzXT1bcixuLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbaSxzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltpLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstaSwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsaV07W3Isbl09W24sLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtpLHNdO1tyLG5dPVstciwtbl07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLWldO1tyLG5dPVstbixyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLG4pLE1hdGguYWJzKHIpLE1hdGguYWJzKG4pXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO2NvbnN0IGM9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYTtyZXR1cm4gbytpPmMuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG8tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX07dC5mbHVzaEhUTUw9ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW3IuJGV4dHJhXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtyLiRleHRyYV0uYXR0cmlidXRlcyxjaGlsZHJlbjplW3IuJGV4dHJhXS5jaGlsZHJlbn07aWYoZVtyLiRleHRyYV0uZmFpbGluZ05vZGUpe2NvbnN0IGE9ZVtyLiRleHRyYV0uZmFpbGluZ05vZGVbci4kZmx1c2hIVE1MXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfWlmKDA9PT10LmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gdH07dC5nZXRBdmFpbGFibGVTcGFjZT1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbci4kZXh0cmFdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW3IuJGV4dHJhXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtyLiRleHRyYV0ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOmVbci4kZXh0cmFdLmNvbHVtbldpZHRocy5zbGljZShlW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpKSxoZWlnaHQ6dC5oZWlnaHQtbn07Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJue3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2RlZmF1bHQ6cmV0dXJuIHR9fTt2YXIgcj1hKDc1KSxuPWEoODIpO2Z1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbXB1dGVCYm94PWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfW49W2UueCxlLnksaSxzXX1yZXR1cm4gbn07dC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOmF9PXQse3N0eWxlOm59PWEsaT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07YS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczphLGluc2V0czpzfT1lLmJvcmRlcltyLiRleHRyYV07bGV0IG8sYyxsPXNbMF0saD1zWzNdO2NvbnN0IHU9c1swXStzWzJdLGQ9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmwtPWFbMF0vMjtoLT1hWzNdLzI7bz1gY2FsYygxMDAlICsgJHsoYVsxXSthWzNdKS8yLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAkeyhhWzBdK2FbMl0pLzItdX1weClgO2JyZWFrO2Nhc2UibGVmdCI6bC09YVswXTtoLT1hWzNdO289YGNhbGMoMTAwJSArICR7YVsxXSthWzNdLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAke2FbMF0rYVsyXS11fXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bz1kP2BjYWxjKDEwMCUgLSAke2R9cHgpYDoiMTAwJSI7Yz11P2BjYWxjKDEwMCUgLSAke3V9cHgpYDoiMTAwJSJ9Y29uc3QgZj1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmYsc3R5bGU6e3RvcDpgJHtsfXB4YCxsZWZ0OmAke2h9cHhgLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PW5bZV0pe2cuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuY2hpbGRyZW4ucHVzaChnLHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PW5bZV0pe2kuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfSJhYnNvbHV0ZSI9PT1uLnBvc2l0aW9uP2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiOmkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2RlbGV0ZSBuLnBvc2l0aW9uO2lmKG4uYWxpZ25TZWxmKXtpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPW4uYWxpZ25TZWxmO2RlbGV0ZSBuLmFsaWduU2VsZn1yZXR1cm4gaX07dC5maXhEaW1lbnNpb25zPWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYodC5sYXlvdXQmJnQubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgYT10W3IuJGV4dHJhXSxuPWUuY29sU3BhbjtsZXQgaTtpPS0xPT09bj9hLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6YS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uLGEuY3VycmVudENvbHVtbituKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKGkpfHwoZS53PWkpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfTt0LmZpeFRleHRJbmRlbnQ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PSgwLGkuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLHI9KDAsaS5nZXRNZWFzdXJlbWVudCkoZVthXSwiMHB4Iik7ZVthXT1yLXQrInB4In07dC5maXhVUkw9ZnVuY3Rpb24gZml4VVJMKGUpe2NvbnN0IHQ9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShlLG51bGwse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtyZXR1cm4gdD90LmhyZWY6bnVsbH07dC5pc1ByaW50T25seT1pc1ByaW50T25seTt0LmxheW91dENsYXNzPWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19O3QubGF5b3V0Tm9kZT1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGE9bnVsbCxuPW51bGwsaT0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsbz0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O289ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGM9bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7Yz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGg9ZS5mb250O2lmKCFoKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2xldCBhPWVbci4kZ2V0UGFyZW50XSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2g9YS5mb250O2JyZWFrfWE9YVtyLiRnZXRQYXJlbnRdKCl9fWNvbnN0IHU9KGUud3x8dC53aWR0aCktcyxkPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbci4kY29udGVudF0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSxoLGwsYyxkLHUpO249dC53aWR0aDthPXQuaGVpZ2h0O2k9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtyLiR0ZXh0XSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGgsbCxjLGQsdSk7bj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09bnx8ZS53fHwobis9cyk7bnVsbD09PWF8fGUuaHx8KGErPW8pfXJldHVybnt3Om4saDphLGlzQnJva2VuOml9fTt0Lm1lYXN1cmVUb1N0cmluZz1tZWFzdXJlVG9TdHJpbmc7dC5zZXRBY2Nlc3M9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fTt0LnNldEZvbnRGYW1pbHk9ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxyKXtpZighYSl7ZGVsZXRlIHIuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgbj0oMCxpLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKTtyLmZvbnRGYW1pbHk9YCIke259ImA7Y29uc3Qgbz1hLmZpbmQobik7aWYobyl7Y29uc3R7Zm9udEZhbWlseTphfT1vLnJlZ3VsYXIuY3NzRm9udEluZm87YSE9PW4mJihyLmZvbnRGYW1pbHk9YCIke2F9ImApO2NvbnN0IGk9Z2V0Q3VycmVudFBhcmEodCk7aWYoaSYmIiIhPT1pLmxpbmVIZWlnaHQpcmV0dXJuO2lmKHIubGluZUhlaWdodClyZXR1cm47Y29uc3QgYz0oMCxzLnNlbGVjdEZvbnQpKGUsbyk7YyYmKHIubGluZUhlaWdodD1NYXRoLm1heCgxLjIsYy5saW5lSGVpZ2h0KSl9fTt0LnNldE1pbk1heERpbWVuc2lvbnM9ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fTt0LnNldFBhcmE9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzJiZhLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSl7aWYodCl7IiI9PT1lLmgmJih0LmhlaWdodD0iYXV0byIpOyIiPT09ZS53JiYodC53aWR0aD0iYXV0byIpfWNvbnN0IG49Z2V0Q3VycmVudFBhcmEoZSk7aWYobil7Y29uc3QgZT1hLmF0dHJpYnV0ZXMuc3R5bGU7ZS5kaXNwbGF5PSJmbGV4IjtlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7c3dpdGNoKG4udkFsaWduKXtjYXNlInRvcCI6ZS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjplLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjplLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWNvbnN0IHQ9bltyLiR0b1N0eWxlXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fTt0LnRvU3R5bGU9ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PWVbaV07aWYobnVsbCE9PXQpaWYoYy5oYXNPd25Qcm9wZXJ0eShpKSljW2ldKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe2NvbnN0IGU9dFtyLiR0b1N0eWxlXSgpO2U/T2JqZWN0LmFzc2lnbihhLGUpOigwLG4ud2FybikoYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHtpfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiBhfTt2YXIgcj1hKDc1KSxuPWEoMiksaT1hKDc2KSxzPWEoODMpLG89YSg4NCk7ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgYz17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKGEmJighYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtsZXQgbj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQmJmEubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW3IuJGV4dHJhXSxpPWUuY29sU3BhbjtsZXQgcztpZigtMT09PWkpe3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocyl8fChuPWUudz1zKX10LndpZHRoPSIiIT09bj9tZWFzdXJlVG9TdHJpbmcobik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFhfHwhYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW3IuJG5vZGVOYW1lXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bci4kdG9TdHlsZV0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsYSxuLGkscyl7Y29uc3QgYz1uZXcgby5UZXh0TWVhc3VyZSh0LGEsbixpKTsic3RyaW5nIj09dHlwZW9mIGU/Yy5hZGRTdHJpbmcoZSk6ZVtyLiRwdXNoR2x5cGhzXShjKTtyZXR1cm4gYy5jb21wdXRlKHMpfWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZvbnRGaW5kZXI9dm9pZCAwO3QuZ2V0TWV0cmljcz1mdW5jdGlvbiBnZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PSgwLG4uc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpLGk9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUsaSl9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgaT1lLnNpemV8fDEwLHM9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbz12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OnMqaSxsaW5lR2FwOm8qaSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxzLW8pKml9fTt0LnNlbGVjdEZvbnQ9c2VsZWN0Rm9udDt2YXIgcj1hKDc1KSxuPWEoNzYpLGk9YSgyKTt0LkZvbnRGaW5kZXI9Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgbj0iIjtjb25zdCBpPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9uPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYobj0iYm9sZCIpO2lmKCFuKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lJiZlLnBzTmFtZS5pbmNsdWRlcygiQm9sZCIpKSYmKG49ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZSYmKGUucHNOYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWUuZW5kc1dpdGgoIkl0IikpKSYmKG4rPSJpdGFsaWMiKX1ufHwobj0icmVndWxhciIpO3Jbbl09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IHI9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBuPWUucmVwbGFjZShyLCIiKTthPXRoaXMuZm9udHMuZ2V0KG4pO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9bj1uLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZShyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7bj1uLnJlcGxhY2UoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJigwLGkud2FybikoYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpOygwLGkud2FybikoYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciByPWEoODMpO2NsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3QgaT1uLmZpbmQoZS50eXBlZmFjZSk7aWYoaSl7dGhpcy5wZGZGb250PSgwLHIuc2VsZWN0Rm9udCkoZSxpKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KG4pfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodCYmdC5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5mb250RmluZGVyPXI7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxhLHIpXX1wdXNoRGF0YShlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1yLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09ci5wYXJhTWFyZ2luW2VdKTtjb25zdCBuPW5ldyBGb250SW5mbyhlLHQsYXx8ci5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7bi5wZGZGb250fHwobi5wZGZGb250PXIucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKG4pfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fXQuVGV4dE1lYXN1cmU9Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsYSxyKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGEpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxhKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGE9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCByPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLG49dC5wZGZGb250LGk9bi5saW5lSGVpZ2h0fHwxLjIscz10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixpKSphLG89aS0odm9pZCAwPT09bi5saW5lR2FwPy4yOm4ubGluZUdhcCksYz1NYXRoLm1heCgxLG8pKmEsbD1hLzFlMyxoPW4uZGVmYXVsdFdpZHRofHxuLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9bi5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksYT1uLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1lLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW3QqbCtyLHMsYyxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9ZWxzZXtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfX1jb21wdXRlKGUpe2xldCB0PS0xLGE9MCxyPTAsbj0wLGk9MCxzPTAsbz0hMSxjPSEwO2ZvcihsZXQgbD0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2w8aDtsKyspe2NvbnN0W2gsdSxkLGYsZ109dGhpcy5nbHlwaHNbbF0scD0iICI9PT1mLG09Yz9kOnU7aWYoZyl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtjPSExfWVsc2UgaWYocClpZihpK2g+ZSl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtvPSEwO2M9ITF9ZWxzZXtzPU1hdGgubWF4KG0scyk7YT1pO2krPWg7dD1sfWVsc2UgaWYoaStoPmUpe24rPXM7cz1tO2lmKC0xIT09dCl7bD10O3I9TWF0aC5tYXgocixhKTtpPTA7dD0tMTthPTB9ZWxzZXtyPU1hdGgubWF4KHIsaSk7aT1ofW89ITA7Yz0hMX1lbHNle2krPWg7cz1NYXRoLm1heChtLHMpfX1yPU1hdGgubWF4KHIsaSk7bis9cyt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKnIsaGVpZ2h0Om4saXNCcm9rZW46b319fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFIYW5kbGVyPXZvaWQgMDt2YXIgcj1hKDc1KTt0LkRhdGFIYW5kbGVyPWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbci4kZ2V0Q2hpbGRyZW5dKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtuLGldPWE7aWYobisxPT09aS5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcz1pWysrYVswXV0sbz1lLmdldChzW3IuJHVpZF0pO2lmKG8pc1tyLiRzZXRWYWx1ZV0obyk7ZWxzZXtjb25zdCB0PXNbci4kZ2V0QXR0cmlidXRlc10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbci4kdWlkXSk7aWYodCl7YVtyLiRzZXRWYWx1ZV0odCk7YnJlYWt9fX1jb25zdCBjPXNbci4kZ2V0Q2hpbGRyZW5dKCk7Yy5sZW5ndGg+MCYmdC5wdXNoKFstMSxjXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbci4kZ2V0Q2hpbGRyZW5dKCkpImRhdGEiIT09ZVtyLiRub2RlTmFtZV0mJmVbci4kdG9TdHJpbmddKGEpO3RoaXMuZGF0YVtyLiR0b1N0cmluZ10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBUGFyc2VyPXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNjQpLGk9YSg4Nykscz1hKDIpO2NsYXNzIFhGQVBhcnNlciBleHRlbmRzIG4uWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlPW51bGwsdD0hMSl7c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBpLkJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPW4uWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3I7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1uLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXt0aGlzLl9jdXJyZW50W3IuJGZpbmFsaXplXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6byx2YWx1ZTpjfW9mIGUpaWYoInhtbG5zIj09PW8pYT8oMCxzLndhcm4pKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWM7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW8uc3Vic3RyaW5nKCJ4bWxuczoiLmxlbmd0aCk7bnx8KG49W10pO24ucHVzaCh7cHJlZml4OmUsdmFsdWU6Y30pfWVsc2V7Y29uc3QgZT1vLmluZGV4T2YoIjoiKTtpZigtMT09PWUpaVtvXT1jO2Vsc2V7bGV0IHQ9aVtyLiRuc0F0dHJpYnV0ZXNdO3R8fCh0PWlbci4kbnNBdHRyaWJ1dGVzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdFthLG5dPVtvLnNsaWNlKDAsZSksby5zbGljZShlKzEpXTtsZXQgcz10W2FdO3N8fChzPXRbYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7c1tuXT1jfX1yZXR1cm5bYSxuLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixpLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtvLGNdPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4OmMsbmFtZTpvLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6bixwcmVmaXhlczppfSk7bFtyLiRnbG9iYWxEYXRhXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xbci4kZmluYWxpemVdKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXShsKSYmbFtyLiRzZXRJZF0odGhpcy5faWRzKTtsW3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1sfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbci4kaXNDREFUQVhtbF0oKSYmInN0cmluZyI9PXR5cGVvZiB0W3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3IuJGNvbnRlbnRdKTt0W3IuJGNvbnRlbnRdPW51bGw7dFtyLiRvbkNoaWxkXShhKX10W3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXSh0KSYmdFtyLiRzZXRJZF0odGhpcy5faWRzKTt0W3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX10LlhGQVBhcnNlcj1YRkFQYXJzZXJ9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CdWlsZGVyPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpLGk9YSg4OCkscz1hKDgwKSxvPWEoOTcpLGM9YSgyKTtjbGFzcyBSb290IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbbi4kaWRzXT1lfVtuLiRvbkNoaWxkXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bbi4kZmluYWxpemVdKCl7c3VwZXJbbi4kZmluYWxpemVdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSl7dGhpc1tuLiRpZHNdLnNldChuLiRyb290LHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW24uJHJlc29sdmVQcm90b3R5cGVzXSh0aGlzW24uJGlkc10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtuLiRpZHNdPXRoaXNbbi4kaWRzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbi4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyLk5hbWVzcGFjZUlkcykubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpzLHByZWZpeGVzOm99KXtjb25zdCBjPW51bGwhPT1zO2lmKGMpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uocyl9byYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KG8pO2lmKGEuaGFzT3duUHJvcGVydHkobi4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9YVtuLiRuc0F0dHJpYnV0ZXNdO2xldCByPW51bGw7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoYSk9PT1lKXtyPXt4ZmE6bn07YnJlYWt9fXI/YVtuLiRuc0F0dHJpYnV0ZXNdPXI6ZGVsZXRlIGFbbi4kbnNBdHRyaWJ1dGVzXX1jb25zdCBsPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLGg9bCYmbFtyLiRidWlsZFhGQU9iamVjdF0odCxhKXx8bmV3IEVtcHR5O2hbbi4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsoY3x8b3x8aFtuLiRpc05zQWdub3N0aWNdKCkpJiYoaFtuLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOmMscHJlZml4ZXM6byxuc0Fnbm9zdGljOmhbbi4kaXNOc0Fnbm9zdGljXSgpfSk7cmV0dXJuIGh9aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6bn1db2YgT2JqZWN0LmVudHJpZXMoci5OYW1lc3BhY2VJZHMpKWlmKG4oZSkpe3Q9aS5OYW1lc3BhY2VTZXRVcFthXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOmF9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSk7bGV0IHI9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFyKXtyPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LHIpfXIucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQmJnQubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpOygwLGMud2FybikoYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCgoe3ByZWZpeDplfSk9Pnt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSkucG9wKCl9KSk7ciYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgcj1hKDg5KSxuPWEoOTApLGk9YSg5MSkscz1hKDkyKSxvPWEoOTMpLGM9YSg5NCksbD1hKDgwKSxoPWEoOTUpLHU9YSg5Nik7Y29uc3QgZD17Y29uZmlnOnIuQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246bi5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db25maWdOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSksaT1hKDc2KSxzPWEoMik7Y29uc3Qgbz1yLk5hbWVzcGFjZUlkcy5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgbi5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbWQiKX19Y2xhc3MgQXJlYSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFyZWEiKTt0aGlzLmxldmVsPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmVoYXZpb3JPdmVycmlkZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBuLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIG4uSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBuLlhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVtYmVkIil9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHQiKX19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlcXVhdGUiKTt0aGlzLmZvcmNlPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGE9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgciBvZiBhLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KSk7MT09PXIubGVuZ3RoJiZyLnB1c2goclswXSk7ZS5wdXNoKHIpfXJldHVybigwLHMuc2hhZG93KSh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImV4Y2x1ZGUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIEZvbnRJbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhY2tldHMiKX1bbi4kZmluYWxpemVdKCl7IioiIT09dGhpc1tuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VPZmZzZXQiKTt0aGlzLng9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VSYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tuLiRjb250ZW50XT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVjb3JkIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW24uJGNvbnRlbnRdLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW24uJGNvbnRlbnRdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyZWxldmFudCIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmFtZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpOyh0aGlzW24uJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbbi4kY29udGVudF0pKSYmKDAscy53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3RhcGxlIik7dGhpcy5tb2RlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN0YXJ0UGFnZSIsMCwoZT0+ITApKX19Y2xhc3MgU3VibWl0Rm9ybWF0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0YWdnZWQiKX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidXJpIil9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aW5kb3ciKX1bbi4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW24uJGNvbnRlbnRdPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tuLiRjb250ZW50XT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywieGRjIiwhMCk7dGhpcy51cmk9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBGb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fXQuQ29uZmlnTmFtZXNwYWNlPUNvbmZpZ05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNvbm5lY3Rpb25TZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFVyaSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fXQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT1Db25uZWN0aW9uU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGF0YXNldHNOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3Nyk7Y29uc3QgaT1uLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZDtjbGFzcyBEYXRhIGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiZGF0YSIsZSl9W3IuJGlzTnNBZ25vc3RpY10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W3IuJG9uQ2hpbGRdKGUpe2NvbnN0IHQ9ZVtyLiRub2RlTmFtZV07KCJkYXRhIj09PXQmJmVbci4kbmFtZXNwYWNlSWRdPT09aXx8IlNpZ25hdHVyZSI9PT10JiZlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX19dC5EYXRhc2V0c05hbWVzcGFjZT1EYXRhc2V0c05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsZVNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KSxpPWEoNzYpO2NvbnN0IHM9ci5OYW1lc3BhY2VJZHMubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBuLlhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBuLlhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IG4uWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIExvY2FsZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBuLlhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgbi5YRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgbi5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19dC5Mb2NhbGVTZXROYW1lc3BhY2U9TG9jYWxlU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NvbnN0IGk9ci5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkO2NsYXNzIFNpZ25hdHVyZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9fXQuU2lnbmF0dXJlTmFtZXNwYWNlPVNpZ25hdHVyZU5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX10LlN0eWxlc2hlZXROYW1lc3BhY2U9U3R5bGVzaGVldE5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhkcE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KTtjb25zdCBpPXIuTmFtZXNwYWNlSWRzLnhkcC5pZDtjbGFzcyBYZHAgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtuLiRvbkNoaWxkQ2hlY2tdKGUpe2NvbnN0IHQ9ci5OYW1lc3BhY2VJZHNbZVtuLiRub2RlTmFtZV1dO3JldHVybiB0JiZlW24uJG5hbWVzcGFjZUlkXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX19dC5YZHBOYW1lc3BhY2U9WGRwTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGh0bWxOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDgyKSxzPWEoNzYpO2NvbnN0IG89bi5OYW1lc3BhY2VJZHMueGh0bWwuaWQsYz1TeW1ib2woKSxsPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksaD1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT57ZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpO3JldHVybigwLGkubWVhc3VyZVRvU3RyaW5nKSguOTkqZSl9XSxbImxldHRlci1zcGFjaW5nIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbiIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tdG9wIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbInRleHQtaW5kZW50IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXV0pLHU9L1xzKy9nLGQ9L1tcclxuXSsvZyxmPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIG47Y29uc3Qgbz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1oLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHI9YTtlJiYocj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEsbykpO3QuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm0/bi50cmFuc2Zvcm09YCR7blt0XX0gJHtyfWA6bi50cmFuc2Zvcm09cjpuW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1yfW4uZm9udEZhbWlseSYmKDAsaS5zZXRGb250RmFtaWx5KSh7dHlwZWZhY2U6bi5mb250RmFtaWx5LHdlaWdodDpuLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6bi5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6by5mb250U2l6ZXx8MH0sdCx0W3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsbik7aWYoYSYmbi52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PW4udmVydGljYWxBbGlnbiYmbi5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxhPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKG4uZm9udFNpemUpO24uZm9udFNpemU9KDAsaS5tZWFzdXJlVG9TdHJpbmcpKGEqZSk7bi52ZXJ0aWNhbEFsaWduPSgwLGkubWVhc3VyZVRvU3RyaW5nKShNYXRoLnNpZ24oKDAscy5nZXRNZWFzdXJlbWVudCkobi52ZXJ0aWNhbEFsaWduKSkqYSp0KX1hJiZuLmZvbnRTaXplJiYobi5mb250U2l6ZT1gY2FsYygke24uZm9udFNpemV9ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgKTsoMCxpLmZpeFRleHRJbmRlbnQpKG4pO3JldHVybiBufWNvbnN0IGc9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihvLHQpO3RoaXNbY109ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtyLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZChhKTtyZXR1cm4gbC5oYXModCl9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuIWcuaGFzKHRoaXNbci4kbm9kZU5hbWVdKX1bci4kb25UZXh0XShlLHQ9ITEpe2lmKHQpdGhpc1tjXT0hMDtlbHNle2U9ZS5yZXBsYWNlKGQsIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlKHUsIiAiKSl9ZSYmKHRoaXNbci4kY29udGVudF0rPWUpfVtyLiRwdXNoR2x5cGhzXShlLHQ9ITApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgaT1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT0oMCxzLnN0cmlwUXVvdGVzKSh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKChlPT4oMCxzLmdldE1lYXN1cmVtZW50KShlKSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOm4udG9wPW4uYm90dG9tPW4ubGVmdD1uLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOm4udG9wPW4uYm90dG9tPWVbMF07bi5sZWZ0PW4ucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6bi50b3A9ZVswXTtuLmJvdHRvbT1lWzJdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0Om4udG9wPWVbMF07bi5sZWZ0PWVbMV07bi5ib3R0b209ZVsyXTtuLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjpuLnRvcD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOm4uYm90dG9tPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOm4ubGVmdD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6bi5yaWdodD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjppPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpfWUucHVzaERhdGEoYSxuLGkpO2lmKHRoaXNbci4kY29udGVudF0pZS5hZGRTdHJpbmcodGhpc1tyLiRjb250ZW50XSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW3IuJGdldENoaWxkcmVuXSgpKSIjdGV4dCIhPT10W3IuJG5vZGVOYW1lXT90W3IuJHB1c2hHbHlwaHNdKGUpOmUuYWRkU3RyaW5nKHRbci4kY29udGVudF0pO3QmJmUucG9wRm9udCgpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW3IuJGNvbnRlbnRdKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW2NdP3RoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlKGYsIlxuIik6dm9pZCAwOnRoaXNbci4kY29udGVudF18fHZvaWQgMDtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tyLiRub2RlTmFtZV0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbY10pfSxjaGlsZHJlbjp0LHZhbHVlOmF9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9KDAsaS5maXhVUkwpKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtyLiRwdXNoR2x5cGhzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbci4kcHVzaEdseXBoc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1zdXBlcltyLiR0b0hUTUxdKGUpLHtodG1sOmF9PXQ7aWYoIWEpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W3IuJHRleHRdKCl7cmV0dXJuIlxuIn1bci4kcHVzaEdseXBoc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjp0fTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tyLiRjb250ZW50XXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXMmJmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bci4kcHVzaEdseXBoc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bci4kcHVzaEdseXBoc10oZSl7c3VwZXJbci4kcHVzaEdseXBoc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W3IuJHRleHRdKCl7cmV0dXJuIHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbci4kdGV4dF0oKTpzdXBlcltyLiR0ZXh0XSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGh0bWxOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhodG1sTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fXQuWGh0bWxOYW1lc3BhY2U9WGh0bWxOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtyZXR1cm4gbmV3IG4uWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19dC5Vbmtub3duTmFtZXNwYWNlPVVua25vd25OYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0UmVhZGVyPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoNjQpO2Z1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuKDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGUpfWNhdGNoKHQpeygwLHIud2FybikoYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19dC5EYXRhc2V0UmVhZGVyPWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IGkuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaChlKXt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZSgoMCxuLnBhcnNlWEZBUGF0aCkoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGEmJiJ2YWx1ZSI9PT1hLm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhSZWY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoMTUpLG89YSg1KSxjPWEoNjUpO3QuWFJlZj1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy54cmVmc3Rtcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IG4uUmVmU2V0O3RoaXMuc3RhdHM9bmV3IGkuRG9jU3RhdHModC5tc2dIYW5kbGVyKTt0aGlzLl9uZXdSZWZOdW09bnVsbH1nZXROZXdSZWYoKXtudWxsPT09dGhpcy5fbmV3UmVmTnVtJiYodGhpcy5fbmV3UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3JldHVybiBuLlJlZi5nZXQodGhpcy5fbmV3UmVmTnVtKyssMCl9cmVzZXROZXdSZWYoKXt0aGlzLl9uZXdSZWZOdW09bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxzO2lmKGUpeygwLHIud2FybikoIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lJiZlLmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgYy5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGEscix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXtzPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYocyBpbnN0YW5jZW9mIG4uRGljdCl0cnl7aWYocy5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIG4uRGljdCl7dGhpcy5yb290PXM7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtjb25zdCB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsbi5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCBhPWUuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIG4uRGljdHx8IWEuZGljdHx8KGE9YS5kaWN0KTtpZighKGEgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiBhfXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxhPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1hLnN0cmVhbVBvcztlLmJ1ZjE9YS5wYXJzZXJCdWYxO2UuYnVmMj1hLnBhcnNlckJ1ZjI7bGV0IGk7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGEpfHwhKCJlbnRyeUNvdW50ImluIGEpKXtpZigoMCxuLmlzQ21kKShpPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhazthLmZpcnN0RW50cnlOdW09aTthLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1hLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1hLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBpPWEuZW50cnlOdW07aTxvO2krKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1pO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCk7Yy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtvfWApOzA9PT1pJiZjLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbaStzXXx8KHRoaXMuZW50cmllc1tpK3NdPWMpfWEuZW50cnlOdW09MDthLnN0cmVhbVBvcz10LnBvczthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGEuZmlyc3RFbnRyeU51bTtkZWxldGUgYS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGl9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LGE9dC5nZXQoIlciKTtsZXQgcj10LmdldCgiSW5kZXgiKTtyfHwocj1bMCx0LmdldCgiU2l6ZSIpXSk7dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXRoaXMucmVhZFhSZWZTdHJlYW0oZSk7ZGVsZXRlIHRoaXMuc3RyZWFtU3RhdGU7cmV0dXJuIGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbYSxuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtvfSwgJHtjfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke299LCAke2N9YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1hJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3Uub2Zmc2V0PWw7dS5nZW49aDtzd2l0Y2goYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke2N9YCl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTA7dC5zdHJlYW1Qb3M9ZS5wb3M7cy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gcmVhZFRva2VuKGUsdCl7bGV0IGE9IiIscj1lW3RdO2Zvcig7MTAhPT1yJiYxMyE9PXImJjYwIT09ciYmISgrK3Q+PWUubGVuZ3RoKTspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUocik7cj1lW3RdfXJldHVybiBhfWZ1bmN0aW9uIHNraXBVbnRpbChlLHQsYSl7Y29uc3Qgcj1hLmxlbmd0aCxuPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDt0PG47KXtsZXQgbj0wO2Zvcig7bjxyJiZlW3Qrbl09PT1hW25dOykrK247aWYobj49cilicmVhazt0Kys7aSsrfXJldHVybiBpfWNvbnN0IGU9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHQ9L1xiZW5kb2JqW1xiXHNdJC8sYT0vXHMrKFxkK1xzK1xkK1xzK29ialtcYlxzPF0pJC8sbz1uZXcgVWludDhBcnJheShbMTE2LDExNCw5NywxMDUsMTA4LDEwMSwxMTRdKSxjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbD1uZXcgVWludDhBcnJheShbMTExLDk4LDEwNl0pLGg9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCB1PXRoaXMuc3RyZWFtO3UucG9zPTA7Y29uc3QgZD11LmdldEJ5dGVzKCksZj1kLmxlbmd0aDtsZXQgZz11LnN0YXJ0O2NvbnN0IHA9W10sbT1bXTtmb3IoO2c8Zjspe2xldCBuPWRbZ107aWYoOT09PW58fDEwPT09bnx8MTM9PT1ufHwzMj09PW4peysrZztjb250aW51ZX1pZigzNz09PW4pe2RveysrZztpZihnPj1mKWJyZWFrO249ZFtnXX13aGlsZSgxMCE9PW4mJjEzIT09bik7Y29udGludWV9Y29uc3QgYj1yZWFkVG9rZW4oZCxnKTtsZXQgeTtpZihiLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbNF0pKSl7Zys9c2tpcFVudGlsKGQsZyxvKTtwLnB1c2goZyk7Zys9c2tpcFVudGlsKGQsZyxjKX1lbHNlIGlmKHk9ZS5leGVjKGIpKXtjb25zdCBlPTB8eVsxXSxuPTB8eVsyXTtsZXQgbyxjPWcrYi5sZW5ndGgsZj0hMTtpZih0aGlzLmVudHJpZXNbZV0pe2lmKHRoaXMuZW50cmllc1tlXS5nZW49PT1uKXRyeXtuZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUubWFrZVN1YlN0cmVhbShjKSl9KS5nZXRPYmooKTtmPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBpLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxyLndhcm4pKGBpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgke2J9KTogIiR7ZX0iLmApOmY9ITB9fWVsc2UgZj0hMDtmJiYodGhpcy5lbnRyaWVzW2VdPXtvZmZzZXQ6Zy11LnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2Zvcig7YzxkLmxlbmd0aDspe2NvbnN0IGU9Yytza2lwVW50aWwoZCxjLGwpKzQ7bz1lLWc7Y29uc3Qgbj1NYXRoLm1heChlLTI1LGMpLGk9KDAsci5ieXRlc1RvU3RyaW5nKShkLnN1YmFycmF5KG4sZSkpO2lmKHQudGVzdChpKSlicmVhazt7Y29uc3QgZT1hLmV4ZWMoaSk7aWYoZSYmZVsxXSl7KDAsci53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCBuZXcgIm9iaiIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLicpO28tPWVbMV0ubGVuZ3RoO2JyZWFrfX1jPWV9Y29uc3QgcD1kLnN1YmFycmF5KGcsZytvKSx3PXNraXBVbnRpbChwLDAsaCk7aWYodzxvJiZwW3crNV08NjQpe20ucHVzaChnLXUuc3RhcnQpO3RoaXMueHJlZnN0bXNbZy11LnN0YXJ0XT0xfWcrPW99ZWxzZSBpZihiLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbN10pKSl7cC5wdXNoKGcpO2crPXNraXBVbnRpbChkLGcsYyl9ZWxzZSBnKz1iLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIG0pe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1sZXQgYix5O2Zvcihjb25zdCBlIG9mWy4uLnAsImdlbmVyYXRpb25GYWxsYmFjayIsLi4ucF0pe2lmKCJnZW5lcmF0aW9uRmFsbGJhY2siPT09ZSl7aWYoIXkpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfXUucG9zPWU7Y29uc3QgdD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksYT10LmdldE9iaigpO2lmKCEoMCxuLmlzQ21kKShhLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3Qgcj10LmdldE9iaigpO2lmKCEociBpbnN0YW5jZW9mIG4uRGljdCkpY29udGludWU7bGV0IGk9ITE7dHJ5e2NvbnN0IGU9ci5nZXQoIlJvb3QiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2NvbnN0IHQ9ZS5nZXQoIlBhZ2VzIik7aWYoISh0IGluc3RhbmNlb2Ygbi5EaWN0KSljb250aW51ZTtjb25zdCBhPXQuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIoYSkmJihpPSEwKX1jYXRjaChlKXt5PWU7Y29udGludWV9aWYoaSYmci5oYXMoIklEIikpcmV0dXJuIHI7Yj1yfWlmKGIpcmV0dXJuIGI7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7dGhyb3cgbmV3IHIuSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O3RyeXtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXsoMCxyLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgaT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgYyxsPWkuZ2V0T2JqKCk7aWYoKDAsbi5pc0NtZCkobCwieHJlZiIpKXtjPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShpKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9Yyk7bD1jLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobCkpe2NvbnN0IGU9bDtpZighKGUgaW4gdGhpcy54cmVmc3Rtcykpe3RoaXMueHJlZnN0bXNbZV09MTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSl9fX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpLmdldE9iaigpKSYmKDAsbi5pc0NtZCkoaS5nZXRPYmooKSwib2JqIikmJihsPWkuZ2V0T2JqKCkpaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7Yz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1jKTtpZighYyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWMuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIG4uUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1yZXR1cm4gdGhpcy50b3BEaWN0fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSk7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKCFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLGk9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PWkpe2kgaW5zdGFuY2VvZiBuLkRpY3QmJiFpLm9iaklkJiYoaS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpe3RoaXMuX2NhY2hlTWFwLnNldChhLHMpO3JldHVybiBzfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpOygwLHIud2FybikoYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbi5DSVJDVUxBUl9SRUZ9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIG4uRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IGM9ZS5nZW47bGV0IGw9ZS5udW07aWYodC5nZW4hPT1jKXtjb25zdCBzPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPGMpeygwLHIud2Fybikocyk7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQobi5SZWYuZ2V0KGwsdC5nZW4pLHQsYSl9dGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09bHx8ZiE9PWN8fCEoZyBpbnN0YW5jZW9mIG4uQ21kKSl0aHJvdyBuZXcgaS5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2w9cGFyc2VJbnQoZy5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGwpKXJldHVybiBsfXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3UuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obCxjKSk6dS5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGwsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBjPXQub2Zmc2V0LGw9dGhpcy5mZXRjaChuLlJlZi5nZXQoYywwKSk7aWYoIShsIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBoPWwuZGljdC5nZXQoIkZpcnN0IiksdT1sLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fCFOdW1iZXIuaXNJbnRlZ2VyKHUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBmPW5ldyBBcnJheSh1KSxnPW5ldyBBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7KytlKXtjb25zdCB0PWQuZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9ZC5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2F9YCk7ZltlXT10O2dbZV09YX1jb25zdCBwPShsLnN0YXJ0fHwwKStoLG09bmV3IEFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTsrK2Upe2NvbnN0IHQ9ZTx1LTE/Z1tlKzFdLWdbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7ZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwubWFrZVN1YlN0cmVhbShwK2dbZV0sdCxsLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1kLmdldE9iaigpO21bZV09YTtpZihhIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IG49ZltlXSxpPXRoaXMuZW50cmllc1tuXTtpJiZpLm9mZnNldD09PWMmJmkuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KG4sYSl9aWYodm9pZCAwPT09KHQ9bVt0Lmdlbl0pKXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuLlJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmlzTm9kZUpTPXZvaWQgMDtjb25zdCBhPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPWF9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIHI9YSgyKTtjb25zdCBuPTEsaT0yLHM9MSxvPTIsYz0zLGw9NCxoPTUsdT02LGQ9NyxmPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCgwLHIudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgci5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLk1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oZS5tZXNzYWdlLGUuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgci5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9fXQuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPWU9Pntjb25zdCB0PWUuZGF0YTtpZih0LnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKHQuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1uKWEucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYodC5jYWxsYmFjayE9PWkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IHI9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscz10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocih0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihyKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpzLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTpyfSl9KSwoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHIpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsodCk6cih0LmRhdGEpfTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKyssaT0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6bixkYXRhOnR9LGEpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGEsbil7Y29uc3QgaT10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsYz10aGlzLnRhcmdldE5hbWUsbD10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3Qgcz0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV09e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6cyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxhY3Rpb246ZSxzdHJlYW1JZDppLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gcy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnUsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9PnsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uaXNDbG9zZWQ9ITA7bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxzdHJlYW06cyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfV9jcmVhdGVTdHJlYW1TaW5rKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxuPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLHM9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sdT17ZW5xdWV1ZShlLHM9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBjPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09cztpZihjPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1pLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpsLHN0cmVhbUlkOnQsY2h1bms6ZX0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06YyxzdHJlYW1JZDp0fSk7ZGVsZXRlIHMuc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OigwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O3Uuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO3UucmVhZHk9dS5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09dTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChvKGUuZGF0YSx1KSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scD10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBmOmUuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGQ6ZS5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHU6aWYoIXApe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cC5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZwLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtwLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UocC5vblB1bGwmJnAub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06ZCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIGw6KDAsci5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgYzooMCxyLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgaDooMCxyLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyx0KTticmVhaztjYXNlIG86ZS5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgczppZighcClicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChwLm9uQ2FuY2VsJiZwLm9uQ2FuY2VsKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO3Auc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtwLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbCYmZS5zdGFydENhbGwucHJvbWlzZSxlLnB1bGxDYWxsJiZlLnB1bGxDYWxsLnByb21pc2UsZS5jYW5jZWxDYWxsJiZlLmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBERldvcmtlclN0cmVhbT12b2lkIDA7dmFyIHI9YSgyKTt0LlBERldvcmtlclN0cmVhbT1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpeygwLHIuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgYT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciYmdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIuY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fTtjbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19fV0sdD17fTtmdW5jdGlvbiBfX3dfcGRmanNfcmVxdWlyZV9fKGEpe3ZhciByPXRbYV07aWYodm9pZCAwIT09cilyZXR1cm4gci5leHBvcnRzO3ZhciBuPXRbYV09e2V4cG9ydHM6e319O2VbYV0obixuLmV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk7cmV0dXJuIG4uZXhwb3J0c31fX3dfcGRmanNfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIGEgaW4gdClfX3dfcGRmanNfcmVxdWlyZV9fLm8odCxhKSYmIV9fd19wZGZqc19yZXF1aXJlX18ubyhlLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLGdldDp0W2FdfSl9O19fd19wZGZqc19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCk7X193X3BkZmpzX3JlcXVpcmVfXy5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgYT17fTsoKCk9Pnt2YXIgZT1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiV29ya2VyTWVzc2FnZUhhbmRsZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lldvcmtlck1lc3NhZ2VIYW5kbGVyfX0pO3ZhciB0PV9fd19wZGZqc19yZXF1aXJlX18oMSl9KSgpO3JldHVybiBhfSkoKSkpOw==",eve="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmIixbXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYiXT1lKCk6dFsicGRmanMtZGlzdC9idWlsZC9wZGYiXT10LnBkZmpzTGliPWUoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz1bLCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuVmVyYm9zaXR5TGV2ZWw9ZS5VdGlsPWUuVW5rbm93bkVycm9yRXhjZXB0aW9uPWUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWUuVU5TVVBQT1JURURfRkVBVFVSRVM9ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlN0cmVhbVR5cGU9ZS5SZW5kZXJpbmdJbnRlbnRGbGFnPWUuUGVybWlzc2lvbkZsYWc9ZS5QYXNzd29yZFJlc3BvbnNlcz1lLlBhc3N3b3JkRXhjZXB0aW9uPWUuUGFnZUFjdGlvbkV2ZW50VHlwZT1lLk9QUz1lLk1pc3NpbmdQREZFeGNlcHRpb249ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5Gb250VHlwZT1lLkZlYXR1cmVUZXN0PWUuRk9OVF9JREVOVElUWV9NQVRSSVg9ZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT1lLkNNYXBDb21wcmVzc2lvblR5cGU9ZS5CYXNlRXhjZXB0aW9uPWUuQW5ub3RhdGlvblR5cGU9ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9ZS5Bbm5vdGF0aW9uUmVwbHlUeXBlPWUuQW5ub3RhdGlvbk1vZGU9ZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9ZS5Bbm5vdGF0aW9uRmxhZz1lLkFubm90YXRpb25GaWVsZEZsYWc9ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT1lLkFubm90YXRpb25FZGl0b3JQcmVmaXg9ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT1lLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPWUuQWJvcnRFeGNlcHRpb249dm9pZCAwO2UuYXJyYXlCeXRlTGVuZ3RoPWFycmF5Qnl0ZUxlbmd0aDtlLmFycmF5c1RvQnl0ZXM9ZnVuY3Rpb24gYXJyYXlzVG9CeXRlcyh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKDE9PT1lJiZ0WzBdaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0WzBdO2xldCBzPTA7Zm9yKGxldCBpPTA7aTxlO2krKylzKz1hcnJheUJ5dGVMZW5ndGgodFtpXSk7bGV0IGk9MDtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBlPXRbc107ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChlPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KGUpKTtjb25zdCByPWUuYnl0ZUxlbmd0aDtuLnNldChlLGkpO2krPXJ9cmV0dXJuIG59O2UuYXNzZXJ0PWZ1bmN0aW9uIGFzc2VydCh0LGUpe3R8fHVucmVhY2hhYmxlKGUpfTtlLmJ5dGVzVG9TdHJpbmc9ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyh0KXsib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ2b2lkIDAhPT10Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCBlPXQubGVuZ3RoLHM9ODE5MjtpZihlPHMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KTtjb25zdCBpPVtdO2ZvcihsZXQgbj0wO248ZTtuKz1zKXtjb25zdCByPU1hdGgubWluKG4rcyxlKSxhPXQuc3ViYXJyYXkobixyKTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKX1yZXR1cm4gaS5qb2luKCIiKX07ZS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbiBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZT0hMTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2V0dGxlZCIse2dldDooKT0+ZX0pO3QucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxpKXt0LnJlc29sdmU9ZnVuY3Rpb24odCl7ZT0hMDtzKHQpfTt0LnJlamVjdD1mdW5jdGlvbih0KXtlPSEwO2kodCl9fSkpO3JldHVybiB0fTtlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LGU9bnVsbCxzPW51bGwpe2lmKCF0KXJldHVybiBudWxsO3RyeXtpZihzJiYic3RyaW5nIj09dHlwZW9mIHQpe2lmKHMuYWRkRGVmYXVsdFByb3RvY29sJiZ0LnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgZT10Lm1hdGNoKC9cLi9nKTtlJiZlLmxlbmd0aD49MiYmKHQ9YGh0dHA6Ly8ke3R9YCl9aWYocy50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e3Q9c3RyaW5nVG9VVEY4U3RyaW5nKHQpfWNhdGNoKHQpe319Y29uc3QgaT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO2lmKGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2wodCl7aWYoIXQpcmV0dXJuITE7c3dpdGNoKHQucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oaSkpcmV0dXJuIGl9Y2F0Y2godCl7fXJldHVybiBudWxsfTtlLmVzY2FwZVN0cmluZz1mdW5jdGlvbiBlc2NhcGVTdHJpbmcodCl7cmV0dXJuIHQucmVwbGFjZSgvKFsoKVxcXG5ccl0pL2csKHQ9PiJcbiI9PT10PyJcXG4iOiJcciI9PT10PyJcXHIiOmBcXCR7dH1gKSl9O2UuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKHQ9bmV3IERhdGUpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwodC5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O2UuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gaX07ZS5pbmZvPWZ1bmN0aW9uIGluZm8odCl7aT49cy5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7dH1gKX07ZS5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdm9pZCAwIT09dC5ieXRlTGVuZ3RofTtlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKylpZih0W3NdIT09ZVtzXSlyZXR1cm4hMTtyZXR1cm4hMH07ZS5pc0FzY2lpPWZ1bmN0aW9uIGlzQXNjaWkodCl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KHQpfTtlLm9iamVjdEZyb21NYXA9ZnVuY3Rpb24gb2JqZWN0RnJvbU1hcCh0KXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3MsaV1vZiB0KWVbc109aTtyZXR1cm4gZX07ZS5vYmplY3RTaXplPWZ1bmN0aW9uIG9iamVjdFNpemUodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aH07ZS5zZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbCh0KXtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoaT10KX07ZS5zaGFkb3c9c2hhZG93O2Uuc3RyaW5nMzI9ZnVuY3Rpb24gc3RyaW5nMzIodCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9O2Uuc3RyaW5nVG9CeXRlcz1zdHJpbmdUb0J5dGVzO2Uuc3RyaW5nVG9QREZTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcodCl7aWYodFswXT49IsOvIil7bGV0IGU7IsO+Ij09PXRbMF0mJiLDvyI9PT10WzFdP2U9InV0Zi0xNmJlIjoiw78iPT09dFswXSYmIsO+Ij09PXRbMV0/ZT0idXRmLTE2bGUiOiLDryI9PT10WzBdJiYiwrsiPT09dFsxXSYmIsK/Ij09PXRbMl0mJihlPSJ1dGYtOCIpO2lmKGUpdHJ5e2NvbnN0IHM9bmV3IFRleHREZWNvZGVyKGUse2ZhdGFsOiEwfSksaT1zdHJpbmdUb0J5dGVzKHQpO3JldHVybiBzLmRlY29kZShpKX1jYXRjaCh0KXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7dH0iLmApfX1jb25zdCBlPVtdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT1hW3QuY2hhckNvZGVBdChzKV07ZS5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTp0LmNoYXJBdChzKSl9cmV0dXJuIGUuam9pbigiIil9O2Uuc3RyaW5nVG9VVEYxNkJFU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZCRVN0cmluZyh0KXtjb25zdCBlPVsiw77DvyJdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT10LmNoYXJDb2RlQXQocyk7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmkpKX1yZXR1cm4gZS5qb2luKCIiKX07ZS5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO2UudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7ZS51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfTtlLndhcm49d2FybjtlLklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdO2UuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXTtlLkxJTkVfRkFDVE9SPTEuMzU7ZS5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNTtlLlJlbmRlcmluZ0ludGVudEZsYWc9e0FOWToxLERJU1BMQVk6MixQUklOVDo0LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fTtlLkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M307ZS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIjtlLkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLElOSzoxNX07ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17RlJFRVRFWFRfU0laRToxLEZSRUVURVhUX0NPTE9SOjIsRlJFRVRFWFRfT1BBQ0lUWTozLElOS19DT0xPUjoxMSxJTktfVEhJQ0tORVNTOjEyLElOS19PUEFDSVRZOjEzfTtlLlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9O2UuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH07ZS5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfTtlLkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn07ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9e01BUktFRDoiTWFya2VkIixSRVZJRVc6IlJldmlldyJ9O2UuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXtNQVJLRUQ6Ik1hcmtlZCIsVU5NQVJLRUQ6IlVubWFya2VkIn07ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9e0FDQ0VQVEVEOiJBY2NlcHRlZCIsUkVKRUNURUQ6IlJlamVjdGVkIixDQU5DRUxMRUQ6IkNhbmNlbGxlZCIsQ09NUExFVEVEOiJDb21wbGV0ZWQiLE5PTkU6Ik5vbmUifTtlLkFubm90YXRpb25SZXBseVR5cGU9e0dST1VQOiJHcm91cCIsUkVQTFk6IlIifTtlLkFubm90YXRpb25GbGFnPXtJTlZJU0lCTEU6MSxISURERU46MixQUklOVDo0LE5PWk9PTTo4LE5PUk9UQVRFOjE2LE5PVklFVzozMixSRUFET05MWTo2NCxMT0NLRUQ6MTI4LFRPR0dMRU5PVklFVzoyNTYsTE9DS0VEQ09OVEVOVFM6NTEyfTtlLkFubm90YXRpb25GaWVsZEZsYWc9e1JFQURPTkxZOjEsUkVRVUlSRUQ6MixOT0VYUE9SVDo0LE1VTFRJTElORTo0MDk2LFBBU1NXT1JEOjgxOTIsTk9UT0dHTEVUT09GRjoxNjM4NCxSQURJTzozMjc2OCxQVVNIQlVUVE9OOjY1NTM2LENPTUJPOjEzMTA3MixFRElUOjI2MjE0NCxTT1JUOjUyNDI4OCxGSUxFU0VMRUNUOjEwNDg1NzYsTVVMVElTRUxFQ1Q6MjA5NzE1MixET05PVFNQRUxMQ0hFQ0s6NDE5NDMwNCxET05PVFNDUk9MTDo4Mzg4NjA4LENPTUI6MTY3NzcyMTYsUklDSFRFWFQ6MzM1NTQ0MzIsUkFESU9TSU5VTklTT046MzM1NTQ0MzIsQ09NTUlUT05TRUxDSEFOR0U6NjcxMDg4NjR9O2UuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT17U09MSUQ6MSxEQVNIRUQ6MixCRVZFTEVEOjMsSU5TRVQ6NCxVTkRFUkxJTkU6NX07ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifTtlLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifTtlLlBhZ2VBY3Rpb25FdmVudFR5cGU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifTtlLlN0cmVhbVR5cGU9e1VOS05PV046IlVOS05PV04iLEZMQVRFOiJGTEFURSIsTFpXOiJMWlciLERDVDoiRENUIixKUFg6IkpQWCIsSkJJRzoiSkJJRyIsQTg1OiJBODUiLEFIWDoiQUhYIixDQ0Y6IkNDRiIsUkxYOiJSTFgifTtlLkZvbnRUeXBlPXtVTktOT1dOOiJVTktOT1dOIixUWVBFMToiVFlQRTEiLFRZUEUxU1RBTkRBUkQ6IlRZUEUxU1RBTkRBUkQiLFRZUEUxQzoiVFlQRTFDIixDSURGT05UVFlQRTA6IkNJREZPTlRUWVBFMCIsQ0lERk9OVFRZUEUwQzoiQ0lERk9OVFRZUEUwQyIsVFJVRVRZUEU6IlRSVUVUWVBFIixDSURGT05UVFlQRTI6IkNJREZPTlRUWVBFMiIsVFlQRTM6IlRZUEUzIixPUEVOVFlQRToiT1BFTlRZUEUiLFRZUEUwOiJUWVBFMCIsTU1UWVBFMToiTU1UWVBFMSJ9O2NvbnN0IHM9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1zO2UuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTtlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTtlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXtmb3JtczoiZm9ybXMiLGphdmFTY3JpcHQ6ImphdmFTY3JpcHQiLHNpZ25hdHVyZXM6InNpZ25hdHVyZXMiLHNtYXNrOiJzbWFzayIsc2hhZGluZ1BhdHRlcm46InNoYWRpbmdQYXR0ZXJuIixlcnJvclRpbGluZ1BhdHRlcm46ImVycm9yVGlsaW5nUGF0dGVybiIsZXJyb3JFeHRHU3RhdGU6ImVycm9yRXh0R1N0YXRlIixlcnJvclhPYmplY3Q6ImVycm9yWE9iamVjdCIsZXJyb3JGb250TG9hZFR5cGUzOiJlcnJvckZvbnRMb2FkVHlwZTMiLGVycm9yRm9udFN0YXRlOiJlcnJvckZvbnRTdGF0ZSIsZXJyb3JGb250TWlzc2luZzoiZXJyb3JGb250TWlzc2luZyIsZXJyb3JGb250VHJhbnNsYXRlOiJlcnJvckZvbnRUcmFuc2xhdGUiLGVycm9yQ29sb3JTcGFjZToiZXJyb3JDb2xvclNwYWNlIixlcnJvck9wZXJhdG9yTGlzdDoiZXJyb3JPcGVyYXRvckxpc3QiLGVycm9yRm9udFRvVW5pY29kZToiZXJyb3JGb250VG9Vbmljb2RlIixlcnJvckZvbnRMb2FkTmF0aXZlOiJlcnJvckZvbnRMb2FkTmF0aXZlIixlcnJvckZvbnRCdWlsZFBhdGg6ImVycm9yRm9udEJ1aWxkUGF0aCIsZXJyb3JGb250R2V0UGF0aDoiZXJyb3JGb250R2V0UGF0aCIsZXJyb3JNYXJrZWRDb250ZW50OiJlcnJvck1hcmtlZENvbnRlbnQiLGVycm9yQ29udGVudFN1YlN0cmVhbToiZXJyb3JDb250ZW50U3ViU3RyZWFtIn07ZS5QYXNzd29yZFJlc3BvbnNlcz17TkVFRF9QQVNTV09SRDoxLElOQ09SUkVDVF9QQVNTV09SRDoyfTtsZXQgaT1zLldBUk5JTkdTO2Z1bmN0aW9uIHdhcm4odCl7aT49cy5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7dH1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZSh0KXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gc2hhZG93KHQsZSxzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpzLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIHN9Y29uc3Qgbj1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPXQ7dGhpcy5uYW1lPWV9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtlLkJhc2VFeGNlcHRpb249bjtlLlBhc3N3b3JkRXhjZXB0aW9uPWNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPWV9fTtlLlVua25vd25FcnJvckV4Y2VwdGlvbj1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPWV9fTtlLkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX07ZS5NaXNzaW5nUERGRXhjZXB0aW9uPWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19O2UuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz1lfX07ZS5Gb3JtYXRFcnJvcj1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiRm9ybWF0RXJyb3IiKX19O2UuQWJvcnRFeGNlcHRpb249Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkFib3J0RXhjZXB0aW9uIil9fTtmdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHQpeyJzdHJpbmciIT10eXBlb2YgdCYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCBlPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlOysraSlzW2ldPTI1NSZ0LmNoYXJDb2RlQXQoaSk7cmV0dXJuIHN9ZnVuY3Rpb24gYXJyYXlCeXRlTGVuZ3RoKHQpe2lmKHZvaWQgMCE9PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZih2b2lkIDAhPT10LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDt1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYXJyYXlCeXRlTGVuZ3RoIil9ZS5GZWF0dXJlVGVzdD1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3RbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaCh0KXtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9fTtjb25zdCByPVsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IodCxlLHMpe3JldHVybmAjJHtyW3RdfSR7cltlXX0ke3Jbc119YH1zdGF0aWMgc2NhbGVNaW5NYXgodCxlKXtsZXQgcztpZih0WzBdKXtpZih0WzBdPDApe3M9ZVswXTtlWzBdPWVbMV07ZVsxXT1zfWVbMF0qPXRbMF07ZVsxXSo9dFswXTtpZih0WzNdPDApe3M9ZVsyXTtlWzJdPWVbM107ZVszXT1zfWVbMl0qPXRbM107ZVszXSo9dFszXX1lbHNle3M9ZVswXTtlWzBdPWVbMl07ZVsyXT1zO3M9ZVsxXTtlWzFdPWVbM107ZVszXT1zO2lmKHRbMV08MCl7cz1lWzJdO2VbMl09ZVszXTtlWzNdPXN9ZVsyXSo9dFsxXTtlWzNdKj10WzFdO2lmKHRbMl08MCl7cz1lWzBdO2VbMF09ZVsxXTtlWzFdPXN9ZVswXSo9dFsyXTtlWzFdKj10WzJdfWVbMF0rPXRbNF07ZVsxXSs9dFs0XTtlWzJdKz10WzVdO2VbM10rPXRbNV19c3RhdGljIHRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsxXSplWzJdK2VbNF0sdFswXSplWzFdK3RbMV0qZVszXStlWzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHQsZSl7Y29uc3Qgcz1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVyblsodFswXSplWzNdLXRbMV0qZVsyXStlWzJdKmVbNV0tZVs0XSplWzNdKS9zLCgtdFswXSplWzFdK3RbMV0qZVswXStlWzRdKmVbMV0tZVs1XSplWzBdKS9zXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxlKXtjb25zdCBzPVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxlKSxpPVV0aWwuYXBwbHlUcmFuc2Zvcm0odC5zbGljZSgyLDQpLGUpLG49VXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzNdXSxlKSxyPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFsxXV0sZSk7cmV0dXJuW01hdGgubWluKHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWluKHNbMV0saVsxXSxuWzFdLHJbMV0pLE1hdGgubWF4KHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWF4KHNbMV0saVsxXSxuWzFdLHJbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybSh0KXtjb25zdCBlPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuW3RbM10vZSwtdFsxXS9lLC10WzJdL2UsdFswXS9lLCh0WzJdKnRbNV0tdFs0XSp0WzNdKS9lLCh0WzRdKnRbMV0tdFs1XSp0WzBdKS9lXX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodCl7Y29uc3QgZT1bdFswXSx0WzJdLHRbMV0sdFszXV0scz10WzBdKmVbMF0rdFsxXSplWzJdLGk9dFswXSplWzFdK3RbMV0qZVszXSxuPXRbMl0qZVswXSt0WzNdKmVbMl0scj10WzJdKmVbMV0rdFszXSplWzNdLGE9KHMrcikvMixvPU1hdGguc3FydCgocytyKSoqMi00KihzKnItbippKSkvMixsPWErb3x8MSxjPWEtb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGwpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QodCl7Y29uc3QgZT10LnNsaWNlKDApO2lmKHRbMF0+dFsyXSl7ZVswXT10WzJdO2VbMl09dFswXX1pZih0WzFdPnRbM10pe2VbMV09dFszXTtlWzNdPXRbMV19cmV0dXJuIGV9c3RhdGljIGludGVyc2VjdCh0LGUpe2NvbnN0IHM9TWF0aC5tYXgoTWF0aC5taW4odFswXSx0WzJdKSxNYXRoLm1pbihlWzBdLGVbMl0pKSxpPU1hdGgubWluKE1hdGgubWF4KHRbMF0sdFsyXSksTWF0aC5tYXgoZVswXSxlWzJdKSk7aWYocz5pKXJldHVybiBudWxsO2NvbnN0IG49TWF0aC5tYXgoTWF0aC5taW4odFsxXSx0WzNdKSxNYXRoLm1pbihlWzFdLGVbM10pKSxyPU1hdGgubWluKE1hdGgubWF4KHRbMV0sdFszXSksTWF0aC5tYXgoZVsxXSxlWzNdKSk7cmV0dXJuIG4+cj9udWxsOltzLG4saSxyXX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3godCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPVtdLGM9W1tdLFtdXTtsZXQgaCxkLHUscCxnLG0sZixiO2ZvcihsZXQgYz0wO2M8MjsrK2Mpe2lmKDA9PT1jKXtkPTYqdC0xMipzKzYqbjtoPS0zKnQrOSpzLTkqbiszKmE7dT0zKnMtMyp0fWVsc2V7ZD02KmUtMTIqaSs2KnI7aD0tMyplKzkqaS05KnIrMypvO3U9MyppLTMqZX1pZihNYXRoLmFicyhoKTwxZS0xMil7aWYoTWF0aC5hYnMoZCk8MWUtMTIpY29udGludWU7cD0tdS9kOzA8cCYmcDwxJiZsLnB1c2gocCl9ZWxzZXtmPWQqZC00KnUqaDtiPU1hdGguc3FydChmKTtpZighKGY8MCkpe2c9KC1kK2IpLygyKmgpOzA8ZyYmZzwxJiZsLnB1c2goZyk7bT0oLWQtYikvKDIqaCk7MDxtJiZtPDEmJmwucHVzaChtKX19fWxldCBBLF89bC5sZW5ndGg7Y29uc3Qgdj1fO2Zvcig7Xy0tOyl7cD1sW19dO0E9MS1wO2NbMF1bX109QSpBKkEqdCszKkEqQSpwKnMrMypBKnAqcCpuK3AqcCpwKmE7Y1sxXVtfXT1BKkEqQSplKzMqQSpBKnAqaSszKkEqcCpwKnIrcCpwKnAqb31jWzBdW3ZdPXQ7Y1sxXVt2XT1lO2NbMF1bdisxXT1hO2NbMV1bdisxXT1vO2NbMF0ubGVuZ3RoPWNbMV0ubGVuZ3RoPXYrMjtyZXR1cm5bTWF0aC5taW4oLi4uY1swXSksTWF0aC5taW4oLi4uY1sxXSksTWF0aC5tYXgoLi4uY1swXSksTWF0aC5tYXgoLi4uY1sxXSldfX1lLlV0aWw9VXRpbDtjb25zdCBhPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpfX0sKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZXhwb3J0cy5idWlsZD1leHBvcnRzLlJlbmRlclRhc2s9ZXhwb3J0cy5QREZXb3JrZXJVdGlsPWV4cG9ydHMuUERGV29ya2VyPWV4cG9ydHMuUERGUGFnZVByb3h5PWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1leHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2s9ZXhwb3J0cy5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZXhwb3J0cy5Mb29wYmFja1BvcnQ9ZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeT1leHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7ZXhwb3J0cy5nZXREb2N1bWVudD1nZXREb2N1bWVudDtleHBvcnRzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5PXNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5O2V4cG9ydHMudmVyc2lvbj12b2lkIDA7dmFyIF91dGlsPV9fd19wZGZqc19yZXF1aXJlX18oMSksX2Fubm90YXRpb25fc3RvcmFnZT1fX3dfcGRmanNfcmVxdWlyZV9fKDMpLF9kaXNwbGF5X3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oNiksX2ZvbnRfbG9hZGVyPV9fd19wZGZqc19yZXF1aXJlX18oOSksX2NhbnZhcz1fX3dfcGRmanNfcmVxdWlyZV9fKDEwKSxfd29ya2VyX29wdGlvbnM9X193X3BkZmpzX3JlcXVpcmVfXygxNCksX2lzX25vZGU9X193X3BkZmpzX3JlcXVpcmVfXygxMiksX21lc3NhZ2VfaGFuZGxlcj1fX3dfcGRmanNfcmVxdWlyZV9fKDE1KSxfbWV0YWRhdGE9X193X3BkZmpzX3JlcXVpcmVfXygxNiksX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnPV9fd19wZGZqc19yZXF1aXJlX18oMTcpLF90cmFuc3BvcnRfc3RyZWFtPV9fd19wZGZqc19yZXF1aXJlX18oMTgpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE5KTtjb25zdCBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU9NjU1MzYsUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUPTEwMDtsZXQgRGVmYXVsdENhbnZhc0ZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ2FudmFzRmFjdG9yeTtleHBvcnRzLkRlZmF1bHRDYW52YXNGYWN0b3J5PURlZmF1bHRDYW52YXNGYWN0b3J5O2xldCBEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ01hcFJlYWRlckZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O2xldCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NU3RhbmRhcmRGb250RGF0YUZhY3RvcnksY3JlYXRlUERGTmV0d29ya1N0cmVhbTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aWYoX2lzX25vZGUuaXNOb2RlSlMpe2NvbnN0e05vZGVDYW52YXNGYWN0b3J5OnQsTm9kZUNNYXBSZWFkZXJGYWN0b3J5OmUsTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5OnN9PV9fd19wZGZqc19yZXF1aXJlX18oMjApO2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk9dDtleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9ZTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9c31mdW5jdGlvbiBzZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSh0KXtjcmVhdGVQREZOZXR3b3JrU3RyZWFtPXR9ZnVuY3Rpb24gZ2V0RG9jdW1lbnQodCl7Y29uc3QgZT1uZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaztsZXQgcztpZigic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBVUkwpcz17dXJsOnR9O2Vsc2UgaWYoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCkpcz17ZGF0YTp0fTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQpcz17cmFuZ2U6dH07ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBlaXRoZXIgc3RyaW5nLCBVUkwsIFR5cGVkQXJyYXksIG9yIHBhcmFtZXRlciBvYmplY3QuIik7aWYoIXQudXJsJiYhdC5kYXRhJiYhdC5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcGFyYW1ldGVyIG9iamVjdDogbmVlZCBlaXRoZXIgLmRhdGEsIC5yYW5nZSBvciAudXJsIik7cz10fWNvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbj1udWxsLHI9bnVsbDtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07c3dpdGNoKHQpe2Nhc2UidXJsIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7aVt0XT1uZXcgVVJMKGUsd2luZG93LmxvY2F0aW9uKS5ocmVmO2NvbnRpbnVlfWNhdGNoKHQpeygwLF91dGlsLndhcm4pKGBDYW5ub3QgY3JlYXRlIHZhbGlkIFVSTDogIiR7dH0iLmApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVVJMKXtpW3RdPWUudG9TdHJpbmcoKTtjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS4iKTtjYXNlInJhbmdlIjpuPWU7Y29udGludWU7Y2FzZSJ3b3JrZXIiOnI9ZTtjb250aW51ZTtjYXNlImRhdGEiOmlmKF9pc19ub2RlLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmZSBpbnN0YW5jZW9mIEJ1ZmZlcilpW3RdPW5ldyBVaW50OEFycmF5KGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYnJlYWs7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlbdF09KDAsX3V0aWwuc3RyaW5nVG9CeXRlcykoZSk7ZWxzZSBpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHxpc05hTihlLmxlbmd0aCkpe2lmKCEoMCxfdXRpbC5pc0FycmF5QnVmZmVyKShlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKTtpW3RdPW5ldyBVaW50OEFycmF5KGUpfWVsc2UgaVt0XT1uZXcgVWludDhBcnJheShlKX1jb250aW51ZX1pW3RdPWV9aS5DTWFwUmVhZGVyRmFjdG9yeT1pLkNNYXBSZWFkZXJGYWN0b3J5fHxEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk7aS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1pLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aS5pZ25vcmVFcnJvcnM9ITAhPT1pLnN0b3BBdEVycm9ycztpLmZvbnRFeHRyYVByb3BlcnRpZXM9ITA9PT1pLmZvbnRFeHRyYVByb3BlcnRpZXM7aS5wZGZCdWc9ITA9PT1pLnBkZkJ1ZztpLmVuYWJsZVhmYT0hMD09PWkuZW5hYmxlWGZhOyghTnVtYmVyLmlzSW50ZWdlcihpLnJhbmdlQ2h1bmtTaXplKXx8aS5yYW5nZUNodW5rU2l6ZTwxKSYmKGkucmFuZ2VDaHVua1NpemU9REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFKTsoInN0cmluZyIhPXR5cGVvZiBpLmRvY0Jhc2VVcmx8fCgwLF9kaXNwbGF5X3V0aWxzLmlzRGF0YVNjaGVtZSkoaS5kb2NCYXNlVXJsKSkmJihpLmRvY0Jhc2VVcmw9bnVsbCk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkubWF4SW1hZ2VTaXplKXx8aS5tYXhJbWFnZVNpemU8LTEpJiYoaS5tYXhJbWFnZVNpemU9LTEpOyJzdHJpbmciIT10eXBlb2YgaS5jTWFwVXJsJiYoaS5jTWFwVXJsPW51bGwpOyJzdHJpbmciIT10eXBlb2YgaS5zdGFuZGFyZEZvbnREYXRhVXJsJiYoaS5zdGFuZGFyZEZvbnREYXRhVXJsPW51bGwpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlV29ya2VyRmV0Y2gmJihpLnVzZVdvcmtlckZldGNoPWkuQ01hcFJlYWRlckZhY3Rvcnk9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmaS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzRXZhbFN1cHBvcnRlZCYmKGkuaXNFdmFsU3VwcG9ydGVkPSEwKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hX2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUZvbnRGYWNlJiYoaS5kaXNhYmxlRm9udEZhY2U9X2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlU3lzdGVtRm9udHMmJihpLnVzZVN5c3RlbUZvbnRzPSFfaXNfbm9kZS5pc05vZGVKUyYmIWkuZGlzYWJsZUZvbnRGYWNlKTsib2JqZWN0Ij09dHlwZW9mIGkub3duZXJEb2N1bWVudCYmbnVsbCE9PWkub3duZXJEb2N1bWVudHx8KGkub3duZXJEb2N1bWVudD1nbG9iYWxUaGlzLmRvY3VtZW50KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVSYW5nZSYmKGkuZGlzYWJsZVJhbmdlPSExKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVTdHJlYW0mJihpLmRpc2FibGVTdHJlYW09ITEpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUF1dG9GZXRjaCYmKGkuZGlzYWJsZUF1dG9GZXRjaD0hMSk7KDAsX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKGkudmVyYm9zaXR5KTtpZighcil7Y29uc3QgdD17dmVyYm9zaXR5OmkudmVyYm9zaXR5LHBvcnQ6X3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyUG9ydH07cj10LnBvcnQ/UERGV29ya2VyLmZyb21Qb3J0KHQpOm5ldyBQREZXb3JrZXIodCk7ZS5fd29ya2VyPXJ9Y29uc3QgYT1lLmRvY0lkO3IucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe2lmKGUuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7Y29uc3QgdD1fZmV0Y2hEb2N1bWVudChyLGksbixhKSxzPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtsZXQgZTtuP2U9bmV3IF90cmFuc3BvcnRfc3RyZWFtLlBERkRhdGFUcmFuc3BvcnRTdHJlYW0oe2xlbmd0aDppLmxlbmd0aCxpbml0aWFsRGF0YTppLmluaXRpYWxEYXRhLHByb2dyZXNzaXZlRG9uZTppLnByb2dyZXNzaXZlRG9uZSxjb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZTppLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lLGRpc2FibGVSYW5nZTppLmRpc2FibGVSYW5nZSxkaXNhYmxlU3RyZWFtOmkuZGlzYWJsZVN0cmVhbX0sbik6aS5kYXRhfHwoZT1jcmVhdGVQREZOZXR3b3JrU3RyZWFtKHt1cmw6aS51cmwsbGVuZ3RoOmkubGVuZ3RoLGh0dHBIZWFkZXJzOmkuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOmkud2l0aENyZWRlbnRpYWxzLHJhbmdlQ2h1bmtTaXplOmkucmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOmkuZGlzYWJsZVJhbmdlLGRpc2FibGVTdHJlYW06aS5kaXNhYmxlU3RyZWFtfSkpO3QoZSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt0LHNdKS50aGVuKChmdW5jdGlvbihbdCxzXSl7aWYoZS5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJMb2FkaW5nIGFib3J0ZWQiKTtjb25zdCBuPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKGEsdCxyLnBvcnQpLG89bmV3IFdvcmtlclRyYW5zcG9ydChuLGUscyxpKTtlLl90cmFuc3BvcnQ9bztuLnNlbmQoIlJlYWR5IixudWxsKX0pKX0pKS5jYXRjaChlLl9jYXBhYmlsaXR5LnJlamVjdCk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gX2ZldGNoRG9jdW1lbnQodCxlLHMsaSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO2lmKHMpe2UubGVuZ3RoPXMubGVuZ3RoO2UuaW5pdGlhbERhdGE9cy5pbml0aWFsRGF0YTtlLnByb2dyZXNzaXZlRG9uZT1zLnByb2dyZXNzaXZlRG9uZTtlLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV9Y29uc3Qgbj1hd2FpdCB0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jUmVxdWVzdCIse2RvY0lkOmksYXBpVmVyc2lvbjoiMy4wLjI3OSIsZGF0YTplLmRhdGEscGFzc3dvcmQ6ZS5wYXNzd29yZCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplLGxlbmd0aDplLmxlbmd0aCxkb2NCYXNlVXJsOmUuZG9jQmFzZVVybCxlbmFibGVYZmE6ZS5lbmFibGVYZmEsZXZhbHVhdG9yT3B0aW9uczp7bWF4SW1hZ2VTaXplOmUubWF4SW1hZ2VTaXplLGRpc2FibGVGb250RmFjZTplLmRpc2FibGVGb250RmFjZSxpZ25vcmVFcnJvcnM6ZS5pZ25vcmVFcnJvcnMsaXNFdmFsU3VwcG9ydGVkOmUuaXNFdmFsU3VwcG9ydGVkLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsZm9udEV4dHJhUHJvcGVydGllczplLmZvbnRFeHRyYVByb3BlcnRpZXMsdXNlU3lzdGVtRm9udHM6ZS51c2VTeXN0ZW1Gb250cyxjTWFwVXJsOmUudXNlV29ya2VyRmV0Y2g/ZS5jTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDplLnVzZVdvcmtlckZldGNoP2Uuc3RhbmRhcmRGb250RGF0YVVybDpudWxsfX0pO2UuZGF0YSYmKGUuZGF0YT1udWxsKTtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIik7cmV0dXJuIG59Y2xhc3MgUERGRG9jdW1lbnRMb2FkaW5nVGFza3tzdGF0aWMjdD0wO2NvbnN0cnVjdG9yKCl7dGhpcy5fY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl90cmFuc3BvcnQ9bnVsbDt0aGlzLl93b3JrZXI9bnVsbDt0aGlzLmRvY0lkPSJkIitQREZEb2N1bWVudExvYWRpbmdUYXNrLiN0Kys7dGhpcy5kZXN0cm95ZWQ9ITE7dGhpcy5vblBhc3N3b3JkPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5vblVuc3VwcG9ydGVkRmVhdHVyZT1udWxsfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1hc3luYyBkZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITA7YXdhaXQodGhpcy5fdHJhbnNwb3J0Py5kZXN0cm95KCkpO3RoaXMuX3RyYW5zcG9ydD1udWxsO2lmKHRoaXMuX3dvcmtlcil7dGhpcy5fd29ya2VyLmRlc3Ryb3koKTt0aGlzLl93b3JrZXI9bnVsbH19fWV4cG9ydHMuUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1QREZEb2N1bWVudExvYWRpbmdUYXNrO2NsYXNzIFBERkRhdGFSYW5nZVRyYW5zcG9ydHtjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMubGVuZ3RoPXQ7dGhpcy5pbml0aWFsRGF0YT1lO3RoaXMucHJvZ3Jlc3NpdmVEb25lPXM7dGhpcy5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1pO3RoaXMuX3JhbmdlTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnM9W107dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpfWFkZFJhbmdlTGlzdGVuZXIodCl7dGhpcy5fcmFuZ2VMaXN0ZW5lcnMucHVzaCh0KX1hZGRQcm9ncmVzc0xpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzLnB1c2godCl9b25EYXRhUmFuZ2UodCxlKXtmb3IoY29uc3QgcyBvZiB0aGlzLl9yYW5nZUxpc3RlbmVycylzKHQsZSl9b25EYXRhUHJvZ3Jlc3ModCxlKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCBzIG9mIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzKXModCxlKX0pKX1vbkRhdGFQcm9ncmVzc2l2ZVJlYWQodCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgZSBvZiB0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnMpZSh0KX0pKX1vbkRhdGFQcm9ncmVzc2l2ZURvbmUoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycyl0KCl9KSl9dHJhbnNwb3J0UmVhZHkoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpfXJlcXVlc3REYXRhUmFuZ2UodCxlKXsoMCxfdXRpbC51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBQREZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSIpfWFib3J0KCl7fX1leHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7Y2xhc3MgUERGRG9jdW1lbnRQcm94eXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BkZkluZm89dDt0aGlzLl90cmFuc3BvcnQ9ZX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmFubm90YXRpb25TdG9yYWdlfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLl9wZGZJbmZvLm51bVBhZ2VzfWdldCBmaW5nZXJwcmludHMoKXtyZXR1cm4gdGhpcy5fcGRmSW5mby5maW5nZXJwcmludHN9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5zdGF0c31nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmF9Z2V0IGFsbFhmYUh0bWwoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhfWdldFBhZ2UodCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlKHQpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VJbmRleCh0KX1nZXREZXN0aW5hdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9ucygpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24odCl9Z2V0UGFnZUxhYmVscygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZUxhYmVscygpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYXlvdXQoKX1nZXRQYWdlTW9kZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZU1vZGUoKX1nZXRWaWV3ZXJQcmVmZXJlbmNlcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0Vmlld2VyUHJlZmVyZW5jZXMoKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRPcGVuQWN0aW9uKCl9Z2V0QXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEF0dGFjaG1lbnRzKCl9Z2V0SmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0SmF2YVNjcmlwdCgpfWdldEpTQWN0aW9ucygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RG9jSlNBY3Rpb25zKCl9Z2V0T3V0bGluZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3V0bGluZSgpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCl9Z2V0UGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBlcm1pc3Npb25zKCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1ldGFkYXRhKCl9Z2V0TWFya0luZm8oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1hcmtJbmZvKCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGF0YSgpfXNhdmVEb2N1bWVudCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuc2F2ZURvY3VtZW50KCl9Z2V0RG93bmxvYWRJbmZvKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnByb21pc2V9Y2xlYW51cCh0PSExKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnN0YXJ0Q2xlYW51cCh0fHx0aGlzLmlzUHVyZVhmYSl9ZGVzdHJveSgpe3JldHVybiB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKX1nZXQgbG9hZGluZ1BhcmFtcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1BhcmFtc31nZXQgbG9hZGluZ1Rhc2soKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmxvYWRpbmdUYXNrfWdldEZpZWxkT2JqZWN0cygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RmllbGRPYmplY3RzKCl9aGFzSlNBY3Rpb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5oYXNKU0FjdGlvbnMoKX1nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl9fWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1QREZEb2N1bWVudFByb3h5O2NsYXNzIFBERlBhZ2VQcm94eXtjb25zdHJ1Y3Rvcih0LGUscyxpLG49ITEpe3RoaXMuX3BhZ2VJbmRleD10O3RoaXMuX3BhZ2VJbmZvPWU7dGhpcy5fb3duZXJEb2N1bWVudD1pO3RoaXMuX3RyYW5zcG9ydD1zO3RoaXMuX3N0YXRzPW4/bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcjpudWxsO3RoaXMuX3BkZkJ1Zz1uO3RoaXMuY29tbW9uT2Jqcz1zLmNvbW1vbk9ianM7dGhpcy5vYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuX2JpdG1hcHM9bmV3IFNldDt0aGlzLmNsZWFudXBBZnRlclJlbmRlcj0hMTt0aGlzLnBlbmRpbmdDbGVhbnVwPSExO3RoaXMuX2ludGVudFN0YXRlcz1uZXcgTWFwO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcz1uZXcgTWFwO3RoaXMuZGVzdHJveWVkPSExfWdldCBwYWdlTnVtYmVyKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleCsxfWdldCByb3RhdGUoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlfWdldCByZWYoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucmVmfWdldCB1c2VyVW5pdCgpe3JldHVybiB0aGlzLl9wYWdlSW5mby51c2VyVW5pdH1nZXQgdmlldygpe3JldHVybiB0aGlzLl9wYWdlSW5mby52aWV3fWdldFZpZXdwb3J0KHtzY2FsZTp0LHJvdGF0aW9uOmU9dGhpcy5yb3RhdGUsb2Zmc2V0WDpzPTAsb2Zmc2V0WTppPTAsZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlldyxzY2FsZTp0LHJvdGF0aW9uOmUsb2Zmc2V0WDpzLG9mZnNldFk6aSxkb250RmxpcDpufSl9Z2V0QW5ub3RhdGlvbnMoe2ludGVudDp0PSJkaXNwbGF5In09e30pe2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudCh0KTtsZXQgcz10aGlzLl9hbm5vdGF0aW9uUHJvbWlzZXMuZ2V0KGUuY2FjaGVLZXkpO2lmKCFzKXtzPXRoaXMuX3RyYW5zcG9ydC5nZXRBbm5vdGF0aW9ucyh0aGlzLl9wYWdlSW5kZXgsZS5yZW5kZXJpbmdJbnRlbnQpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5zZXQoZS5jYWNoZUtleSxzKX1yZXR1cm4gc31nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fanNBY3Rpb25zUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSlNBY3Rpb25zKHRoaXMuX3BhZ2VJbmRleCl9YXN5bmMgZ2V0WGZhKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYT8uY2hpbGRyZW5bdGhpcy5fcGFnZUluZGV4XXx8bnVsbH1yZW5kZXIoe2NhbnZhc0NvbnRleHQ6dCx2aWV3cG9ydDplLGludGVudDpzPSJkaXNwbGF5Iixhbm5vdGF0aW9uTW9kZTppPV91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSx0cmFuc2Zvcm06bj1udWxsLGNhbnZhc0ZhY3Rvcnk6cj1udWxsLGJhY2tncm91bmQ6YT1udWxsLG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6bz1udWxsLGFubm90YXRpb25DYW52YXNNYXA6bD1udWxsLHBhZ2VDb2xvcnM6Yz1udWxsLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6aD1udWxsfSl7dGhpcy5fc3RhdHM/LnRpbWUoIk92ZXJhbGwiKTtjb25zdCBkPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQocyxpLGgpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7b3x8KG89dGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpKTtsZXQgdT10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGQuY2FjaGVLZXkpO2lmKCF1KXt1PU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW50ZW50U3RhdGVzLnNldChkLmNhY2hlS2V5LHUpfWlmKHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCl7Y2xlYXJUaW1lb3V0KHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCk7dS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9Y29uc3QgcD1yfHxuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe293bmVyRG9jdW1lbnQ6dGhpcy5fb3duZXJEb2N1bWVudH0pLGc9ISEoZC5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7aWYoIXUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSl7dS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3Uub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH07dGhpcy5fc3RhdHM/LnRpbWUoIlBhZ2UgUmVxdWVzdCIpO3RoaXMuX3B1bXBPcGVyYXRvckxpc3QoZCl9Y29uc3QgY29tcGxldGU9dD0+e3UucmVuZGVyVGFza3MuZGVsZXRlKG0pOyh0aGlzLmNsZWFudXBBZnRlclJlbmRlcnx8ZykmJih0aGlzLnBlbmRpbmdDbGVhbnVwPSEwKTt0aGlzLl90cnlDbGVhbnVwKCk7aWYodCl7bS5jYXBhYmlsaXR5LnJlamVjdCh0KTt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6dSxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSl9ZWxzZSBtLmNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3N0YXRzPy50aW1lRW5kKCJSZW5kZXJpbmciKTt0aGlzLl9zdGF0cz8udGltZUVuZCgiT3ZlcmFsbCIpfSxtPW5ldyBJbnRlcm5hbFJlbmRlclRhc2soe2NhbGxiYWNrOmNvbXBsZXRlLHBhcmFtczp7Y2FudmFzQ29udGV4dDp0LHZpZXdwb3J0OmUsdHJhbnNmb3JtOm4sYmFja2dyb3VuZDphfSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmwsb3BlcmF0b3JMaXN0OnUub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTpwLHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohZyxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6Y30pOyh1LnJlbmRlclRhc2tzfHw9bmV3IFNldCkuYWRkKG0pO2NvbnN0IGY9bS50YXNrO1Byb21pc2UuYWxsKFt1LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxvXSkudGhlbigoKFt0LGVdKT0+e2lmKHRoaXMucGVuZGluZ0NsZWFudXApY29tcGxldGUoKTtlbHNle3RoaXMuX3N0YXRzPy50aW1lKCJSZW5kZXJpbmciKTttLmluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KTttLm9wZXJhdG9yTGlzdENoYW5nZWQoKX19KSkuY2F0Y2goY29tcGxldGUpO3JldHVybiBmfWdldE9wZXJhdG9yTGlzdCh7aW50ZW50OnQ9ImRpc3BsYXkiLGFubm90YXRpb25Nb2RlOmU9X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6cz1udWxsfT17fSl7Y29uc3QgaT10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KHQsZSxzLCEwKTtsZXQgbixyPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoaS5jYWNoZUtleSk7aWYoIXIpe3I9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGkuY2FjaGVLZXkscil9aWYoIXIub3BMaXN0UmVhZENhcGFiaWxpdHkpe249T2JqZWN0LmNyZWF0ZShudWxsKTtuLm9wZXJhdG9yTGlzdENoYW5nZWQ9ZnVuY3Rpb24gb3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHIub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7ci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKHIub3BlcmF0b3JMaXN0KTtyLnJlbmRlclRhc2tzLmRlbGV0ZShuKX19O3Iub3BMaXN0UmVhZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7KHIucmVuZGVyVGFza3N8fD1uZXcgU2V0KS5hZGQobik7ci5vcGVyYXRvckxpc3Q9e2ZuQXJyYXk6W10sYXJnc0FycmF5OltdLGxhc3RDaHVuazohMSxzZXBhcmF0ZUFubm90czpudWxsfTt0aGlzLl9zdGF0cz8udGltZSgiUGFnZSBSZXF1ZXN0Iik7dGhpcy5fcHVtcE9wZXJhdG9yTGlzdChpKX1yZXR1cm4gci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlfXN0cmVhbVRleHRDb250ZW50KHtkaXNhYmxlQ29tYmluZVRleHRJdGVtczp0PSExLGluY2x1ZGVNYXJrZWRDb250ZW50OmU9ITF9PXt9KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRUZXh0Q29udGVudCIse3BhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY29tYmluZVRleHRJdGVtczohMCE9PXQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITA9PT1lfSx7aGlnaFdhdGVyTWFyazoxMDAsc2l6ZTp0PT50Lml0ZW1zLmxlbmd0aH0pfWdldFRleHRDb250ZW50KHQ9e30pe2lmKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSlyZXR1cm4gdGhpcy5nZXRYZmEoKS50aGVuKCh0PT5feGZhX3RleHQuWGZhVGV4dC50ZXh0Q29udGVudCh0KSkpO2NvbnN0IGU9dGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscyl7Y29uc3QgaT1lLmdldFJlYWRlcigpLG49e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gcHVtcCgpe2kucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6c30pe2lmKHMpdChuKTtlbHNle09iamVjdC5hc3NpZ24obi5zdHlsZXMsZS5zdHlsZXMpO24uaXRlbXMucHVzaCguLi5lLml0ZW1zKTtwdW1wKCl9fSkscyl9KCl9KSl9Z2V0U3RydWN0VHJlZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRTdHJ1Y3RUcmVlKHRoaXMuX3BhZ2VJbmRleCl9X2Rlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDtjb25zdCB0PVtdO2Zvcihjb25zdCBlIG9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSl7dGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOmUscmVhc29uOm5ldyBFcnJvcigiUGFnZSB3YXMgZGVzdHJveWVkLiIpLGZvcmNlOiEwfSk7aWYoIWUub3BMaXN0UmVhZENhcGFiaWxpdHkpZm9yKGNvbnN0IHMgb2YgZS5yZW5kZXJUYXNrcyl7dC5wdXNoKHMuY29tcGxldGVkKTtzLmNhbmNlbCgpfX10aGlzLm9ianMuY2xlYXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9iaXRtYXBzKXQuY2xvc2UoKTt0aGlzLl9iaXRtYXBzLmNsZWFyKCk7dGhpcy5fYW5ub3RhdGlvblByb21pc2VzLmNsZWFyKCk7dGhpcy5fanNBY3Rpb25zUHJvbWlzZT1udWxsO3RoaXMuX3N0cnVjdFRyZWVQcm9taXNlPW51bGw7dGhpcy5wZW5kaW5nQ2xlYW51cD0hMTtyZXR1cm4gUHJvbWlzZS5hbGwodCl9Y2xlYW51cCh0PSExKXt0aGlzLnBlbmRpbmdDbGVhbnVwPSEwO3JldHVybiB0aGlzLl90cnlDbGVhbnVwKHQpfV90cnlDbGVhbnVwKHQ9ITEpe2lmKCF0aGlzLnBlbmRpbmdDbGVhbnVwKXJldHVybiExO2Zvcihjb25zdHtyZW5kZXJUYXNrczp0LG9wZXJhdG9yTGlzdDplfW9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSlpZih0LnNpemU+MHx8IWUubGFzdENodW5rKXJldHVybiExO3RoaXMuX2ludGVudFN0YXRlcy5jbGVhcigpO3RoaXMub2Jqcy5jbGVhcigpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5jbGVhcigpO3RoaXMuX2pzQWN0aW9uc1Byb21pc2U9bnVsbDt0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZT1udWxsO3QmJnRoaXMuX3N0YXRzJiYodGhpcy5fc3RhdHM9bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fYml0bWFwcyl0LmNsb3NlKCk7dGhpcy5fYml0bWFwcy5jbGVhcigpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7cmV0dXJuITB9X3N0YXJ0UmVuZGVyUGFnZSh0LGUpe2NvbnN0IHM9dGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtpZihzKXt0aGlzLl9zdGF0cz8udGltZUVuZCgiUGFnZSBSZXF1ZXN0Iik7cy5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5Py5yZXNvbHZlKHQpfX1fcmVuZGVyUGFnZUNodW5rKHQsZSl7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cysrKXtlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2godC5mbkFycmF5W3NdKTtlLm9wZXJhdG9yTGlzdC5hcmdzQXJyYXkucHVzaCh0LmFyZ3NBcnJheVtzXSl9ZS5vcGVyYXRvckxpc3QubGFzdENodW5rPXQubGFzdENodW5rO2Uub3BlcmF0b3JMaXN0LnNlcGFyYXRlQW5ub3RzPXQuc2VwYXJhdGVBbm5vdHM7Zm9yKGNvbnN0IHQgb2YgZS5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0Lmxhc3RDaHVuayYmdGhpcy5fdHJ5Q2xlYW51cCgpfV9wdW1wT3BlcmF0b3JMaXN0KHtyZW5kZXJpbmdJbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlTWFwOnN9KXtjb25zdCBpPXRoaXMuX3RyYW5zcG9ydC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0T3BlcmF0b3JMaXN0Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlOnN9KS5nZXRSZWFkZXIoKSxuPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoZSk7bi5zdHJlYW1SZWFkZXI9aTtjb25zdCBwdW1wPSgpPT57aS5yZWFkKCkudGhlbigoKHt2YWx1ZTp0LGRvbmU6ZX0pPT57aWYoZSluLnN0cmVhbVJlYWRlcj1udWxsO2Vsc2UgaWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe3RoaXMuX3JlbmRlclBhZ2VDaHVuayh0LG4pO3B1bXAoKX19KSwodD0+e24uc3RyZWFtUmVhZGVyPW51bGw7aWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe2lmKG4ub3BlcmF0b3JMaXN0KXtuLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bms9ITA7Zm9yKGNvbnN0IHQgb2Ygbi5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0aGlzLl90cnlDbGVhbnVwKCl9aWYobi5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW4uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighbi5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O24ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9O3B1bXAoKX1fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOnQscmVhc29uOmUsZm9yY2U6cz0hMX0pe2lmKHQuc3RyZWFtUmVhZGVyKXtpZighcyl7aWYodC5yZW5kZXJUYXNrcy5zaXplPjApcmV0dXJuO2lmKGUgaW5zdGFuY2VvZiBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24pe3Quc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2Fib3J0T3BlcmF0b3JMaXN0KHtpbnRlbnRTdGF0ZTp0LHJlYXNvbjplLGZvcmNlOiEwfSk7dC5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9KSxSRU5ERVJJTkdfQ0FOQ0VMTEVEX1RJTUVPVVQpO3JldHVybn19dC5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpKS5jYXRjaCgoKCk9Pnt9KSk7dC5zdHJlYW1SZWFkZXI9bnVsbDtpZighdGhpcy5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7Zm9yKGNvbnN0W2Usc11vZiB0aGlzLl9pbnRlbnRTdGF0ZXMpaWYocz09PXQpe3RoaXMuX2ludGVudFN0YXRlcy5kZWxldGUoZSk7YnJlYWt9dGhpcy5jbGVhbnVwKCl9fX1nZXQgc3RhdHMoKXtyZXR1cm4gdGhpcy5fc3RhdHN9fWV4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTtjbGFzcyBMb29wYmFja1BvcnR7I2U9W107I3M9UHJvbWlzZS5yZXNvbHZlKCk7cG9zdE1lc3NhZ2UodCxlKXtjb25zdCBzPXtkYXRhOnN0cnVjdHVyZWRDbG9uZSh0LGUpfTt0aGlzLiNzLnRoZW4oKCgpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy4jZSl0LmNhbGwodGhpcyxzKX0pKX1hZGRFdmVudExpc3RlbmVyKHQsZSl7dGhpcy4jZS5wdXNoKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtjb25zdCBzPXRoaXMuI2UuaW5kZXhPZihlKTt0aGlzLiNlLnNwbGljZShzLDEpfXRlcm1pbmF0ZSgpe3RoaXMuI2UubGVuZ3RoPTB9fWV4cG9ydHMuTG9vcGJhY2tQb3J0PUxvb3BiYWNrUG9ydDtjb25zdCBQREZXb3JrZXJVdGlsPXtpc1dvcmtlckRpc2FibGVkOiExLGZhbGxiYWNrV29ya2VyU3JjOm51bGwsZmFrZVdvcmtlcklkOjB9O2V4cG9ydHMuUERGV29ya2VyVXRpbD1QREZXb3JrZXJVdGlsO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7UERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkPSEwO1BERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9Ii4vcGRmLndvcmtlci5qcyJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50KXtjb25zdCB0PWRvY3VtZW50Py5jdXJyZW50U2NyaXB0Py5zcmM7dCYmKFBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9dC5yZXBsYWNlKC8oXC4oPzptaW5cLik/anMpKFw/LiopPyQvaSwiLndvcmtlciQxJDIiKSl9UERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW49ZnVuY3Rpb24odCxlKXtsZXQgczt0cnl7cz1uZXcgVVJMKHQpO2lmKCFzLm9yaWdpbnx8Im51bGwiPT09cy5vcmlnaW4pcmV0dXJuITF9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1uZXcgVVJMKGUscyk7cmV0dXJuIHMub3JpZ2luPT09aS5vcmlnaW59O1BERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcj1mdW5jdGlvbih0KXtjb25zdCBlPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZV0pKX07Y2xhc3MgUERGV29ya2Vye3N0YXRpYyNpPW5ldyBXZWFrTWFwO2NvbnN0cnVjdG9yKHtuYW1lOnQ9bnVsbCxwb3J0OmU9bnVsbCx2ZXJib3NpdHk6cz0oMCxfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKX09e30pe2lmKGUmJlBERldvcmtlci4jaS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO3RoaXMubmFtZT10O3RoaXMuZGVzdHJveWVkPSExO3RoaXMudmVyYm9zaXR5PXM7dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3BvcnQ9bnVsbDt0aGlzLl93ZWJXb3JrZXI9bnVsbDt0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsO2lmKGUpe1BERldvcmtlci4jaS5zZXQoZSx0aGlzKTt0aGlzLl9pbml0aWFsaXplRnJvbVBvcnQoZSl9ZWxzZSB0aGlzLl9pbml0aWFsaXplKCl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2V9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5fcG9ydH1nZXQgbWVzc2FnZUhhbmRsZXIoKXtyZXR1cm4gdGhpcy5fbWVzc2FnZUhhbmRsZXJ9X2luaXRpYWxpemVGcm9tUG9ydCh0KXt0aGlzLl9wb3J0PXQ7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIoIm1haW4iLCJ3b3JrZXIiLHQpO3RoaXMuX21lc3NhZ2VIYW5kbGVyLm9uKCJyZWFkeSIsKGZ1bmN0aW9uKCl7fSkpO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7dGhpcy5fbWVzc2FnZUhhbmRsZXIuc2VuZCgiY29uZmlndXJlIix7dmVyYm9zaXR5OnRoaXMudmVyYm9zaXR5fSl9X2luaXRpYWxpemUoKXtpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkJiYhUERGV29ya2VyLl9tYWluVGhyZWFkV29ya2VyTWVzc2FnZUhhbmRsZXIpe2xldHt3b3JrZXJTcmM6dH09UERGV29ya2VyO3RyeXtQREZXb3JrZXJVdGlsLmlzU2FtZU9yaWdpbih3aW5kb3cubG9jYXRpb24uaHJlZix0KXx8KHQ9UERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyKG5ldyBVUkwodCx3aW5kb3cubG9jYXRpb24pLmhyZWYpKTtjb25zdCBlPW5ldyBXb3JrZXIodCkscz1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcigibWFpbiIsIndvcmtlciIsZSksdGVybWluYXRlRWFybHk9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtzLmRlc3Ryb3koKTtlLnRlcm1pbmF0ZSgpO3RoaXMuZGVzdHJveWVkP3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTp0aGlzLl9zZXR1cEZha2VXb3JrZXIoKX0sb25Xb3JrZXJFcnJvcj0oKT0+e3RoaXMuX3dlYldvcmtlcnx8dGVybWluYXRlRWFybHkoKX07ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7cy5vbigidGVzdCIsKHQ9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtpZih0aGlzLmRlc3Ryb3llZCl0ZXJtaW5hdGVFYXJseSgpO2Vsc2UgaWYodCl7dGhpcy5fbWVzc2FnZUhhbmRsZXI9czt0aGlzLl9wb3J0PWU7dGhpcy5fd2ViV29ya2VyPWU7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtzLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfWVsc2V7dGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7cy5kZXN0cm95KCk7ZS50ZXJtaW5hdGUoKX19KSk7cy5vbigicmVhZHkiLCh0PT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7aWYodGhpcy5kZXN0cm95ZWQpdGVybWluYXRlRWFybHkoKTtlbHNlIHRyeXtzZW5kVGVzdCgpfWNhdGNoKHQpe3RoaXMuX3NldHVwRmFrZVdvcmtlcigpfX0pKTtjb25zdCBzZW5kVGVzdD0oKT0+e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXk7cy5zZW5kKCJ0ZXN0Iix0LFt0LmJ1ZmZlcl0pfTtzZW5kVGVzdCgpO3JldHVybn1jYXRjaCh0KXsoMCxfdXRpbC5pbmZvKSgiVGhlIHdvcmtlciBoYXMgYmVlbiBkaXNhYmxlZC4iKX19dGhpcy5fc2V0dXBGYWtlV29ya2VyKCl9X3NldHVwRmFrZVdvcmtlcigpe2lmKCFQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQpeygwLF91dGlsLndhcm4pKCJTZXR0aW5nIHVwIGZha2Ugd29ya2VyLiIpO1BERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZD0hMH1QREZXb3JrZXIuX3NldHVwRmFrZVdvcmtlckdsb2JhbC50aGVuKCh0PT57aWYodGhpcy5kZXN0cm95ZWQpe3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTtyZXR1cm59Y29uc3QgZT1uZXcgTG9vcGJhY2tQb3J0O3RoaXMuX3BvcnQ9ZTtjb25zdCBzPSJmYWtlIitQREZXb3JrZXJVdGlsLmZha2VXb3JrZXJJZCsrLGk9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIocysiX3dvcmtlciIscyxlKTt0LnNldHVwKGksZSk7Y29uc3Qgbj1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihzLHMrIl93b3JrZXIiLGUpO3RoaXMuX21lc3NhZ2VIYW5kbGVyPW47dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtuLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfSkpLmNhdGNoKCh0PT57dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoYFNldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiAiJHt0Lm1lc3NhZ2V9Ii5gKSl9KSl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwO2lmKHRoaXMuX3dlYldvcmtlcil7dGhpcy5fd2ViV29ya2VyLnRlcm1pbmF0ZSgpO3RoaXMuX3dlYldvcmtlcj1udWxsfVBERldvcmtlci4jaS5kZWxldGUodGhpcy5fcG9ydCk7dGhpcy5fcG9ydD1udWxsO2lmKHRoaXMuX21lc3NhZ2VIYW5kbGVyKXt0aGlzLl9tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bnVsbH19c3RhdGljIGZyb21Qb3J0KHQpe2lmKCF0Py5wb3J0KXRocm93IG5ldyBFcnJvcigiUERGV29ya2VyLmZyb21Qb3J0IC0gaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlLiIpO3JldHVybiB0aGlzLiNpLmhhcyh0LnBvcnQpP3RoaXMuI2kuZ2V0KHQucG9ydCk6bmV3IFBERldvcmtlcih0KX1zdGF0aWMgZ2V0IHdvcmtlclNyYygpe2lmKF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYylyZXR1cm4gX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjO2lmKG51bGwhPT1QREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjKXtfaXNfbm9kZS5pc05vZGVKU3x8KDAsX2Rpc3BsYXlfdXRpbHMuZGVwcmVjYXRlZCkoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpO3JldHVybiBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjfXRocm93IG5ldyBFcnJvcignTm8gIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjIiBzcGVjaWZpZWQuJyl9c3RhdGljIGdldCBfbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyKCl7dHJ5e3JldHVybiBnbG9iYWxUaGlzLnBkZmpzV29ya2VyPy5Xb3JrZXJNZXNzYWdlSGFuZGxlcnx8bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19c3RhdGljIGdldCBfc2V0dXBGYWtlV29ya2VyR2xvYmFsKCl7Y29uc3QgbG9hZGVyPWFzeW5jKCk9Pntjb25zdCBtYWluV29ya2VyTWVzc2FnZUhhbmRsZXI9dGhpcy5fbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcilyZXR1cm4gbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7Y29uc3Qgd29ya2VyPWV2YWwoInJlcXVpcmUiKSh0aGlzLndvcmtlclNyYyk7cmV0dXJuIHdvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcn1hd2FpdCgwLF9kaXNwbGF5X3V0aWxzLmxvYWRTY3JpcHQpKHRoaXMud29ya2VyU3JjKTtyZXR1cm4gd2luZG93LnBkZmpzV29ya2VyLldvcmtlck1lc3NhZ2VIYW5kbGVyfTtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsIl9zZXR1cEZha2VXb3JrZXJHbG9iYWwiLGxvYWRlcigpKX19ZXhwb3J0cy5QREZXb3JrZXI9UERGV29ya2VyO2NsYXNzIFdvcmtlclRyYW5zcG9ydHsjbj1udWxsOyNyPW5ldyBNYXA7I2E9bmV3IE1hcDsjbz1udWxsO2NvbnN0cnVjdG9yKHQsZSxzLGkpe3RoaXMubWVzc2FnZUhhbmRsZXI9dDt0aGlzLmxvYWRpbmdUYXNrPWU7dGhpcy5jb21tb25PYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuZm9udExvYWRlcj1uZXcgX2ZvbnRfbG9hZGVyLkZvbnRMb2FkZXIoe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnRoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlLmJpbmQodGhpcyksb3duZXJEb2N1bWVudDppLm93bmVyRG9jdW1lbnQsc3R5bGVFbGVtZW50Omkuc3R5bGVFbGVtZW50fSk7dGhpcy5fcGFyYW1zPWk7aWYoIWkudXNlV29ya2VyRmV0Y2gpe3RoaXMuQ01hcFJlYWRlckZhY3Rvcnk9bmV3IGkuQ01hcFJlYWRlckZhY3Rvcnkoe2Jhc2VVcmw6aS5jTWFwVXJsLGlzQ29tcHJlc3NlZDppLmNNYXBQYWNrZWR9KTt0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5PW5ldyBpLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5KHtiYXNlVXJsOmkuc3RhbmRhcmRGb250RGF0YVVybH0pfXRoaXMuZGVzdHJveWVkPSExO3RoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbDt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9bnVsbDt0aGlzLl9uZXR3b3JrU3RyZWFtPXM7dGhpcy5fZnVsbFJlYWRlcj1udWxsO3RoaXMuX2xhc3RQcm9ncmVzcz1udWxsO3RoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIoKX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImFubm90YXRpb25TdG9yYWdlIixuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSl9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuI259Z2V0UmVuZGVyaW5nSW50ZW50KHQsZT1fdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscz1udWxsLGk9ITEpe2xldCBuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSxyPW51bGw7c3dpdGNoKHQpe2Nhc2UiYW55IjpuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO2JyZWFrO2Nhc2UiZGlzcGxheSI6YnJlYWs7Y2FzZSJwcmludCI6bj1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoYGdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiAke3R9YCl9c3dpdGNoKGUpe2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6bis9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUzticmVhaztjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOm4rPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtyPShuJl91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQmJnMgaW5zdGFuY2VvZiBfYW5ub3RhdGlvbl9zdG9yYWdlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U/czp0aGlzLmFubm90YXRpb25TdG9yYWdlKS5zZXJpYWxpemFibGU7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC53YXJuKShgZ2V0UmVuZGVyaW5nSW50ZW50IC0gaW52YWxpZCBhbm5vdGF0aW9uTW9kZTogJHtlfWApfWkmJihuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVCk7cmV0dXJue3JlbmRlcmluZ0ludGVudDpuLGNhY2hlS2V5OmAke259XyR7X2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZS5nZXRIYXNoKHIpfWAsYW5ub3RhdGlvblN0b3JhZ2VNYXA6cn19ZGVzdHJveSgpe2lmKHRoaXMuZGVzdHJveUNhcGFiaWxpdHkpcmV0dXJuIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucHJvbWlzZTt0aGlzLmRlc3Ryb3llZD0hMDt0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eSYmdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIGR1cmluZyBvblBhc3N3b3JkIGNhbGxiYWNrIikpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy4jci52YWx1ZXMoKSl0LnB1c2goZS5fZGVzdHJveSgpKTt0aGlzLiNyLmNsZWFyKCk7dGhpcy4jYS5jbGVhcigpO3RoaXMuaGFzT3duUHJvcGVydHkoImFubm90YXRpb25TdG9yYWdlIikmJnRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO2NvbnN0IGU9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlRlcm1pbmF0ZSIsbnVsbCk7dC5wdXNoKGUpO1Byb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGw7dGhpcy5fbmV0d29ya1N0cmVhbSYmdGhpcy5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7aWYodGhpcy5tZXNzYWdlSGFuZGxlcil7dGhpcy5tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5tZXNzYWdlSGFuZGxlcj1udWxsfXRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVzb2x2ZSgpfSksdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5yZWplY3QpO3JldHVybiB0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnByb21pc2V9c2V0dXBNZXNzYWdlSGFuZGxlcigpe2NvbnN0e21lc3NhZ2VIYW5kbGVyOnQsbG9hZGluZ1Rhc2s6ZX09dGhpczt0Lm9uKCJHZXRSZWFkZXIiLCgodCxlKT0+eygwLF91dGlsLmFzc2VydCkodGhpcy5fbmV0d29ya1N0cmVhbSwiR2V0UmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTt0aGlzLl9mdWxsUmVhZGVyPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0RnVsbFJlYWRlcigpO3RoaXMuX2Z1bGxSZWFkZXIub25Qcm9ncmVzcz10PT57dGhpcy5fbGFzdFByb2dyZXNzPXtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH19O2Uub25QdWxsPSgpPT57dGhpcy5fZnVsbFJlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24oe3ZhbHVlOnQsZG9uZTpzfSl7aWYocyllLmNsb3NlKCk7ZWxzZXsoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKTtlLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodCksMSxbdF0pfX0pKS5jYXRjaCgodD0+e2UuZXJyb3IodCl9KSl9O2Uub25DYW5jZWw9dD0+e3RoaXMuX2Z1bGxSZWFkZXIuY2FuY2VsKHQpO2UucmVhZHkuY2F0Y2goKHQ9PntpZighdGhpcy5kZXN0cm95ZWQpdGhyb3cgdH0pKX19KSk7dC5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwodD0+e2NvbnN0IHM9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksaT10aGlzLl9mdWxsUmVhZGVyO2kuaGVhZGVyc1JlYWR5LnRoZW4oKCgpPT57aWYoIWkuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fCFpLmlzUmFuZ2VTdXBwb3J0ZWQpe3RoaXMuX2xhc3RQcm9ncmVzcyYmZS5vblByb2dyZXNzPy4odGhpcy5fbGFzdFByb2dyZXNzKTtpLm9uUHJvZ3Jlc3M9dD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH0pfX1zLnJlc29sdmUoe2lzU3RyZWFtaW5nU3VwcG9ydGVkOmkuaXNTdHJlYW1pbmdTdXBwb3J0ZWQsaXNSYW5nZVN1cHBvcnRlZDppLmlzUmFuZ2VTdXBwb3J0ZWQsY29udGVudExlbmd0aDppLmNvbnRlbnRMZW5ndGh9KX0pLHMucmVqZWN0KTtyZXR1cm4gcy5wcm9taXNlfSkpO3Qub24oIkdldFJhbmdlUmVhZGVyIiwoKHQsZSk9PnsoMCxfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTtjb25zdCBzPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIodC5iZWdpbix0LmVuZCk7aWYocyl7ZS5vblB1bGw9KCk9PntzLnJlYWQoKS50aGVuKChmdW5jdGlvbih7dmFsdWU6dCxkb25lOnN9KXtpZihzKWUuY2xvc2UoKTtlbHNleygwLF91dGlsLmFzc2VydCkoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCksIkdldFJhbmdlUmVhZGVyIC0gZXhwZWN0ZWQgYW4gQXJyYXlCdWZmZXIuIik7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHQpLDEsW3RdKX19KSkuY2F0Y2goKHQ9PntlLmVycm9yKHQpfSkpfTtlLm9uQ2FuY2VsPXQ9PntzLmNhbmNlbCh0KTtlLnJlYWR5LmNhdGNoKCh0PT57aWYoIXRoaXMuZGVzdHJveWVkKXRocm93IHR9KSl9fWVsc2UgZS5jbG9zZSgpfSkpO3Qub24oIkdldERvYyIsKCh7cGRmSW5mbzp0fSk9Pnt0aGlzLl9udW1QYWdlcz10Lm51bVBhZ2VzO3RoaXMuX2h0bWxGb3JYZmE9dC5odG1sRm9yWGZhO2RlbGV0ZSB0Lmh0bWxGb3JYZmE7ZS5fY2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBQREZEb2N1bWVudFByb3h5KHQsdGhpcykpfSkpO3Qub24oIkRvY0V4Y2VwdGlvbiIsKGZ1bmN0aW9uKHQpe2xldCBzO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnM9bmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2JyZWFrO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuSW52YWxpZFBERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpzPW5ldyBfdXRpbC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTticmVhaztjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LmRldGFpbHMpO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwudW5yZWFjaGFibGUpKCJEb2NFeGNlcHRpb24gLSBleHBlY3RlZCBhIHZhbGlkIEVycm9yLiIpfWUuX2NhcGFiaWxpdHkucmVqZWN0KHMpfSkpO3Qub24oIlBhc3N3b3JkUmVxdWVzdCIsKHQ9Pnt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7aWYoZS5vblBhc3N3b3JkKXtjb25zdCB1cGRhdGVQYXNzd29yZD10PT57dCBpbnN0YW5jZW9mIEVycm9yP3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCk6dGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlc29sdmUoe3Bhc3N3b3JkOnR9KX07dHJ5e2Uub25QYXNzd29yZCh1cGRhdGVQYXNzd29yZCx0LmNvZGUpfWNhdGNoKHQpe3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCl9fWVsc2UgdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgX3V0aWwuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSkpO3JldHVybiB0aGlzLl9wYXNzd29yZENhcGFiaWxpdHkucHJvbWlzZX0pKTt0Lm9uKCJEYXRhTG9hZGVkIiwodD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sZW5ndGgsdG90YWw6dC5sZW5ndGh9KTt0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkucmVzb2x2ZSh0KX0pKTt0Lm9uKCJTdGFydFJlbmRlclBhZ2UiLCh0PT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO3RoaXMuI3IuZ2V0KHQucGFnZUluZGV4KS5fc3RhcnRSZW5kZXJQYWdlKHQudHJhbnNwYXJlbmN5LHQuY2FjaGVLZXkpfSkpO3Qub24oImNvbW1vbm9iaiIsKChbZSxzLGldKT0+e2lmKCF0aGlzLmRlc3Ryb3llZCYmIXRoaXMuY29tbW9uT2Jqcy5oYXMoZSkpc3dpdGNoKHMpe2Nhc2UiRm9udCI6Y29uc3Qgbj10aGlzLl9wYXJhbXM7aWYoImVycm9yImluIGkpe2NvbnN0IHQ9aS5lcnJvcjsoMCxfdXRpbC53YXJuKShgRXJyb3IgZHVyaW5nIGZvbnQgbG9hZGluZzogJHt0fWApO3RoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsdCk7YnJlYWt9bGV0IHI9bnVsbDtuLnBkZkJ1ZyYmZ2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yPy5lbmFibGVkJiYocj17cmVnaXN0ZXJGb250KHQsZSl7Z2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yLmZvbnRBZGRlZCh0LGUpfX0pO2NvbnN0IGE9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChpLHtpc0V2YWxTdXBwb3J0ZWQ6bi5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOm4uZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczpuLmlnbm9yZUVycm9ycyxvblVuc3VwcG9ydGVkRmVhdHVyZTp0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHRoaXMpLGZvbnRSZWdpc3RyeTpyfSk7dGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goKHM9PnQuc2VuZFdpdGhQcm9taXNlKCJGb250RmFsbGJhY2siLHtpZDplfSkpKS5maW5hbGx5KCgoKT0+eyFuLmZvbnRFeHRyYVByb3BlcnRpZXMmJmEuZGF0YSYmKGEuZGF0YT1udWxsKTt0aGlzLmNvbW1vbk9ianMucmVzb2x2ZShlLGEpfSkpO2JyZWFrO2Nhc2UiRm9udFBhdGgiOmNhc2UiSW1hZ2UiOnRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsaSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEdvdCB1bmtub3duIGNvbW1vbiBvYmplY3QgdHlwZSAke3N9YCl9fSkpO3Qub24oIm9iaiIsKChbdCxlLHMsaV0pPT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO2NvbnN0IG49dGhpcy4jci5nZXQoZSk7aWYoIW4ub2Jqcy5oYXModCkpc3dpdGNoKHMpe2Nhc2UiSW1hZ2UiOm4ub2Jqcy5yZXNvbHZlKHQsaSk7Y29uc3QgZT04ZTY7aWYoaSl7bGV0IHQ7aWYoaS5iaXRtYXApe2NvbnN0e2JpdG1hcDplLHdpZHRoOnMsaGVpZ2h0OnJ9PWk7dD1zKnIqNDtuLl9iaXRtYXBzLmFkZChlKX1lbHNlIHQ9aS5kYXRhPy5sZW5ndGh8fDA7dD5lJiYobi5jbGVhbnVwQWZ0ZXJSZW5kZXI9ITApfWJyZWFrO2Nhc2UiUGF0dGVybiI6bi5vYmpzLnJlc29sdmUodCxpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgR290IHVua25vd24gb2JqZWN0IHR5cGUgJHtzfWApfX0pKTt0Lm9uKCJEb2NQcm9ncmVzcyIsKHQ9Pnt0aGlzLmRlc3Ryb3llZHx8ZS5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9KSk7dC5vbigiRG9jU3RhdHMiLCh0PT57dGhpcy5kZXN0cm95ZWR8fCh0aGlzLiNuPU9iamVjdC5mcmVlemUoe3N0cmVhbVR5cGVzOk9iamVjdC5mcmVlemUodC5zdHJlYW1UeXBlcyksZm9udFR5cGVzOk9iamVjdC5mcmVlemUodC5mb250VHlwZXMpfSkpfSkpO3Qub24oIlVuc3VwcG9ydGVkRmVhdHVyZSIsdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUuYmluZCh0aGlzKSk7dC5vbigiRmV0Y2hCdWlsdEluQ01hcCIsKHQ9PnRoaXMuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnRoaXMuQ01hcFJlYWRlckZhY3Rvcnk/dGhpcy5DTWFwUmVhZGVyRmFjdG9yeS5mZXRjaCh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSkpKTt0Lm9uKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLCh0PT50aGlzLmRlc3Ryb3llZD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkLiIpKTp0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5P3RoaXMuU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuZmV0Y2godCk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQsIHNlZSB0aGUgYHVzZVdvcmtlckZldGNoYCBwYXJhbWV0ZXIuIikpKSl9X29uVW5zdXBwb3J0ZWRGZWF0dXJlKHtmZWF0dXJlSWQ6dH0pe3RoaXMuZGVzdHJveWVkfHx0aGlzLmxvYWRpbmdUYXNrLm9uVW5zdXBwb3J0ZWRGZWF0dXJlPy4odCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGF0YSIsbnVsbCl9c2F2ZURvY3VtZW50KCl7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zaXplPD0wJiYoMCxfdXRpbC53YXJuKSgic2F2ZURvY3VtZW50IGNhbGxlZCB3aGlsZSBgYW5ub3RhdGlvblN0b3JhZ2VgIGlzIGVtcHR5LCBwbGVhc2UgdXNlIHRoZSBnZXREYXRhLW1ldGhvZCBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZSxmaWxlbmFtZTp0aGlzLl9mdWxsUmVhZGVyPy5maWxlbmFtZT8/bnVsbH0pLmZpbmFsbHkoKCgpPT57dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5yZXNldE1vZGlmaWVkKCl9KSl9Z2V0UGFnZSh0KXtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDw9MHx8dD50aGlzLl9udW1QYWdlcylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2UgcmVxdWVzdC4iKSk7Y29uc3QgZT10LTEscz10aGlzLiNhLmdldChlKTtpZihzKXJldHVybiBzO2NvbnN0IGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2UiLHtwYWdlSW5kZXg6ZX0pLnRoZW4oKHQ9PntpZih0aGlzLmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zcG9ydCBkZXN0cm95ZWQiKTtjb25zdCBzPW5ldyBQREZQYWdlUHJveHkoZSx0LHRoaXMsdGhpcy5fcGFyYW1zLm93bmVyRG9jdW1lbnQsdGhpcy5fcGFyYW1zLnBkZkJ1Zyk7dGhpcy4jci5zZXQoZSxzKTtyZXR1cm4gc30pKTt0aGlzLiNhLnNldChlLGkpO3JldHVybiBpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10fHwhTnVtYmVyLmlzSW50ZWdlcih0Lm51bSl8fHQubnVtPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKHQuZ2VuKXx8dC5nZW48MD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgcGFnZUluZGV4IHJlcXVlc3QuIikpOnRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSW5kZXgiLHtudW06dC5udW0sZ2VuOnQuZ2VufSl9Z2V0QW5ub3RhdGlvbnModCxlKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEFubm90YXRpb25zIix7cGFnZUluZGV4OnQsaW50ZW50OmV9KX1nZXRGaWVsZE9iamVjdHMoKXtyZXR1cm4gdGhpcy5fZ2V0RmllbGRPYmplY3RzUHJvbWlzZXx8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRGaWVsZE9iamVjdHMiLG51bGwpfWhhc0pTQWN0aW9ucygpe3JldHVybiB0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlfHw9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkhhc0pTQWN0aW9ucyIsbnVsbCl9Z2V0Q2FsY3VsYXRpb25PcmRlcklkcygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCl9Z2V0RGVzdGluYXRpb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREZXN0aW5hdGlvbnMiLG51bGwpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgZGVzdGluYXRpb24gcmVxdWVzdC4iKSk6dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9uIix7aWQ6dH0pfWdldFBhZ2VMYWJlbHMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYWJlbHMiLG51bGwpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYXlvdXQiLG51bGwpfWdldFBhZ2VNb2RlKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlTW9kZSIsbnVsbCl9Z2V0Vmlld2VyUHJlZmVyZW5jZXMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFZpZXdlclByZWZlcmVuY2VzIixudWxsKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcGVuQWN0aW9uIixudWxsKX1nZXRBdHRhY2htZW50cygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0QXR0YWNobWVudHMiLG51bGwpfWdldEphdmFTY3JpcHQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEphdmFTY3JpcHQiLG51bGwpfWdldERvY0pTQWN0aW9ucygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jSlNBY3Rpb25zIixudWxsKX1nZXRQYWdlSlNBY3Rpb25zKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUpTQWN0aW9ucyIse3BhZ2VJbmRleDp0fSl9Z2V0U3RydWN0VHJlZSh0KXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFN0cnVjdFRyZWUiLHtwYWdlSW5kZXg6dH0pfWdldE91dGxpbmUoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE91dGxpbmUiLG51bGwpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKS50aGVuKCh0PT5uZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KSkpfWdldFBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQZXJtaXNzaW9ucyIsbnVsbCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy4jb3x8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRNZXRhZGF0YSIsbnVsbCkudGhlbigodD0+KHtpbmZvOnRbMF0sbWV0YWRhdGE6dFsxXT9uZXcgX21ldGFkYXRhLk1ldGFkYXRhKHRbMV0pOm51bGwsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6dGhpcy5fZnVsbFJlYWRlcj8uZmlsZW5hbWU/P251bGwsY29udGVudExlbmd0aDp0aGlzLl9mdWxsUmVhZGVyPy5jb250ZW50TGVuZ3RoPz9udWxsfSkpKX1nZXRNYXJrSW5mbygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0TWFya0luZm8iLG51bGwpfWFzeW5jIHN0YXJ0Q2xlYW51cCh0PSExKXtpZighdGhpcy5kZXN0cm95ZWQpe2F3YWl0IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJDbGVhbnVwIixudWxsKTtmb3IoY29uc3QgdCBvZiB0aGlzLiNyLnZhbHVlcygpKXtpZighdC5jbGVhbnVwKCkpdGhyb3cgbmV3IEVycm9yKGBzdGFydENsZWFudXA6IFBhZ2UgJHt0LnBhZ2VOdW1iZXJ9IGlzIGN1cnJlbnRseSByZW5kZXJpbmcuYCl9dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dHx8dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGx9fWdldCBsb2FkaW5nUGFyYW1zKCl7Y29uc3QgdD10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LmRpc2FibGVBdXRvRmV0Y2gsZW5hYmxlWGZhOnQuZW5hYmxlWGZhfSl9fWNsYXNzIFBERk9iamVjdHN7I2w9T2JqZWN0LmNyZWF0ZShudWxsKTsjYyh0KXtjb25zdCBlPXRoaXMuI2xbdF07cmV0dXJuIGV8fCh0aGlzLiNsW3RdPXtjYXBhYmlsaXR5OigwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLGRhdGE6bnVsbH0pfWdldCh0LGU9bnVsbCl7aWYoZSl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuY2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT5lKHMuZGF0YSkpKTtyZXR1cm4gbnVsbH1jb25zdCBzPXRoaXMuI2xbdF07aWYoIXM/LmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICR7dH0uYCk7cmV0dXJuIHMuZGF0YX1oYXModCl7cmV0dXJuIHRoaXMuI2xbdF0/LmNhcGFiaWxpdHkuc2V0dGxlZHx8ITF9cmVzb2x2ZSh0LGU9bnVsbCl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuZGF0YT1lO3MuY2FwYWJpbGl0eS5yZXNvbHZlKCl9Y2xlYXIoKXt0aGlzLiNsPU9iamVjdC5jcmVhdGUobnVsbCl9fWNsYXNzIFJlbmRlclRhc2t7I2g9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLiNoPXQ7dGhpcy5vbkNvbnRpbnVlPW51bGx9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy4jaC5jYXBhYmlsaXR5LnByb21pc2V9Y2FuY2VsKCl7dGhpcy4jaC5jYW5jZWwoKX1nZXQgc2VwYXJhdGVBbm5vdHMoKXtjb25zdHtzZXBhcmF0ZUFubm90czp0fT10aGlzLiNoLm9wZXJhdG9yTGlzdDtpZighdClyZXR1cm4hMTtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmV9PXRoaXMuI2g7cmV0dXJuIHQuZm9ybXx8dC5jYW52YXMmJmU/LnNpemU+MH19ZXhwb3J0cy5SZW5kZXJUYXNrPVJlbmRlclRhc2s7Y2xhc3MgSW50ZXJuYWxSZW5kZXJUYXNre3N0YXRpYyNkPW5ldyBXZWFrU2V0O2NvbnN0cnVjdG9yKHtjYWxsYmFjazp0LHBhcmFtczplLG9ianM6cyxjb21tb25PYmpzOmksYW5ub3RhdGlvbkNhbnZhc01hcDpuLG9wZXJhdG9yTGlzdDpyLHBhZ2VJbmRleDphLGNhbnZhc0ZhY3Rvcnk6byx1c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6bD0hMSxwZGZCdWc6Yz0hMSxwYWdlQ29sb3JzOmg9bnVsbH0pe3RoaXMuY2FsbGJhY2s9dDt0aGlzLnBhcmFtcz1lO3RoaXMub2Jqcz1zO3RoaXMuY29tbW9uT2Jqcz1pO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcD1uO3RoaXMub3BlcmF0b3JMaXN0SWR4PW51bGw7dGhpcy5vcGVyYXRvckxpc3Q9cjt0aGlzLl9wYWdlSW5kZXg9YTt0aGlzLmNhbnZhc0ZhY3Rvcnk9bzt0aGlzLl9wZGZCdWc9Yzt0aGlzLnBhZ2VDb2xvcnM9aDt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9bnVsbDt0aGlzLmdyYXBoaWNzUmVhZHk9ITE7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPSEwPT09bCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c7dGhpcy5jYW5jZWxsZWQ9ITE7dGhpcy5jYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMudGFzaz1uZXcgUmVuZGVyVGFzayh0aGlzKTt0aGlzLl9jYW5jZWxCb3VuZD10aGlzLmNhbmNlbC5iaW5kKHRoaXMpO3RoaXMuX2NvbnRpbnVlQm91bmQ9dGhpcy5fY29udGludWUuYmluZCh0aGlzKTt0aGlzLl9zY2hlZHVsZU5leHRCb3VuZD10aGlzLl9zY2hlZHVsZU5leHQuYmluZCh0aGlzKTt0aGlzLl9uZXh0Qm91bmQ9dGhpcy5fbmV4dC5iaW5kKHRoaXMpO3RoaXMuX2NhbnZhcz1lLmNhbnZhc0NvbnRleHQuY2FudmFzfWdldCBjb21wbGV0ZWQoKXtyZXR1cm4gdGhpcy5jYXBhYmlsaXR5LnByb21pc2UuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfWluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQ9ITEsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KXtpZih0aGlzLmNhbmNlbGxlZClyZXR1cm47aWYodGhpcy5fY2FudmFzKXtpZihJbnRlcm5hbFJlbmRlclRhc2suI2QuaGFzKHRoaXMuX2NhbnZhcykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIHRoZSBzYW1lIGNhbnZhcyBkdXJpbmcgbXVsdGlwbGUgcmVuZGVyKCkgb3BlcmF0aW9ucy4gVXNlIGRpZmZlcmVudCBjYW52YXMgb3IgZW5zdXJlIHByZXZpb3VzIG9wZXJhdGlvbnMgd2VyZSBjYW5jZWxsZWQgb3IgY29tcGxldGVkLiIpO0ludGVybmFsUmVuZGVyVGFzay4jZC5hZGQodGhpcy5fY2FudmFzKX1pZih0aGlzLl9wZGZCdWcmJmdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXI/LmVuYWJsZWQpe3RoaXMuc3RlcHBlcj1nbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO3RoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTt0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQ9dGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCl9Y29uc3R7Y2FudmFzQ29udGV4dDpzLHZpZXdwb3J0OmksdHJhbnNmb3JtOm4sYmFja2dyb3VuZDpyfT10aGlzLnBhcmFtczt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhzLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LGUsdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwLHRoaXMucGFnZUNvbG9ycyk7dGhpcy5nZnguYmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06bix2aWV3cG9ydDppLHRyYW5zcGFyZW5jeTp0LGJhY2tncm91bmQ6cn0pO3RoaXMub3BlcmF0b3JMaXN0SWR4PTA7dGhpcy5ncmFwaGljc1JlYWR5PSEwO3RoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPy4oKX1jYW5jZWwodD1udWxsKXt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5jYW5jZWxsZWQ9ITA7dGhpcy5nZng/LmVuZERyYXdpbmcoKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jZC5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKHR8fG5ldyBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24oYFJlbmRlcmluZyBjYW5jZWxsZWQsIHBhZ2UgJHt0aGlzLl9wYWdlSW5kZXgrMX1gLCJjYW52YXMiKSl9b3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHRoaXMuZ3JhcGhpY3NSZWFkeSl7dGhpcy5zdGVwcGVyPy51cGRhdGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QpO3RoaXMucnVubmluZ3x8dGhpcy5fY29udGludWUoKX1lbHNlIHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrfHwodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9dGhpcy5fY29udGludWVCb3VuZCl9X2NvbnRpbnVlKCl7dGhpcy5ydW5uaW5nPSEwO3RoaXMuY2FuY2VsbGVkfHwodGhpcy50YXNrLm9uQ29udGludWU/dGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpOnRoaXMuX3NjaGVkdWxlTmV4dCgpKX1fc2NoZWR1bGVOZXh0KCl7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fbmV4dEJvdW5kKCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpfSkpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4odGhpcy5fbmV4dEJvdW5kKS5jYXRjaCh0aGlzLl9jYW5jZWxCb3VuZCl9YXN5bmMgX25leHQoKXtpZighdGhpcy5jYW5jZWxsZWQpe3RoaXMub3BlcmF0b3JMaXN0SWR4PXRoaXMuZ2Z4LmV4ZWN1dGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QsdGhpcy5vcGVyYXRvckxpc3RJZHgsdGhpcy5fY29udGludWVCb3VuZCx0aGlzLnN0ZXBwZXIpO2lmKHRoaXMub3BlcmF0b3JMaXN0SWR4PT09dGhpcy5vcGVyYXRvckxpc3QuYXJnc0FycmF5Lmxlbmd0aCl7dGhpcy5ydW5uaW5nPSExO2lmKHRoaXMub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7dGhpcy5nZnguZW5kRHJhd2luZygpO3RoaXMuX2NhbnZhcyYmSW50ZXJuYWxSZW5kZXJUYXNrLiNkLmRlbGV0ZSh0aGlzLl9jYW52YXMpO3RoaXMuY2FsbGJhY2soKX19fX19Y29uc3QgdmVyc2lvbj0iMy4wLjI3OSI7ZXhwb3J0cy52ZXJzaW9uPXZlcnNpb247Y29uc3QgYnVpbGQ9ImQwODIzMDY2YyI7ZXhwb3J0cy5idWlsZD1idWlsZH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9ZS5Bbm5vdGF0aW9uU3RvcmFnZT12b2lkIDA7dmFyIGk9cygxKSxuPXMoNCkscj1zKDgpO2NsYXNzIEFubm90YXRpb25TdG9yYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmFnZT1uZXcgTWFwO3RoaXMuX21vZGlmaWVkPSExO3RoaXMub25TZXRNb2RpZmllZD1udWxsO3RoaXMub25SZXNldE1vZGlmaWVkPW51bGw7dGhpcy5vbkFubm90YXRpb25FZGl0b3I9bnVsbH1nZXRWYWx1ZSh0LGUpe2NvbnN0IHM9dGhpcy5fc3RvcmFnZS5nZXQodCk7cmV0dXJuIHZvaWQgMD09PXM/ZTpPYmplY3QuYXNzaWduKGUscyl9Z2V0UmF3VmFsdWUodCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0KHQpfXJlbW92ZSh0KXt0aGlzLl9zdG9yYWdlLmRlbGV0ZSh0KTswPT09dGhpcy5fc3RvcmFnZS5zaXplJiZ0aGlzLnJlc2V0TW9kaWZpZWQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3Ipe2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0b3JhZ2UudmFsdWVzKCkpaWYodCBpbnN0YW5jZW9mIG4uQW5ub3RhdGlvbkVkaXRvcilyZXR1cm47dGhpcy5vbkFubm90YXRpb25FZGl0b3IobnVsbCl9fXNldFZhbHVlKHQsZSl7Y29uc3Qgcz10aGlzLl9zdG9yYWdlLmdldCh0KTtsZXQgaT0hMTtpZih2b2lkIDAhPT1zKXtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKHNbdF0hPT1uKXtpPSEwO3NbdF09bn19ZWxzZXtpPSEwO3RoaXMuX3N0b3JhZ2Uuc2V0KHQsZSl9aSYmdGhpcy4jdSgpO2UgaW5zdGFuY2VvZiBuLkFubm90YXRpb25FZGl0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQW5ub3RhdGlvbkVkaXRvciYmdGhpcy5vbkFubm90YXRpb25FZGl0b3IoZS5jb25zdHJ1Y3Rvci5fdHlwZSl9aGFzKHQpe3JldHVybiB0aGlzLl9zdG9yYWdlLmhhcyh0KX1nZXRBbGwoKXtyZXR1cm4gdGhpcy5fc3RvcmFnZS5zaXplPjA/KDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLl9zdG9yYWdlKTpudWxsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2l6ZX0jdSgpe2lmKCF0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITA7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25TZXRNb2RpZmllZCYmdGhpcy5vblNldE1vZGlmaWVkKCl9fXJlc2V0TW9kaWZpZWQoKXtpZih0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITE7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25SZXNldE1vZGlmaWVkJiZ0aGlzLm9uUmVzZXRNb2RpZmllZCgpfX1nZXQgcHJpbnQoKXtyZXR1cm4gbmV3IFByaW50QW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9Z2V0IHNlcmlhbGl6YWJsZSgpe2lmKDA9PT10aGlzLl9zdG9yYWdlLnNpemUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtlLHNdb2YgdGhpcy5fc3RvcmFnZSl7Y29uc3QgaT1zIGluc3RhbmNlb2Ygbi5Bbm5vdGF0aW9uRWRpdG9yP3Muc2VyaWFsaXplKCk6cztpJiZ0LnNldChlLGkpfXJldHVybiB0fXN0YXRpYyBnZXRIYXNoKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IGU9bmV3IHIuTXVybXVySGFzaDNfNjQ7Zm9yKGNvbnN0W3MsaV1vZiB0KWUudXBkYXRlKGAke3N9OiR7SlNPTi5zdHJpbmdpZnkoaSl9YCk7cmV0dXJuIGUuaGV4ZGlnZXN0KCl9fWUuQW5ub3RhdGlvblN0b3JhZ2U9QW5ub3RhdGlvblN0b3JhZ2U7Y2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdleyNwPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLiNwPXN0cnVjdHVyZWRDbG9uZSh0LnNlcmlhbGl6YWJsZSl9Z2V0IHByaW50KCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50Iil9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybiB0aGlzLiNwfX1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9UHJpbnRBbm5vdGF0aW9uU3RvcmFnZX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25FZGl0b3I9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpO2NsYXNzIEFubm90YXRpb25FZGl0b3J7I2c9dGhpcy5mb2N1c2luLmJpbmQodGhpcyk7I209dGhpcy5mb2N1c291dC5iaW5kKHRoaXMpOyNmPSExOyNiPSExOyNBPSExOyNfPUFubm90YXRpb25FZGl0b3IuX3pJbmRleCsrO3N0YXRpYyBfY29sb3JNYW5hZ2VyPW5ldyBpLkNvbG9yTWFuYWdlcjtzdGF0aWMgX3pJbmRleD0xO2NvbnN0cnVjdG9yKHQpe3RoaXMuY29uc3RydWN0b3I9PT1Bbm5vdGF0aW9uRWRpdG9yJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQW5ub3RhdGlvbkVkaXRvci4iKTt0aGlzLnBhcmVudD10LnBhcmVudDt0aGlzLmlkPXQuaWQ7dGhpcy53aWR0aD10aGlzLmhlaWdodD1udWxsO3RoaXMucGFnZUluZGV4PXQucGFyZW50LnBhZ2VJbmRleDt0aGlzLm5hbWU9dC5uYW1lO3RoaXMuZGl2PW51bGw7Y29uc3RbZSxzXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMueD10LngvZTt0aGlzLnk9dC55L3M7dGhpcy5yb3RhdGlvbj10aGlzLnBhcmVudC52aWV3cG9ydC5yb3RhdGlvbjt0aGlzLmlzQXR0YWNoZWRUb0RPTT0hMX1zdGF0aWMgZ2V0IF9kZWZhdWx0TGluZUNvbG9yKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9kZWZhdWx0TGluZUNvbG9yIix0aGlzLl9jb2xvck1hbmFnZXIuZ2V0SGV4Q29kZSgiQ2FudmFzVGV4dCIpKX1zZXRJbkJhY2tncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9MH1zZXRJbkZvcmVncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9dGhpcy4jX31mb2N1c2luKHQpe3RoaXMuI2Y/dGhpcy4jZj0hMTp0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKX1mb2N1c291dCh0KXtpZighdGhpcy5pc0F0dGFjaGVkVG9ET00pcmV0dXJuO2lmKCF0LnJlbGF0ZWRUYXJnZXQ/LmNsb3Nlc3QoYCMke3RoaXMuaWR9YCkpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLnBhcmVudC5pc011bHRpcGxlU2VsZWN0aW9ufHx0aGlzLmNvbW1pdE9yUmVtb3ZlKCl9fWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy5pc0VtcHR5KCk/dGhpcy5yZW1vdmUoKTp0aGlzLmNvbW1pdCgpfWNvbW1pdCgpe3RoaXMucGFyZW50LmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9ZHJhZ3N0YXJ0KHQpe2NvbnN0IGU9dGhpcy5wYXJlbnQuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3RhcnRYPXQuY2xpZW50WC1lLng7dGhpcy5zdGFydFk9dC5jbGllbnRZLWUueTt0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0aGlzLmlkKTt0LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIn1zZXRBdCh0LGUscyxpKXtjb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7W3MsaV09dGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihzLGkpO3RoaXMueD0odCtzKS9uO3RoaXMueT0oZStpKS9yO3RoaXMuZGl2LnN0eWxlLmxlZnQ9MTAwKnRoaXMueCsiJSI7dGhpcy5kaXYuc3R5bGUudG9wPTEwMCp0aGlzLnkrIiUifXRyYW5zbGF0ZSh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztbdCxlXT10aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKHQsZSk7dGhpcy54Kz10L3M7dGhpcy55Kz1lL2k7dGhpcy5kaXYuc3R5bGUubGVmdD0xMDAqdGhpcy54KyIlIjt0aGlzLmRpdi5zdHlsZS50b3A9MTAwKnRoaXMueSsiJSJ9c2NyZWVuVG9QYWdlVHJhbnNsYXRpb24odCxlKXtjb25zdHtyb3RhdGlvbjpzfT10aGlzLnBhcmVudC52aWV3cG9ydDtzd2l0Y2gocyl7Y2FzZSA5MDpyZXR1cm5bZSwtdF07Y2FzZSAxODA6cmV0dXJuWy10LC1lXTtjYXNlIDI3MDpyZXR1cm5bLWUsdF07ZGVmYXVsdDpyZXR1cm5bdCxlXX19c2V0RGltcyh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLmRpdi5zdHlsZS53aWR0aD0xMDAqdC9zKyIlIjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9MTAwKmUvaSsiJSJ9Zml4RGltcygpe2NvbnN0e3N0eWxlOnR9PXRoaXMuZGl2LHtoZWlnaHQ6ZSx3aWR0aDpzfT10LGk9cy5lbmRzV2l0aCgiJSIpLG49ZS5lbmRzV2l0aCgiJSIpO2lmKGkmJm4pcmV0dXJuO2NvbnN0W3IsYV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztpfHwodC53aWR0aD0xMDAqcGFyc2VGbG9hdChzKS9yKyIlIik7bnx8KHQuaGVpZ2h0PTEwMCpwYXJzZUZsb2F0KGUpL2ErIiUiKX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bMCwwXX1yZW5kZXIoKXt0aGlzLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImRhdGEtZWRpdG9yLXJvdGF0aW9uIiwoMzYwLXRoaXMucm90YXRpb24pJTM2MCk7dGhpcy5kaXYuY2xhc3NOYW1lPXRoaXMubmFtZTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLmlkKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoInRhYkluZGV4IiwwKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLiNtKTtjb25zdFt0LGVdPXRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCk7dGhpcy50cmFuc2xhdGUodCxlKTsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnc3RhcnQiLCJwb2ludGVyZG93biJdKTtyZXR1cm4gdGhpcy5kaXZ9cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSl0LnByZXZlbnREZWZhdWx0KCk7ZWxzZXt0LmN0cmxLZXkmJiFlfHx0LnNoaWZ0S2V5fHx0Lm1ldGFLZXkmJmU/dGhpcy5wYXJlbnQudG9nZ2xlU2VsZWN0ZWQodGhpcyk6dGhpcy5wYXJlbnQuc2V0U2VsZWN0ZWQodGhpcyk7dGhpcy4jZj0hMH19Z2V0UmVjdCh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxbbixyXT10aGlzLnBhcmVudC5wYWdlRGltZW5zaW9ucyxhPW4qdC9zLG89ciplL2ksbD10aGlzLngqbixjPXRoaXMueSpyLGg9dGhpcy53aWR0aCpuLGQ9dGhpcy5oZWlnaHQqcjtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltsK2Esci1jLW8tZCxsK2EraCxyLWMtb107Y2FzZSA5MDpyZXR1cm5bbCtvLHItYythLGwrbytkLHItYythK2hdO2Nhc2UgMTgwOnJldHVybltsLWEtaCxyLWMrbyxsLWEsci1jK28rZF07Y2FzZSAyNzA6cmV0dXJuW2wtby1kLHItYy1hLWgsbC1vLHItYy1hXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQsZSl7Y29uc3RbcyxpLG4scl09dCxhPW4tcyxvPXItaTtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltzLGUtcixhLG9dO2Nhc2UgOTA6cmV0dXJuW3MsZS1pLG8sYV07Y2FzZSAxODA6cmV0dXJuW24sZS1pLGEsb107Y2FzZSAyNzA6cmV0dXJuW24sZS1yLG8sYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19b25jZUFkZGVkKCl7fWlzRW1wdHkoKXtyZXR1cm4hMX1lbmFibGVFZGl0TW9kZSgpe3RoaXMuI0E9ITB9ZGlzYWJsZUVkaXRNb2RlKCl7dGhpcy4jQT0hMX1pc0luRWRpdE1vZGUoKXtyZXR1cm4gdGhpcy4jQX1zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpe3JldHVybiExfW5lZWRzVG9CZVJlYnVpbHQoKXtyZXR1cm4gdGhpcy5kaXYmJiF0aGlzLmlzQXR0YWNoZWRUb0RPTX1yZWJ1aWxkKCl7dGhpcy5kaXY/LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpfXNlcmlhbGl6ZSgpeygwLG4udW5yZWFjaGFibGUpKCJBbiBlZGl0b3IgbXVzdCBiZSBzZXJpYWxpemFibGUiKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7cGFyZW50OmUsaWQ6ZS5nZXROZXh0SWQoKX0pO3Mucm90YXRpb249dC5yb3RhdGlvbjtjb25zdFtpLG5dPWUucGFnZURpbWVuc2lvbnMsW3IsYSxvLGxdPXMuZ2V0UmVjdEluQ3VycmVudENvb3Jkcyh0LnJlY3Qsbik7cy54PXIvaTtzLnk9YS9uO3Mud2lkdGg9by9pO3MuaGVpZ2h0PWwvbjtyZXR1cm4gc31yZW1vdmUoKXt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIix0aGlzLiNnKTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsdGhpcy4jbSk7dGhpcy5pc0VtcHR5KCl8fHRoaXMuY29tbWl0KCk7dGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpfXNlbGVjdCgpe3RoaXMuZGl2Py5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfXVuc2VsZWN0KCl7dGhpcy5kaXY/LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkRWRpdG9yIil9dXBkYXRlUGFyYW1zKHQsZSl7fWRpc2FibGVFZGl0aW5nKCl7fWVuYWJsZUVkaXRpbmcoKXt9Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybnt9fWdldCBjb250ZW50RGl2KCl7cmV0dXJuIHRoaXMuZGl2fWdldCBpc0VkaXRpbmcoKXtyZXR1cm4gdGhpcy4jYn1zZXQgaXNFZGl0aW5nKHQpe3RoaXMuI2I9dDtpZih0KXt0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKTt0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IodGhpcyl9ZWxzZSB0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IobnVsbCl9fWUuQW5ub3RhdGlvbkVkaXRvcj1Bbm5vdGF0aW9uRWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuS2V5Ym9hcmRNYW5hZ2VyPWUuQ29tbWFuZE1hbmFnZXI9ZS5Db2xvck1hbmFnZXI9ZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyPXZvaWQgMDtlLmJpbmRFdmVudHM9ZnVuY3Rpb24gYmluZEV2ZW50cyh0LGUscyl7Zm9yKGNvbnN0IGkgb2YgcyllLmFkZEV2ZW50TGlzdGVuZXIoaSx0W2ldLmJpbmQodCkpfTtlLm9wYWNpdHlUb0hleD1mdW5jdGlvbiBvcGFjaXR5VG9IZXgodCl7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oMjU1LE1hdGgubWF4KDEsMjU1KnQpKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX07dmFyIGk9cygxKSxuPXMoNik7Y2xhc3MgSWRNYW5hZ2VyeyN2PTA7Z2V0SWQoKXtyZXR1cm5gJHtpLkFubm90YXRpb25FZGl0b3JQcmVmaXh9JHt0aGlzLiN2Kyt9YH19Y2xhc3MgQ29tbWFuZE1hbmFnZXJ7I3k9W107I1M9ITE7I3g7I0U9LTE7Y29uc3RydWN0b3IodD0xMjgpe3RoaXMuI3g9dH1hZGQoe2NtZDp0LHVuZG86ZSxtdXN0RXhlYzpzLHR5cGU6aT1OYU4sb3ZlcndyaXRlSWZTYW1lVHlwZTpuPSExLGtlZXBVbmRvOnI9ITF9KXtzJiZ0KCk7aWYodGhpcy4jUylyZXR1cm47Y29uc3QgYT17Y21kOnQsdW5kbzplLHR5cGU6aX07aWYoLTE9PT10aGlzLiNFKXt0aGlzLiN5Lmxlbmd0aD4wJiYodGhpcy4jeS5sZW5ndGg9MCk7dGhpcy4jRT0wO3RoaXMuI3kucHVzaChhKTtyZXR1cm59aWYobiYmdGhpcy4jeVt0aGlzLiNFXS50eXBlPT09aSl7ciYmKGEudW5kbz10aGlzLiN5W3RoaXMuI0VdLnVuZG8pO3RoaXMuI3lbdGhpcy4jRV09YTtyZXR1cm59Y29uc3Qgbz10aGlzLiNFKzE7aWYobz09PXRoaXMuI3gpdGhpcy4jeS5zcGxpY2UoMCwxKTtlbHNle3RoaXMuI0U9bztvPHRoaXMuI3kubGVuZ3RoJiZ0aGlzLiN5LnNwbGljZShvKX10aGlzLiN5LnB1c2goYSl9dW5kbygpe2lmKC0xIT09dGhpcy4jRSl7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLnVuZG8oKTt0aGlzLiNTPSExO3RoaXMuI0UtPTF9fXJlZG8oKXtpZih0aGlzLiNFPHRoaXMuI3kubGVuZ3RoLTEpe3RoaXMuI0UrPTE7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLmNtZCgpO3RoaXMuI1M9ITF9fWhhc1NvbWV0aGluZ1RvVW5kbygpe3JldHVybi0xIT09dGhpcy4jRX1oYXNTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy4jRTx0aGlzLiN5Lmxlbmd0aC0xfWRlc3Ryb3koKXt0aGlzLiN5PW51bGx9fWUuQ29tbWFuZE1hbmFnZXI9Q29tbWFuZE1hbmFnZXI7Y2xhc3MgS2V5Ym9hcmRNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe3RoaXMuYnVmZmVyPVtdO3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5hbGxLZXlzPW5ldyBTZXQ7Y29uc3QgZT1LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7Zm9yKGNvbnN0W3MsaV1vZiB0KWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IHM9dC5zdGFydHNXaXRoKCJtYWMrIik7aWYoZSYmcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQuc2xpY2UoNCksaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX1lbHNlIGlmKCFlJiYhcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQsaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX19fXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5wbGF0Zm9ybToiIjtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywicGxhdGZvcm0iLHtpc1dpbjp0LmluY2x1ZGVzKCJXaW4iKSxpc01hYzp0LmluY2x1ZGVzKCJNYWMiKX0pfSNDKHQpe3QuYWx0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJhbHQiKTt0LmN0cmxLZXkmJnRoaXMuYnVmZmVyLnB1c2goImN0cmwiKTt0Lm1ldGFLZXkmJnRoaXMuYnVmZmVyLnB1c2goIm1ldGEiKTt0LnNoaWZ0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJzaGlmdCIpO3RoaXMuYnVmZmVyLnB1c2godC5rZXkpO2NvbnN0IGU9dGhpcy5idWZmZXIuam9pbigiKyIpO3RoaXMuYnVmZmVyLmxlbmd0aD0wO3JldHVybiBlfWV4ZWModCxlKXtpZighdGhpcy5hbGxLZXlzLmhhcyhlLmtleSkpcmV0dXJuO2NvbnN0IHM9dGhpcy5jYWxsYmFja3MuZ2V0KHRoaXMuI0MoZSkpO2lmKHMpe3MuYmluZCh0KSgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfX19ZS5LZXlib2FyZE1hbmFnZXI9S2V5Ym9hcmRNYW5hZ2VyO2NsYXNzIENvbG9yTWFuYWdlcntzdGF0aWMgX2NvbG9yc01hcHBpbmc9bmV3IE1hcChbWyJDYW52YXNUZXh0IixbMCwwLDBdXSxbIkNhbnZhcyIsWzI1NSwyNTUsMjU1XV1dKTtnZXQgX2NvbG9ycygpe2NvbnN0IHQ9bmV3IE1hcChbWyJDYW52YXNUZXh0IixudWxsXSxbIkNhbnZhcyIsbnVsbF1dKTsoMCxuLmdldENvbG9yVmFsdWVzKSh0KTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2NvbG9ycyIsdCl9Y29udmVydCh0KXtjb25zdCBlPSgwLG4uZ2V0UkdCKSh0KTtpZighd2luZG93Lm1hdGNoTWVkaWEoIihmb3JjZWQtY29sb3JzOiBhY3RpdmUpIikubWF0Y2hlcylyZXR1cm4gZTtmb3IoY29uc3RbdCxzXW9mIHRoaXMuX2NvbG9ycylpZihzLmV2ZXJ5KCgodCxzKT0+dD09PWVbc10pKSlyZXR1cm4gQ29sb3JNYW5hZ2VyLl9jb2xvcnNNYXBwaW5nLmdldCh0KTtyZXR1cm4gZX1nZXRIZXhDb2RlKHQpe2NvbnN0IGU9dGhpcy5fY29sb3JzLmdldCh0KTtyZXR1cm4gZT9pLlV0aWwubWFrZUhleENvbG9yKC4uLmUpOnR9fWUuQ29sb3JNYW5hZ2VyPUNvbG9yTWFuYWdlcjtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyeyNQPW51bGw7I1Q9bmV3IE1hcDsjdz1uZXcgTWFwOyNrPW5ldyBDb21tYW5kTWFuYWdlcjsjRj0wOyNNPW51bGw7I1I9bnVsbDsjRD1uZXcgSWRNYW5hZ2VyOyNJPSExOyNPPWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORTsjTD1uZXcgU2V0OyNOPXRoaXMuY29weS5iaW5kKHRoaXMpOyNCPXRoaXMuY3V0LmJpbmQodGhpcyk7I2o9dGhpcy5wYXN0ZS5iaW5kKHRoaXMpOyNVPXRoaXMua2V5ZG93bi5iaW5kKHRoaXMpOyNxPXRoaXMub25FZGl0aW5nQWN0aW9uLmJpbmQodGhpcyk7I1c9dGhpcy5vblBhZ2VDaGFuZ2luZy5iaW5kKHRoaXMpOyNHPXtpc0VkaXRpbmc6ITEsaXNFbXB0eTohMCxoYXNTb21ldGhpbmdUb1VuZG86ITEsaGFzU29tZXRoaW5nVG9SZWRvOiExLGhhc1NlbGVjdGVkRWRpdG9yOiExfTsjSD1udWxsO3N0YXRpYyBfa2V5Ym9hcmRNYW5hZ2VyPW5ldyBLZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5zZWxlY3RBbGxdLFtbImN0cmwreiIsIm1hYyttZXRhK3oiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bmRvXSxbWyJjdHJsK3kiLCJjdHJsK3NoaWZ0K1oiLCJtYWMrbWV0YStzaGlmdCtaIl0sQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5wcm90b3R5cGUucmVkb10sW1siQmFja3NwYWNlIiwiYWx0K0JhY2tzcGFjZSIsImN0cmwrQmFja3NwYWNlIiwic2hpZnQrQmFja3NwYWNlIiwibWFjK0JhY2tzcGFjZSIsIm1hYythbHQrQmFja3NwYWNlIiwibWFjK2N0cmwrQmFja3NwYWNlIiwiRGVsZXRlIiwiY3RybCtEZWxldGUiLCJzaGlmdCtEZWxldGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5kZWxldGVdLFtbIkVzY2FwZSIsIm1hYytFc2NhcGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bnNlbGVjdEFsbF1dKTtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuI0g9dDt0aGlzLiNSPWU7dGhpcy4jUi5fb24oImVkaXRpbmdhY3Rpb24iLHRoaXMuI3EpO3RoaXMuI1IuX29uKCJwYWdlY2hhbmdpbmciLHRoaXMuI1cpfWRlc3Ryb3koKXt0aGlzLiN6KCk7dGhpcy4jUi5fb2ZmKCJlZGl0aW5nYWN0aW9uIix0aGlzLiNxKTt0aGlzLiNSLl9vZmYoInBhZ2VjaGFuZ2luZyIsdGhpcy4jVyk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jdy52YWx1ZXMoKSl0LmRlc3Ryb3koKTt0aGlzLiN3LmNsZWFyKCk7dGhpcy4jVC5jbGVhcigpO3RoaXMuI1A9bnVsbDt0aGlzLiNMLmNsZWFyKCk7dGhpcy4jay5kZXN0cm95KCl9b25QYWdlQ2hhbmdpbmcoe3BhZ2VOdW1iZXI6dH0pe3RoaXMuI0Y9dC0xfWZvY3VzTWFpbkNvbnRhaW5lcigpe3RoaXMuI0guZm9jdXMoKX0jVigpe3RoaXMuI0guYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy4jVSl9I3ooKXt0aGlzLiNILnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI1UpfSNYKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jTik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY3V0Iix0aGlzLiNCKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsdGhpcy4jail9IyQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb3B5Iix0aGlzLiNOKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjdXQiLHRoaXMuI0IpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNqKX1jb3B5KHQpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLiNQJiZ0aGlzLiNQLmNvbW1pdE9yUmVtb3ZlKCk7aWYoIXRoaXMuaGFzU2VsZWN0aW9uKXJldHVybjtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuI0wpdC5pc0VtcHR5KCl8fGUucHVzaCh0LnNlcmlhbGl6ZSgpKTswIT09ZS5sZW5ndGgmJnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJhcHBsaWNhdGlvbi9wZGZqcyIsSlNPTi5zdHJpbmdpZnkoZSkpfWN1dCh0KXt0aGlzLmNvcHkodCk7dGhpcy5kZWxldGUoKX1wYXN0ZSh0KXt0LnByZXZlbnREZWZhdWx0KCk7bGV0IGU9dC5jbGlwYm9hcmREYXRhLmdldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIik7aWYoIWUpcmV0dXJuO3RyeXtlPUpTT04ucGFyc2UoZSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApO3JldHVybn1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47dGhpcy51bnNlbGVjdEFsbCgpO2NvbnN0IHM9dGhpcy4jdy5nZXQodGhpcy4jRik7dHJ5e2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1zLmRlc2VyaWFsaXplKGkpO2lmKCFlKXJldHVybjt0LnB1c2goZSl9Y29uc3QgY21kPSgpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpO3RoaXMuI0sodCl9LHVuZG89KCk9Pntmb3IoY29uc3QgZSBvZiB0KWUucmVtb3ZlKCl9O3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpjbWQsdW5kbzp1bmRvLG11c3RFeGVjOiEwfSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApfX1rZXlkb3duKHQpe3RoaXMuZ2V0QWN0aXZlKCk/LnNob3VsZEdldEtleWJvYXJkRXZlbnRzKCl8fEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9b25FZGl0aW5nQWN0aW9uKHQpe1sidW5kbyIsInJlZG8iLCJkZWxldGUiLCJzZWxlY3RBbGwiXS5pbmNsdWRlcyh0Lm5hbWUpJiZ0aGlzW3QubmFtZV0oKX0jSih0KXtPYmplY3QuZW50cmllcyh0KS5zb21lKCgoW3QsZV0pPT50aGlzLiNHW3RdIT09ZSkpJiZ0aGlzLiNSLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6T2JqZWN0LmFzc2lnbih0aGlzLiNHLHQpfSl9I1EodCl7dGhpcy4jUi5kaXNwYXRjaCgiYW5ub3RhdGlvbmVkaXRvcnBhcmFtc2NoYW5nZWQiLHtzb3VyY2U6dGhpcyxkZXRhaWxzOnR9KX1zZXRFZGl0aW5nU3RhdGUodCl7aWYodCl7dGhpcy4jVigpO3RoaXMuI1goKTt0aGlzLiNKKHtpc0VkaXRpbmc6dGhpcy4jTyE9PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSxpc0VtcHR5OnRoaXMuI1ooKSxoYXNTb21ldGhpbmdUb1VuZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1JlZG8oKSxoYXNTZWxlY3RlZEVkaXRvcjohMX0pfWVsc2V7dGhpcy4jeigpO3RoaXMuIyQoKTt0aGlzLiNKKHtpc0VkaXRpbmc6ITF9KX19cmVnaXN0ZXJFZGl0b3JUeXBlcyh0KXtpZighdGhpcy4jTSl7dGhpcy4jTT10O2Zvcihjb25zdCB0IG9mIHRoaXMuI00pdGhpcy4jUSh0LmRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUpfX1nZXRJZCgpe3JldHVybiB0aGlzLiNELmdldElkKCl9YWRkTGF5ZXIodCl7dGhpcy4jdy5zZXQodC5wYWdlSW5kZXgsdCk7dGhpcy4jST90LmVuYWJsZSgpOnQuZGlzYWJsZSgpfXJlbW92ZUxheWVyKHQpe3RoaXMuI3cuZGVsZXRlKHQucGFnZUluZGV4KX11cGRhdGVNb2RlKHQpe3RoaXMuI089dDtpZih0PT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FKXt0aGlzLnNldEVkaXRpbmdTdGF0ZSghMSk7dGhpcy4jdHQoKX1lbHNle3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLiNldCgpO2Zvcihjb25zdCBlIG9mIHRoaXMuI3cudmFsdWVzKCkpZS51cGRhdGVNb2RlKHQpfX11cGRhdGVUb29sYmFyKHQpe3QhPT10aGlzLiNPJiZ0aGlzLiNSLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfXVwZGF0ZVBhcmFtcyh0LGUpe2lmKHRoaXMuI00pe2Zvcihjb25zdCBzIG9mIHRoaXMuI0wpcy51cGRhdGVQYXJhbXModCxlKTtmb3IoY29uc3QgcyBvZiB0aGlzLiNNKXMudXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpfX0jZXQoKXtpZighdGhpcy4jSSl7dGhpcy4jST0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLiN3LnZhbHVlcygpKXQuZW5hYmxlKCl9fSN0dCgpe3RoaXMudW5zZWxlY3RBbGwoKTtpZih0aGlzLiNJKXt0aGlzLiNJPSExO2Zvcihjb25zdCB0IG9mIHRoaXMuI3cudmFsdWVzKCkpdC5kaXNhYmxlKCl9fWdldEVkaXRvcnModCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0aGlzLiNULnZhbHVlcygpKXMucGFnZUluZGV4PT09dCYmZS5wdXNoKHMpO3JldHVybiBlfWdldEVkaXRvcih0KXtyZXR1cm4gdGhpcy4jVC5nZXQodCl9YWRkRWRpdG9yKHQpe3RoaXMuI1Quc2V0KHQuaWQsdCl9cmVtb3ZlRWRpdG9yKHQpe3RoaXMuI1QuZGVsZXRlKHQuaWQpO3RoaXMudW5zZWxlY3QodCl9I1kodCl7Y29uc3QgZT10aGlzLiN3LmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1zZXRBY3RpdmVFZGl0b3IodCl7aWYodGhpcy4jUCE9PXQpe3RoaXMuI1A9dDt0JiZ0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKX19dG9nZ2xlU2VsZWN0ZWQodCl7aWYodGhpcy4jTC5oYXModCkpe3RoaXMuI0wuZGVsZXRlKHQpO3QudW5zZWxlY3QoKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjp0aGlzLmhhc1NlbGVjdGlvbn0pfWVsc2V7dGhpcy4jTC5hZGQodCk7dC5zZWxlY3QoKTt0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjohMH0pfX1zZXRTZWxlY3RlZCh0KXtmb3IoY29uc3QgZSBvZiB0aGlzLiNMKWUhPT10JiZlLnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0wuYWRkKHQpO3Quc2VsZWN0KCk7dGhpcy4jUSh0LnByb3BlcnRpZXNUb1VwZGF0ZSk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNMLmhhcyh0KX11bnNlbGVjdCh0KXt0LnVuc2VsZWN0KCk7dGhpcy4jTC5kZWxldGUodCk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1nZXQgaGFzU2VsZWN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLiNMLnNpemV9dW5kbygpe3RoaXMuI2sudW5kbygpO3RoaXMuI0ooe2hhc1NvbWV0aGluZ1RvVW5kbzp0aGlzLiNrLmhhc1NvbWV0aGluZ1RvVW5kbygpLGhhc1NvbWV0aGluZ1RvUmVkbzohMCxpc0VtcHR5OnRoaXMuI1ooKX0pfXJlZG8oKXt0aGlzLiNrLnJlZG8oKTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOnRoaXMuI2suaGFzU29tZXRoaW5nVG9SZWRvKCksaXNFbXB0eTp0aGlzLiNaKCl9KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNrLmFkZCh0KTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOiExLGlzRW1wdHk6dGhpcy4jWigpfSl9I1ooKXtpZigwPT09dGhpcy4jVC5zaXplKXJldHVybiEwO2lmKDE9PT10aGlzLiNULnNpemUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jVC52YWx1ZXMoKSlyZXR1cm4gdC5pc0VtcHR5KCk7cmV0dXJuITF9ZGVsZXRlKCl7dGhpcy5jb21taXRPclJlbW92ZSgpO2lmKCF0aGlzLmhhc1NlbGVjdGlvbilyZXR1cm47Y29uc3QgdD1bLi4udGhpcy4jTF07dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfSx1bmRvOigpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpfSxtdXN0RXhlYzohMH0pfWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy4jUD8uY29tbWl0T3JSZW1vdmUoKX0jSyh0KXt0aGlzLiNMLmNsZWFyKCk7Zm9yKGNvbnN0IGUgb2YgdClpZighZS5pc0VtcHR5KCkpe3RoaXMuI0wuYWRkKGUpO2Uuc2VsZWN0KCl9dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1zZWxlY3RBbGwoKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNMKXQuY29tbWl0KCk7dGhpcy4jSyh0aGlzLiNULnZhbHVlcygpKX11bnNlbGVjdEFsbCgpe2lmKHRoaXMuI1ApdGhpcy4jUC5jb21taXRPclJlbW92ZSgpO2Vsc2UgaWYoMCE9PXRoaXMuI0wuc2l6ZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jTCl0LnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0ooe2hhc1NlbGVjdGVkRWRpdG9yOiExfSl9fWlzQWN0aXZlKHQpe3JldHVybiB0aGlzLiNQPT09dH1nZXRBY3RpdmUoKXtyZXR1cm4gdGhpcy4jUH1nZXRNb2RlKCl7cmV0dXJuIHRoaXMuI099fWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj1Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhdFRpbWVyPWUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uPWUuUGl4ZWxzUGVySW5jaD1lLlBhZ2VWaWV3cG9ydD1lLlBERkRhdGVTdHJpbmc9ZS5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1lLkRPTVNWR0ZhY3Rvcnk9ZS5ET01DYW52YXNGYWN0b3J5PWUuRE9NQ01hcFJlYWRlckZhY3Rvcnk9ZS5Bbm5vdGF0aW9uUHJlZml4PXZvaWQgMDtlLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gZGVwcmVjYXRlZCh0KXtjb25zb2xlLmxvZygiRGVwcmVjYXRlZCBBUEkgdXNhZ2U6ICIrdCl9O2UuZ2V0Q29sb3JWYWx1ZXM9ZnVuY3Rpb24gZ2V0Q29sb3JWYWx1ZXModCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2RvY3VtZW50LmJvZHkuYXBwZW5kKGUpO2Zvcihjb25zdCBzIG9mIHQua2V5cygpKXtlLnN0eWxlLmNvbG9yPXM7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChzLGdldFJHQihpKSl9ZS5yZW1vdmUoKX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtPWZ1bmN0aW9uIGdldEN1cnJlbnRUcmFuc2Zvcm0odCl7Y29uc3R7YTplLGI6cyxjOmksZDpuLGU6cixmOmF9PXQuZ2V0VHJhbnNmb3JtKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZT1mdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSh0KXtjb25zdHthOmUsYjpzLGM6aSxkOm4sZTpyLGY6YX09dC5nZXRUcmFuc2Zvcm0oKS5pbnZlcnRTZWxmKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIjIikscz10LmluZGV4T2YoIj8iKSxpPU1hdGgubWluKGU+MD9lOnQubGVuZ3RoLHM+MD9zOnQubGVuZ3RoKTtyZXR1cm4gdC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLyIsaSkrMSxpKX07ZS5nZXRQZGZGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0UGRmRmlsZW5hbWVGcm9tVXJsKHQsZT0iZG9jdW1lbnQucGRmIil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBlO2lmKGlzRGF0YVNjaGVtZSh0KSl7KDAsbi53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgImRhdGE6Ii1VUkwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuJyk7cmV0dXJuIGV9Y29uc3Qgcz0vW14vPyM9XStcLnBkZlxiKD8hLipcLnBkZlxiKS9pLGk9L14oPzooPzpbXjpdKzopP1wvXC9bXi9dKyk/KFtePyNdKikoXD9bXiNdKik/KCMuKik/JC8uZXhlYyh0KTtsZXQgcj1zLmV4ZWMoaVsxXSl8fHMuZXhlYyhpWzJdKXx8cy5leGVjKGlbM10pO2lmKHIpe3I9clswXTtpZihyLmluY2x1ZGVzKCIlIikpdHJ5e3I9cy5leGVjKGRlY29kZVVSSUNvbXBvbmVudChyKSlbMF19Y2F0Y2godCl7fX1yZXR1cm4gcnx8ZX07ZS5nZXRSR0I9Z2V0UkdCO2UuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LHtzY2FsZTplPTEscm90YXRpb246cz0wfSl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6bn09dC5hdHRyaWJ1dGVzLnN0eWxlLHI9WzAsMCxwYXJzZUludChpKSxwYXJzZUludChuKV07cmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe3ZpZXdCb3g6cixzY2FsZTplLHJvdGF0aW9uOnN9KX07ZS5pc0RhdGFTY2hlbWU9aXNEYXRhU2NoZW1lO2UuaXNQZGZGaWxlPWZ1bmN0aW9uIGlzUGRmRmlsZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi9cLnBkZiQvaS50ZXN0KHQpfTtlLmlzVmFsaWRGZXRjaFVybD1pc1ZhbGlkRmV0Y2hVcmw7ZS5sb2FkU2NyaXB0PWZ1bmN0aW9uIGxvYWRTY3JpcHQodCxlPSExKXtyZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz10O24ub25sb2FkPWZ1bmN0aW9uKHQpe2UmJm4ucmVtb3ZlKCk7cyh0KX07bi5vbmVycm9yPWZ1bmN0aW9uKCl7aShuZXcgRXJyb3IoYENhbm5vdCBsb2FkIHNjcmlwdCBhdDogJHtuLnNyY31gKSl9Oyhkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZChuKX0pKX07dmFyIGk9cyg3KSxuPXMoMSk7ZS5Bbm5vdGF0aW9uUHJlZml4PSJwZGZqc19pbnRlcm5hbF9pZF8iO2NsYXNzIFBpeGVsc1BlckluY2h7c3RhdGljIENTUz05NjtzdGF0aWMgUERGPTcyO3N0YXRpYyBQREZfVE9fQ1NTX1VOSVRTPXRoaXMuQ1NTL3RoaXMuUERGfWUuUGl4ZWxzUGVySW5jaD1QaXhlbHNQZXJJbmNoO2NsYXNzIERPTUNhbnZhc0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDYW52YXNGYWN0b3J5e2NvbnN0cnVjdG9yKHtvd25lckRvY3VtZW50OnQ9Z2xvYmFsVGhpcy5kb2N1bWVudH09e30pe3N1cGVyKCk7dGhpcy5fZG9jdW1lbnQ9dH1fY3JlYXRlQ2FudmFzKHQsZSl7Y29uc3Qgcz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtzLndpZHRoPXQ7cy5oZWlnaHQ9ZTtyZXR1cm4gc319ZS5ET01DYW52YXNGYWN0b3J5PURPTUNhbnZhc0ZhY3Rvcnk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHQsZT0hMSl7aWYoaXNWYWxpZEZldGNoVXJsKHQsZG9jdW1lbnQuYmFzZVVSSSkpe2NvbnN0IHM9YXdhaXQgZmV0Y2godCk7aWYoIXMub2spdGhyb3cgbmV3IEVycm9yKHMuc3RhdHVzVGV4dCk7cmV0dXJuIGU/bmV3IFVpbnQ4QXJyYXkoYXdhaXQgcy5hcnJheUJ1ZmZlcigpKTooMCxuLnN0cmluZ1RvQnl0ZXMpKGF3YWl0IHMudGV4dCgpKX1yZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgcj1uZXcgWE1MSHR0cFJlcXVlc3Q7ci5vcGVuKCJHRVQiLHQsITApO2UmJihyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKTtyLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHIucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe2lmKDIwMD09PXIuc3RhdHVzfHwwPT09ci5zdGF0dXMpe2xldCB0O2UmJnIucmVzcG9uc2U/dD1uZXcgVWludDhBcnJheShyLnJlc3BvbnNlKTohZSYmci5yZXNwb25zZVRleHQmJih0PSgwLG4uc3RyaW5nVG9CeXRlcykoci5yZXNwb25zZVRleHQpKTtpZih0KXtzKHQpO3JldHVybn19aShuZXcgRXJyb3Ioci5zdGF0dXNUZXh0KSl9fTtyLnNlbmQobnVsbCl9KSl9Y2xhc3MgRE9NQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0LHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PURPTUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIERPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQsITApfX1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5e19jcmVhdGVTVkcodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpfX1lLkRPTVNWR0ZhY3Rvcnk9RE9NU1ZHRmFjdG9yeTtjbGFzcyBQYWdlVmlld3BvcnR7Y29uc3RydWN0b3Ioe3ZpZXdCb3g6dCxzY2FsZTplLHJvdGF0aW9uOnMsb2Zmc2V0WDppPTAsb2Zmc2V0WTpuPTAsZG9udEZsaXA6cj0hMX0pe3RoaXMudmlld0JveD10O3RoaXMuc2NhbGU9ZTt0aGlzLnJvdGF0aW9uPXM7dGhpcy5vZmZzZXRYPWk7dGhpcy5vZmZzZXRZPW47Y29uc3QgYT0odFsyXSt0WzBdKS8yLG89KHRbM10rdFsxXSkvMjtsZXQgbCxjLGgsZCx1LHAsZyxtOyhzJT0zNjApPDAmJihzKz0zNjApO3N3aXRjaChzKXtjYXNlIDE4MDpsPS0xO2M9MDtoPTA7ZD0xO2JyZWFrO2Nhc2UgOTA6bD0wO2M9MTtoPTE7ZD0wO2JyZWFrO2Nhc2UgMjcwOmw9MDtjPS0xO2g9LTE7ZD0wO2JyZWFrO2Nhc2UgMDpsPTE7Yz0wO2g9MDtkPS0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJQYWdlVmlld3BvcnQ6IEludmFsaWQgcm90YXRpb24sIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzLiIpfWlmKHIpe2g9LWg7ZD0tZH1pZigwPT09bCl7dT1NYXRoLmFicyhvLXRbMV0pKmUraTtwPU1hdGguYWJzKGEtdFswXSkqZStuO2c9TWF0aC5hYnModFszXS10WzFdKSplO209TWF0aC5hYnModFsyXS10WzBdKSplfWVsc2V7dT1NYXRoLmFicyhhLXRbMF0pKmUraTtwPU1hdGguYWJzKG8tdFsxXSkqZStuO2c9TWF0aC5hYnModFsyXS10WzBdKSplO209TWF0aC5hYnModFszXS10WzFdKSplfXRoaXMudHJhbnNmb3JtPVtsKmUsYyplLGgqZSxkKmUsdS1sKmUqYS1oKmUqbyxwLWMqZSphLWQqZSpvXTt0aGlzLndpZHRoPWc7dGhpcy5oZWlnaHQ9bX1jbG9uZSh7c2NhbGU6dD10aGlzLnNjYWxlLHJvdGF0aW9uOmU9dGhpcy5yb3RhdGlvbixvZmZzZXRYOnM9dGhpcy5vZmZzZXRYLG9mZnNldFk6aT10aGlzLm9mZnNldFksZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlld0JveC5zbGljZSgpLHNjYWxlOnQscm90YXRpb246ZSxvZmZzZXRYOnMsb2Zmc2V0WTppLGRvbnRGbGlwOm59KX1jb252ZXJ0VG9WaWV3cG9ydFBvaW50KHQsZSl7cmV0dXJuIG4uVXRpbC5hcHBseVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9Y29udmVydFRvVmlld3BvcnRSZWN0YW5nbGUodCl7Y29uc3QgZT1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMF0sdFsxXV0sdGhpcy50cmFuc2Zvcm0pLHM9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFt0WzJdLHRbM11dLHRoaXMudHJhbnNmb3JtKTtyZXR1cm5bZVswXSxlWzFdLHNbMF0sc1sxXV19Y29udmVydFRvUGRmUG9pbnQodCxlKXtyZXR1cm4gbi5VdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9fWUuUGFnZVZpZXdwb3J0PVBhZ2VWaWV3cG9ydDtjbGFzcyBSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24gZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iKTt0aGlzLnR5cGU9ZX19ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249UmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO2Z1bmN0aW9uIGlzRGF0YVNjaGVtZSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGUmJiIiPT09dFtzXS50cmltKCk7KXMrKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcocyxzKzUpLnRvTG93ZXJDYXNlKCl9ZS5TdGF0VGltZXI9Y2xhc3MgU3RhdFRpbWVye2NvbnN0cnVjdG9yKCl7dGhpcy5zdGFydGVkPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy50aW1lcz1bXX10aW1lKHQpe3QgaW4gdGhpcy5zdGFydGVkJiYoMCxuLndhcm4pKGBUaW1lciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yICR7dH1gKTt0aGlzLnN0YXJ0ZWRbdF09RGF0ZS5ub3coKX10aW1lRW5kKHQpe3QgaW4gdGhpcy5zdGFydGVkfHwoMCxuLndhcm4pKGBUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJHt0fWApO3RoaXMudGltZXMucHVzaCh7bmFtZTp0LHN0YXJ0OnRoaXMuc3RhcnRlZFt0XSxlbmQ6RGF0ZS5ub3coKX0pO2RlbGV0ZSB0aGlzLnN0YXJ0ZWRbdF19dG9TdHJpbmcoKXtjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy50aW1lcyl7Y29uc3Qgcz10Lm5hbWU7cy5sZW5ndGg+ZSYmKGU9cy5sZW5ndGgpfWZvcihjb25zdCBzIG9mIHRoaXMudGltZXMpe2NvbnN0IGk9cy5lbmQtcy5zdGFydDt0LnB1c2goYCR7cy5uYW1lLnBhZEVuZChlKX0gJHtpfW1zXG5gKX1yZXR1cm4gdC5qb2luKCIiKX19O2Z1bmN0aW9uIGlzVmFsaWRGZXRjaFVybCh0LGUpe3RyeXtjb25zdHtwcm90b2NvbDpzfT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO3JldHVybiJodHRwOiI9PT1zfHwiaHR0cHM6Ij09PXN9Y2F0Y2godCl7cmV0dXJuITF9fWxldCByO2UuUERGRGF0ZVN0cmluZz1jbGFzcyBQREZEYXRlU3RyaW5ne3N0YXRpYyB0b0RhdGVPYmplY3QodCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDtyfHwocj1uZXcgUmVnRXhwKCJeRDooXFxkezR9KShcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhbWnwrfC1dKT8oXFxkezJ9KT8nPyhcXGR7Mn0pPyc/IikpO2NvbnN0IGU9ci5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHM9cGFyc2VJbnQoZVsxXSwxMCk7bGV0IGk9cGFyc2VJbnQoZVsyXSwxMCk7aT1pPj0xJiZpPD0xMj9pLTE6MDtsZXQgbj1wYXJzZUludChlWzNdLDEwKTtuPW4+PTEmJm48PTMxP246MTtsZXQgYT1wYXJzZUludChlWzRdLDEwKTthPWE+PTAmJmE8PTIzP2E6MDtsZXQgbz1wYXJzZUludChlWzVdLDEwKTtvPW8+PTAmJm88PTU5P286MDtsZXQgbD1wYXJzZUludChlWzZdLDEwKTtsPWw+PTAmJmw8PTU5P2w6MDtjb25zdCBjPWVbN118fCJaIjtsZXQgaD1wYXJzZUludChlWzhdLDEwKTtoPWg+PTAmJmg8PTIzP2g6MDtsZXQgZD1wYXJzZUludChlWzldLDEwKXx8MDtkPWQ+PTAmJmQ8PTU5P2Q6MDtpZigiLSI9PT1jKXthKz1oO28rPWR9ZWxzZSBpZigiKyI9PT1jKXthLT1oO28tPWR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHMsaSxuLGEsbyxsKSl9fTtmdW5jdGlvbiBnZXRSR0IodCl7aWYodC5zdGFydHNXaXRoKCIjIikpe2NvbnN0IGU9cGFyc2VJbnQodC5zbGljZSgxKSwxNik7cmV0dXJuWygxNjcxMTY4MCZlKT4+MTYsKDY1MjgwJmUpPj44LDI1NSZlXX1pZih0LnN0YXJ0c1dpdGgoInJnYigiKSlyZXR1cm4gdC5zbGljZSg0LC0xKS5zcGxpdCgiLCIpLm1hcCgodD0+cGFyc2VJbnQodCkpKTtpZih0LnN0YXJ0c1dpdGgoInJnYmEoIikpcmV0dXJuIHQuc2xpY2UoNSwtMSkuc3BsaXQoIiwiKS5tYXAoKHQ9PnBhcnNlSW50KHQpKSkuc2xpY2UoMCwzKTsoMCxuLndhcm4pKGBOb3QgYSB2YWxpZCBjb2xvciBmb3JtYXQ6ICIke3R9ImApO3JldHVyblswLDAsMF19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuQmFzZVNWR0ZhY3Rvcnk9ZS5CYXNlQ2FudmFzRmFjdG9yeT1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7dmFyIGk9cygxKTtjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ2FudmFzRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7Y29uc3Qgcz10aGlzLl9jcmVhdGVDYW52YXModCxlKTtyZXR1cm57Y2FudmFzOnMsY29udGV4dDpzLmdldENvbnRleHQoIjJkIil9fXJlc2V0KHQsZSxzKXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO2lmKGU8PTB8fHM8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dC5jYW52YXMud2lkdGg9ZTt0LmNhbnZhcy5oZWlnaHQ9c31kZXN0cm95KHQpe2lmKCF0LmNhbnZhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbnZhcyBpcyBub3Qgc3BlY2lmaWVkIik7dC5jYW52YXMud2lkdGg9MDt0LmNhbnZhcy5oZWlnaHQ9MDt0LmNhbnZhcz1udWxsO3QuY29udGV4dD1udWxsfV9jcmVhdGVDYW52YXModCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuIil9fWUuQmFzZUNhbnZhc0ZhY3Rvcnk9QmFzZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgQmFzZUNNYXBSZWFkZXJGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbCxpc0NvbXByZXNzZWQ6ZT0hMX0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ01hcFJlYWRlckZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlQ01hcFJlYWRlckZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXQ7dGhpcy5pc0NvbXByZXNzZWQ9ZX1hc3luYyBmZXRjaCh7bmFtZTp0fSl7aWYoIXRoaXMuYmFzZVVybCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBDTWFwICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAiY01hcFVybCIgYW5kICJjTWFwUGFja2VkIiBBUEkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuJyk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDTWFwIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIik7Y29uc3QgZT10aGlzLmJhc2VVcmwrdCsodGhpcy5pc0NvbXByZXNzZWQ/Ii5iY21hcCI6IiIpLHM9dGhpcy5pc0NvbXByZXNzZWQ/aS5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWTppLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORTtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUscykuY2F0Y2goKHQ9Pnt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkICR7dGhpcy5pc0NvbXByZXNzZWQ/ImJpbmFyeSAiOiIifUNNYXAgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQsZSl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLiIpfX1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT1CYXNlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbH0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXR9YXN5bmMgZmV0Y2goe2ZpbGVuYW1lOnR9KXtpZighdGhpcy5iYXNlVXJsKXRocm93IG5ldyBFcnJvcignVGhlIHN0YW5kYXJkIGZvbnQgImJhc2VVcmwiIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCwgZW5zdXJlIHRoYXQgdGhlICJzdGFuZGFyZEZvbnREYXRhVXJsIiBBUEkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiRm9udCBmaWxlbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjb25zdCBlPWAke3RoaXMuYmFzZVVybH0ke3R9YDtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUpLmNhdGNoKCh0PT57dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmb250IGRhdGEgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9mZXRjaERhdGFgIGNhbGxlZC4iKX19ZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9QmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIEJhc2VTVkdGYWN0b3J5e2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTVkdGYWN0b3J5JiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNWR0ZhY3RvcnkuIil9Y3JlYXRlKHQsZSxzPSExKXtpZih0PD0wfHxlPD0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZGltZW5zaW9ucyIpO2NvbnN0IGk9dGhpcy5fY3JlYXRlU1ZHKCJzdmc6c3ZnIik7aS5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKTtpZighcyl7aS5zZXRBdHRyaWJ1dGUoIndpZHRoIixgJHt0fXB4YCk7aS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsYCR7ZX1weGApfWkuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwibm9uZSIpO2kuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixgMCAwICR7dH0gJHtlfWApO3JldHVybiBpfWNyZWF0ZUVsZW1lbnQodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZWxlbWVudCB0eXBlIik7cmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KX1fY3JlYXRlU1ZHKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC4iKX19ZS5CYXNlU1ZHRmFjdG9yeT1CYXNlU1ZHRmFjdG9yeX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgaT1zKDEpO2NvbnN0IG49MzI4NTM3NzUyMCxyPTQyOTQ5MDE3NjAsYT02NTUzNTtlLk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6bjt0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0Om59dXBkYXRlKHQpe2xldCBlLHM7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpO3M9MDtmb3IobGV0IGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dC5jaGFyQ29kZUF0KGkpO2lmKG48PTI1NSllW3MrK109bjtlbHNle2VbcysrXT1uPj4+ODtlW3MrK109MjU1Jm59fX1lbHNle2lmKCEoMCxpLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO2U9dC5zbGljZSgpO3M9ZS5ieXRlTGVuZ3RofWNvbnN0IG49cz4+MixvPXMtNCpuLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsbik7bGV0IGM9MCxoPTAsZD10aGlzLmgxLHU9dGhpcy5oMjtjb25zdCBwPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcsbT0xMTYwMSxmPTEzNzE1O2ZvcihsZXQgdD0wO3Q8bjt0KyspaWYoMSZ0KXtjPWxbdF07Yz1jKnAmcnxjKm0mYTtjPWM8PDE1fGM+Pj4xNztjPWMqZyZyfGMqZiZhO2RePWM7ZD1kPDwxM3xkPj4+MTk7ZD01KmQrMzg2NDI5MjE5Nn1lbHNle2g9bFt0XTtoPWgqcCZyfGgqbSZhO2g9aDw8MTV8aD4+PjE3O2g9aCpnJnJ8aCpmJmE7dV49aDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWM9MDtzd2l0Y2gobyl7Y2FzZSAzOmNePWVbNCpuKzJdPDwxNjtjYXNlIDI6Y149ZVs0Km4rMV08PDg7Y2FzZSAxOmNePWVbNCpuXTtjPWMqcCZyfGMqbSZhO2M9Yzw8MTV8Yz4+PjE3O2M9YypnJnJ8YypmJmE7MSZuP2RePWM6dV49Y310aGlzLmgxPWQ7dGhpcy5oMj11fWhleGRpZ2VzdCgpe2xldCB0PXRoaXMuaDEsZT10aGlzLmgyO3RePWU+Pj4xO3Q9Mzk4MTgwNjc5Nyp0JnJ8MzYwNDUqdCZhO2U9NDI4MzU0MzUxMSplJnJ8KDI5NTAxNjM3OTcqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTt0PTQ0NDk4NDQwMyp0JnJ8NjA0OTkqdCZhO2U9MzMwMTg4MjM2NiplJnJ8KDMxMjA0Mzc4OTMqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTtjb25zdCBzPSh0Pj4+MCkudG9TdHJpbmcoMTYpLGk9KGU+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIHMucGFkU3RhcnQoOCwiMCIpK2kucGFkU3RhcnQoOCwiMCIpfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Gb250TG9hZGVyPWUuRm9udEZhY2VPYmplY3Q9dm9pZCAwO3ZhciBpPXMoMSk7ZS5Gb250TG9hZGVyPWNsYXNzIEZvbnRMb2FkZXJ7Y29uc3RydWN0b3Ioe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnQsb3duZXJEb2N1bWVudDplPWdsb2JhbFRoaXMuZG9jdW1lbnQsc3R5bGVFbGVtZW50OnM9bnVsbH0pe3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPXQ7dGhpcy5fZG9jdW1lbnQ9ZTt0aGlzLm5hdGl2ZUZvbnRGYWNlcz1bXTt0aGlzLnN0eWxlRWxlbWVudD1udWxsO3RoaXMubG9hZGluZ1JlcXVlc3RzPVtdO3RoaXMubG9hZFRlc3RGb250SWQ9MH1hZGROYXRpdmVGb250RmFjZSh0KXt0aGlzLm5hdGl2ZUZvbnRGYWNlcy5wdXNoKHQpO3RoaXMuX2RvY3VtZW50LmZvbnRzLmFkZCh0KX1pbnNlcnRSdWxlKHQpe2lmKCF0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpfWNvbnN0IGU9dGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7ZS5pbnNlcnRSdWxlKHQsZS5jc3NSdWxlcy5sZW5ndGgpfWNsZWFyKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO3RoaXMubmF0aXZlRm9udEZhY2VzLmxlbmd0aD0wO2lmKHRoaXMuc3R5bGVFbGVtZW50KXt0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKTt0aGlzLnN0eWxlRWxlbWVudD1udWxsfX1hc3luYyBiaW5kKHQpe2lmKHQuYXR0YWNoZWR8fHQubWlzc2luZ0ZpbGUpcmV0dXJuO3QuYXR0YWNoZWQ9ITA7aWYodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKXtjb25zdCBlPXQuY3JlYXRlTmF0aXZlRm9udEZhY2UoKTtpZihlKXt0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO3RyeXthd2FpdCBlLmxvYWRlZH1jYXRjaChzKXt0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZSh7ZmVhdHVyZUlkOmkuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZE5hdGl2ZX0pOygwLGkud2FybikoYEZhaWxlZCB0byBsb2FkIGZvbnQgJyR7ZS5mYW1pbHl9JzogJyR7c30nLmApO3QuZGlzYWJsZUZvbnRGYWNlPSEwO3Rocm93IHN9fXJldHVybn1jb25zdCBlPXQuY3JlYXRlRm9udEZhY2VSdWxlKCk7aWYoZSl7dGhpcy5pbnNlcnRSdWxlKGUpO2lmKHRoaXMuaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQpcmV0dXJuO2F3YWl0IG5ldyBQcm9taXNlKChlPT57Y29uc3Qgcz10aGlzLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayhlKTt0aGlzLl9wcmVwYXJlRm9udExvYWRFdmVudCh0LHMpfSkpfX1nZXQgaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZCgpe2NvbnN0IHQ9ISF0aGlzLl9kb2N1bWVudD8uZm9udHM7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLHQpfWdldCBpc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCgpe2xldCB0PSExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yKXQ9ITA7ZWxzZXsvTW96aWxsYVwvNS4wLio/cnY6KFxkKykuKj8gR2Vja28vLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk/LlsxXT49MTQmJih0PSEwKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLHQpfV9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KXtjb25zdHtsb2FkaW5nUmVxdWVzdHM6ZX09dGhpcyxzPXtkb25lOiExLGNvbXBsZXRlOmZ1bmN0aW9uIGNvbXBsZXRlUmVxdWVzdCgpeygwLGkuYXNzZXJ0KSghcy5kb25lLCJjb21wbGV0ZVJlcXVlc3QoKSBjYW5ub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3MuZG9uZT0hMDtmb3IoO2UubGVuZ3RoPjAmJmVbMF0uZG9uZTspe2NvbnN0IHQ9ZS5zaGlmdCgpO3NldFRpbWVvdXQodC5jYWxsYmFjaywwKX19LGNhbGxiYWNrOnR9O2UucHVzaChzKTtyZXR1cm4gc31nZXQgX2xvYWRUZXN0Rm9udCgpe2NvbnN0IHQ9YXRvYigiVDFSVVR3QUxBSUFBQXdBd1EwWkdJREh0Wmc0QUFBT1lBQUFBZ1VaR1ZFMWxrelp3QUFBRUhBQUFBQnhIUkVWR0FCUUFGUUFBQkRnQUFBQWVUMU12TWxZTll3a0FBQUVnQUFBQVlHTnRZWEFCRFFMVUFBQUNOQUFBQVVKb1pXRmsveFZGRFFBQUFMd0FBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtRnRaVmptZEg0QUFBR0FBQUFBc1hCdmMzVC9oZ0F6QUFBRGVBQUFBQ0FBQVFBQUFBRUFBTFpSRnNSZkR6ejFBQXNENkFBQUFBRE9CT1RMQUFBQUFNNEtIRHdBQUFBQUErZ0RJUUFBQUFnQUFnQUFBQUFBQUFBQkFBQURJUUFBQUZvRDZBQUFBQUFENkFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBTVFFQ0FBQUNBQVlKQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFGQm1SV1FBd0FBdUFDNERJUDg0QUZvRElRQUFBQUFBQVFBQUFBQUFBQUFBQUNBQUlBQUJBQUFBRGdDdUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBQUFBRUFBUUFBQUFFQUFBQUFBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRQUFBQU1BQVFRSkFBQUFBZ0FCQUFNQUFRUUpBQUVBQWdBQkFBTUFBUVFKQUFJQUFnQUJBQU1BQVFRSkFBTUFBZ0FCQUFNQUFRUUpBQVFBQWdBQkFBTUFBUVFKQUFVQUFnQUJBQU1BQVFRSkFBWUFBZ0FCV0FCWUFBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjQS9nWEJJd01BWXVMK256NXRRWGtENWozQ0JMbkVRQUNBUUVCSVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlBQUFCQVFBQUR3QUNBUUVFRS90M0RvdjZmQUg2ZkFUK2ZQcDgrbndIRG9zTUN2bTFDdm0xREF6NmZCUUFBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnQUJBQUFBQUFBQUFBQUQ2QUFBQUFBQUFBPT0iKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2xvYWRUZXN0Rm9udCIsdCl9X3ByZXBhcmVGb250TG9hZEV2ZW50KHQsZSl7ZnVuY3Rpb24gaW50MzIodCxlKXtyZXR1cm4gdC5jaGFyQ29kZUF0KGUpPDwyNHx0LmNoYXJDb2RlQXQoZSsxKTw8MTZ8dC5jaGFyQ29kZUF0KGUrMik8PDh8MjU1JnQuY2hhckNvZGVBdChlKzMpfWZ1bmN0aW9uIHNwbGljZVN0cmluZyh0LGUscyxpKXtyZXR1cm4gdC5zdWJzdHJpbmcoMCxlKStpK3Quc3Vic3RyaW5nKGUrcyl9bGV0IHMsbjtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Iud2lkdGg9MTtyLmhlaWdodD0xO2NvbnN0IGE9ci5nZXRDb250ZXh0KCIyZCIpO2xldCBvPTA7Y29uc3QgbD1gbHQke0RhdGUubm93KCl9JHt0aGlzLmxvYWRUZXN0Rm9udElkKyt9YDtsZXQgYz10aGlzLl9sb2FkVGVzdEZvbnQ7Yz1zcGxpY2VTdHJpbmcoYyw5NzYsbC5sZW5ndGgsbCk7Y29uc3QgaD0xNDgyMTg0NzkyO2xldCBkPWludDMyKGMsMTYpO2ZvcihzPTAsbj1sLmxlbmd0aC0zO3M8bjtzKz00KWQ9ZC1oK2ludDMyKGwscyl8MDtzPGwubGVuZ3RoJiYoZD1kLWgraW50MzIobCsiWFhYIixzKXwwKTtjPXNwbGljZVN0cmluZyhjLDE2LDQsKDAsaS5zdHJpbmczMikoZCkpO2NvbnN0IHU9YEBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiIke2x9IjtzcmM6JHtgdXJsKGRhdGE6Zm9udC9vcGVudHlwZTtiYXNlNjQsJHtidG9hKGMpfSk7YH19YDt0aGlzLmluc2VydFJ1bGUodSk7Y29uc3QgcD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7cC5zdHlsZS53aWR0aD1wLnN0eWxlLmhlaWdodD0iMTBweCI7cC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3Auc3R5bGUudG9wPXAuc3R5bGUubGVmdD0iMHB4Ijtmb3IoY29uc3QgZSBvZlt0LmxvYWRlZE5hbWUsbF0pe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QudGV4dENvbnRlbnQ9IkhpIjt0LnN0eWxlLmZvbnRGYW1pbHk9ZTtwLmFwcGVuZCh0KX10aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZChwKTshZnVuY3Rpb24gaXNGb250UmVhZHkodCxlKXtpZigrK28+MzApeygwLGkud2FybikoIkxvYWQgdGVzdCBmb250IG5ldmVyIGxvYWRlZC4iKTtlKCk7cmV0dXJufWEuZm9udD0iMzBweCAiK3Q7YS5maWxsVGV4dCgiLiIsMCwyMCk7YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXT4wP2UoKTpzZXRUaW1lb3V0KGlzRm9udFJlYWR5LmJpbmQobnVsbCx0LGUpKX0obCwoKCk9PntwLnJlbW92ZSgpO2UuY29tcGxldGUoKX0pKX19O2UuRm9udEZhY2VPYmplY3Q9Y2xhc3MgRm9udEZhY2VPYmplY3R7Y29uc3RydWN0b3IodCx7aXNFdmFsU3VwcG9ydGVkOmU9ITAsZGlzYWJsZUZvbnRGYWNlOnM9ITEsaWdub3JlRXJyb3JzOmk9ITEsb25VbnN1cHBvcnRlZEZlYXR1cmU6bixmb250UmVnaXN0cnk6cj1udWxsfSl7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHQpdGhpc1tlXT10W2VdO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09ZTt0aGlzLmRpc2FibGVGb250RmFjZT0hMD09PXM7dGhpcy5pZ25vcmVFcnJvcnM9ITA9PT1pO3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPW47dGhpcy5mb250UmVnaXN0cnk9cn1jcmVhdGVOYXRpdmVGb250RmFjZSgpe2lmKCF0aGlzLmRhdGF8fHRoaXMuZGlzYWJsZUZvbnRGYWNlKXJldHVybiBudWxsO2xldCB0O2lmKHRoaXMuY3NzRm9udEluZm8pe2NvbnN0IGU9e3dlaWdodDp0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O3RoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUmJihlLnN0eWxlPWBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWdgKTt0PW5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksdGhpcy5kYXRhLGUpfWVsc2UgdD1uZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLHRoaXMuZGF0YSx7fSk7dGhpcy5mb250UmVnaXN0cnk/LnJlZ2lzdGVyRm9udCh0aGlzKTtyZXR1cm4gdH1jcmVhdGVGb250RmFjZVJ1bGUoKXtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtjb25zdCB0PSgwLGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxlPWB1cmwoZGF0YToke3RoaXMubWltZXR5cGV9O2Jhc2U2NCwke2J0b2EodCl9KTtgO2xldCBzO2lmKHRoaXMuY3NzRm9udEluZm8pe2xldCB0PWBmb250LXdlaWdodDogJHt0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O2A7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHQrPWBmb250LXN0eWxlOiBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWc7YCk7cz1gQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IiR7dGhpcy5jc3NGb250SW5mby5mb250RmFtaWx5fSI7JHt0fXNyYzoke2V9fWB9ZWxzZSBzPWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHt0aGlzLmxvYWRlZE5hbWV9IjtzcmM6JHtlfX1gO3RoaXMuZm9udFJlZ2lzdHJ5Py5yZWdpc3RlckZvbnQodGhpcyxlKTtyZXR1cm4gc31nZXRQYXRoR2VuZXJhdG9yKHQsZSl7aWYodm9pZCAwIT09dGhpcy5jb21waWxlZEdseXBoc1tlXSlyZXR1cm4gdGhpcy5jb21waWxlZEdseXBoc1tlXTtsZXQgczt0cnl7cz10LmdldCh0aGlzLmxvYWRlZE5hbWUrIl9wYXRoXyIrZSl9Y2F0Y2godCl7aWYoIXRoaXMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUoe2ZlYXR1cmVJZDppLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEdldFBhdGh9KTsoMCxpLndhcm4pKGBnZXRQYXRoR2VuZXJhdG9yIC0gaWdub3JpbmcgY2hhcmFjdGVyOiAiJHt0fSIuYCk7cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXt9fWlmKHRoaXMuaXNFdmFsU3VwcG9ydGVkJiZpLkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCBzPXZvaWQgMCE9PWUuYXJncz9lLmFyZ3Muam9pbigiLCIpOiIiO3QucHVzaCgiYy4iLGUuY21kLCIoIixzLCIpO1xuIil9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09bmV3IEZ1bmN0aW9uKCJjIiwic2l6ZSIsdC5qb2luKCIiKSl9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgaSBvZiBzKXsic2NhbGUiPT09aS5jbWQmJihpLmFyZ3M9W2UsLWVdKTt0W2kuY21kXS5hcHBseSh0LGkuYXJncyl9fX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQ2FudmFzR3JhcGhpY3M9dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpLHI9cygxMSksYT1zKDEzKSxvPXMoMTIpO2NvbnN0IGw9NDA5NixjPW8uaXNOb2RlSlMmJiJ1bmRlZmluZWQiPT10eXBlb2YgUGF0aDJEPy0xOjFlMyxoPTE2O2NsYXNzIENhY2hlZENhbnZhc2Vze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FudmFzRmFjdG9yeT10O3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRDYW52YXModCxlLHMpe2xldCBpO2lmKHZvaWQgMCE9PXRoaXMuY2FjaGVbdF0pe2k9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkucmVzZXQoaSxlLHMpfWVsc2V7aT10aGlzLmNhbnZhc0ZhY3RvcnkuY3JlYXRlKGUscyk7dGhpcy5jYWNoZVt0XT1pfXJldHVybiBpfWRlbGV0ZSh0KXtkZWxldGUgdGhpcy5jYWNoZVt0XX1jbGVhcigpe2Zvcihjb25zdCB0IGluIHRoaXMuY2FjaGUpe2NvbnN0IGU9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkuZGVzdHJveShlKTtkZWxldGUgdGhpcy5jYWNoZVt0XX19fWZ1bmN0aW9uIGRyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh0LGUscyxpLHIsYSxvLGwsYyxoKXtjb25zdFtkLHUscCxnLG0sZl09KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KTtpZigwPT09dSYmMD09PXApe2NvbnN0IG49bypkK20sYj1NYXRoLnJvdW5kKG4pLEE9bCpnK2YsXz1NYXRoLnJvdW5kKEEpLHY9KG8rYykqZCttLHk9TWF0aC5hYnMoTWF0aC5yb3VuZCh2KS1iKXx8MSxTPShsK2gpKmcrZix4PU1hdGguYWJzKE1hdGgucm91bmQoUyktXyl8fDE7dC5zZXRUcmFuc2Zvcm0oTWF0aC5zaWduKGQpLDAsMCxNYXRoLnNpZ24oZyksYixfKTt0LmRyYXdJbWFnZShlLHMsaSxyLGEsMCwwLHkseCk7dC5zZXRUcmFuc2Zvcm0oZCx1LHAsZyxtLGYpO3JldHVyblt5LHhdfWlmKDA9PT1kJiYwPT09Zyl7Y29uc3Qgbj1sKnArbSxiPU1hdGgucm91bmQobiksQT1vKnUrZixfPU1hdGgucm91bmQoQSksdj0obCtoKSpwK20seT1NYXRoLmFicyhNYXRoLnJvdW5kKHYpLWIpfHwxLFM9KG8rYykqdStmLHg9TWF0aC5hYnMoTWF0aC5yb3VuZChTKS1fKXx8MTt0LnNldFRyYW5zZm9ybSgwLE1hdGguc2lnbih1KSxNYXRoLnNpZ24ocCksMCxiLF8pO3QuZHJhd0ltYWdlKGUscyxpLHIsYSwwLDAseCx5KTt0LnNldFRyYW5zZm9ybShkLHUscCxnLG0sZik7cmV0dXJuW3gseV19dC5kcmF3SW1hZ2UoZSxzLGkscixhLG8sbCxjLGgpO3JldHVybltNYXRoLmh5cG90KGQsdSkqYyxNYXRoLmh5cG90KHAsZykqaF19Y2xhc3MgQ2FudmFzRXh0cmFTdGF0ZXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYWxwaGFJc1NoYXBlPSExO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLnRleHRNYXRyaXg9aS5JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmZvbnRNYXRyaXg9aS5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLmxlYWRpbmc9MDt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPSIjMDAwMDAwIjt0aGlzLnN0cm9rZUNvbG9yPSIjMDAwMDAwIjt0aGlzLnBhdHRlcm5GaWxsPSExO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5hY3RpdmVTTWFzaz1udWxsO3RoaXMudHJhbnNmZXJNYXBzPW51bGw7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsdCxlXSl9Y2xvbmUoKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5jbGlwQm94PXRoaXMuY2xpcEJveC5zbGljZSgpO3JldHVybiB0fXNldEN1cnJlbnRQb2ludCh0LGUpe3RoaXMueD10O3RoaXMueT1lfXVwZGF0ZVBhdGhNaW5NYXgodCxlLHMpe1tlLHNdPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGUpO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblkscyk7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCxlKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHMpfXVwZGF0ZVJlY3RNaW5NYXgodCxlKXtjb25zdCBzPWkuVXRpbC5hcHBseVRyYW5zZm9ybShlLHQpLG49aS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiksdCk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxzWzBdLG5bMF0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksc1sxXSxuWzFdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHNbMF0sblswXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxzWzFdLG5bMV0pfXVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsZSl7aS5VdGlsLnNjYWxlTWluTWF4KHQsZSk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlWzBdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLGVbMV0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksZVsyXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxlWzNdKX11cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCxlLHMsbixyLGEsbyxsLGMsaCl7Y29uc3QgZD1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxzLG4scixhLG8sbCxjKTtpZihoKXtoWzBdPU1hdGgubWluKGhbMF0sZFswXSxkWzJdKTtoWzFdPU1hdGgubWF4KGhbMV0sZFswXSxkWzJdKTtoWzJdPU1hdGgubWluKGhbMl0sZFsxXSxkWzNdKTtoWzNdPU1hdGgubWF4KGhbM10sZFsxXSxkWzNdKX1lbHNlIHRoaXMudXBkYXRlUmVjdE1pbk1heCh0LGQpfWdldFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe2NvbnN0IHM9W3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV07aWYodD09PXIuUGF0aFR5cGUuU1RST0tFKXtlfHwoMCxpLnVucmVhY2hhYmxlKSgiU3Ryb2tlIGJvdW5kaW5nIGJveCBtdXN0IGluY2x1ZGUgdHJhbnNmb3JtLiIpO2NvbnN0IHQ9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLG49dFswXSp0aGlzLmxpbmVXaWR0aC8yLHI9dFsxXSp0aGlzLmxpbmVXaWR0aC8yO3NbMF0tPW47c1sxXS09cjtzWzJdKz1uO3NbM10rPXJ9cmV0dXJuIHN9dXBkYXRlQ2xpcEZyb21QYXRoKCl7Y29uc3QgdD1pLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnN0YXJ0TmV3UGF0aEFuZENsaXBCb3godHx8WzAsMCwwLDBdKX1pc0VtcHR5Q2xpcCgpe3JldHVybiB0aGlzLm1pblg9PT0xLzB9c3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0KXt0aGlzLmNsaXBCb3g9dDt0aGlzLm1pblg9MS8wO3RoaXMubWluWT0xLzA7dGhpcy5tYXhYPTA7dGhpcy5tYXhZPTB9Z2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe3JldHVybiBpLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCh0LGUpKX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VEYXRhKHQsZSxzPW51bGwpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEYXRhJiZlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKXt0LnB1dEltYWdlRGF0YShlLDAsMCk7cmV0dXJufWNvbnN0IG49ZS5oZWlnaHQscj1lLndpZHRoLGE9biVoLG89KG4tYSkvaCxsPTA9PT1hP286bysxLGM9dC5jcmVhdGVJbWFnZURhdGEocixoKTtsZXQgZCx1PTA7Y29uc3QgcD1lLmRhdGEsZz1jLmRhdGE7bGV0IG0sZixiLEEsXyx2LHksUztpZihzKXN3aXRjaChzLmxlbmd0aCl7Y2FzZSAxOl89c1swXTt2PXNbMF07eT1zWzBdO1M9c1swXTticmVhaztjYXNlIDQ6Xz1zWzBdO3Y9c1sxXTt5PXNbMl07Uz1zWzNdfWlmKGUua2luZD09PWkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXtjb25zdCBlPXAuYnl0ZUxlbmd0aCxzPW5ldyBVaW50MzJBcnJheShnLmJ1ZmZlciwwLGcuYnl0ZUxlbmd0aD4+Miksbj1zLmxlbmd0aCxBPXIrNz4+MztsZXQgXz00Mjk0OTY3Mjk1LHY9aS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtTJiYyNTU9PT1TWzBdJiYwPT09U1syNTVdJiYoW18sdl09W3YsX10pO2ZvcihtPTA7bTxsO20rKyl7Yj1tPG8/aDphO2Q9MDtmb3IoZj0wO2Y8YjtmKyspe2NvbnN0IHQ9ZS11O2xldCBpPTA7Y29uc3Qgbj10PkE/cjo4KnQtNyxhPS04Jm47bGV0IG89MCxsPTA7Zm9yKDtpPGE7aSs9OCl7bD1wW3UrK107c1tkKytdPTEyOCZsP186djtzW2QrK109NjQmbD9fOnY7c1tkKytdPTMyJmw/Xzp2O3NbZCsrXT0xNiZsP186djtzW2QrK109OCZsP186djtzW2QrK109NCZsP186djtzW2QrK109MiZsP186djtzW2QrK109MSZsP186dn1mb3IoO2k8bjtpKyspe2lmKDA9PT1vKXtsPXBbdSsrXTtvPTEyOH1zW2QrK109bCZvP186djtvPj49MX19Zm9yKDtkPG47KXNbZCsrXT0wO3QucHV0SW1hZ2VEYXRhKGMsMCxtKmgpfX1lbHNlIGlmKGUua2luZD09PWkuSW1hZ2VLaW5kLlJHQkFfMzJCUFApe2NvbnN0IGU9ISEoX3x8dnx8eSk7Zj0wO0E9cipoKjQ7Zm9yKG09MDttPG87bSsrKXtnLnNldChwLnN1YmFycmF5KHUsdStBKSk7dSs9QTtpZihlKWZvcihsZXQgdD0wO3Q8QTt0Kz00KXtfJiYoZ1t0KzBdPV9bZ1t0KzBdXSk7diYmKGdbdCsxXT12W2dbdCsxXV0pO3kmJihnW3QrMl09eVtnW3QrMl1dKX10LnB1dEltYWdlRGF0YShjLDAsZik7Zis9aH1pZihtPGwpe0E9ciphKjQ7Zy5zZXQocC5zdWJhcnJheSh1LHUrQSkpO2lmKGUpZm9yKGxldCB0PTA7dDxBO3QrPTQpe18mJihnW3QrMF09X1tnW3QrMF1dKTt2JiYoZ1t0KzFdPXZbZ1t0KzFdXSk7eSYmKGdbdCsyXT15W2dbdCsyXV0pfXQucHV0SW1hZ2VEYXRhKGMsMCxmKX19ZWxzZXtpZihlLmtpbmQhPT1pLkltYWdlS2luZC5SR0JfMjRCUFApdGhyb3cgbmV3IEVycm9yKGBiYWQgaW1hZ2Uga2luZDogJHtlLmtpbmR9YCk7e2NvbnN0IGU9ISEoX3x8dnx8eSk7Yj1oO0E9cipiO2ZvcihtPTA7bTxsO20rKyl7aWYobT49byl7Yj1hO0E9cipifWQ9MDtmb3IoZj1BO2YtLTspe2dbZCsrXT1wW3UrK107Z1tkKytdPXBbdSsrXTtnW2QrK109cFt1KytdO2dbZCsrXT0yNTV9aWYoZSlmb3IobGV0IHQ9MDt0PGQ7dCs9NCl7XyYmKGdbdCswXT1fW2dbdCswXV0pO3YmJihnW3QrMV09dltnW3QrMV1dKTt5JiYoZ1t0KzJdPXlbZ1t0KzJdXSl9dC5wdXRJbWFnZURhdGEoYywwLG0qaCl9fX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKHQsZSl7aWYoZS5iaXRtYXApe3QuZHJhd0ltYWdlKGUuYml0bWFwLDAsMCk7cmV0dXJufWNvbnN0IHM9ZS5oZWlnaHQsaT1lLndpZHRoLG49cyVoLHI9KHMtbikvaCxvPTA9PT1uP3I6cisxLGw9dC5jcmVhdGVJbWFnZURhdGEoaSxoKTtsZXQgYz0wO2NvbnN0IGQ9ZS5kYXRhLHU9bC5kYXRhO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IHM9ZTxyP2g6bjsoe3NyY1BvczpjfT0oMCxhLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzpkLHNyY1BvczpjLGRlc3Q6dSx3aWR0aDppLGhlaWdodDpzfSkpO3QucHV0SW1hZ2VEYXRhKGwsMCxlKmgpfX1mdW5jdGlvbiBjb3B5Q3R4U3RhdGUodCxlKXtjb25zdCBzPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiXTtmb3IoY29uc3QgaSBvZiBzKXZvaWQgMCE9PXRbaV0mJihlW2ldPXRbaV0pO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe2Uuc2V0TGluZURhc2godC5nZXRMaW5lRGFzaCgpKTtlLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR9fWZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQsZSl7dC5zdHJva2VTdHlsZT10LmZpbGxTdHlsZT1lfHwiIzAwMDAwMCI7dC5maWxsUnVsZT0ibm9uemVybyI7dC5nbG9iYWxBbHBoYT0xO3QubGluZVdpZHRoPTE7dC5saW5lQ2FwPSJidXR0Ijt0LmxpbmVKb2luPSJtaXRlciI7dC5taXRlckxpbWl0PTEwO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5mb250PSIxMHB4IHNhbnMtc2VyaWYiO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe3Quc2V0TGluZURhc2goW10pO3QubGluZURhc2hPZmZzZXQ9MH19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQmFja2Ryb3AodCxlLHMsaSl7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IHI9MztyPG47cis9NCl7Y29uc3Qgbj10W3JdO2lmKDA9PT1uKXt0W3ItM109ZTt0W3ItMl09czt0W3ItMV09aX1lbHNlIGlmKG48MjU1KXtjb25zdCBhPTI1NS1uO3Rbci0zXT10W3ItM10qbitlKmE+Pjg7dFtyLTJdPXRbci0yXSpuK3MqYT4+ODt0W3ItMV09dFtyLTFdKm4raSphPj44fX19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQWxwaGEodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9cz9zW3Rbbl1dOnRbbl07ZVtuXT1lW25dKmkqLjAwMzkyMTU2ODYyNzQ1MDk4fDB9fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9NzcqdFtuLTNdKzE1Mip0W24tMl0rMjgqdFtuLTFdO2Vbbl09cz9lW25dKnNbaT4+OF0+Pjg6ZVtuXSppPj4xNn19ZnVuY3Rpb24gY29tcG9zZVNNYXNrKHQsZSxzLGkpe2NvbnN0IG49aVswXSxyPWlbMV0sYT1pWzJdLW4sbz1pWzNdLXI7aWYoMCE9PWEmJjAhPT1vKXshZnVuY3Rpb24gZ2VuZXJpY0NvbXBvc2VTTWFzayh0LGUscyxpLG4scixhLG8sbCxjLGgpe2NvbnN0IGQ9ISFyLHU9ZD9yWzBdOjAscD1kP3JbMV06MCxnPWQ/clsyXTowO2xldCBtO209Ikx1bWlub3NpdHkiPT09bj9jb21wb3NlU01hc2tMdW1pbm9zaXR5OmNvbXBvc2VTTWFza0FscGhhO2NvbnN0IGY9TWF0aC5taW4oaSxNYXRoLmNlaWwoMTA0ODU3Ni9zKSk7Zm9yKGxldCBuPTA7bjxpO24rPWYpe2NvbnN0IHI9TWF0aC5taW4oZixpLW4pLGI9dC5nZXRJbWFnZURhdGEoby1jLG4rKGwtaCkscyxyKSxBPWUuZ2V0SW1hZ2VEYXRhKG8sbitsLHMscik7ZCYmY29tcG9zZVNNYXNrQmFja2Ryb3AoYi5kYXRhLHUscCxnKTttKGIuZGF0YSxBLmRhdGEsYSk7ZS5wdXRJbWFnZURhdGEoQSxvLG4rbCl9fShlLmNvbnRleHQscyxhLG8sZS5zdWJ0eXBlLGUuYmFja2Ryb3AsZS50cmFuc2Zlck1hcCxuLHIsZS5vZmZzZXRYLGUub2Zmc2V0WSk7dC5zYXZlKCk7dC5nbG9iYWxBbHBoYT0xO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3QuZHJhd0ltYWdlKHMuY2FudmFzLDAsMCk7dC5yZXN0b3JlKCl9fWZ1bmN0aW9uIGdldEltYWdlU21vb3RoaW5nRW5hYmxlZCh0LGUpe2NvbnN0IHM9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHQpO3NbMF09TWF0aC5mcm91bmQoc1swXSk7c1sxXT1NYXRoLmZyb3VuZChzWzFdKTtjb25zdCByPU1hdGguZnJvdW5kKChnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpKm4uUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTKTtyZXR1cm4gdm9pZCAwIT09ZT9lOnNbMF08PXJ8fHNbMV08PXJ9Y29uc3QgZD1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLHU9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxwPXt9LGc9e307Y2xhc3MgQ2FudmFzR3JhcGhpY3N7Y29uc3RydWN0b3IodCxlLHMsaSxuLHIsYSl7dGhpcy5jdHg9dDt0aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMuc3RhdGVTdGFjaz1bXTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMucmVzPW51bGw7dGhpcy54b2Jqcz1udWxsO3RoaXMuY29tbW9uT2Jqcz1lO3RoaXMub2Jqcz1zO3RoaXMuY2FudmFzRmFjdG9yeT1pO3RoaXMuZ3JvdXBTdGFjaz1bXTt0aGlzLnByb2Nlc3NpbmdUeXBlMz1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybT1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZ3JvdXBMZXZlbD0wO3RoaXMuc21hc2tTdGFjaz1bXTt0aGlzLnNtYXNrQ291bnRlcj0wO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5zdXNwZW5kZWRDdHg9bnVsbDt0aGlzLmNvbnRlbnRWaXNpYmxlPSEwO3RoaXMubWFya2VkQ29udGVudFN0YWNrPVtdO3RoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnPW47dGhpcy5jYWNoZWRDYW52YXNlcz1uZXcgQ2FjaGVkQ2FudmFzZXModGhpcy5jYW52YXNGYWN0b3J5KTt0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXA7dGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPXI7dGhpcy52aWV3cG9ydFNjYWxlPTE7dGhpcy5vdXRwdXRTY2FsZVg9MTt0aGlzLm91dHB1dFNjYWxlWT0xO3RoaXMuYmFja2dyb3VuZENvbG9yPWE/LmJhY2tncm91bmR8fG51bGw7dGhpcy5mb3JlZ3JvdW5kQ29sb3I9YT8uZm9yZWdyb3VuZHx8bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXA9bmV3IE1hcH1nZXRPYmplY3QodCxlPW51bGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzLmdldCh0KTp0aGlzLm9ianMuZ2V0KHQpOmV9YmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06dCx2aWV3cG9ydDplLHRyYW5zcGFyZW5jeTpzPSExLGJhY2tncm91bmQ6aT1udWxsfSl7Y29uc3Qgcj10aGlzLmN0eC5jYW52YXMud2lkdGgsYT10aGlzLmN0eC5jYW52YXMuaGVpZ2h0LG89aXx8IiNmZmZmZmYiO3RoaXMuY3R4LnNhdmUoKTtpZih0aGlzLmZvcmVncm91bmRDb2xvciYmdGhpcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmZvcmVncm91bmRDb2xvcjtjb25zdCB0PXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuY3R4LmZpbGxTdHlsZTt0aGlzLmN0eC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3I7Y29uc3QgZT10aGlzLmJhY2tncm91bmRDb2xvcj10aGlzLmN0eC5maWxsU3R5bGU7bGV0IHM9ITAsaT1vO3RoaXMuY3R4LmZpbGxTdHlsZT1vO2k9dGhpcy5jdHguZmlsbFN0eWxlO3M9InN0cmluZyI9PXR5cGVvZiBpJiYvXiNbMC05QS1GYS1mXXs2fSQvLnRlc3QoaSk7aWYoIiMwMDAwMDAiPT09dCYmIiNmZmZmZmYiPT09ZXx8dD09PWV8fCFzKXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGw7ZWxzZXtjb25zdFtzLHIsYV09KDAsbi5nZXRSR0IpKGkpLG5ld0NvbXA9dD0+KHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOigodCsuMDU1KS8xLjA1NSkqKjIuNCxvPU1hdGgucm91bmQoLjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKHIpKy4wNzIyKm5ld0NvbXAoYSkpO3RoaXMuc2VsZWN0Q29sb3I9KHMsaSxuKT0+e2NvbnN0IHI9LjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKGkpKy4wNzIyKm5ld0NvbXAobik7cmV0dXJuIE1hdGgucm91bmQocik9PT1vP2U6dH19fXRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcnx8bzt0aGlzLmN0eC5maWxsUmVjdCgwLDAscixhKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYocyl7Y29uc3QgdD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygidHJhbnNwYXJlbnQiLHIsYSk7dGhpcy5jb21wb3NpdGVDdHg9dGhpcy5jdHg7dGhpcy50cmFuc3BhcmVudENhbnZhcz10LmNhbnZhczt0aGlzLmN0eD10LmNvbnRleHQ7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnRyYW5zZm9ybSguLi4oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY29tcG9zaXRlQ3R4KSl9dGhpcy5jdHguc2F2ZSgpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTtpZih0KXt0aGlzLmN0eC50cmFuc2Zvcm0oLi4udCk7dGhpcy5vdXRwdXRTY2FsZVg9dFswXTt0aGlzLm91dHB1dFNjYWxlWT10WzBdfXRoaXMuY3R4LnRyYW5zZm9ybSguLi5lLnRyYW5zZm9ybSk7dGhpcy52aWV3cG9ydFNjYWxlPWUuc2NhbGU7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpfWV4ZWN1dGVPcGVyYXRvckxpc3QodCxlLHMsbil7Y29uc3Qgcj10LmFyZ3NBcnJheSxhPXQuZm5BcnJheTtsZXQgbz1lfHwwO2NvbnN0IGw9ci5sZW5ndGg7aWYobD09PW8pcmV0dXJuIG87Y29uc3QgYz1sLW8+MTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLGg9Yz9EYXRlLm5vdygpKzE1OjA7bGV0IGQ9MDtjb25zdCB1PXRoaXMuY29tbW9uT2JqcyxwPXRoaXMub2JqcztsZXQgZztmb3IoOzspe2lmKHZvaWQgMCE9PW4mJm89PT1uLm5leHRCcmVha1BvaW50KXtuLmJyZWFrSXQobyxzKTtyZXR1cm4gb31nPWFbb107aWYoZyE9PWkuT1BTLmRlcGVuZGVuY3kpdGhpc1tnXS5hcHBseSh0aGlzLHJbb10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgcltvXSl7Y29uc3QgZT10LnN0YXJ0c1dpdGgoImdfIik/dTpwO2lmKCFlLmhhcyh0KSl7ZS5nZXQodCxzKTtyZXR1cm4gb319bysrO2lmKG89PT1sKXJldHVybiBvO2lmKGMmJisrZD4xMCl7aWYoRGF0ZS5ub3coKT5oKXtzKCk7cmV0dXJuIG99ZD0wfX19I3N0KCl7Zm9yKDt0aGlzLnN0YXRlU3RhY2subGVuZ3RofHx0aGlzLmluU01hc2tNb2RlOyl0aGlzLnJlc3RvcmUoKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYodGhpcy50cmFuc3BhcmVudENhbnZhcyl7dGhpcy5jdHg9dGhpcy5jb21wb3NpdGVDdHg7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguZHJhd0ltYWdlKHRoaXMudHJhbnNwYXJlbnRDYW52YXMsMCwwKTt0aGlzLmN0eC5yZXN0b3JlKCk7dGhpcy50cmFuc3BhcmVudENhbnZhcz1udWxsfX1lbmREcmF3aW5nKCl7dGhpcy4jc3QoKTt0aGlzLmNhY2hlZENhbnZhc2VzLmNsZWFyKCk7dGhpcy5jYWNoZWRQYXR0ZXJucy5jbGVhcigpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAudmFsdWVzKCkpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50JiYoZS53aWR0aD1lLmhlaWdodD0wKTt0LmNsZWFyKCl9dGhpcy5fY2FjaGVkQml0bWFwc01hcC5jbGVhcigpfV9zY2FsZUltYWdlKHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQ7bGV0IG4scixhPU1hdGgubWF4KE1hdGguaHlwb3QoZVswXSxlWzFdKSwxKSxvPU1hdGgubWF4KE1hdGguaHlwb3QoZVsyXSxlWzNdKSwxKSxsPXMsYz1pLGg9InByZXNjYWxlMSI7Zm9yKDthPjImJmw+MXx8bz4yJiZjPjE7KXtsZXQgZT1sLHM9YztpZihhPjImJmw+MSl7ZT1NYXRoLmNlaWwobC8yKTthLz1sL2V9aWYobz4yJiZjPjEpe3M9TWF0aC5jZWlsKGMvMik7by89Yy9zfW49dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoaCxlLHMpO3I9bi5jb250ZXh0O3IuY2xlYXJSZWN0KDAsMCxlLHMpO3IuZHJhd0ltYWdlKHQsMCwwLGwsYywwLDAsZSxzKTt0PW4uY2FudmFzO2w9ZTtjPXM7aD0icHJlc2NhbGUxIj09PWg/InByZXNjYWxlMiI6InByZXNjYWxlMSJ9cmV0dXJue2ltZzp0LHBhaW50V2lkdGg6bCxwYWludEhlaWdodDpjfX1fY3JlYXRlTWFza0NhbnZhcyh0KXtjb25zdCBlPXRoaXMuY3R4LHt3aWR0aDpzLGhlaWdodDphfT10LG89dGhpcy5jdXJyZW50LmZpbGxDb2xvcixsPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCxjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7bGV0IGgsZCx1LHA7aWYoKHQuYml0bWFwfHx0LmRhdGEpJiZ0LmNvdW50PjEpe2NvbnN0IGU9dC5iaXRtYXB8fHQuZGF0YS5idWZmZXI7ZD1KU09OLnN0cmluZ2lmeShsP2M6W2Muc2xpY2UoMCw0KSxvXSk7aD10aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmdldChlKTtpZighaCl7aD1uZXcgTWFwO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXAuc2V0KGUsaCl9Y29uc3Qgcz1oLmdldChkKTtpZihzJiYhbCl7cmV0dXJue2NhbnZhczpzLG9mZnNldFg6TWF0aC5yb3VuZChNYXRoLm1pbihjWzBdLGNbMl0pK2NbNF0pLG9mZnNldFk6TWF0aC5yb3VuZChNYXRoLm1pbihjWzFdLGNbM10pK2NbNV0pfX11PXN9aWYoIXUpe3A9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoIm1hc2tDYW52YXMiLHMsYSk7cHV0QmluYXJ5SW1hZ2VNYXNrKHAuY29udGV4dCx0KX1sZXQgZz1pLlV0aWwudHJhbnNmb3JtKGMsWzEvcywwLDAsLTEvYSwwLDBdKTtnPWkuVXRpbC50cmFuc2Zvcm0oZyxbMSwwLDAsMSwwLC1hXSk7Y29uc3QgbT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sZyksZj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsYV0sZyksYj1pLlV0aWwubm9ybWFsaXplUmVjdChbbVswXSxtWzFdLGZbMF0sZlsxXV0pLEE9TWF0aC5yb3VuZChiWzJdLWJbMF0pfHwxLF89TWF0aC5yb3VuZChiWzNdLWJbMV0pfHwxLHY9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImZpbGxDYW52YXMiLEEsXykseT12LmNvbnRleHQsUz1NYXRoLm1pbihtWzBdLGZbMF0pLHg9TWF0aC5taW4obVsxXSxmWzFdKTt5LnRyYW5zbGF0ZSgtUywteCk7eS50cmFuc2Zvcm0oLi4uZyk7aWYoIXUpe3U9dGhpcy5fc2NhbGVJbWFnZShwLmNhbnZhcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKSh5KSk7dT11LmltZztoJiZsJiZoLnNldChkLHUpfXkuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh5LHUsMCwwLHUud2lkdGgsdS5oZWlnaHQsMCwwLHMsYSk7eS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiI7Y29uc3QgRT1pLlV0aWwudHJhbnNmb3JtKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKHkpLFsxLDAsMCwxLC1TLC14XSk7eS5maWxsU3R5bGU9bD9vLmdldFBhdHRlcm4oZSx0aGlzLEUsci5QYXRoVHlwZS5GSUxMKTpvO3kuZmlsbFJlY3QoMCwwLHMsYSk7aWYoaCYmIWwpe3RoaXMuY2FjaGVkQ2FudmFzZXMuZGVsZXRlKCJmaWxsQ2FudmFzIik7aC5zZXQoZCx2LmNhbnZhcyl9cmV0dXJue2NhbnZhczp2LmNhbnZhcyxvZmZzZXRYOk1hdGgucm91bmQoUyksb2Zmc2V0WTpNYXRoLnJvdW5kKHgpfX1zZXRMaW5lV2lkdGgodCl7dCE9PXRoaXMuY3VycmVudC5saW5lV2lkdGgmJih0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwpO3RoaXMuY3VycmVudC5saW5lV2lkdGg9dDt0aGlzLmN0eC5saW5lV2lkdGg9dH1zZXRMaW5lQ2FwKHQpe3RoaXMuY3R4LmxpbmVDYXA9ZFt0XX1zZXRMaW5lSm9pbih0KXt0aGlzLmN0eC5saW5lSm9pbj11W3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdHgubWl0ZXJMaW1pdD10fXNldERhc2godCxlKXtjb25zdCBzPXRoaXMuY3R4O2lmKHZvaWQgMCE9PXMuc2V0TGluZURhc2gpe3Muc2V0TGluZURhc2godCk7cy5saW5lRGFzaE9mZnNldD1lfX1zZXRSZW5kZXJpbmdJbnRlbnQodCl7fXNldEZsYXRuZXNzKHQpe31zZXRHU3RhdGUodCl7Zm9yKGNvbnN0W2Usc11vZiB0KXN3aXRjaChlKXtjYXNlIkxXIjp0aGlzLnNldExpbmVXaWR0aChzKTticmVhaztjYXNlIkxDIjp0aGlzLnNldExpbmVDYXAocyk7YnJlYWs7Y2FzZSJMSiI6dGhpcy5zZXRMaW5lSm9pbihzKTticmVhaztjYXNlIk1MIjp0aGlzLnNldE1pdGVyTGltaXQocyk7YnJlYWs7Y2FzZSJEIjp0aGlzLnNldERhc2goc1swXSxzWzFdKTticmVhaztjYXNlIlJJIjp0aGlzLnNldFJlbmRlcmluZ0ludGVudChzKTticmVhaztjYXNlIkZMIjp0aGlzLnNldEZsYXRuZXNzKHMpO2JyZWFrO2Nhc2UiRm9udCI6dGhpcy5zZXRGb250KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJDQSI6dGhpcy5jdXJyZW50LnN0cm9rZUFscGhhPXM7YnJlYWs7Y2FzZSJjYSI6dGhpcy5jdXJyZW50LmZpbGxBbHBoYT1zO3RoaXMuY3R4Lmdsb2JhbEFscGhhPXM7YnJlYWs7Y2FzZSJCTSI6dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPXM7YnJlYWs7Y2FzZSJTTWFzayI6dGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrPXM/dGhpcy50ZW1wU01hc2s6bnVsbDt0aGlzLnRlbXBTTWFzaz1udWxsO3RoaXMuY2hlY2tTTWFza1N0YXRlKCk7YnJlYWs7Y2FzZSJUUiI6dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcz1zfX1nZXQgaW5TTWFza01vZGUoKXtyZXR1cm4hIXRoaXMuc3VzcGVuZGVkQ3R4fWNoZWNrU01hc2tTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5pblNNYXNrTW9kZTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJiF0P3RoaXMuYmVnaW5TTWFza01vZGUoKTohdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrJiZ0JiZ0aGlzLmVuZFNNYXNrTW9kZSgpfWJlZ2luU01hc2tNb2RlKCl7aWYodGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luU01hc2tNb2RlIGNhbGxlZCB3aGlsZSBhbHJlYWR5IGluIHNtYXNrIG1vZGUiKTtjb25zdCB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQscz0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhzLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9aS5jb250ZXh0O2NvbnN0IHI9dGhpcy5jdHg7ci5zZXRUcmFuc2Zvcm0oLi4uKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLnN1c3BlbmRlZEN0eCkpO2NvcHlDdHhTdGF0ZSh0aGlzLnN1c3BlbmRlZEN0eCxyKTshZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlO3QuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlO3QuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZTt0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlO3QuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZTt0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm07dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtO3QuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm07dC5fX29yaWdpbmFsQ2xpcD10LmNsaXA7dC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvO3QuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbzt0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbzt0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdDt0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGg7dC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoO3QuX3JlbW92ZU1pcnJvcmluZz0oKT0+e3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlO3QucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlO3Qucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZTt0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlO3QudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZTt0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm07dC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtO3QucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm07dC5jbGlwPXQuX19vcmlnaW5hbENsaXA7dC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvO3QubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbzt0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbzt0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdDt0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGg7dC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoO2RlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9O3Quc2F2ZT1mdW5jdGlvbiBjdHhTYXZlKCl7ZS5zYXZlKCk7dGhpcy5fX29yaWdpbmFsU2F2ZSgpfTt0LnJlc3RvcmU9ZnVuY3Rpb24gY3R4UmVzdG9yZSgpe2UucmVzdG9yZSgpO3RoaXMuX19vcmlnaW5hbFJlc3RvcmUoKX07dC50cmFuc2xhdGU9ZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQscyl7ZS50cmFuc2xhdGUodCxzKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2xhdGUodCxzKX07dC5zY2FsZT1mdW5jdGlvbiBjdHhTY2FsZSh0LHMpe2Uuc2NhbGUodCxzKTt0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LHMpfTt0LnRyYW5zZm9ybT1mdW5jdGlvbiBjdHhUcmFuc2Zvcm0odCxzLGksbixyLGEpe2UudHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnNldFRyYW5zZm9ybT1mdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpe2Uuc2V0VHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnJlc2V0VHJhbnNmb3JtPWZ1bmN0aW9uIGN0eFJlc2V0VHJhbnNmb3JtKCl7ZS5yZXNldFRyYW5zZm9ybSgpO3RoaXMuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtKCl9O3Qucm90YXRlPWZ1bmN0aW9uIGN0eFJvdGF0ZSh0KXtlLnJvdGF0ZSh0KTt0aGlzLl9fb3JpZ2luYWxSb3RhdGUodCl9O3QuY2xpcD1mdW5jdGlvbiBjdHhSb3RhdGUodCl7ZS5jbGlwKHQpO3RoaXMuX19vcmlnaW5hbENsaXAodCl9O3QubW92ZVRvPWZ1bmN0aW9uKHQscyl7ZS5tb3ZlVG8odCxzKTt0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxzKX07dC5saW5lVG89ZnVuY3Rpb24odCxzKXtlLmxpbmVUbyh0LHMpO3RoaXMuX19vcmlnaW5hbExpbmVUbyh0LHMpfTt0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxzLGksbixyLGEpe2UuYmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSk7dGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSl9O3QucmVjdD1mdW5jdGlvbih0LHMsaSxuKXtlLnJlY3QodCxzLGksbik7dGhpcy5fX29yaWdpbmFsUmVjdCh0LHMsaSxuKX07dC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpO3RoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfTt0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCk7dGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShyLHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX1lbmRTTWFza01vZGUoKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCk7Y29weUN0eFN0YXRlKHRoaXMuY3R4LHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLmN0eD10aGlzLnN1c3BlbmRlZEN0eDt0aGlzLnN1c3BlbmRlZEN0eD1udWxsfWNvbXBvc2UodCl7aWYoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaylyZXR1cm47aWYodCl7dFswXT1NYXRoLmZsb29yKHRbMF0pO3RbMV09TWF0aC5mbG9vcih0WzFdKTt0WzJdPU1hdGguY2VpbCh0WzJdKTt0WzNdPU1hdGguY2VpbCh0WzNdKX1lbHNlIHQ9WzAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodF07Y29uc3QgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7Y29tcG9zZVNNYXNrKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCk7dGhpcy5jdHgucmVzdG9yZSgpfXNhdmUoKXtpZih0aGlzLmluU01hc2tNb2RlKXtjb3B5Q3R4U3RhdGUodGhpcy5jdHgsdGhpcy5zdXNwZW5kZWRDdHgpO3RoaXMuc3VzcGVuZGVkQ3R4LnNhdmUoKX1lbHNlIHRoaXMuY3R4LnNhdmUoKTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXswPT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCYmdGhpcy5pblNNYXNrTW9kZSYmdGhpcy5lbmRTTWFza01vZGUoKTtpZigwIT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCl7dGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCk7Y29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LHRoaXMuY3R4KX1lbHNlIHRoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsfX10cmFuc2Zvcm0odCxlLHMsaSxuLHIpe3RoaXMuY3R4LnRyYW5zZm9ybSh0LGUscyxpLG4scik7dGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH1jb25zdHJ1Y3RQYXRoKHQsZSxzKXtjb25zdCByPXRoaXMuY3R4LGE9dGhpcy5jdXJyZW50O2xldCBvLGwsYz1hLngsaD1hLnk7Y29uc3QgZD0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHIpLHU9MD09PWRbMF0mJjA9PT1kWzNdfHwwPT09ZFsxXSYmMD09PWRbMl0scD11P3Muc2xpY2UoMCk6bnVsbDtmb3IobGV0IHM9MCxuPTAsZz10Lmxlbmd0aDtzPGc7cysrKXN3aXRjaCgwfHRbc10pe2Nhc2UgaS5PUFMucmVjdGFuZ2xlOmM9ZVtuKytdO2g9ZVtuKytdO2NvbnN0IHQ9ZVtuKytdLHM9ZVtuKytdLGc9Yyt0LG09aCtzO3IubW92ZVRvKGMsaCk7aWYoMD09PXR8fDA9PT1zKXIubGluZVRvKGcsbSk7ZWxzZXtyLmxpbmVUbyhnLGgpO3IubGluZVRvKGcsbSk7ci5saW5lVG8oYyxtKX11fHxhLnVwZGF0ZVJlY3RNaW5NYXgoZCxbYyxoLGcsbV0pO3IuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSBpLk9QUy5tb3ZlVG86Yz1lW24rK107aD1lW24rK107ci5tb3ZlVG8oYyxoKTt1fHxhLnVwZGF0ZVBhdGhNaW5NYXgoZCxjLGgpO2JyZWFrO2Nhc2UgaS5PUFMubGluZVRvOmM9ZVtuKytdO2g9ZVtuKytdO3IubGluZVRvKGMsaCk7dXx8YS51cGRhdGVQYXRoTWluTWF4KGQsYyxoKTticmVhaztjYXNlIGkuT1BTLmN1cnZlVG86bz1jO2w9aDtjPWVbbis0XTtoPWVbbis1XTtyLmJlemllckN1cnZlVG8oZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10sYyxoLHApO24rPTY7YnJlYWs7Y2FzZSBpLk9QUy5jdXJ2ZVRvMjpvPWM7bD1oO3IuYmV6aWVyQ3VydmVUbyhjLGgsZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsYyxoLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10scCk7Yz1lW24rMl07aD1lW24rM107bis9NDticmVhaztjYXNlIGkuT1BTLmN1cnZlVG8zOm89YztsPWg7Yz1lW24rMl07aD1lW24rM107ci5iZXppZXJDdXJ2ZVRvKGVbbl0sZVtuKzFdLGMsaCxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGMsaCxjLGgscCk7bis9NDticmVhaztjYXNlIGkuT1BTLmNsb3NlUGF0aDpyLmNsb3NlUGF0aCgpfXUmJmEudXBkYXRlU2NhbGluZ1BhdGhNaW5NYXgoZCxwKTthLnNldEN1cnJlbnRQb2ludChjLGgpfWNsb3NlUGF0aCgpe3RoaXMuY3R4LmNsb3NlUGF0aCgpfXN0cm9rZSh0KXt0PXZvaWQgMD09PXR8fHQ7Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcjtlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5zdHJva2VBbHBoYTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKWlmKCJvYmplY3QiPT10eXBlb2YgcyYmcz8uZ2V0UGF0dGVybil7ZS5zYXZlKCk7ZS5zdHJva2VTdHlsZT1zLmdldFBhdHRlcm4oZSx0aGlzLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLHIuUGF0aFR5cGUuU1RST0tFKTt0aGlzLnJlc2NhbGVBbmRTdHJva2UoITEpO2UucmVzdG9yZSgpfWVsc2UgdGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCEwKTt0JiZ0aGlzLmNvbnN1bWVQYXRoKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpO2UuZ2xvYmFsQWxwaGE9dGhpcy5jdXJyZW50LmZpbGxBbHBoYX1jbG9zZVN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5zdHJva2UoKX1maWxsKHQpe3Q9dm9pZCAwPT09dHx8dDtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LmZpbGxDb2xvcjtsZXQgaT0hMTtpZih0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwpe2Uuc2F2ZSgpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTtpPSEwfWNvbnN0IGE9dGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlJiZudWxsIT09YSlpZih0aGlzLnBlbmRpbmdFT0ZpbGwpe2UuZmlsbCgiZXZlbm9kZCIpO3RoaXMucGVuZGluZ0VPRmlsbD0hMX1lbHNlIGUuZmlsbCgpO2kmJmUucmVzdG9yZSgpO3QmJnRoaXMuY29uc3VtZVBhdGgoYSl9ZW9GaWxsKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbCgpfWZpbGxTdHJva2UoKXt0aGlzLmZpbGwoITEpO3RoaXMuc3Ryb2tlKCExKTt0aGlzLmNvbnN1bWVQYXRoKCl9ZW9GaWxsU3Ryb2tlKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmZpbGxTdHJva2UoKX1lbmRQYXRoKCl7dGhpcy5jb25zdW1lUGF0aCgpfWNsaXAoKXt0aGlzLnBlbmRpbmdDbGlwPXB9ZW9DbGlwKCl7dGhpcy5wZW5kaW5nQ2xpcD1nfWJlZ2luVGV4dCgpe3RoaXMuY3VycmVudC50ZXh0TWF0cml4PWkuSURFTlRJVFlfTUFUUklYO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH1lbmRUZXh0KCl7Y29uc3QgdD10aGlzLnBlbmRpbmdUZXh0UGF0aHMsZT10aGlzLmN0eDtpZih2b2lkIDAhPT10KXtlLnNhdmUoKTtlLmJlZ2luUGF0aCgpO2Zvcihjb25zdCBzIG9mIHQpe2Uuc2V0VHJhbnNmb3JtKC4uLnMudHJhbnNmb3JtKTtlLnRyYW5zbGF0ZShzLngscy55KTtzLmFkZFRvUGF0aChlLHMuZm9udFNpemUpfWUucmVzdG9yZSgpO2UuY2xpcCgpO2UuYmVnaW5QYXRoKCk7ZGVsZXRlIHRoaXMucGVuZGluZ1RleHRQYXRoc31lbHNlIGUuYmVnaW5QYXRoKCl9c2V0Q2hhclNwYWNpbmcodCl7dGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nPXR9c2V0V29yZFNwYWNpbmcodCl7dGhpcy5jdXJyZW50LndvcmRTcGFjaW5nPXR9c2V0SFNjYWxlKHQpe3RoaXMuY3VycmVudC50ZXh0SFNjYWxlPXQvMTAwfXNldExlYWRpbmcodCl7dGhpcy5jdXJyZW50LmxlYWRpbmc9LXR9c2V0Rm9udCh0LGUpe2NvbnN0IHM9dGhpcy5jb21tb25PYmpzLmdldCh0KSxuPXRoaXMuY3VycmVudDtpZighcyl0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgZm9udCBmb3IgJHt0fWApO24uZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVg7MCE9PW4uZm9udE1hdHJpeFswXSYmMCE9PW4uZm9udE1hdHJpeFszXXx8KDAsaS53YXJuKSgiSW52YWxpZCBmb250IG1hdHJpeCBmb3IgZm9udCAiK3QpO2lmKGU8MCl7ZT0tZTtuLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBuLmZvbnREaXJlY3Rpb249MTt0aGlzLmN1cnJlbnQuZm9udD1zO3RoaXMuY3VycmVudC5mb250U2l6ZT1lO2lmKHMuaXNUeXBlM0ZvbnQpcmV0dXJuO2NvbnN0IHI9cy5sb2FkZWROYW1lfHwic2Fucy1zZXJpZiI7bGV0IGE9Im5vcm1hbCI7cy5ibGFjaz9hPSI5MDAiOnMuYm9sZCYmKGE9ImJvbGQiKTtjb25zdCBvPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiLGw9YCIke3J9IiwgJHtzLmZhbGxiYWNrTmFtZX1gO2xldCBjPWU7ZTwxNj9jPTE2OmU+MTAwJiYoYz0xMDApO3RoaXMuY3VycmVudC5mb250U2l6ZVNjYWxlPWUvYzt0aGlzLmN0eC5mb250PWAke299ICR7YX0gJHtjfXB4ICR7bH1gfXNldFRleHRSZW5kZXJpbmdNb2RlKHQpe3RoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZT10fXNldFRleHRSaXNlKHQpe3RoaXMuY3VycmVudC50ZXh0UmlzZT10fW1vdmVUZXh0KHQsZSl7dGhpcy5jdXJyZW50Lng9dGhpcy5jdXJyZW50LmxpbmVYKz10O3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWSs9ZX1zZXRMZWFkaW5nTW92ZVRleHQodCxlKXt0aGlzLnNldExlYWRpbmcoLWUpO3RoaXMubW92ZVRleHQodCxlKX1zZXRUZXh0TWF0cml4KHQsZSxzLGksbixyKXt0aGlzLmN1cnJlbnQudGV4dE1hdHJpeD1bdCxlLHMsaSxuLHJdO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9TWF0aC5oeXBvdCh0LGUpO3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wO3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfW5leHRMaW5lKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX1wYWludENoYXIodCxlLHMscil7Y29uc3QgYT10aGlzLmN0eCxvPXRoaXMuY3VycmVudCxsPW8uZm9udCxjPW8udGV4dFJlbmRlcmluZ01vZGUsaD1vLmZvbnRTaXplL28uZm9udFNpemVTY2FsZSxkPWMmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLLHU9ISEoYyZpLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpLHA9by5wYXR0ZXJuRmlsbCYmIWwubWlzc2luZ0ZpbGU7bGV0IGc7KGwuZGlzYWJsZUZvbnRGYWNlfHx1fHxwKSYmKGc9bC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2Jqcyx0KSk7aWYobC5kaXNhYmxlRm9udEZhY2V8fHApe2Euc2F2ZSgpO2EudHJhbnNsYXRlKGUscyk7YS5iZWdpblBhdGgoKTtnKGEsaCk7ciYmYS5zZXRUcmFuc2Zvcm0oLi4ucik7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuZmlsbCgpO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuc3Ryb2tlKCk7YS5yZXN0b3JlKCl9ZWxzZXtkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5maWxsVGV4dCh0LGUscyk7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5zdHJva2VUZXh0KHQsZSxzKX1pZih1KXsodGhpcy5wZW5kaW5nVGV4dFBhdGhzfHwodGhpcy5wZW5kaW5nVGV4dFBhdGhzPVtdKSkucHVzaCh7dHJhbnNmb3JtOigwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoYSkseDplLHk6cyxmb250U2l6ZTpoLGFkZFRvUGF0aDpnfSl9fWdldCBpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCgpe2NvbnN0e2NvbnRleHQ6dH09dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIiwxMCwxMCk7dC5zY2FsZSgxLjUsMSk7dC5maWxsVGV4dCgiSSIsMCwxMCk7Y29uc3QgZT10LmdldEltYWdlRGF0YSgwLDAsMTAsMTApLmRhdGE7bGV0IHM9ITE7Zm9yKGxldCB0PTM7dDxlLmxlbmd0aDt0Kz00KWlmKGVbdF0+MCYmZVt0XTwyNTUpe3M9ITA7YnJlYWt9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIixzKX1zaG93VGV4dCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxzPWUuZm9udDtpZihzLmlzVHlwZTNGb250KXJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7Y29uc3QgYT1lLmZvbnRTaXplO2lmKDA9PT1hKXJldHVybjtjb25zdCBvPXRoaXMuY3R4LGw9ZS5mb250U2l6ZVNjYWxlLGM9ZS5jaGFyU3BhY2luZyxoPWUud29yZFNwYWNpbmcsZD1lLmZvbnREaXJlY3Rpb24sdT1lLnRleHRIU2NhbGUqZCxwPXQubGVuZ3RoLGc9cy52ZXJ0aWNhbCxtPWc/MTotMSxmPXMuZGVmYXVsdFZNZXRyaWNzLGI9YSplLmZvbnRNYXRyaXhbMF0sQT1lLnRleHRSZW5kZXJpbmdNb2RlPT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiYhcy5kaXNhYmxlRm9udEZhY2UmJiFlLnBhdHRlcm5GaWxsO28uc2F2ZSgpO28udHJhbnNmb3JtKC4uLmUudGV4dE1hdHJpeCk7by50cmFuc2xhdGUoZS54LGUueStlLnRleHRSaXNlKTtkPjA/by5zY2FsZSh1LC0xKTpvLnNjYWxlKHUsMSk7bGV0IF87aWYoZS5wYXR0ZXJuRmlsbCl7by5zYXZlKCk7Y29uc3QgdD1lLmZpbGxDb2xvci5nZXRQYXR0ZXJuKG8sdGhpcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShvKSxyLlBhdGhUeXBlLkZJTEwpO189KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShvKTtvLnJlc3RvcmUoKTtvLmZpbGxTdHlsZT10fWxldCB2PWUubGluZVdpZHRoO2NvbnN0IHk9ZS50ZXh0TWF0cml4U2NhbGU7aWYoMD09PXl8fDA9PT12KXtjb25zdCB0PWUudGV4dFJlbmRlcmluZ01vZGUmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLO3QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmdCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fCh2PXRoaXMuZ2V0U2luZ2xlUGl4ZWxXaWR0aCgpKX1lbHNlIHYvPXk7aWYoMSE9PWwpe28uc2NhbGUobCxsKTt2Lz1sfW8ubGluZVdpZHRoPXY7bGV0IFMseD0wO2ZvcihTPTA7UzxwOysrUyl7Y29uc3QgZT10W1NdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7eCs9bSplKmEvMWUzO2NvbnRpbnVlfWxldCBpPSExO2NvbnN0IG49KGUuaXNTcGFjZT9oOjApK2Mscj1lLmZvbnRDaGFyLHU9ZS5hY2NlbnQ7bGV0IHAsdix5LEU9ZS53aWR0aDtpZihnKXtjb25zdCB0PWUudm1ldHJpY3x8ZixzPS0oZS52bWV0cmljP3RbMV06LjUqRSkqYixpPXRbMl0qYjtFPXQ/LXRbMF06RTtwPXMvbDt2PSh4K2kpL2x9ZWxzZXtwPXgvbDt2PTB9aWYocy5yZW1lYXN1cmUmJkU+MCl7Y29uc3QgdD0xZTMqby5tZWFzdXJlVGV4dChyKS53aWR0aC9hKmw7aWYoRTx0JiZ0aGlzLmlzRm9udFN1YnBpeGVsQUFFbmFibGVkKXtjb25zdCBlPUUvdDtpPSEwO28uc2F2ZSgpO28uc2NhbGUoZSwxKTtwLz1lfWVsc2UgRSE9PXQmJihwKz0oRS10KS8yZTMqYS9sKX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlJiYoZS5pc0luRm9udHx8cy5taXNzaW5nRmlsZSkpaWYoQSYmIXUpby5maWxsVGV4dChyLHAsdik7ZWxzZXt0aGlzLnBhaW50Q2hhcihyLHAsdixfKTtpZih1KXtjb25zdCB0PXArYSp1Lm9mZnNldC54L2wsZT12LWEqdS5vZmZzZXQueS9sO3RoaXMucGFpbnRDaGFyKHUuZm9udENoYXIsdCxlLF8pfX15PWc/RSpiLW4qZDpFKmIrbipkO3grPXk7aSYmby5yZXN0b3JlKCl9Zz9lLnktPXg6ZS54Kz14KnU7by5yZXN0b3JlKCk7dGhpcy5jb21wb3NlKCl9c2hvd1R5cGUzVGV4dCh0KXtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LG49cy5mb250LHI9cy5mb250U2l6ZSxhPXMuZm9udERpcmVjdGlvbixvPW4udmVydGljYWw/MTotMSxsPXMuY2hhclNwYWNpbmcsYz1zLndvcmRTcGFjaW5nLGg9cy50ZXh0SFNjYWxlKmEsZD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVgsdT10Lmxlbmd0aDtsZXQgcCxnLG0sZjtpZighKHMudGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSkmJjAhPT1yKXt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO2Uuc2F2ZSgpO2UudHJhbnNmb3JtKC4uLnMudGV4dE1hdHJpeCk7ZS50cmFuc2xhdGUocy54LHMueSk7ZS5zY2FsZShoLGEpO2ZvcihwPTA7cDx1OysrcCl7Zz10W3BdO2lmKCJudW1iZXIiPT10eXBlb2YgZyl7Zj1vKmcqci8xZTM7dGhpcy5jdHgudHJhbnNsYXRlKGYsMCk7cy54Kz1mKmg7Y29udGludWV9Y29uc3QgYT0oZy5pc1NwYWNlP2M6MCkrbCx1PW4uY2hhclByb2NPcGVyYXRvckxpc3RbZy5vcGVyYXRvckxpc3RJZF07aWYoIXUpeygwLGkud2FybikoYFR5cGUzIGNoYXJhY3RlciAiJHtnLm9wZXJhdG9yTGlzdElkfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb250aW51ZX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt0aGlzLnByb2Nlc3NpbmdUeXBlMz1nO3RoaXMuc2F2ZSgpO2Uuc2NhbGUocixyKTtlLnRyYW5zZm9ybSguLi5kKTt0aGlzLmV4ZWN1dGVPcGVyYXRvckxpc3QodSk7dGhpcy5yZXN0b3JlKCl9bT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2cud2lkdGgsMF0sZClbMF0qcithO2UudHJhbnNsYXRlKG0sMCk7cy54Kz1tKmh9ZS5yZXN0b3JlKCk7dGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbH19c2V0Q2hhcldpZHRoKHQsZSl7fXNldENoYXJXaWR0aEFuZEJvdW5kcyh0LGUscyxpLG4scil7dGhpcy5jdHgucmVjdChzLGksbi1zLHItaSk7dGhpcy5jdHguY2xpcCgpO3RoaXMuZW5kUGF0aCgpfWdldENvbG9yTl9QYXR0ZXJuKHQpe2xldCBlO2lmKCJUaWxpbmdQYXR0ZXJuIj09PXRbMF0pe2NvbnN0IHM9dFsxXSxpPXRoaXMuYmFzZVRyYW5zZm9ybXx8KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksYT17Y3JlYXRlQ2FudmFzR3JhcGhpY3M6dD0+bmV3IENhbnZhc0dyYXBoaWNzKHQsdGhpcy5jb21tb25PYmpzLHRoaXMub2Jqcyx0aGlzLmNhbnZhc0ZhY3RvcnkpfTtlPW5ldyByLlRpbGluZ1BhdHRlcm4odCxzLHRoaXMuY3R4LGEsaSl9ZWxzZSBlPXRoaXMuX2dldFBhdHRlcm4odFsxXSx0WzJdKTtyZXR1cm4gZX1zZXRTdHJva2VDb2xvck4oKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dGhpcy5nZXRDb2xvck5fUGF0dGVybihhcmd1bWVudHMpfXNldEZpbGxDb2xvck4oKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITB9c2V0U3Ryb2tlUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguc3Ryb2tlU3R5bGU9bjt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9bn1zZXRGaWxsUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguZmlsbFN0eWxlPW47dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1uO3RoaXMuY3VycmVudC5wYXR0ZXJuRmlsbD0hMX1fZ2V0UGF0dGVybih0LGU9bnVsbCl7bGV0IHM7aWYodGhpcy5jYWNoZWRQYXR0ZXJucy5oYXModCkpcz10aGlzLmNhY2hlZFBhdHRlcm5zLmdldCh0KTtlbHNle3M9KDAsci5nZXRTaGFkaW5nUGF0dGVybikodGhpcy5vYmpzLmdldCh0KSk7dGhpcy5jYWNoZWRQYXR0ZXJucy5zZXQodCxzKX1lJiYocy5tYXRyaXg9ZSk7cmV0dXJuIHN9c2hhZGluZ0ZpbGwodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dGhpcy5jdHg7dGhpcy5zYXZlKCk7Y29uc3Qgcz10aGlzLl9nZXRQYXR0ZXJuKHQpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5TSEFESU5HKTtjb25zdCBhPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpO2lmKGEpe2NvbnN0IHQ9ZS5jYW52YXMscz10LndpZHRoLG49dC5oZWlnaHQscj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sYSksbz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsbl0sYSksbD1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsMF0sYSksYz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3Msbl0sYSksaD1NYXRoLm1pbihyWzBdLG9bMF0sbFswXSxjWzBdKSxkPU1hdGgubWluKHJbMV0sb1sxXSxsWzFdLGNbMV0pLHU9TWF0aC5tYXgoclswXSxvWzBdLGxbMF0sY1swXSkscD1NYXRoLm1heChyWzFdLG9bMV0sbFsxXSxjWzFdKTt0aGlzLmN0eC5maWxsUmVjdChoLGQsdS1oLHAtZCl9ZWxzZSB0aGlzLmN0eC5maWxsUmVjdCgtMWUxMCwtMWUxMCwyZTEwLDJlMTApO3RoaXMuY29tcG9zZSh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnJlc3RvcmUoKX1iZWdpbklubGluZUltYWdlKCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlIil9YmVnaW5JbWFnZURhdGEoKXsoMCxpLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhIil9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5zYXZlKCk7dGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmJhc2VUcmFuc2Zvcm0pO0FycmF5LmlzQXJyYXkodCkmJjY9PT10Lmxlbmd0aCYmdGhpcy50cmFuc2Zvcm0oLi4udCk7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO2lmKGUpe2NvbnN0IHQ9ZVsyXS1lWzBdLHM9ZVszXS1lWzFdO3RoaXMuY3R4LnJlY3QoZVswXSxlWzFdLHQscyk7dGhpcy5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksZSk7dGhpcy5jbGlwKCk7dGhpcy5lbmRQYXRoKCl9fX1wYWludEZvcm1YT2JqZWN0RW5kKCl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5yZXN0b3JlKCk7dGhpcy5iYXNlVHJhbnNmb3JtPXRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnBvcCgpfX1iZWdpbkdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjt0aGlzLnNhdmUoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLmVuZFNNYXNrTW9kZSgpO3RoaXMuY3VycmVudC5hY3RpdmVTTWFzaz1udWxsfWNvbnN0IGU9dGhpcy5jdHg7dC5pc29sYXRlZHx8KDAsaS5pbmZvKSgiVE9ETzogU3VwcG9ydCBub24taXNvbGF0ZWQgZ3JvdXBzLiIpO3Qua25vY2tvdXQmJigwLGkud2FybikoIktub2Nrb3V0IGdyb3VwcyBub3Qgc3VwcG9ydGVkLiIpO2NvbnN0IHM9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTt0Lm1hdHJpeCYmZS50cmFuc2Zvcm0oLi4udC5tYXRyaXgpO2lmKCF0LmJib3gpdGhyb3cgbmV3IEVycm9yKCJCb3VuZGluZyBib3ggaXMgcmVxdWlyZWQuIik7bGV0IHI9aS5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQuYmJveCwoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpKTtjb25zdCBhPVswLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0XTtyPWkuVXRpbC5pbnRlcnNlY3QocixhKXx8WzAsMCwwLDBdO2NvbnN0IG89TWF0aC5mbG9vcihyWzBdKSxjPU1hdGguZmxvb3IoclsxXSk7bGV0IGg9TWF0aC5tYXgoTWF0aC5jZWlsKHJbMl0pLW8sMSksZD1NYXRoLm1heChNYXRoLmNlaWwoclszXSktYywxKSx1PTEscD0xO2lmKGg+bCl7dT1oL2w7aD1sfWlmKGQ+bCl7cD1kL2w7ZD1sfXRoaXMuY3VycmVudC5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsaCxkXSk7bGV0IGc9Imdyb3VwQXQiK3RoaXMuZ3JvdXBMZXZlbDt0LnNtYXNrJiYoZys9Il9zbWFza18iK3RoaXMuc21hc2tDb3VudGVyKyslMik7Y29uc3QgbT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhnLGgsZCksZj1tLmNvbnRleHQ7Zi5zY2FsZSgxL3UsMS9wKTtmLnRyYW5zbGF0ZSgtbywtYyk7Zi50cmFuc2Zvcm0oLi4ucyk7aWYodC5zbWFzayl0aGlzLnNtYXNrU3RhY2sucHVzaCh7Y2FudmFzOm0uY2FudmFzLGNvbnRleHQ6ZixvZmZzZXRYOm8sb2Zmc2V0WTpjLHNjYWxlWDp1LHNjYWxlWTpwLHN1YnR5cGU6dC5zbWFzay5zdWJ0eXBlLGJhY2tkcm9wOnQuc21hc2suYmFja2Ryb3AsdHJhbnNmZXJNYXA6dC5zbWFzay50cmFuc2Zlck1hcHx8bnVsbCxzdGFydFRyYW5zZm9ybUludmVyc2U6bnVsbH0pO2Vsc2V7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UudHJhbnNsYXRlKG8sYyk7ZS5zY2FsZSh1LHApO2Uuc2F2ZSgpfWNvcHlDdHhTdGF0ZShlLGYpO3RoaXMuY3R4PWY7dGhpcy5zZXRHU3RhdGUoW1siQk0iLCJzb3VyY2Utb3ZlciJdLFsiY2EiLDFdLFsiQ0EiLDFdXSk7dGhpcy5ncm91cFN0YWNrLnB1c2goZSk7dGhpcy5ncm91cExldmVsKyt9ZW5kR3JvdXAodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO3RoaXMuZ3JvdXBMZXZlbC0tO2NvbnN0IGU9dGhpcy5jdHgscz10aGlzLmdyb3VwU3RhY2sucG9wKCk7dGhpcy5jdHg9czt0aGlzLmN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7aWYodC5zbWFzayl7dGhpcy50ZW1wU01hc2s9dGhpcy5zbWFza1N0YWNrLnBvcCgpO3RoaXMucmVzdG9yZSgpfWVsc2V7dGhpcy5jdHgucmVzdG9yZSgpO2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7dGhpcy5yZXN0b3JlKCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSguLi50KTtjb25zdCBzPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF0sdCk7dGhpcy5jdHguZHJhd0ltYWdlKGUuY2FudmFzLDAsMCk7dGhpcy5jdHgucmVzdG9yZSgpO3RoaXMuY29tcG9zZShzKX19YmVnaW5Bbm5vdGF0aW9uKHQsZSxzLHIsYSl7dGhpcy4jc3QoKTtyZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCx0aGlzLmZvcmVncm91bmRDb2xvcik7dGhpcy5jdHguc2F2ZSgpO3RoaXMuc2F2ZSgpO3RoaXMuYmFzZVRyYW5zZm9ybSYmdGhpcy5jdHguc2V0VHJhbnNmb3JtKC4uLnRoaXMuYmFzZVRyYW5zZm9ybSk7aWYoQXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoKXtjb25zdCByPWVbMl0tZVswXSxvPWVbM10tZVsxXTtpZihhJiZ0aGlzLmFubm90YXRpb25DYW52YXNNYXApeyhzPXMuc2xpY2UoKSlbNF0tPWVbMF07c1s1XS09ZVsxXTsoZT1lLnNsaWNlKCkpWzBdPWVbMV09MDtlWzJdPXI7ZVszXT1vO2NvbnN0W2EsbF09aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpKSx7dmlld3BvcnRTY2FsZTpjfT10aGlzLGg9TWF0aC5jZWlsKHIqdGhpcy5vdXRwdXRTY2FsZVgqYyksZD1NYXRoLmNlaWwobyp0aGlzLm91dHB1dFNjYWxlWSpjKTt0aGlzLmFubm90YXRpb25DYW52YXM9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShoLGQpO2NvbnN0e2NhbnZhczp1LGNvbnRleHQ6cH09dGhpcy5hbm5vdGF0aW9uQ2FudmFzO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCx1KTt0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9cDt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oYSwwLDAsLWwsMCxvKmwpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKX1lbHNle3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTt0aGlzLmN0eC5yZWN0KGVbMF0sZVsxXSxyLG8pO3RoaXMuY3R4LmNsaXAoKTt0aGlzLmVuZFBhdGgoKX19dGhpcy5jdXJyZW50PW5ldyBDYW52YXNFeHRyYVN0YXRlKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTt0aGlzLnRyYW5zZm9ybSguLi5zKTt0aGlzLnRyYW5zZm9ybSguLi5yKX1lbmRBbm5vdGF0aW9uKCl7aWYodGhpcy5hbm5vdGF0aW9uQ2FudmFzKXt0aGlzLmN0eD10aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg7ZGVsZXRlIHRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eDtkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzfX1wYWludEltYWdlTWFza1hPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC5jb3VudDsodD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCkpLmNvdW50PWU7Y29uc3Qgcz10aGlzLmN0eCxpPXRoaXMucHJvY2Vzc2luZ1R5cGUzO2lmKGkpe3ZvaWQgMD09PWkuY29tcGlsZWQmJihpLmNvbXBpbGVkPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHQpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnN9PXQ7aWYoZT5jfHxzPmMpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxuPWUrMTtsZXQgcixhLG8sbD1uZXcgVWludDhBcnJheShuKihzKzEpKTtjb25zdCBoPWUrNyYtODtsZXQgZD1uZXcgVWludDhBcnJheShoKnMpLHU9MDtmb3IoY29uc3QgZSBvZiB0LmRhdGEpe2xldCB0PTEyODtmb3IoO3Q+MDspe2RbdSsrXT1lJnQ/MDoyNTU7dD4+PTF9fWxldCBwPTA7dT0wO2lmKDAhPT1kW3VdKXtsWzBdPTE7KytwfWZvcihhPTE7YTxlO2ErKyl7aWYoZFt1XSE9PWRbdSsxXSl7bFthXT1kW3VdPzI6MTsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW2FdPTI7KytwfWZvcihyPTE7cjxzO3IrKyl7dT1yKmg7bz1yKm47aWYoZFt1LWhdIT09ZFt1XSl7bFtvXT1kW3VdPzE6ODsrK3B9bGV0IHQ9KGRbdV0/NDowKSsoZFt1LWhdPzg6MCk7Zm9yKGE9MTthPGU7YSsrKXt0PSh0Pj4yKSsoZFt1KzFdPzQ6MCkrKGRbdS1oKzFdPzg6MCk7aWYoaVt0XSl7bFtvK2FdPWlbdF07KytwfXUrK31pZihkW3UtaF0hPT1kW3VdKXtsW28rYV09ZFt1XT8yOjQ7KytwfWlmKHA+MWUzKXJldHVybiBudWxsfXU9aCoocy0xKTtvPXIqbjtpZigwIT09ZFt1XSl7bFtvXT04OysrcH1mb3IoYT0xO2E8ZTthKyspe2lmKGRbdV0hPT1kW3UrMV0pe2xbbythXT1kW3VdPzQ6ODsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW28rYV09NDsrK3B9aWYocD4xZTMpcmV0dXJuIG51bGw7Y29uc3QgZz1uZXcgSW50MzJBcnJheShbMCxuLC0xLDAsLW4sMCwwLDAsMV0pLG09bmV3IFBhdGgyRDtmb3Iocj0wO3AmJnI8PXM7cisrKXtsZXQgdD1yKm47Y29uc3Qgcz10K2U7Zm9yKDt0PHMmJiFsW3RdOyl0Kys7aWYodD09PXMpY29udGludWU7bS5tb3ZlVG8odCVuLHIpO2NvbnN0IGk9dDtsZXQgYT1sW3RdO2Rve2NvbnN0IGU9Z1thXTtkb3t0Kz1lfXdoaWxlKCFsW3RdKTtjb25zdCBzPWxbdF07aWYoNSE9PXMmJjEwIT09cyl7YT1zO2xbdF09MH1lbHNle2E9cyY1MSphPj40O2xbdF0mPWE+PjJ8YTw8Mn1tLmxpbmVUbyh0JW4sdC9ufDApO2xbdF18fC0tcH13aGlsZShpIT09dCk7LS1yfWQ9bnVsbDtsPW51bGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3Quc2F2ZSgpO3Quc2NhbGUoMS9lLC0xL3MpO3QudHJhbnNsYXRlKDAsLXMpO3QuZmlsbChtKTt0LmJlZ2luUGF0aCgpO3QucmVzdG9yZSgpfX0odCkpO2lmKGkuY29tcGlsZWQpe2kuY29tcGlsZWQocyk7cmV0dXJufX1jb25zdCBuPXRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCkscj1uLmNhbnZhcztzLnNhdmUoKTtzLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7cy5kcmF3SW1hZ2UocixuLm9mZnNldFgsbi5vZmZzZXRZKTtzLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQodCxlLHM9MCxyPTAsYSxvKXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCk7Y29uc3QgbD10aGlzLmN0eDtsLnNhdmUoKTtjb25zdCBjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7bC50cmFuc2Zvcm0oZSxzLHIsYSwwLDApO2NvbnN0IGg9dGhpcy5fY3JlYXRlTWFza0NhbnZhcyh0KTtsLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCs9Mil7Y29uc3Qgbj1pLlV0aWwudHJhbnNmb3JtKGMsW2UscyxyLGEsb1t0XSxvW3QrMV1dKSxbZCx1XT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sbik7bC5kcmF3SW1hZ2UoaC5jYW52YXMsZCx1KX1sLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RHcm91cCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5maWxsQ29sb3IsaT10aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3R7ZGF0YTp0LHdpZHRoOm8saGVpZ2h0OmwsdHJhbnNmb3JtOmN9PWEsaD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsbyxsKSxkPWguY29udGV4dDtkLnNhdmUoKTtwdXRCaW5hcnlJbWFnZU1hc2soZCx0aGlzLmdldE9iamVjdCh0LGEpKTtkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLWluIjtkLmZpbGxTdHlsZT1pP3MuZ2V0UGF0dGVybihkLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTpzO2QuZmlsbFJlY3QoMCwwLG8sbCk7ZC5yZXN0b3JlKCk7ZS5zYXZlKCk7ZS50cmFuc2Zvcm0oLi4uYyk7ZS5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoZSxoLmNhbnZhcywwLDAsbyxsLDAsLTEsMSwxKTtlLnJlc3RvcmUoKX10aGlzLmNvbXBvc2UoKX1wYWludEltYWdlWE9iamVjdCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsaS53YXJuKSgiRGVwZW5kZW50IGltYWdlIGlzbid0IHJlYWR5IHlldCIpfXBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KHQsZSxzLG4pe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCByPXRoaXMuZ2V0T2JqZWN0KHQpO2lmKCFyKXsoMCxpLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iik7cmV0dXJufWNvbnN0IGE9ci53aWR0aCxvPXIuaGVpZ2h0LGw9W107Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCs9MilsLnB1c2goe3RyYW5zZm9ybTpbZSwwLDAscyxuW3RdLG5bdCsxXV0seDowLHk6MCx3OmEsaDpvfSk7dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHIsbCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC53aWR0aCxzPXQuaGVpZ2h0LGk9dGhpcy5jdHg7dGhpcy5zYXZlKCk7aS5zY2FsZSgxL2UsLTEvcyk7bGV0IHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpcj10O2Vsc2V7Y29uc3QgaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaW5saW5lSW1hZ2UiLGUscyk7cHV0QmluYXJ5SW1hZ2VEYXRhKGkuY29udGV4dCx0LHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMpO3I9aS5jYW52YXN9Y29uc3QgYT10aGlzLl9zY2FsZUltYWdlKHIsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoaSkpO2kuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhpLGEuaW1nLDAsMCxhLnBhaW50V2lkdGgsYS5wYWludEhlaWdodCwwLC1zLGUscyk7dGhpcy5jb21wb3NlKCk7dGhpcy5yZXN0b3JlKCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCh0LGUpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBzPXRoaXMuY3R4LGk9dC53aWR0aCxuPXQuaGVpZ2h0LHI9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixpLG4pO3B1dEJpbmFyeUltYWdlRGF0YShyLmNvbnRleHQsdCx0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzKTtmb3IoY29uc3QgdCBvZiBlKXtzLnNhdmUoKTtzLnRyYW5zZm9ybSguLi50LnRyYW5zZm9ybSk7cy5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMocyxyLmNhbnZhcyx0LngsdC55LHQudyx0LmgsMCwtMSwxLDEpO3MucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3RoaXMuY29tcG9zZSgpfX1tYXJrUG9pbnQodCl7fW1hcmtQb2ludFByb3BzKHQsZSl7fWJlZ2luTWFya2VkQ29udGVudCh0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9YmVnaW5NYXJrZWRDb250ZW50UHJvcHModCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWVuZE1hcmtlZENvbnRlbnQoKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWJlZ2luQ29tcGF0KCl7fWVuZENvbXBhdCgpe31jb25zdW1lUGF0aCh0KXtjb25zdCBlPXRoaXMuY3VycmVudC5pc0VtcHR5Q2xpcCgpO3RoaXMucGVuZGluZ0NsaXAmJnRoaXMuY3VycmVudC51cGRhdGVDbGlwRnJvbVBhdGgoKTt0aGlzLnBlbmRpbmdDbGlwfHx0aGlzLmNvbXBvc2UodCk7Y29uc3Qgcz10aGlzLmN0eDtpZih0aGlzLnBlbmRpbmdDbGlwKXtlfHwodGhpcy5wZW5kaW5nQ2xpcD09PWc/cy5jbGlwKCJldmVub2RkIik6cy5jbGlwKCkpO3RoaXMucGVuZGluZ0NsaXA9bnVsbH10aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7cy5iZWdpblBhdGgoKX1nZXRTaW5nbGVQaXhlbFdpZHRoKCl7aWYoIXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGgpe2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PXRbMV0mJjA9PT10WzJdKXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9MS9NYXRoLm1pbihNYXRoLmFicyh0WzBdKSxNYXRoLmFicyh0WzNdKSk7ZWxzZXtjb25zdCBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLHM9TWF0aC5oeXBvdCh0WzBdLHRbMl0pLGk9TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgocyxpKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH1nZXRTY2FsZUZvclN0cm9raW5nKCl7aWYoIXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcpe2NvbnN0e2xpbmVXaWR0aDp0fT10aGlzLmN1cnJlbnQsZT0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtsZXQgcyxpO2lmKDA9PT1lWzFdJiYwPT09ZVsyXSl7Y29uc3Qgbj1NYXRoLmFicyhlWzBdKSxyPU1hdGguYWJzKGVbM10pO2lmKDA9PT10KXtzPTEvbjtpPTEvcn1lbHNle2NvbnN0IGU9bip0LGE9cip0O3M9ZTwxPzEvZToxO2k9YTwxPzEvYToxfX1lbHNle2NvbnN0IG49TWF0aC5hYnMoZVswXSplWzNdLWVbMl0qZVsxXSkscj1NYXRoLmh5cG90KGVbMF0sZVsxXSksYT1NYXRoLmh5cG90KGVbMl0sZVszXSk7aWYoMD09PXQpe3M9YS9uO2k9ci9ufWVsc2V7Y29uc3QgZT10Km47cz1hPmU/YS9lOjE7aT1yPmU/ci9lOjF9fXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9W3MsaV19cmV0dXJuIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmd9cmVzY2FsZUFuZFN0cm9rZSh0KXtjb25zdHtjdHg6ZX09dGhpcyx7bGluZVdpZHRoOnN9PXRoaXMuY3VycmVudCxbaSxyXT10aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKTtlLmxpbmVXaWR0aD1zfHwxO2lmKDE9PT1pJiYxPT09cil7ZS5zdHJva2UoKTtyZXR1cm59bGV0IGEsbyxsO2lmKHQpe2E9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTtvPWUuZ2V0TGluZURhc2goKS5zbGljZSgpO2w9ZS5saW5lRGFzaE9mZnNldH1lLnNjYWxlKGkscik7Y29uc3QgYz1NYXRoLm1heChpLHIpO2Uuc2V0TGluZURhc2goZS5nZXRMaW5lRGFzaCgpLm1hcCgodD0+dC9jKSkpO2UubGluZURhc2hPZmZzZXQvPWM7ZS5zdHJva2UoKTtpZih0KXtlLnNldFRyYW5zZm9ybSguLi5hKTtlLnNldExpbmVEYXNoKG8pO2UubGluZURhc2hPZmZzZXQ9bH19aXNDb250ZW50VmlzaWJsZSgpe2ZvcihsZXQgdD10aGlzLm1hcmtlZENvbnRlbnRTdGFjay5sZW5ndGgtMTt0Pj0wO3QtLSlpZighdGhpcy5tYXJrZWRDb250ZW50U3RhY2tbdF0udmlzaWJsZSlyZXR1cm4hMTtyZXR1cm4hMH19ZS5DYW52YXNHcmFwaGljcz1DYW52YXNHcmFwaGljcztmb3IoY29uc3QgdCBpbiBpLk9QUyl2b2lkIDAhPT1DYW52YXNHcmFwaGljcy5wcm90b3R5cGVbdF0mJihDYW52YXNHcmFwaGljcy5wcm90b3R5cGVbaS5PUFNbdF1dPUNhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UaWxpbmdQYXR0ZXJuPWUuUGF0aFR5cGU9dm9pZCAwO2UuZ2V0U2hhZGluZ1BhdHRlcm49ZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCl7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtjYXNlIk1lc2giOnJldHVybiBuZXcgTWVzaFNoYWRpbmdQYXR0ZXJuKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgRHVtbXlTaGFkaW5nUGF0dGVybn10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSVIgdHlwZTogJHt0WzBdfWApfTt2YXIgaT1zKDEpLG49cyg2KSxyPXMoMTIpO2NvbnN0IGE9e0ZJTEw6IkZpbGwiLFNUUk9LRToiU3Ryb2tlIixTSEFESU5HOiJTaGFkaW5nIn07ZS5QYXRoVHlwZT1hO2Z1bmN0aW9uIGFwcGx5Qm91bmRpbmdCb3godCxlKXtpZighZXx8ci5pc05vZGVKUylyZXR1cm47Y29uc3Qgcz1lWzJdLWVbMF0saT1lWzNdLWVbMV0sbj1uZXcgUGF0aDJEO24ucmVjdChlWzBdLGVbMV0scyxpKTt0LmNsaXAobil9Y2xhc3MgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nUGF0dGVybiYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nUGF0dGVybi4iKX1nZXRQYXR0ZXJuKCl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGF0dGVybmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fdHlwZT10WzFdO3RoaXMuX2Jib3g9dFsyXTt0aGlzLl9jb2xvclN0b3BzPXRbM107dGhpcy5fcDA9dFs0XTt0aGlzLl9wMT10WzVdO3RoaXMuX3IwPXRbNl07dGhpcy5fcjE9dFs3XTt0aGlzLm1hdHJpeD1udWxsfV9jcmVhdGVHcmFkaWVudCh0KXtsZXQgZTsiYXhpYWwiPT09dGhpcy5fdHlwZT9lPXQuY3JlYXRlTGluZWFyR3JhZGllbnQodGhpcy5fcDBbMF0sdGhpcy5fcDBbMV0sdGhpcy5fcDFbMF0sdGhpcy5fcDFbMV0pOiJyYWRpYWwiPT09dGhpcy5fdHlwZSYmKGU9dC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9yMCx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSx0aGlzLl9yMSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NvbG9yU3RvcHMpZS5hZGRDb2xvclN0b3AodFswXSx0WzFdKTtyZXR1cm4gZX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2xldCBvO2lmKHI9PT1hLlNUUk9LRXx8cj09PWEuRklMTCl7Y29uc3QgYT1lLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveChyLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpfHxbMCwwLDAsMF0sbD1NYXRoLmNlaWwoYVsyXS1hWzBdKXx8MSxjPU1hdGguY2VpbChhWzNdLWFbMV0pfHwxLGg9ZS5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoInBhdHRlcm4iLGwsYywhMCksZD1oLmNvbnRleHQ7ZC5jbGVhclJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC5iZWdpblBhdGgoKTtkLnJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC50cmFuc2xhdGUoLWFbMF0sLWFbMV0pO3M9aS5VdGlsLnRyYW5zZm9ybShzLFsxLDAsMCwxLGFbMF0sYVsxXV0pO2QudHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7dGhpcy5tYXRyaXgmJmQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KTthcHBseUJvdW5kaW5nQm94KGQsdGhpcy5fYmJveCk7ZC5maWxsU3R5bGU9dGhpcy5fY3JlYXRlR3JhZGllbnQoZCk7ZC5maWxsKCk7bz10LmNyZWF0ZVBhdHRlcm4oaC5jYW52YXMsIm5vLXJlcGVhdCIpO2NvbnN0IHU9bmV3IERPTU1hdHJpeChzKTtvLnNldFRyYW5zZm9ybSh1KX1lbHNle2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtvPXRoaXMuX2NyZWF0ZUdyYWRpZW50KHQpfXJldHVybiBvfX1mdW5jdGlvbiBkcmF3VHJpYW5nbGUodCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPWUuY29vcmRzLGM9ZS5jb2xvcnMsaD10LmRhdGEsZD00KnQud2lkdGg7bGV0IHU7aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9aWYobFtpKzFdPmxbbisxXSl7dT1pO2k9bjtuPXU7dT1hO2E9bztvPXV9aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9Y29uc3QgcD0obFtzXStlLm9mZnNldFgpKmUuc2NhbGVYLGc9KGxbcysxXStlLm9mZnNldFkpKmUuc2NhbGVZLG09KGxbaV0rZS5vZmZzZXRYKSplLnNjYWxlWCxmPShsW2krMV0rZS5vZmZzZXRZKSplLnNjYWxlWSxiPShsW25dK2Uub2Zmc2V0WCkqZS5zY2FsZVgsQT0obFtuKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVk7aWYoZz49QSlyZXR1cm47Y29uc3QgXz1jW3JdLHY9Y1tyKzFdLHk9Y1tyKzJdLFM9Y1thXSx4PWNbYSsxXSxFPWNbYSsyXSxDPWNbb10sUD1jW28rMV0sVD1jW28rMl0sdz1NYXRoLnJvdW5kKGcpLGs9TWF0aC5yb3VuZChBKTtsZXQgRixNLFIsRCxJLE8sTCxOO2ZvcihsZXQgdD13O3Q8PWs7dCsrKXtpZih0PGYpe2xldCBlO2U9dDxnPzA6KGctdCkvKGctZik7Rj1wLShwLW0pKmU7TT1fLShfLVMpKmU7Uj12LSh2LXgpKmU7RD15LSh5LUUpKmV9ZWxzZXtsZXQgZTtlPXQ+QT8xOmY9PT1BPzA6KGYtdCkvKGYtQSk7Rj1tLShtLWIpKmU7TT1TLShTLUMpKmU7Uj14LSh4LVApKmU7RD1FLShFLVQpKmV9bGV0IGU7ZT10PGc/MDp0PkE/MTooZy10KS8oZy1BKTtJPXAtKHAtYikqZTtPPV8tKF8tQykqZTtMPXYtKHYtUCkqZTtOPXktKHktVCkqZTtjb25zdCBzPU1hdGgucm91bmQoTWF0aC5taW4oRixJKSksaT1NYXRoLnJvdW5kKE1hdGgubWF4KEYsSSkpO2xldCBuPWQqdCs0KnM7Zm9yKGxldCB0PXM7dDw9aTt0Kyspe2U9KEYtdCkvKEYtSSk7ZTwwP2U9MDplPjEmJihlPTEpO2hbbisrXT1NLShNLU8pKmV8MDtoW24rK109Ui0oUi1MKSplfDA7aFtuKytdPUQtKEQtTikqZXwwO2hbbisrXT0yNTV9fX1mdW5jdGlvbiBkcmF3RmlndXJlKHQsZSxzKXtjb25zdCBpPWUuY29vcmRzLG49ZS5jb2xvcnM7bGV0IHIsYTtzd2l0Y2goZS50eXBlKXtjYXNlImxhdHRpY2UiOmNvbnN0IG89ZS52ZXJ0aWNlc1BlclJvdyxsPU1hdGguZmxvb3IoaS5sZW5ndGgvbyktMSxjPW8tMTtmb3Iocj0wO3I8bDtyKyspe2xldCBlPXIqbztmb3IobGV0IHI9MDtyPGM7cisrLGUrKyl7ZHJhd1RyaWFuZ2xlKHQscyxpW2VdLGlbZSsxXSxpW2Urb10sbltlXSxuW2UrMV0sbltlK29dKTtkcmF3VHJpYW5nbGUodCxzLGlbZStvKzFdLGlbZSsxXSxpW2Urb10sbltlK28rMV0sbltlKzFdLG5bZStvXSl9fWJyZWFrO2Nhc2UidHJpYW5nbGVzIjpmb3Iocj0wLGE9aS5sZW5ndGg7cjxhO3IrPTMpZHJhd1RyaWFuZ2xlKHQscyxpW3JdLGlbcisxXSxpW3IrMl0sbltyXSxuW3IrMV0sbltyKzJdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBmaWd1cmUiKX19Y2xhc3MgTWVzaFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fY29vcmRzPXRbMl07dGhpcy5fY29sb3JzPXRbM107dGhpcy5fZmlndXJlcz10WzRdO3RoaXMuX2JvdW5kcz10WzVdO3RoaXMuX2Jib3g9dFs3XTt0aGlzLl9iYWNrZ3JvdW5kPXRbOF07dGhpcy5tYXRyaXg9bnVsbH1fY3JlYXRlTWVzaENhbnZhcyh0LGUscyl7Y29uc3QgaT1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksbj1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1sxXSkscj1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzJdKS1pLGE9TWF0aC5jZWlsKHRoaXMuX2JvdW5kc1szXSktbixvPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhyKnRbMF0qMS4xKSksM2UzKSxsPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhhKnRbMV0qMS4xKSksM2UzKSxjPXIvbyxoPWEvbCxkPXtjb29yZHM6dGhpcy5fY29vcmRzLGNvbG9yczp0aGlzLl9jb2xvcnMsb2Zmc2V0WDotaSxvZmZzZXRZOi1uLHNjYWxlWDoxL2Msc2NhbGVZOjEvaH0sdT1vKzQscD1sKzQsZz1zLmdldENhbnZhcygibWVzaCIsdSxwLCExKSxtPWcuY29udGV4dCxmPW0uY3JlYXRlSW1hZ2VEYXRhKG8sbCk7aWYoZSl7Y29uc3QgdD1mLmRhdGE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cys9NCl7dFtzXT1lWzBdO3RbcysxXT1lWzFdO3RbcysyXT1lWzJdO3RbcyszXT0yNTV9fWZvcihjb25zdCB0IG9mIHRoaXMuX2ZpZ3VyZXMpZHJhd0ZpZ3VyZShmLHQsZCk7bS5wdXRJbWFnZURhdGEoZiwyLDIpO3JldHVybntjYW52YXM6Zy5jYW52YXMsb2Zmc2V0WDppLTIqYyxvZmZzZXRZOm4tMipoLHNjYWxlWDpjLHNjYWxlWTpofX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtsZXQgbztpZihyPT09YS5TSEFESU5HKW89aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpO2Vsc2V7bz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZS5iYXNlVHJhbnNmb3JtKTtpZih0aGlzLm1hdHJpeCl7Y29uc3QgdD1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpO289W29bMF0qdFswXSxvWzFdKnRbMV1dfX1jb25zdCBsPXRoaXMuX2NyZWF0ZU1lc2hDYW52YXMobyxyPT09YS5TSEFESU5HP251bGw6dGhpcy5fYmFja2dyb3VuZCxlLmNhY2hlZENhbnZhc2VzKTtpZihyIT09YS5TSEFESU5HKXt0LnNldFRyYW5zZm9ybSguLi5lLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiZ0LnRyYW5zZm9ybSguLi50aGlzLm1hdHJpeCl9dC50cmFuc2xhdGUobC5vZmZzZXRYLGwub2Zmc2V0WSk7dC5zY2FsZShsLnNjYWxlWCxsLnNjYWxlWSk7cmV0dXJuIHQuY3JlYXRlUGF0dGVybihsLmNhbnZhcywibm8tcmVwZWF0Iil9fWNsYXNzIER1bW15U2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Z2V0UGF0dGVybigpe3JldHVybiJob3RwaW5rIn19Y29uc3Qgbz0xLGw9MjtjbGFzcyBUaWxpbmdQYXR0ZXJue3N0YXRpYyBnZXQgTUFYX1BBVFRFUk5fU0laRSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJNQVhfUEFUVEVSTl9TSVpFIiwzZTMpfWNvbnN0cnVjdG9yKHQsZSxzLGksbil7dGhpcy5vcGVyYXRvckxpc3Q9dFsyXTt0aGlzLm1hdHJpeD10WzNdfHxbMSwwLDAsMSwwLDBdO3RoaXMuYmJveD10WzRdO3RoaXMueHN0ZXA9dFs1XTt0aGlzLnlzdGVwPXRbNl07dGhpcy5wYWludFR5cGU9dFs3XTt0aGlzLnRpbGluZ1R5cGU9dFs4XTt0aGlzLmNvbG9yPWU7dGhpcy5jdHg9czt0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pO3RoaXMuYmFzZVRyYW5zZm9ybT1ufWNyZWF0ZVBhdHRlcm5DYW52YXModCl7Y29uc3QgZT10aGlzLm9wZXJhdG9yTGlzdCxzPXRoaXMuYmJveCxyPXRoaXMueHN0ZXAsYT10aGlzLnlzdGVwLG89dGhpcy5wYWludFR5cGUsbD10aGlzLnRpbGluZ1R5cGUsYz10aGlzLmNvbG9yLGg9dGhpcy5jYW52YXNHcmFwaGljc0ZhY3Rvcnk7KDAsaS5pbmZvKSgiVGlsaW5nVHlwZTogIitsKTtjb25zdCBkPXNbMF0sdT1zWzFdLHA9c1syXSxnPXNbM10sbT1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLGY9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksYj1bbVswXSpmWzBdLG1bMV0qZlsxXV0sQT10aGlzLmdldFNpemVBbmRTY2FsZShyLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxiWzBdKSxfPXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsdGhpcy5jdHguY2FudmFzLmhlaWdodCxiWzFdKSx2PXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIixBLnNpemUsXy5zaXplLCEwKSx5PXYuY29udGV4dCxTPWguY3JlYXRlQ2FudmFzR3JhcGhpY3MoeSk7Uy5ncm91cExldmVsPXQuZ3JvdXBMZXZlbDt0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLG8sYyk7bGV0IHg9ZCxFPXUsQz1wLFA9ZztpZihkPDApe3g9MDtDKz1NYXRoLmFicyhkKX1pZih1PDApe0U9MDtQKz1NYXRoLmFicyh1KX15LnRyYW5zbGF0ZSgtQS5zY2FsZSp4LC1fLnNjYWxlKkUpO1MudHJhbnNmb3JtKEEuc2NhbGUsMCwwLF8uc2NhbGUsMCwwKTt5LnNhdmUoKTt0aGlzLmNsaXBCYm94KFMseCxFLEMsUCk7Uy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoUy5jdHgpO1MuZXhlY3V0ZU9wZXJhdG9yTGlzdChlKTtTLmVuZERyYXdpbmcoKTtyZXR1cm57Y2FudmFzOnYuY2FudmFzLHNjYWxlWDpBLnNjYWxlLHNjYWxlWTpfLnNjYWxlLG9mZnNldFg6eCxvZmZzZXRZOkV9fWdldFNpemVBbmRTY2FsZSh0LGUscyl7dD1NYXRoLmFicyh0KTtjb25zdCBpPU1hdGgubWF4KFRpbGluZ1BhdHRlcm4uTUFYX1BBVFRFUk5fU0laRSxlKTtsZXQgbj1NYXRoLmNlaWwodCpzKTtuPj1pP249aTpzPW4vdDtyZXR1cm57c2NhbGU6cyxzaXplOm59fWNsaXBCYm94KHQsZSxzLGkscil7Y29uc3QgYT1pLWUsbz1yLXM7dC5jdHgucmVjdChlLHMsYSxvKTt0LmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQuY3R4KSxbZSxzLGkscl0pO3QuY2xpcCgpO3QuZW5kUGF0aCgpfXNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LGUscyl7Y29uc3Qgbj10LmN0eCxyPXQuY3VycmVudDtzd2l0Y2goZSl7Y2FzZSBvOmNvbnN0IHQ9dGhpcy5jdHg7bi5maWxsU3R5bGU9dC5maWxsU3R5bGU7bi5zdHJva2VTdHlsZT10LnN0cm9rZVN0eWxlO3IuZmlsbENvbG9yPXQuZmlsbFN0eWxlO3Iuc3Ryb2tlQ29sb3I9dC5zdHJva2VTdHlsZTticmVhaztjYXNlIGw6Y29uc3QgYT1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtuLmZpbGxTdHlsZT1hO24uc3Ryb2tlU3R5bGU9YTtyLmZpbGxDb2xvcj1hO3Iuc3Ryb2tlQ29sb3I9YTticmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAke2V9YCl9fWdldFBhdHRlcm4odCxlLHMsbil7bGV0IHI9cztpZihuIT09YS5TSEFESU5HKXtyPWkuVXRpbC50cmFuc2Zvcm0ocixlLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiYocj1pLlV0aWwudHJhbnNmb3JtKHIsdGhpcy5tYXRyaXgpKX1jb25zdCBvPXRoaXMuY3JlYXRlUGF0dGVybkNhbnZhcyhlKTtsZXQgbD1uZXcgRE9NTWF0cml4KHIpO2w9bC50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSk7bD1sLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7Y29uc3QgYz10LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsInJlcGVhdCIpO2Muc2V0VHJhbnNmb3JtKGwpO3JldHVybiBjfX1lLlRpbGluZ1BhdHRlcm49VGlsaW5nUGF0dGVybn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5pc05vZGVKUz12b2lkIDA7Y29uc3Qgcz0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7ZS5pc05vZGVKUz1zfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuYXBwbHlNYXNrSW1hZ2VEYXRhPWZ1bmN0aW9uIGFwcGx5TWFza0ltYWdlRGF0YSh7c3JjOnQsc3JjUG9zOmU9MCxkZXN0OnMsZGVzdFBvczpuPTAsd2lkdGg6cixoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOm89ITF9KXtjb25zdCBsPWkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsaF09bz9bMCxsXTpbbCwwXSxkPXI+PjMsdT03JnIscD10Lmxlbmd0aDtzPW5ldyBVaW50MzJBcnJheShzLmJ1ZmZlcik7Zm9yKGxldCBpPTA7aTxhO2krKyl7Zm9yKGNvbnN0IGk9ZStkO2U8aTtlKyspe2NvbnN0IGk9ZTxwP3RbZV06MjU1O3NbbisrXT0xMjgmaT9oOmM7c1tuKytdPTY0Jmk/aDpjO3NbbisrXT0zMiZpP2g6YztzW24rK109MTYmaT9oOmM7c1tuKytdPTgmaT9oOmM7c1tuKytdPTQmaT9oOmM7c1tuKytdPTImaT9oOmM7c1tuKytdPTEmaT9oOmN9aWYoMD09PXUpY29udGludWU7Y29uc3QgaT1lPHA/dFtlKytdOjI1NTtmb3IobGV0IHQ9MDt0PHU7dCsrKXNbbisrXT1pJjE8PDctdD9oOmN9cmV0dXJue3NyY1BvczplLGRlc3RQb3M6bn19O3ZhciBpPXMoMSl9LCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2UuR2xvYmFsV29ya2VyT3B0aW9ucz1zO3Mud29ya2VyUG9ydD12b2lkIDA9PT1zLndvcmtlclBvcnQ/bnVsbDpzLndvcmtlclBvcnQ7cy53b3JrZXJTcmM9dm9pZCAwPT09cy53b3JrZXJTcmM/IiI6cy53b3JrZXJTcmN9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIGk9cygxKTtjb25zdCBuPTEscj0yLGE9MSxvPTIsbD0zLGM9NCxoPTUsZD02LHU9NyxwPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbih0KXt0IGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCgwLGkudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgaS5BYm9ydEV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgaS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLlVua25vd25FcnJvckV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQudG9TdHJpbmcoKSl9fWUuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuc291cmNlTmFtZT10O3RoaXMudGFyZ2V0TmFtZT1lO3RoaXMuY29tT2JqPXM7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPXQ9Pntjb25zdCBlPXQuZGF0YTtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQscz10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFzKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1uKXMucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PXIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtzLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgdD10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QoaShlLmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnQsdGFyZ2V0TmFtZTphLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTppfSl9KSwoZnVuY3Rpb24oaSl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0LHRhcmdldE5hbWU6YSxjYWxsYmFjazpyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKGkpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsoZSk6aShlLmRhdGEpfTtzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbih0LGUpe2NvbnN0IHM9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKHNbdF0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke3R9ImApO3NbdF09ZX1zZW5kKHQsZSxzKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOnQsZGF0YTplfSxzKX1zZW5kV2l0aFByb21pc2UodCxlLHMpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKysscj0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6bixkYXRhOmV9LHMpfWNhdGNoKHQpe3IucmVqZWN0KHQpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0odCxlLHMsbil7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsbD10aGlzLnRhcmdldE5hbWUsYz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpzPT57Y29uc3QgYT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6cyxzdGFydENhbGw6YSxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxhY3Rpb246dCxzdHJlYW1JZDpyLGRhdGE6ZSxkZXNpcmVkU2l6ZTpzLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gYS5wcm9taXNlfSxwdWxsOnQ9Pntjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5wdWxsQ2FsbD1lO2MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmwsc3RyZWFtOmQsc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplfSk7cmV0dXJuIGUucHJvbWlzZX0sY2FuY2VsOnQ9PnsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgZT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD1lO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06YSxzdHJlYW1JZDpyLHJlYXNvbjp3cmFwUmVhc29uKHQpfSk7cmV0dXJuIGUucHJvbWlzZX19LHMpfV9jcmVhdGVTdHJlYW1TaW5rKHQpe2NvbnN0IGU9dC5zdHJlYW1JZCxzPXRoaXMuc291cmNlTmFtZSxuPXQuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLGE9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl0sZD17ZW5xdWV1ZSh0LGE9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBsPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09YTtpZihsPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpjLHN0cmVhbUlkOmUsY2h1bms6dH0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06bCxzdHJlYW1JZDplfSk7ZGVsZXRlIGEuc3RyZWFtU2lua3NbZV19fSxlcnJvcih0KXsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX19LHNpbmtDYXBhYmlsaXR5OigwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O2Quc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2QucmVhZHk9ZC5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbZV09ZDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShvKHQuZGF0YSxkKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpwLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnAsc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KXtjb25zdCBlPXQuc3RyZWFtSWQscz10aGlzLnNvdXJjZU5hbWUsbj10LnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbZV0sbT10aGlzLnN0cmVhbVNpbmtzW2VdO3N3aXRjaCh0LnN0cmVhbSl7Y2FzZSBwOnQuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIHU6dC5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIGQ6aWYoIW0pe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnUsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSk7YnJlYWt9bS5kZXNpcmVkU2l6ZTw9MCYmdC5kZXNpcmVkU2l6ZT4wJiZtLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTttLmRlc2lyZWRTaXplPXQuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobS5vblB1bGwmJm0ub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTp1LHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX0pKTticmVhaztjYXNlIGM6KDAsaS5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKHQuY2h1bmspO2JyZWFrO2Nhc2UgbDooMCxpLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgaDooMCxpLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbih0LnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyxlKTticmVhaztjYXNlIG86dC5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgYTppZighbSlicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShtLm9uQ2FuY2VsJiZtLm9uQ2FuY2VsKHdyYXBSZWFzb24odC5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpO20uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTttLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW2VdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKHQsZSl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFt0LnN0YXJ0Q2FsbCYmdC5zdGFydENhbGwucHJvbWlzZSx0LnB1bGxDYWxsJiZ0LnB1bGxDYWxsLnByb21pc2UsdC5jYW5jZWxDYWxsJiZ0LmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2VdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1ldGFkYXRhPXZvaWQgMDt2YXIgaT1zKDEpO2UuTWV0YWRhdGE9Y2xhc3MgTWV0YWRhdGF7I2l0OyNudDtjb25zdHJ1Y3Rvcih7cGFyc2VkRGF0YTp0LHJhd0RhdGE6ZX0pe3RoaXMuI2l0PXQ7dGhpcy4jbnQ9ZX1nZXRSYXcoKXtyZXR1cm4gdGhpcy4jbnR9Z2V0KHQpe3JldHVybiB0aGlzLiNpdC5nZXQodCk/P251bGx9Z2V0QWxsKCl7cmV0dXJuKDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLiNpdCl9aGFzKHQpe3JldHVybiB0aGlzLiNpdC5oYXModCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk9wdGlvbmFsQ29udGVudENvbmZpZz12b2lkIDA7dmFyIGk9cygxKSxuPXMoOCk7Y29uc3Qgcj1TeW1ib2woIklOVEVSTkFMIik7Y2xhc3MgT3B0aW9uYWxDb250ZW50R3JvdXB7I3J0PSEwO2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uYW1lPXQ7dGhpcy5pbnRlbnQ9ZX1nZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNydH1fc2V0VmlzaWJsZSh0LGUpe3QhPT1yJiYoMCxpLnVucmVhY2hhYmxlKSgiSW50ZXJuYWwgbWV0aG9kIGBfc2V0VmlzaWJsZWAgY2FsbGVkLiIpO3RoaXMuI3J0PWV9fWUuT3B0aW9uYWxDb250ZW50Q29uZmlnPWNsYXNzIE9wdGlvbmFsQ29udGVudENvbmZpZ3sjYXQ9bnVsbDsjb3Q9bmV3IE1hcDsjbHQ9bnVsbDsjY3Q9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hbWU9bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDtpZihudWxsIT09dCl7dGhpcy5uYW1lPXQubmFtZTt0aGlzLmNyZWF0b3I9dC5jcmVhdG9yO3RoaXMuI2N0PXQub3JkZXI7Zm9yKGNvbnN0IGUgb2YgdC5ncm91cHMpdGhpcy4jb3Quc2V0KGUuaWQsbmV3IE9wdGlvbmFsQ29udGVudEdyb3VwKGUubmFtZSxlLmludGVudCkpO2lmKCJPRkYiPT09dC5iYXNlU3RhdGUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jb3QudmFsdWVzKCkpdC5fc2V0VmlzaWJsZShyLCExKTtmb3IoY29uc3QgZSBvZiB0Lm9uKXRoaXMuI290LmdldChlKS5fc2V0VmlzaWJsZShyLCEwKTtmb3IoY29uc3QgZSBvZiB0Lm9mZil0aGlzLiNvdC5nZXQoZSkuX3NldFZpc2libGUociwhMSk7dGhpcy4jbHQ9dGhpcy5nZXRIYXNoKCl9fSNodCh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKGU8MilyZXR1cm4hMDtjb25zdCBzPXRbMF07Zm9yKGxldCBuPTE7bjxlO24rKyl7Y29uc3QgZT10W25dO2xldCByO2lmKEFycmF5LmlzQXJyYXkoZSkpcj10aGlzLiNodChlKTtlbHNle2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9cj10aGlzLiNvdC5nZXQoZSkudmlzaWJsZX1zd2l0Y2gocyl7Y2FzZSJBbmQiOmlmKCFyKXJldHVybiExO2JyZWFrO2Nhc2UiT3IiOmlmKHIpcmV0dXJuITA7YnJlYWs7Y2FzZSJOb3QiOnJldHVybiFyO2RlZmF1bHQ6cmV0dXJuITB9fXJldHVybiJBbmQiPT09c31pc1Zpc2libGUodCl7aWYoMD09PXRoaXMuI290LnNpemUpcmV0dXJuITA7aWYoIXQpeygwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGRlZmluZWQuIik7cmV0dXJuITB9aWYoIk9DRyI9PT10LnR5cGUpe2lmKCF0aGlzLiNvdC5oYXModC5pZCkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke3QuaWR9YCk7cmV0dXJuITB9cmV0dXJuIHRoaXMuI290LmdldCh0LmlkKS52aXNpYmxlfWlmKCJPQ01EIj09PXQudHlwZSl7aWYodC5leHByZXNzaW9uKXJldHVybiB0aGlzLiNodCh0LmV4cHJlc3Npb24pO2lmKCF0LnBvbGljeXx8IkFueU9uIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZih0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMH1yZXR1cm4hMX1pZigiQWxsT24iPT09dC5wb2xpY3kpe2Zvcihjb25zdCBlIG9mIHQuaWRzKXtpZighdGhpcy4jb3QuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfWlmKCF0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMX1yZXR1cm4hMH1pZigiQW55T2ZmIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZighdGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITB9cmV0dXJuITF9aWYoIkFsbE9mZiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYodGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITF9cmV0dXJuITB9KDAsaS53YXJuKShgVW5rbm93biBvcHRpb25hbCBjb250ZW50IHBvbGljeSAke3QucG9saWN5fS5gKTtyZXR1cm4hMH0oMCxpLndhcm4pKGBVbmtub3duIGdyb3VwIHR5cGUgJHt0LnR5cGV9LmApO3JldHVybiEwfXNldFZpc2liaWxpdHkodCxlPSEwKXtpZih0aGlzLiNvdC5oYXModCkpe3RoaXMuI290LmdldCh0KS5fc2V0VmlzaWJsZShyLCEhZSk7dGhpcy4jYXQ9bnVsbH1lbHNlKDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7dH1gKX1nZXQgaGFzSW5pdGlhbFZpc2liaWxpdHkoKXtyZXR1cm4gdGhpcy5nZXRIYXNoKCk9PT10aGlzLiNsdH1nZXRPcmRlcigpe3JldHVybiB0aGlzLiNvdC5zaXplP3RoaXMuI2N0P3RoaXMuI2N0LnNsaWNlKCk6Wy4uLnRoaXMuI290LmtleXMoKV06bnVsbH1nZXRHcm91cHMoKXtyZXR1cm4gdGhpcy4jb3Quc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jb3QpOm51bGx9Z2V0R3JvdXAodCl7cmV0dXJuIHRoaXMuI290LmdldCh0KXx8bnVsbH1nZXRIYXNoKCl7aWYobnVsbCE9PXRoaXMuI2F0KXJldHVybiB0aGlzLiNhdDtjb25zdCB0PW5ldyBuLk11cm11ckhhc2gzXzY0O2Zvcihjb25zdFtlLHNdb2YgdGhpcy4jb3QpdC51cGRhdGUoYCR7ZX06JHtzLnZpc2libGV9YCk7cmV0dXJuIHRoaXMuI2F0PXQuaGV4ZGlnZXN0KCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkRhdGFUcmFuc3BvcnRTdHJlYW09dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFte2NvbnN0cnVjdG9yKHQsZSl7KDAsaS5hc3NlcnQpKGUsJ1BERkRhdGFUcmFuc3BvcnRTdHJlYW0gLSBtaXNzaW5nIHJlcXVpcmVkICJwZGZEYXRhUmFuZ2VUcmFuc3BvcnQiIGFyZ3VtZW50LicpO3RoaXMuX3F1ZXVlZENodW5rcz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmU9dC5wcm9ncmVzc2l2ZURvbmV8fCExO3RoaXMuX2NvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXQuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV8fG51bGw7Y29uc3Qgcz10LmluaXRpYWxEYXRhO2lmKHM/Lmxlbmd0aD4wKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KHMpLmJ1ZmZlcjt0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KX10aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hdC5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IXQuZGlzYWJsZVJhbmdlO3RoaXMuX2NvbnRlbnRMZW5ndGg9dC5sZW5ndGg7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlYWRlcnM9W107dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFJhbmdlTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25SZWNlaXZlRGF0YSh7YmVnaW46dCxjaHVuazplfSl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25Qcm9ncmVzcyh7bG9hZGVkOnQsdG90YWw6ZX0pfSkpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcigodD0+e3RoaXMuX29uUmVjZWl2ZURhdGEoe2NodW5rOnR9KX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIoKCgpPT57dGhpcy5fb25Qcm9ncmVzc2l2ZURvbmUoKX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQudHJhbnNwb3J0UmVhZHkoKX1fb25SZWNlaXZlRGF0YSh0KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQuY2h1bmspLmJ1ZmZlcjtpZih2b2lkIDA9PT10LmJlZ2luKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKGUpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKGUpO2Vsc2V7Y29uc3Qgcz10aGlzLl9yYW5nZVJlYWRlcnMuc29tZSgoZnVuY3Rpb24ocyl7aWYocy5fYmVnaW4hPT10LmJlZ2luKXJldHVybiExO3MuX2VucXVldWUoZSk7cmV0dXJuITB9KSk7KDAsaS5hc3NlcnQpKHMsIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuIil9fWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfV9vblByb2dyZXNzKHQpe3ZvaWQgMD09PXQudG90YWw/dGhpcy5fcmFuZ2VSZWFkZXJzWzBdPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZH0pOnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9X29uUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LnByb2dyZXNzaXZlRG9uZSgpO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT0hMH1fcmVtb3ZlUmFuZ2VSZWFkZXIodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlYWRlcnMuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9yYW5nZVJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkRhdGFUcmFuc3BvcnRTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rczt0aGlzLl9xdWV1ZWRDaHVua3M9bnVsbDtyZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcz1uZXcgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpO3RoaXMuX3JhbmdlUmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX07Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMuX3N0cmVhbT10O3RoaXMuX2RvbmU9c3x8ITE7dGhpcy5fZmlsZW5hbWU9KDAsbi5pc1BkZkZpbGUpKGkpP2k6bnVsbDt0aGlzLl9xdWV1ZWRDaHVua3M9ZXx8W107dGhpcy5fbG9hZGVkPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcXVldWVkQ2h1bmtzKXRoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMuX3JlcXVlc3RzPVtdO3RoaXMuX2hlYWRlcnNSZWFkeT1Qcm9taXNlLnJlc29sdmUoKTt0Ll9mdWxsUmVxdWVzdFJlYWRlcj10aGlzO3RoaXMub25Qcm9ncmVzcz1udWxsfV9lbnF1ZXVlKHQpe2lmKCF0aGlzLl9kb25lKXtpZih0aGlzLl9yZXF1ZXN0cy5sZW5ndGg+MCl7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KX1lbHNlIHRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpO3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RofX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1JhbmdlU3VwcG9ydGVkfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9zdHJlYW0uX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5fY29udGVudExlbmd0aH1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfXByb2dyZXNzaXZlRG9uZSgpe3RoaXMuX2RvbmV8fCh0aGlzLl9kb25lPSEwKX19Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXt0aGlzLl9zdHJlYW09dDt0aGlzLl9iZWdpbj1lO3RoaXMuX2VuZD1zO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fZG9uZT0hMTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1fZW5xdWV1ZSh0KXtpZighdGhpcy5fZG9uZSl7aWYoMD09PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCl0aGlzLl9xdWV1ZWRDaHVuaz10O2Vsc2V7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9dGhpcy5fZG9uZT0hMDt0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmspe2NvbnN0IHQ9dGhpcy5fcXVldWVkQ2h1bms7dGhpcy5fcXVldWVkQ2h1bms9bnVsbDtyZXR1cm57dmFsdWU6dCxkb25lOiExfX1pZih0aGlzLl9kb25lKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07Y29uc3QgdD0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fc3RyZWFtLl9yZW1vdmVSYW5nZVJlYWRlcih0aGlzKX19fSwodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlhmYVRleHQ9dm9pZCAwO2NsYXNzIFhmYVRleHR7c3RhdGljIHRleHRDb250ZW50KHQpe2NvbnN0IGU9W10scz17aXRlbXM6ZSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX07IWZ1bmN0aW9uIHdhbGsodCl7aWYoIXQpcmV0dXJuO2xldCBzPW51bGw7Y29uc3QgaT10Lm5hbWU7aWYoIiN0ZXh0Ij09PWkpcz10LnZhbHVlO2Vsc2V7aWYoIVhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGkpKXJldHVybjt0Py5hdHRyaWJ1dGVzPy50ZXh0Q29udGVudD9zPXQuYXR0cmlidXRlcy50ZXh0Q29udGVudDp0LnZhbHVlJiYocz10LnZhbHVlKX1udWxsIT09cyYmZS5wdXNoKHtzdHI6c30pO2lmKHQuY2hpbGRyZW4pZm9yKGNvbnN0IGUgb2YgdC5jaGlsZHJlbil3YWxrKGUpfSh0KTtyZXR1cm4gc31zdGF0aWMgc2hvdWxkQnVpbGRUZXh0KHQpe3JldHVybiEoInRleHRhcmVhIj09PXR8fCJpbnB1dCI9PT10fHwib3B0aW9uIj09PXR8fCJzZWxlY3QiPT09dCl9fWUuWGZhVGV4dD1YZmFUZXh0fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuTm9kZUNhbnZhc0ZhY3Rvcnk9ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO3ZhciBpPXMoNyk7Y29uc3QgZmV0Y2hEYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUscyk9PntyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKCh0LGkpPT57IXQmJmk/ZShuZXcgVWludDhBcnJheShpKSk6cyhuZXcgRXJyb3IodCkpfSkpfSkpfTtjbGFzcyBOb2RlQ2FudmFzRmFjdG9yeSBleHRlbmRzIGkuQmFzZUNhbnZhc0ZhY3Rvcnl7X2NyZWF0ZUNhbnZhcyh0LGUpe3JldHVybiByZXF1aXJlKCJjYW52YXMiKS5jcmVhdGVDYW52YXModCxlKX19ZS5Ob2RlQ2FudmFzRmFjdG9yeT1Ob2RlQ2FudmFzRmFjdG9yeTtjbGFzcyBOb2RlQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0KS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLk5vZGVDTWFwUmVhZGVyRmFjdG9yeT1Ob2RlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQpfX1lLk5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpLHI9cygyMiksYT1zKDIzKTtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yTGF5ZXJ7I2R0OyN1dD0hMTsjcHQ9dGhpcy5wb2ludGVydXAuYmluZCh0aGlzKTsjZ3Q9dGhpcy5wb2ludGVyZG93bi5iaW5kKHRoaXMpOyNtdD1uZXcgTWFwOyNmdD0hMTsjYnQ9ITE7I0F0O3N0YXRpYyBfaW5pdGlhbGl6ZWQ9ITE7Y29uc3RydWN0b3IodCl7aWYoIUFubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQpe0Fubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQ9ITA7ci5GcmVlVGV4dEVkaXRvci5pbml0aWFsaXplKHQubDEwbik7YS5JbmtFZGl0b3IuaW5pdGlhbGl6ZSh0LmwxMG4pfXQudWlNYW5hZ2VyLnJlZ2lzdGVyRWRpdG9yVHlwZXMoW3IuRnJlZVRleHRFZGl0b3IsYS5JbmtFZGl0b3JdKTt0aGlzLiNBdD10LnVpTWFuYWdlcjt0aGlzLmFubm90YXRpb25TdG9yYWdlPXQuYW5ub3RhdGlvblN0b3JhZ2U7dGhpcy5wYWdlSW5kZXg9dC5wYWdlSW5kZXg7dGhpcy5kaXY9dC5kaXY7dGhpcy4jZHQ9dC5hY2Nlc3NpYmlsaXR5TWFuYWdlcjt0aGlzLiNBdC5hZGRMYXllcih0aGlzKX11cGRhdGVUb29sYmFyKHQpe3RoaXMuI0F0LnVwZGF0ZVRvb2xiYXIodCl9dXBkYXRlTW9kZSh0PXRoaXMuI0F0LmdldE1vZGUoKSl7dGhpcy4jX3QoKTtpZih0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspe3RoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpO3RoaXMuZGlzYWJsZUNsaWNrKCl9ZWxzZSB0aGlzLmVuYWJsZUNsaWNrKCk7dGhpcy4jQXQudW5zZWxlY3RBbGwoKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJmcmVlVGV4dEVkaXRpbmciLHQ9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJpbmtFZGl0aW5nIix0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspfWFkZElua0VkaXRvcklmTmVlZGVkKHQpe2lmKCF0JiZ0aGlzLiNBdC5nZXRNb2RlKCkhPT1uLkFubm90YXRpb25FZGl0b3JUeXBlLklOSylyZXR1cm47aWYoIXQpZm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpaWYodC5pc0VtcHR5KCkpe3Quc2V0SW5CYWNrZ3JvdW5kKCk7cmV0dXJufXRoaXMuI3Z0KHtvZmZzZXRYOjAsb2Zmc2V0WTowfSkuc2V0SW5CYWNrZ3JvdW5kKCl9c2V0RWRpdGluZ1N0YXRlKHQpe3RoaXMuI0F0LnNldEVkaXRpbmdTdGF0ZSh0KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNBdC5hZGRDb21tYW5kcyh0KX1lbmFibGUoKXt0aGlzLmRpdi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIjtmb3IoY29uc3QgdCBvZiB0aGlzLiNtdC52YWx1ZXMoKSl0LmVuYWJsZUVkaXRpbmcoKX1kaXNhYmxlKCl7dGhpcy5kaXYuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSI7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5kaXNhYmxlRWRpdGluZygpfXNldEFjdGl2ZUVkaXRvcih0KXt0aGlzLiNBdC5nZXRBY3RpdmUoKSE9PXQmJnRoaXMuI0F0LnNldEFjdGl2ZUVkaXRvcih0KX1lbmFibGVDbGljaygpe3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNndCk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNwdCl9ZGlzYWJsZUNsaWNrKCl7dGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI2d0KTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuI3B0KX1hdHRhY2godCl7dGhpcy4jbXQuc2V0KHQuaWQsdCl9ZGV0YWNoKHQpe3RoaXMuI210LmRlbGV0ZSh0LmlkKTt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdil9cmVtb3ZlKHQpe3RoaXMuI0F0LnJlbW92ZUVkaXRvcih0KTt0aGlzLmRldGFjaCh0KTt0aGlzLmFubm90YXRpb25TdG9yYWdlLnJlbW92ZSh0LmlkKTt0LmRpdi5zdHlsZS5kaXNwbGF5PSJub25lIjtzZXRUaW1lb3V0KCgoKT0+e3QuZGl2LnN0eWxlLmRpc3BsYXk9IiI7dC5kaXYucmVtb3ZlKCk7dC5pc0F0dGFjaGVkVG9ET009ITE7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkmJnRoaXMuI0F0LmZvY3VzTWFpbkNvbnRhaW5lcigpfSksMCk7dGhpcy4jYnR8fHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpfSN5dCh0KXtpZih0LnBhcmVudCE9PXRoaXMpe3RoaXMuYXR0YWNoKHQpO3QucGFnZUluZGV4PXRoaXMucGFnZUluZGV4O3QucGFyZW50Py5kZXRhY2godCk7dC5wYXJlbnQ9dGhpcztpZih0LmRpdiYmdC5pc0F0dGFjaGVkVG9ET00pe3QuZGl2LnJlbW92ZSgpO3RoaXMuZGl2LmFwcGVuZCh0LmRpdil9fX1hZGQodCl7dGhpcy4jeXQodCk7dGhpcy4jQXQuYWRkRWRpdG9yKHQpO3RoaXMuYXR0YWNoKHQpO2lmKCF0LmlzQXR0YWNoZWRUb0RPTSl7Y29uc3QgZT10LnJlbmRlcigpO3RoaXMuZGl2LmFwcGVuZChlKTt0LmlzQXR0YWNoZWRUb0RPTT0hMH10aGlzLm1vdmVFZGl0b3JJbkRPTSh0KTt0Lm9uY2VBZGRlZCgpO3RoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KX1tb3ZlRWRpdG9ySW5ET00odCl7dGhpcy4jZHQ/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX1hZGRUb0Fubm90YXRpb25TdG9yYWdlKHQpe3QuaXNFbXB0eSgpfHx0aGlzLmFubm90YXRpb25TdG9yYWdlLmhhcyh0LmlkKXx8dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmlkLHQpfWFkZE9yUmVidWlsZCh0KXt0Lm5lZWRzVG9CZVJlYnVpbHQoKT90LnJlYnVpbGQoKTp0aGlzLmFkZCh0KX1hZGRBTmV3RWRpdG9yKHQpe3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOigpPT57dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITB9KX1hZGRVbmRvYWJsZUVkaXRvcih0KXt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLmFkZE9yUmVidWlsZCh0KX0sdW5kbzooKT0+e3QucmVtb3ZlKCl9LG11c3RFeGVjOiExfSl9Z2V0TmV4dElkKCl7cmV0dXJuIHRoaXMuI0F0LmdldElkKCl9I1N0KHQpe3N3aXRjaCh0aGlzLiNBdC5nZXRNb2RlKCkpe2Nhc2Ugbi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDpyZXR1cm4gbmV3IHIuRnJlZVRleHRFZGl0b3IodCk7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpyZXR1cm4gbmV3IGEuSW5rRWRpdG9yKHQpfXJldHVybiBudWxsfWRlc2VyaWFsaXplKHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlKXtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIHIuRnJlZVRleHRFZGl0b3IuZGVzZXJpYWxpemUodCx0aGlzKTtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBhLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMpfXJldHVybiBudWxsfSN2dCh0KXtjb25zdCBlPXRoaXMuZ2V0TmV4dElkKCkscz10aGlzLiNTdCh7cGFyZW50OnRoaXMsaWQ6ZSx4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0pO3MmJnRoaXMuYWRkKHMpO3JldHVybiBzfXNldFNlbGVjdGVkKHQpe3RoaXMuI0F0LnNldFNlbGVjdGVkKHQpfXRvZ2dsZVNlbGVjdGVkKHQpe3RoaXMuI0F0LnRvZ2dsZVNlbGVjdGVkKHQpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuI0F0LmlzU2VsZWN0ZWQodCl9dW5zZWxlY3QodCl7dGhpcy4jQXQudW5zZWxlY3QodCl9cG9pbnRlcnVwKHQpe2NvbnN0IGU9aS5LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7aWYoISgwIT09dC5idXR0b258fHQuY3RybEtleSYmZSkmJnQudGFyZ2V0PT09dGhpcy5kaXYmJnRoaXMuI2Z0KXt0aGlzLiNmdD0hMTt0aGlzLiN1dD90aGlzLiN2dCh0KTp0aGlzLiN1dD0hMH19cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSlyZXR1cm47aWYodC50YXJnZXQhPT10aGlzLmRpdilyZXR1cm47dGhpcy4jZnQ9ITA7Y29uc3Qgcz10aGlzLiNBdC5nZXRBY3RpdmUoKTt0aGlzLiN1dD0hc3x8cy5pc0VtcHR5KCl9ZHJvcCh0KXtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKSxzPXRoaXMuI0F0LmdldEVkaXRvcihlKTtpZighcylyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO3QuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiO3RoaXMuI3l0KHMpO2NvbnN0IGk9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LmNsaWVudFgtaS54LHI9dC5jbGllbnRZLWkueTtzLnRyYW5zbGF0ZShuLXMuc3RhcnRYLHItcy5zdGFydFkpO3RoaXMubW92ZUVkaXRvckluRE9NKHMpO3MuZGl2LmZvY3VzKCl9ZHJhZ292ZXIodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWRlc3Ryb3koKXt0aGlzLiNBdC5nZXRBY3RpdmUoKT8ucGFyZW50PT09dGhpcyYmdGhpcy4jQXQuc2V0QWN0aXZlRWRpdG9yKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuI210LnZhbHVlcygpKXt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdik7dC5pc0F0dGFjaGVkVG9ET009ITE7dC5kaXYucmVtb3ZlKCk7dC5wYXJlbnQ9bnVsbH10aGlzLmRpdj1udWxsO3RoaXMuI210LmNsZWFyKCk7dGhpcy4jQXQucmVtb3ZlTGF5ZXIodGhpcyl9I190KCl7dGhpcy4jYnQ9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5pc0VtcHR5KCkmJnQucmVtb3ZlKCk7dGhpcy4jYnQ9ITF9cmVuZGVyKHQpe3RoaXMudmlld3BvcnQ9dC52aWV3cG9ydDsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnb3ZlciIsImRyb3AiXSk7dGhpcy5zZXREaW1lbnNpb25zKCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jQXQuZ2V0RWRpdG9ycyh0aGlzLnBhZ2VJbmRleCkpdGhpcy5hZGQodCk7dGhpcy51cGRhdGVNb2RlKCl9dXBkYXRlKHQpe3RoaXMuI0F0LmNvbW1pdE9yUmVtb3ZlKCk7dGhpcy52aWV3cG9ydD10LnZpZXdwb3J0O3RoaXMuc2V0RGltZW5zaW9ucygpO3RoaXMudXBkYXRlTW9kZSgpfWdldCBzY2FsZUZhY3Rvcigpe3JldHVybiB0aGlzLnZpZXdwb3J0LnNjYWxlfWdldCBwYWdlRGltZW5zaW9ucygpe2NvbnN0W3QsZSxzLGldPXRoaXMudmlld3BvcnQudmlld0JveDtyZXR1cm5bcy10LGktZV19Z2V0IHZpZXdwb3J0QmFzZURpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQ7cmV0dXJuIHMlMTgwPT0wP1t0LGVdOltlLHRdfXNldERpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQsaT1zJTE4MCE9MCxuPU1hdGguZmxvb3IodCkrInB4IixyPU1hdGguZmxvb3IoZSkrInB4Ijt0aGlzLmRpdi5zdHlsZS53aWR0aD1pP3I6bjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9aT9uOnI7dGhpcy5kaXYuc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLHMpfX1lLkFubm90YXRpb25FZGl0b3JMYXllcj1Bbm5vdGF0aW9uRWRpdG9yTGF5ZXJ9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5GcmVlVGV4dEVkaXRvcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNSkscj1zKDQpO2NsYXNzIEZyZWVUZXh0RWRpdG9yIGV4dGVuZHMgci5Bbm5vdGF0aW9uRWRpdG9yeyN4dD10aGlzLmVkaXRvckRpdkJsdXIuYmluZCh0aGlzKTsjRXQ9dGhpcy5lZGl0b3JEaXZGb2N1cy5iaW5kKHRoaXMpOyNDdD10aGlzLmVkaXRvckRpdklucHV0LmJpbmQodGhpcyk7I1B0PXRoaXMuZWRpdG9yRGl2S2V5ZG93bi5iaW5kKHRoaXMpOyNUdDsjd3Q9IiI7I2t0PWAke3RoaXMuaWR9LWVkaXRvcmA7I0Z0PSExOyNNdDtzdGF0aWMgX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQ9IiI7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX2ludGVybmFsUGFkZGluZz0wO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0Rm9udFNpemU9MTA7c3RhdGljIF9rZXlib2FyZE1hbmFnZXI9bmV3IG4uS2V5Ym9hcmRNYW5hZ2VyKFtbWyJjdHJsK0VudGVyIiwibWFjK21ldGErRW50ZXIiLCJFc2NhcGUiLCJtYWMrRXNjYXBlIl0sRnJlZVRleHRFZGl0b3IucHJvdG90eXBlLmNvbW1pdE9yUmVtb3ZlXV0pO3N0YXRpYyBfdHlwZT0iZnJlZXRleHQiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6ImZyZWVUZXh0RWRpdG9yIn0pO3RoaXMuI1R0PXQuY29sb3J8fEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3J8fHIuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcjt0aGlzLiNNdD10LmZvbnRTaXplfHxGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplfXN0YXRpYyBpbml0aWFsaXplKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGU9PltlLHQuZ2V0KGUpXSkpKTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLl9pbnRlcm5hbFBhZGRpbmc9cGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoIi0tZnJlZXRleHQtcGFkZGluZyIpKX1zdGF0aWMgdXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3I9ZX19dXBkYXRlUGFyYW1zKHQsZSl7c3dpdGNoKHQpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOnRoaXMuI1J0KGUpO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjp0aGlzLiNEdChlKX19c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLHRoaXMuI010XSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUix0aGlzLiNUdF1dfSNSdCh0KXtjb25zdCBzZXRGb250c2l6ZT10PT57dGhpcy5lZGl0b3JEaXYuc3R5bGUuZm9udFNpemU9YGNhbGMoJHt0fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3RoaXMudHJhbnNsYXRlKDAsLSh0LXRoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik7dGhpcy4jTXQ9dDt0aGlzLiNJdCgpfSxlPXRoaXMuI010O3RoaXMucGFyZW50LmFkZENvbW1hbmRzKHtjbWQ6KCk9PntzZXRGb250c2l6ZSh0KX0sdW5kbzooKT0+e3NldEZvbnRzaXplKGUpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy4jVHQ7dGhpcy5wYXJlbnQuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuI1R0PXQ7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9dH0sdW5kbzooKT0+e3RoaXMuI1R0PWU7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9ZX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SLG92ZXJ3cml0ZUlmU2FtZVR5cGU6ITAsa2VlcFVuZG86ITB9KX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bLUZyZWVUZXh0RWRpdG9yLl9pbnRlcm5hbFBhZGRpbmcqdGhpcy5wYXJlbnQuc2NhbGVGYWN0b3IsLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nK3RoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcl19cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtudWxsIT09dGhpcy5kaXYmJih0aGlzLmlzQXR0YWNoZWRUb0RPTXx8dGhpcy5wYXJlbnQuYWRkKHRoaXMpKX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLmlzSW5FZGl0TW9kZSgpKXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITEpO3RoaXMucGFyZW50LnVwZGF0ZVRvb2xiYXIoaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCk7c3VwZXIuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LnJlbW92ZSgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMDt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KX19ZGlzYWJsZUVkaXRNb2RlKCl7aWYodGhpcy5pc0luRWRpdE1vZGUoKSl7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTtzdXBlci5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LmFkZCgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdGhpcy4ja3QpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KTt0aGlzLmRpdi5mb2N1cygpO3RoaXMuaXNFZGl0aW5nPSExO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEVkaXRpbmciKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3QudGFyZ2V0IT09dGhpcy5lZGl0b3JEaXYmJnRoaXMuZWRpdG9yRGl2LmZvY3VzKCl9b25jZUFkZGVkKCl7aWYoIXRoaXMud2lkdGgpe3RoaXMuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLmVkaXRvckRpdi5mb2N1cygpfX1pc0VtcHR5KCl7cmV0dXJuIXRoaXMuZWRpdG9yRGl2fHwiIj09PXRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dC50cmltKCl9cmVtb3ZlKCl7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIik7c3VwZXIucmVtb3ZlKCl9I090KCl7Y29uc3QgdD10aGlzLmVkaXRvckRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQ7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCB0PXMuZmlyc3RDaGlsZDsiI3RleHQiPT09dD8ubm9kZU5hbWU/ZS5wdXNoKHQuZGF0YSk6ZS5wdXNoKCIiKX1yZXR1cm4gZS5qb2luKCJcbiIpfSNJdCgpe2NvbnN0W3QsZV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxzPXRoaXMuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMud2lkdGg9cy53aWR0aC90O3RoaXMuaGVpZ2h0PXMuaGVpZ2h0L2V9Y29tbWl0KCl7c3VwZXIuY29tbWl0KCk7aWYoIXRoaXMuI0Z0KXt0aGlzLiNGdD0hMDt0aGlzLnBhcmVudC5hZGRVbmRvYWJsZUVkaXRvcih0aGlzKX10aGlzLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuI3d0PXRoaXMuI090KCkudHJpbUVuZCgpO3RoaXMuI0l0KCl9c2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKXtyZXR1cm4gdGhpcy5pc0luRWRpdE1vZGUoKX1kYmxjbGljayh0KXt0aGlzLmVuYWJsZUVkaXRNb2RlKCk7dGhpcy5lZGl0b3JEaXYuZm9jdXMoKX1rZXlkb3duKHQpe2lmKHQudGFyZ2V0PT09dGhpcy5kaXYmJiJFbnRlciI9PT10LmtleSl7dGhpcy5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZWRpdG9yRGl2LmZvY3VzKCl9fWVkaXRvckRpdktleWRvd24odCl7RnJlZVRleHRFZGl0b3IuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9ZWRpdG9yRGl2Rm9jdXModCl7dGhpcy5pc0VkaXRpbmc9ITB9ZWRpdG9yRGl2Qmx1cih0KXt0aGlzLmlzRWRpdGluZz0hMX1lZGl0b3JEaXZJbnB1dCh0KXt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LnRvZ2dsZSgiZnJlZVRleHRFZGl0aW5nIix0aGlzLmlzRW1wdHkoKSl9ZGlzYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7dGhpcy5lZGl0b3JEaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIpfWVuYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZXh0Ym94Iik7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIsITApfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO3RoaXMuZWRpdG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuZWRpdG9yRGl2LmNsYXNzTmFtZT0iaW50ZXJuYWwiO3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuI2t0KTt0aGlzLmVuYWJsZUVkaXRpbmcoKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5lZGl0b3JEaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIpLnRoZW4oKHQ9PnRoaXMuZWRpdG9yRGl2Py5zZXRBdHRyaWJ1dGUoImRlZmF1bHQtY29udGVudCIsdCkpKTt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITA7Y29uc3R7c3R5bGU6c309dGhpcy5lZGl0b3JEaXY7cy5mb250U2l6ZT1gY2FsYygke3RoaXMuI010fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3MuY29sb3I9dGhpcy4jVHQ7dGhpcy5kaXYuYXBwZW5kKHRoaXMuZWRpdG9yRGl2KTt0aGlzLm92ZXJsYXlEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5vdmVybGF5RGl2LmNsYXNzTGlzdC5hZGQoIm92ZXJsYXkiLCJlbmFibGVkIik7dGhpcy5kaXYuYXBwZW5kKHRoaXMub3ZlcmxheURpdik7KDAsbi5iaW5kRXZlbnRzKSh0aGlzLHRoaXMuZGl2LFsiZGJsY2xpY2siLCJrZXlkb3duIl0pO2lmKHRoaXMud2lkdGgpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLnNldEF0KHQqcyxlKmksdGhpcy53aWR0aCpzLHRoaXMuaGVpZ2h0KmkpO2Zvcihjb25zdCB0IG9mIHRoaXMuI3d0LnNwbGl0KCJcbiIpKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuYXBwZW5kKHQ/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7dGhpcy5lZGl0b3JEaXYuYXBwZW5kKGUpfXRoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITF9ZWxzZXt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwfXJldHVybiB0aGlzLmRpdn1nZXQgY29udGVudERpdigpe3JldHVybiB0aGlzLmVkaXRvckRpdn1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPXN1cGVyLmRlc2VyaWFsaXplKHQsZSk7cy4jTXQ9dC5mb250U2l6ZTtzLiNUdD1pLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpO3MuI3d0PXQudmFsdWU7cmV0dXJuIHN9c2VyaWFsaXplKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIG51bGw7Y29uc3QgdD1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnRoaXMucGFyZW50LnNjYWxlRmFjdG9yLGU9dGhpcy5nZXRSZWN0KHQsdCkscz1yLkFubm90YXRpb25FZGl0b3IuX2NvbG9yTWFuYWdlci5jb252ZXJ0KGdldENvbXB1dGVkU3R5bGUodGhpcy5lZGl0b3JEaXYpLmNvbG9yKTtyZXR1cm57YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCxjb2xvcjpzLGZvbnRTaXplOnRoaXMuI010LHZhbHVlOnRoaXMuI3d0LHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDplLHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLkZyZWVUZXh0RWRpdG9yPUZyZWVUZXh0RWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuSW5rRWRpdG9yPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZml0Q3VydmUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpdEN1cnZlfX0pO3ZhciBpPXMoMSksbj1zKDQpLHI9cygyNCksYT1zKDUpO2NvbnN0IG89MTY7Y2xhc3MgSW5rRWRpdG9yIGV4dGVuZHMgbi5Bbm5vdGF0aW9uRWRpdG9yeyNMdD0wOyNOdD0wOyNCdD0wOyNqdD10aGlzLmNhbnZhc1BvaW50ZXJtb3ZlLmJpbmQodGhpcyk7I1V0PXRoaXMuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQodGhpcyk7I3F0PXRoaXMuY2FudmFzUG9pbnRlcnVwLmJpbmQodGhpcyk7I1d0PXRoaXMuY2FudmFzUG9pbnRlcmRvd24uYmluZCh0aGlzKTsjR3Q9ITE7I0h0PSExOyN6dD1udWxsOyNWdD1udWxsOyNYdD0wOyMkdD0wOyNZdD1udWxsO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0T3BhY2l0eT0xO3N0YXRpYyBfZGVmYXVsdFRoaWNrbmVzcz0xO3N0YXRpYyBfbDEwblByb21pc2U7c3RhdGljIF90eXBlPSJpbmsiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6Imlua0VkaXRvciJ9KTt0aGlzLmNvbG9yPXQuY29sb3J8fG51bGw7dGhpcy50aGlja25lc3M9dC50aGlja25lc3N8fG51bGw7dGhpcy5vcGFjaXR5PXQub3BhY2l0eXx8bnVsbDt0aGlzLnBhdGhzPVtdO3RoaXMuYmV6aWVyUGF0aDJEPVtdO3RoaXMuY3VycmVudFBhdGg9W107dGhpcy5zY2FsZUZhY3Rvcj0xO3RoaXMudHJhbnNsYXRpb25YPXRoaXMudHJhbnNsYXRpb25ZPTA7dGhpcy54PTA7dGhpcy55PTB9c3RhdGljIGluaXRpYWxpemUodCl7dGhpcy5fbDEwblByb21pc2U9bmV3IE1hcChbImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiLCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIl0ubWFwKChlPT5bZSx0LmdldChlKV0pKSl9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcj1lO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWTpJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5PWUvMTAwfX11cGRhdGVQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6dGhpcy4jS3QoZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjp0aGlzLiNEdChlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6dGhpcy4jSnQoZSl9fXN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLElua0VkaXRvci5fZGVmYXVsdENvbG9yfHxuLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLE1hdGgucm91bmQoMTAwKklua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLHRoaXMudGhpY2tuZXNzfHxJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUix0aGlzLmNvbG9yfHxJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoodGhpcy5vcGFjaXR5Pz9JbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXX0jS3QodCl7Y29uc3QgZT10aGlzLnRoaWNrbmVzczt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy50aGlja25lc3M9dDt0aGlzLiNRdCgpfSx1bmRvOigpPT57dGhpcy50aGlja25lc3M9ZTt0aGlzLiNRdCgpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy5jb2xvcjt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5jb2xvcj10O3RoaXMuI1p0KCl9LHVuZG86KCk9Pnt0aGlzLmNvbG9yPWU7dGhpcy4jWnQoKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUixvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0p0KHQpe3QvPTEwMDtjb25zdCBlPXRoaXMub3BhY2l0eTt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5vcGFjaXR5PXQ7dGhpcy4jWnQoKX0sdW5kbzooKT0+e3RoaXMub3BhY2l0eT1lO3RoaXMuI1p0KCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtpZihudWxsIT09dGhpcy5kaXYpe2lmKCF0aGlzLmNhbnZhcyl7dGhpcy4jdGUoKTt0aGlzLiNlZSgpfWlmKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSl7dGhpcy5wYXJlbnQuYWRkKHRoaXMpO3RoaXMuI3NlKCl9dGhpcy4jUXQoKX19cmVtb3ZlKCl7aWYobnVsbCE9PXRoaXMuY2FudmFzKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5yZW1vdmUoKTt0aGlzLmNhbnZhcz1udWxsO3RoaXMuI1Z0LmRpc2Nvbm5lY3QoKTt0aGlzLiNWdD1udWxsO3N1cGVyLnJlbW92ZSgpfX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLiNHdCYmbnVsbCE9PXRoaXMuY2FudmFzKXtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jV3QpO3RoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jcXQpfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMpe3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCk7dGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNXdCk7dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNxdCl9fW9uY2VBZGRlZCgpe3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5wYXRocy5sZW5ndGh8fDE9PT10aGlzLnBhdGhzLmxlbmd0aCYmMD09PXRoaXMucGF0aHNbMF0ubGVuZ3RofSNpZSgpe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmUscm90YXRpb246c309dGhpcy5wYXJlbnQudmlld3BvcnQ7c3dpdGNoKHMpe2Nhc2UgOTA6cmV0dXJuWzAsdCx0LGVdO2Nhc2UgMTgwOnJldHVyblt0LGUsdCxlXTtjYXNlIDI3MDpyZXR1cm5bZSwwLHQsZV07ZGVmYXVsdDpyZXR1cm5bMCwwLHQsZV19fSNuZSgpe3RoaXMuY3R4LmxpbmVXaWR0aD10aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvci90aGlzLnNjYWxlRmFjdG9yO3RoaXMuY3R4LmxpbmVDYXA9InJvdW5kIjt0aGlzLmN0eC5saW5lSm9pbj0icm91bmQiO3RoaXMuY3R4Lm1pdGVyTGltaXQ9MTA7dGhpcy5jdHguc3Ryb2tlU3R5bGU9YCR7dGhpcy5jb2xvcn0keygwLGEub3BhY2l0eVRvSGV4KSh0aGlzLm9wYWNpdHkpfWB9I3JlKHQsZSl7dGhpcy5pc0VkaXRpbmc9ITA7aWYoIXRoaXMuI0h0KXt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMudGhpY2tuZXNzfHw9SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzO3RoaXMuY29sb3J8fD1JbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yO3RoaXMub3BhY2l0eT8/PUlua0VkaXRvci5fZGVmYXVsdE9wYWNpdHl9dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTt0aGlzLiN6dD1udWxsO3RoaXMuI25lKCk7dGhpcy5jdHguYmVnaW5QYXRoKCk7dGhpcy5jdHgubW92ZVRvKHQsZSk7dGhpcy4jWXQ9KCk9PntpZih0aGlzLiNZdCl7aWYodGhpcy4jenQpe2lmKHRoaXMuaXNFbXB0eSgpKXt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KX1lbHNlIHRoaXMuI1p0KCk7dGhpcy5jdHgubGluZVRvKC4uLnRoaXMuI3p0KTt0aGlzLiN6dD1udWxsO3RoaXMuY3R4LnN0cm9rZSgpfXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy4jWXQpfX07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLiNZdCl9I2FlKHQsZSl7Y29uc3RbcyxpXT10aGlzLmN1cnJlbnRQYXRoLmF0KC0xKTtpZih0IT09c3x8ZSE9PWkpe3RoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSk7dGhpcy4jenQ9W3QsZV19fSNvZSh0LGUpe3RoaXMuY3R4LmNsb3NlUGF0aCgpO3RoaXMuI1l0PW51bGw7dD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHRoaXMuY2FudmFzLndpZHRoKTtlPU1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5jYW52YXMuaGVpZ2h0KTtjb25zdFtzLGldPXRoaXMuY3VycmVudFBhdGguYXQoLTEpO3Q9PT1zJiZlPT09aXx8dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTtsZXQgbjtpZigxIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpbj0oMCxyLmZpdEN1cnZlKSh0aGlzLmN1cnJlbnRQYXRoLDMwLG51bGwpO2Vsc2V7Y29uc3Qgcz1bdCxlXTtuPVtbcyxzLnNsaWNlKCkscy5zbGljZSgpLHNdXX1jb25zdCBhPUlua0VkaXRvci4jbGUobik7dGhpcy5jdXJyZW50UGF0aC5sZW5ndGg9MDt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5wYXRocy5wdXNoKG4pO3RoaXMuYmV6aWVyUGF0aDJELnB1c2goYSk7dGhpcy5yZWJ1aWxkKCl9LHVuZG86KCk9Pnt0aGlzLnBhdGhzLnBvcCgpO3RoaXMuYmV6aWVyUGF0aDJELnBvcCgpO2lmKDA9PT10aGlzLnBhdGhzLmxlbmd0aCl0aGlzLnJlbW92ZSgpO2Vsc2V7aWYoIXRoaXMuY2FudmFzKXt0aGlzLiN0ZSgpO3RoaXMuI2VlKCl9dGhpcy4jUXQoKX19LG11c3RFeGVjOiEwfSl9I1p0KCl7aWYodGhpcy5pc0VtcHR5KCkpe3RoaXMuI2NlKCk7cmV0dXJufXRoaXMuI25lKCk7Y29uc3R7Y2FudmFzOnQsY3R4OmV9PXRoaXM7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KTt0aGlzLiNjZSgpO2Zvcihjb25zdCB0IG9mIHRoaXMuYmV6aWVyUGF0aDJEKWUuc3Ryb2tlKHQpfWNvbW1pdCgpe2lmKCF0aGlzLiNHdCl7c3VwZXIuY29tbWl0KCk7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuI0d0PSEwO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIik7dGhpcy4jUXQoITApO3RoaXMucGFyZW50LmFkZElua0VkaXRvcklmTmVlZGVkKCEwKTt0aGlzLnBhcmVudC5tb3ZlRWRpdG9ySW5ET00odGhpcyk7dGhpcy5kaXYuZm9jdXMoKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3RoaXMuZW5hYmxlRWRpdE1vZGUoKX1jYW52YXNQb2ludGVyZG93bih0KXtpZigwPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJiF0aGlzLiNHdCl7dGhpcy5zZXRJbkZvcmVncm91bmQoKTsibW91c2UiIT09dC50eXBlJiZ0aGlzLmRpdi5mb2N1cygpO3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix0aGlzLiNVdCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuI2p0KTt0aGlzLiNyZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX19Y2FudmFzUG9pbnRlcm1vdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLiNhZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX1jYW52YXNQb2ludGVydXAodCl7aWYoMD09PXQuYnV0dG9uJiZ0aGlzLmlzSW5FZGl0TW9kZSgpJiYwIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy4jaGUodCk7dGhpcy5zZXRJbkJhY2tncm91bmQoKX19Y2FudmFzUG9pbnRlcmxlYXZlKHQpe3RoaXMuI2hlKHQpO3RoaXMuc2V0SW5CYWNrZ3JvdW5kKCl9I2hlKHQpe3RoaXMuI29lKHQub2Zmc2V0WCx0Lm9mZnNldFkpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdGhpcy4jVXQpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLiNqdCk7dGhpcy5wYXJlbnQuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0aGlzKX0jdGUoKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5jbGFzc05hbWU9Imlua0VkaXRvckNhbnZhcyI7SW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiKS50aGVuKCh0PT50aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSkpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmNhbnZhcyk7dGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKX0jZWUoKXtsZXQgdD1udWxsO3RoaXMuI1Z0PW5ldyBSZXNpemVPYnNlcnZlcigoZT0+e2NvbnN0IHM9ZVswXS5jb250ZW50UmVjdDtpZihzLndpZHRoJiZzLmhlaWdodCl7bnVsbCE9PXQmJmNsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5maXhEaW1zKCk7dD1udWxsfSksMTAwKTt0aGlzLnNldERpbWVuc2lvbnMocy53aWR0aCxzLmhlaWdodCl9fSkpO3RoaXMuI1Z0Lm9ic2VydmUodGhpcy5kaXYpfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO0lua0VkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5kaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtjb25zdFtzLGksbixyXT10aGlzLiNpZSgpO3RoaXMuc2V0QXQocyxpLDAsMCk7dGhpcy5zZXREaW1zKG4scik7dGhpcy4jdGUoKTtpZih0aGlzLndpZHRoKXtjb25zdFtzLGldPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy5zZXRBdCh0KnMsZSppLHRoaXMud2lkdGgqcyx0aGlzLmhlaWdodCppKTt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMuc2V0RGltcyh0aGlzLndpZHRoKnMsdGhpcy5oZWlnaHQqaSk7dGhpcy4jWnQoKTt0aGlzLiNkZSgpO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZXt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIik7dGhpcy5lbmFibGVFZGl0TW9kZSgpfXRoaXMuI2VlKCk7cmV0dXJuIHRoaXMuZGl2fSNzZSgpe2lmKCF0aGlzLiNIdClyZXR1cm47Y29uc3RbdCxlXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMuY2FudmFzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKnQpO3RoaXMuY2FudmFzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQqZSk7dGhpcy4jY2UoKX1zZXREaW1lbnNpb25zKHQsZSl7Y29uc3Qgcz1NYXRoLnJvdW5kKHQpLGk9TWF0aC5yb3VuZChlKTtpZih0aGlzLiNYdD09PXMmJnRoaXMuIyR0PT09aSlyZXR1cm47dGhpcy4jWHQ9czt0aGlzLiMkdD1pO3RoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7aWYodGhpcy4jTHQmJk1hdGguYWJzKHRoaXMuI0x0LXQvZSk+LjAxKXtlPU1hdGguY2VpbCh0L3RoaXMuI0x0KTt0aGlzLnNldERpbXModCxlKX1jb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy53aWR0aD10L247dGhpcy5oZWlnaHQ9ZS9yO3RoaXMuI0d0JiZ0aGlzLiN1ZSh0LGUpO3RoaXMuI3NlKCk7dGhpcy4jWnQoKTt0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn0jdWUodCxlKXtjb25zdCBzPXRoaXMuI3BlKCksaT0odC1zKS90aGlzLiNCdCxuPShlLXMpL3RoaXMuI050O3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4oaSxuKX0jY2UoKXtjb25zdCB0PXRoaXMuI3BlKCkvMjt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0odGhpcy5zY2FsZUZhY3RvciwwLDAsdGhpcy5zY2FsZUZhY3Rvcix0aGlzLnRyYW5zbGF0aW9uWCp0aGlzLnNjYWxlRmFjdG9yK3QsdGhpcy50cmFuc2xhdGlvblkqdGhpcy5zY2FsZUZhY3Rvcit0KX1zdGF0aWMjbGUodCl7Y29uc3QgZT1uZXcgUGF0aDJEO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3RbaSxuLHIsYV09dFtzXTswPT09cyYmZS5tb3ZlVG8oLi4uaSk7ZS5iZXppZXJDdXJ2ZVRvKG5bMF0sblsxXSxyWzBdLHJbMV0sYVswXSxhWzFdKX1yZXR1cm4gZX0jZ2UodCxlLHMsaSl7Y29uc3Qgbj1bXSxyPXRoaXMudGhpY2tuZXNzLzI7bGV0IGEsbztmb3IoY29uc3QgbCBvZiB0aGlzLnBhdGhzKXthPVtdO289W107Zm9yKGxldCBuPTAsYz1sLmxlbmd0aDtuPGM7bisrKXtjb25zdFtjLGgsZCx1XT1sW25dLHA9dCooY1swXStlKStyLGc9aS10KihjWzFdK3MpLXIsbT10KihoWzBdK2UpK3IsZj1pLXQqKGhbMV0rcyktcixiPXQqKGRbMF0rZSkrcixBPWktdCooZFsxXStzKS1yLF89dCoodVswXStlKStyLHY9aS10Kih1WzFdK3MpLXI7aWYoMD09PW4pe2EucHVzaChwLGcpO28ucHVzaChwLGcpfWEucHVzaChtLGYsYixBLF8sdik7dGhpcy4jbWUocCxnLG0sZixiLEEsXyx2LDQsbyl9bi5wdXNoKHtiZXppZXI6YSxwb2ludHM6b30pfXJldHVybiBufSNtZSh0LGUscyxpLG4scixhLG8sbCxjKXtpZih0aGlzLiNmZSh0LGUscyxpLG4scixhLG8pKWMucHVzaChhLG8pO2Vsc2V7Zm9yKGxldCBoPTE7aDxsLTE7aCsrKXtjb25zdCBkPWgvbCx1PTEtZDtsZXQgcD1kKnQrdSpzLGc9ZCplK3UqaSxtPWQqcyt1Km4sZj1kKmkrdSpyO3A9ZCpwK3UqbTtnPWQqZyt1KmY7bT1kKm0rdSooZCpuK3UqYSk7Zj1kKmYrdSooZCpyK3Uqbyk7cD1kKnArdSptO2c9ZCpnK3UqZjtjLnB1c2gocCxnKX1jLnB1c2goYSxvKX19I2ZlKHQsZSxzLGksbixyLGEsbyl7Y29uc3QgbD0oMypzLTIqdC1hKSoqMixjPSgzKmktMiplLW8pKioyLGg9KDMqbi10LTIqYSkqKjIsZD0oMypyLWUtMipvKSoqMjtyZXR1cm4gTWF0aC5tYXgobCxoKStNYXRoLm1heChjLGQpPD0xMH0jYmUoKXtsZXQgdD0xLzAsZT0tMS8wLHM9MS8wLG49LTEvMDtmb3IoY29uc3QgciBvZiB0aGlzLnBhdGhzKWZvcihjb25zdFthLG8sbCxjXW9mIHIpe2NvbnN0IHI9aS5VdGlsLmJlemllckJvdW5kaW5nQm94KC4uLmEsLi4ubywuLi5sLC4uLmMpO3Q9TWF0aC5taW4odCxyWzBdKTtzPU1hdGgubWluKHMsclsxXSk7ZT1NYXRoLm1heChlLHJbMl0pO249TWF0aC5tYXgobixyWzNdKX1yZXR1cm5bdCxzLGUsbl19I3BlKCl7cmV0dXJuIHRoaXMuI0d0P01hdGguY2VpbCh0aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik6MH0jUXQodD0hMSl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuO2lmKCF0aGlzLiNHdCl7dGhpcy4jWnQoKTtyZXR1cm59Y29uc3QgZT10aGlzLiNiZSgpLHM9dGhpcy4jcGUoKTt0aGlzLiNCdD1NYXRoLm1heChvLGVbMl0tZVswXSk7dGhpcy4jTnQ9TWF0aC5tYXgobyxlWzNdLWVbMV0pO2NvbnN0IGk9TWF0aC5jZWlsKHMrdGhpcy4jQnQqdGhpcy5zY2FsZUZhY3Rvciksbj1NYXRoLmNlaWwocyt0aGlzLiNOdCp0aGlzLnNjYWxlRmFjdG9yKSxbcixhXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMud2lkdGg9aS9yO3RoaXMuaGVpZ2h0PW4vYTt0aGlzLiNMdD1pL247dGhpcy4jZGUoKTtjb25zdCBsPXRoaXMudHJhbnNsYXRpb25YLGM9dGhpcy50cmFuc2xhdGlvblk7dGhpcy50cmFuc2xhdGlvblg9LWVbMF07dGhpcy50cmFuc2xhdGlvblk9LWVbMV07dGhpcy4jc2UoKTt0aGlzLiNadCgpO3RoaXMuI1h0PWk7dGhpcy4jJHQ9bjt0aGlzLnNldERpbXMoaSxuKTtjb25zdCBoPXQ/cy90aGlzLnNjYWxlRmFjdG9yLzI6MDt0aGlzLnRyYW5zbGF0ZShsLXRoaXMudHJhbnNsYXRpb25YLWgsYy10aGlzLnRyYW5zbGF0aW9uWS1oKX0jZGUoKXtjb25zdHtzdHlsZTp0fT10aGlzLmRpdjtpZih0aGlzLiNMdD49MSl7dC5taW5IZWlnaHQ9IjE2cHgiO3QubWluV2lkdGg9YCR7TWF0aC5yb3VuZCh0aGlzLiNMdCpvKX1weGB9ZWxzZXt0Lm1pbldpZHRoPSIxNnB4Ijt0Lm1pbkhlaWdodD1gJHtNYXRoLnJvdW5kKG8vdGhpcy4jTHQpfXB4YH19c3RhdGljIGRlc2VyaWFsaXplKHQsZSl7Y29uc3Qgcz1zdXBlci5kZXNlcmlhbGl6ZSh0LGUpO3MudGhpY2tuZXNzPXQudGhpY2tuZXNzO3MuY29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTtzLm9wYWNpdHk9dC5vcGFjaXR5O2NvbnN0W24scl09ZS5wYWdlRGltZW5zaW9ucyxhPXMud2lkdGgqbixsPXMuaGVpZ2h0KnIsYz1lLnNjYWxlRmFjdG9yLGg9dC50aGlja25lc3MvMjtzLiNMdD1hL2w7cy4jR3Q9ITA7cy4jWHQ9TWF0aC5yb3VuZChhKTtzLiMkdD1NYXRoLnJvdW5kKGwpO2Zvcihjb25zdHtiZXppZXI6ZX1vZiB0LnBhdGhzKXtjb25zdCB0PVtdO3MucGF0aHMucHVzaCh0KTtsZXQgaT1jKihlWzBdLWgpLG49YyoobC1lWzFdLWgpO2ZvcihsZXQgcz0yLHI9ZS5sZW5ndGg7czxyO3MrPTYpe2NvbnN0IHI9YyooZVtzXS1oKSxhPWMqKGwtZVtzKzFdLWgpLG89YyooZVtzKzJdLWgpLGQ9YyoobC1lW3MrM10taCksdT1jKihlW3MrNF0taCkscD1jKihsLWVbcys1XS1oKTt0LnB1c2goW1tpLG5dLFtyLGFdLFtvLGRdLFt1LHBdXSk7aT11O249cH1jb25zdCByPXRoaXMuI2xlKHQpO3MuYmV6aWVyUGF0aDJELnB1c2gocil9Y29uc3QgZD1zLiNiZSgpO3MuI0J0PU1hdGgubWF4KG8sZFsyXS1kWzBdKTtzLiNOdD1NYXRoLm1heChvLGRbM10tZFsxXSk7cy4jdWUoYSxsKTtyZXR1cm4gc31zZXJpYWxpemUoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZ2V0UmVjdCgwLDApLGU9dGhpcy5yb3RhdGlvbiUxODA9PTA/dFszXS10WzFdOnRbMl0tdFswXSxzPW4uQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5jdHguc3Ryb2tlU3R5bGUpO3JldHVybnthbm5vdGF0aW9uVHlwZTppLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyxjb2xvcjpzLHRoaWNrbmVzczp0aGlzLnRoaWNrbmVzcyxvcGFjaXR5OnRoaXMub3BhY2l0eSxwYXRoczp0aGlzLiNnZSh0aGlzLnNjYWxlRmFjdG9yL3RoaXMucGFyZW50LnNjYWxlRmFjdG9yLHRoaXMudHJhbnNsYXRpb25YLHRoaXMudHJhbnNsYXRpb25ZLGUpLHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDp0LHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLklua0VkaXRvcj1JbmtFZGl0b3J9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5maXRDdXJ2ZT12b2lkIDA7Y29uc3QgaT1zKDI1KTtlLmZpdEN1cnZlPWl9LHQ9PntmdW5jdGlvbiBmaXRDdWJpYyh0LGUscyxpLG4pe3ZhciByLGEsbyxsLGMsaCxkLHUscCxnLG0sZixiO2lmKDI9PT10Lmxlbmd0aCl7Zj1tYXRocy52ZWN0b3JMZW4obWF0aHMuc3VidHJhY3QodFswXSx0WzFdKSkvMztyZXR1cm5bcj1bdFswXSxtYXRocy5hZGRBcnJheXModFswXSxtYXRocy5tdWxJdGVtcyhlLGYpKSxtYXRocy5hZGRBcnJheXModFsxXSxtYXRocy5tdWxJdGVtcyhzLGYpKSx0WzFdXV19YT1mdW5jdGlvbiBjaG9yZExlbmd0aFBhcmFtZXRlcml6ZSh0KXt2YXIgZSxzLGksbj1bXTt0LmZvckVhY2goKCh0LHIpPT57ZT1yP3MrbWF0aHMudmVjdG9yTGVuKG1hdGhzLnN1YnRyYWN0KHQsaSkpOjA7bi5wdXNoKGUpO3M9ZTtpPXR9KSk7cmV0dXJuIG49bi5tYXAoKHQ9PnQvcykpfSh0KTtbcixsLGhdPWdlbmVyYXRlQW5kUmVwb3J0KHQsYSxhLGUscyxuKTtpZigwPT09bHx8bDxpKXJldHVybltyXTtpZihsPGkqaSl7bz1hO2M9bDtkPWg7Zm9yKGI9MDtiPDIwO2IrKyl7bz1yZXBhcmFtZXRlcml6ZShyLHQsbyk7W3IsbCxoXT1nZW5lcmF0ZUFuZFJlcG9ydCh0LGEsbyxlLHMsbik7aWYobDxpKXJldHVybltyXTtpZihoPT09ZCl7bGV0IHQ9bC9jO2lmKHQ+Ljk5OTkmJnQ8MS4wMDAxKWJyZWFrfWM9bDtkPWh9fW09W107aWYoKHU9bWF0aHMuc3VidHJhY3QodFtoLTFdLHRbaCsxXSkpLmV2ZXJ5KCh0PT4wPT09dCkpKXt1PW1hdGhzLnN1YnRyYWN0KHRbaC0xXSx0W2hdKTtbdVswXSx1WzFdXT1bLXVbMV0sdVswXV19cD1tYXRocy5ub3JtYWxpemUodSk7Zz1tYXRocy5tdWxJdGVtcyhwLC0xKTtyZXR1cm4gbT0obT1tLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKDAsaCsxKSxlLHAsaSxuKSkpLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKGgpLGcscyxpLG4pKX1mdW5jdGlvbiBnZW5lcmF0ZUFuZFJlcG9ydCh0LGUscyxpLG4scil7dmFyIGEsbyxsO2E9ZnVuY3Rpb24gZ2VuZXJhdGVCZXppZXIodCxlLHMsaSl7dmFyIG4scixhLG8sbCxjLGgsZCx1LHAsZyxtLGYsYixBLF8sdix5PXRbMF0sUz10W3QubGVuZ3RoLTFdO249W3ksbnVsbCxudWxsLFNdO3I9bWF0aHMuemVyb3NfWHgyeDIoZS5sZW5ndGgpO2ZvcihmPTAsYj1lLmxlbmd0aDtmPGI7ZisrKXt2PTEtKF89ZVtmXSk7KGE9cltmXSlbMF09bWF0aHMubXVsSXRlbXMocywzKl8qKHYqdikpO2FbMV09bWF0aHMubXVsSXRlbXMoaSwzKnYqKF8qXykpfW89W1swLDBdLFswLDBdXTtsPVswLDBdO2ZvcihmPTAsYj10Lmxlbmd0aDtmPGI7ZisrKXtfPWVbZl07YT1yW2ZdO29bMF1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMF0pO29bMF1bMV0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMV0rPW1hdGhzLmRvdChhWzFdLGFbMV0pO0E9bWF0aHMuc3VidHJhY3QodFtmXSxiZXppZXIucShbeSx5LFMsU10sXykpO2xbMF0rPW1hdGhzLmRvdChhWzBdLEEpO2xbMV0rPW1hdGhzLmRvdChhWzFdLEEpfWM9b1swXVswXSpvWzFdWzFdLW9bMV1bMF0qb1swXVsxXTtoPW9bMF1bMF0qbFsxXS1vWzFdWzBdKmxbMF07ZD1sWzBdKm9bMV1bMV0tbFsxXSpvWzBdWzFdO3U9MD09PWM/MDpkL2M7cD0wPT09Yz8wOmgvYzttPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdCh5LFMpKTtpZih1PChnPTFlLTYqbSl8fHA8Zyl7blsxXT1tYXRocy5hZGRBcnJheXMoeSxtYXRocy5tdWxJdGVtcyhzLG0vMykpO25bMl09bWF0aHMuYWRkQXJyYXlzKFMsbWF0aHMubXVsSXRlbXMoaSxtLzMpKX1lbHNle25bMV09bWF0aHMuYWRkQXJyYXlzKHksbWF0aHMubXVsSXRlbXMocyx1KSk7blsyXT1tYXRocy5hZGRBcnJheXMoUyxtYXRocy5tdWxJdGVtcyhpLHApKX1yZXR1cm4gbn0odCxzLGksbik7W28sbF09ZnVuY3Rpb24gY29tcHV0ZU1heEVycm9yKHQsZSxzKXt2YXIgaSxuLHIsYSxvLGwsYyxoO249MDtyPU1hdGguZmxvb3IodC5sZW5ndGgvMik7Y29uc3QgZD1tYXBUdG9SZWxhdGl2ZURpc3RhbmNlcyhlLDEwKTtmb3Iobz0wLGw9dC5sZW5ndGg7bzxsO28rKyl7Yz10W29dO2g9ZmluZF90KGUsc1tvXSxkLDEwKTtpZigoaT0oYT1tYXRocy5zdWJ0cmFjdChiZXppZXIucShlLGgpLGMpKVswXSphWzBdK2FbMV0qYVsxXSk+bil7bj1pO3I9b319cmV0dXJuW24scl19KHQsYSxlKTtyJiZyKHtiZXo6YSxwb2ludHM6dCxwYXJhbXM6ZSxtYXhFcnI6byxtYXhQb2ludDpsfSk7cmV0dXJuW2EsbyxsXX1mdW5jdGlvbiByZXBhcmFtZXRlcml6ZSh0LGUscyl7cmV0dXJuIHMubWFwKCgocyxpKT0+bmV3dG9uUmFwaHNvblJvb3RGaW5kKHQsZVtpXSxzKSkpfWZ1bmN0aW9uIG5ld3RvblJhcGhzb25Sb290RmluZCh0LGUscyl7dmFyIGk9bWF0aHMuc3VidHJhY3QoYmV6aWVyLnEodCxzKSxlKSxuPWJlemllci5xcHJpbWUodCxzKSxyPW1hdGhzLm11bE1hdHJpeChpLG4pLGE9bWF0aHMuc3VtKG1hdGhzLnNxdWFyZUl0ZW1zKG4pKSsyKm1hdGhzLm11bE1hdHJpeChpLGJlemllci5xcHJpbWVwcmltZSh0LHMpKTtyZXR1cm4gMD09PWE/czpzLXIvYX12YXIgbWFwVHRvUmVsYXRpdmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHMsaT1bMF0sbj10WzBdLHI9MCxhPTE7YTw9ZTthKyspe3M9YmV6aWVyLnEodCxhL2UpO3IrPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdChzLG4pKTtpLnB1c2gocik7bj1zfXJldHVybiBpPWkubWFwKCh0PT50L3IpKX07ZnVuY3Rpb24gZmluZF90KHQsZSxzLGkpe2lmKGU8MClyZXR1cm4gMDtpZihlPjEpcmV0dXJuIDE7Zm9yKHZhciBuLHIsYSxvLGw9MTtsPD1pO2wrKylpZihlPD1zW2xdKXthPShsLTEpL2k7cj1sL2k7bz0oZS0obj1zW2wtMV0pKS8oc1tsXS1uKSooci1hKSthO2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIGNyZWF0ZVRhbmdlbnQodCxlKXtyZXR1cm4gbWF0aHMubm9ybWFsaXplKG1hdGhzLnN1YnRyYWN0KHQsZSkpfWNsYXNzIG1hdGhze3N0YXRpYyB6ZXJvc19YeDJ4Mih0KXtmb3IodmFyIGU9W107dC0tOyllLnB1c2goWzAsMF0pO3JldHVybiBlfXN0YXRpYyBtdWxJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dCplKSl9c3RhdGljIG11bE1hdHJpeCh0LGUpe3JldHVybiB0LnJlZHVjZSgoKHQscyxpKT0+dCtzKmVbaV0pLDApfXN0YXRpYyBzdWJ0cmFjdCh0LGUpe3JldHVybiB0Lm1hcCgoKHQscyk9PnQtZVtzXSkpfXN0YXRpYyBhZGRBcnJheXModCxlKXtyZXR1cm4gdC5tYXAoKCh0LHMpPT50K2Vbc10pKX1zdGF0aWMgYWRkSXRlbXModCxlKXtyZXR1cm4gdC5tYXAoKHQ9PnQrZSkpfXN0YXRpYyBzdW0odCl7cmV0dXJuIHQucmVkdWNlKCgodCxlKT0+dCtlKSl9c3RhdGljIGRvdCh0LGUpe3JldHVybiBtYXRocy5tdWxNYXRyaXgodCxlKX1zdGF0aWMgdmVjdG9yTGVuKHQpe3JldHVybiBNYXRoLmh5cG90KC4uLnQpfXN0YXRpYyBkaXZJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dC9lKSl9c3RhdGljIHNxdWFyZUl0ZW1zKHQpe3JldHVybiB0Lm1hcCgodD0+dCp0KSl9c3RhdGljIG5vcm1hbGl6ZSh0KXtyZXR1cm4gdGhpcy5kaXZJdGVtcyh0LHRoaXMudmVjdG9yTGVuKHQpKX19Y2xhc3MgYmV6aWVye3N0YXRpYyBxKHQsZSl7dmFyIHM9MS1lLGk9bWF0aHMubXVsSXRlbXModFswXSxzKnMqcyksbj1tYXRocy5tdWxJdGVtcyh0WzFdLDMqcypzKmUpLHI9bWF0aHMubXVsSXRlbXModFsyXSwzKnMqZSplKSxhPW1hdGhzLm11bEl0ZW1zKHRbM10sZSplKmUpO3JldHVybiBtYXRocy5hZGRBcnJheXMobWF0aHMuYWRkQXJyYXlzKGksbiksbWF0aHMuYWRkQXJyYXlzKHIsYSkpfXN0YXRpYyBxcHJpbWUodCxlKXt2YXIgcz0xLWUsaT1tYXRocy5tdWxJdGVtcyhtYXRocy5zdWJ0cmFjdCh0WzFdLHRbMF0pLDMqcypzKSxuPW1hdGhzLm11bEl0ZW1zKG1hdGhzLnN1YnRyYWN0KHRbMl0sdFsxXSksNipzKmUpLHI9bWF0aHMubXVsSXRlbXMobWF0aHMuc3VidHJhY3QodFszXSx0WzJdKSwzKmUqZSk7cmV0dXJuIG1hdGhzLmFkZEFycmF5cyhtYXRocy5hZGRBcnJheXMoaSxuKSxyKX1zdGF0aWMgcXByaW1lcHJpbWUodCxlKXtyZXR1cm4gbWF0aHMuYWRkQXJyYXlzKG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzJdLG1hdGhzLm11bEl0ZW1zKHRbMV0sMikpLHRbMF0pLDYqKDEtZSkpLG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzNdLG1hdGhzLm11bEl0ZW1zKHRbMl0sMikpLHRbMV0pLDYqZSkpfX10LmV4cG9ydHM9ZnVuY3Rpb24gZml0Q3VydmUodCxlLHMpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO3QuZm9yRWFjaCgoZT0+e2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLnNvbWUoKHQ9PiJudW1iZXIiIT10eXBlb2YgdCkpfHxlLmxlbmd0aCE9PXRbMF0ubGVuZ3RoKXRocm93IEVycm9yKCJFYWNoIHBvaW50IHNob3VsZCBiZSBhbiBhcnJheSBvZiBudW1iZXJzLiBFYWNoIHBvaW50IHNob3VsZCBoYXZlIHRoZSBzYW1lIGFtb3VudCBvZiBudW1iZXJzLiIpfSkpO2lmKCh0PXQuZmlsdGVyKCgoZSxzKT0+MD09PXN8fCFlLmV2ZXJ5KCgoZSxpKT0+ZT09PXRbcy0xXVtpXSkpKSkpLmxlbmd0aDwyKXJldHVybltdO2NvbnN0IGk9dC5sZW5ndGgsbj1jcmVhdGVUYW5nZW50KHRbMV0sdFswXSkscj1jcmVhdGVUYW5nZW50KHRbaS0yXSx0W2ktMV0pO3JldHVybiBmaXRDdWJpYyh0LG4scixlLHMpfTt0LmV4cG9ydHMuZml0Q3ViaWM9Zml0Q3ViaWM7dC5leHBvcnRzLmNyZWF0ZVRhbmdlbnQ9Y3JlYXRlVGFuZ2VudH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25MYXllcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNikscj1zKDMpLGE9cygyNyksbz1zKDI4KTtjb25zdCBsPTFlMyxjPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIGdldFJlY3REaW1zKHQpe3JldHVybnt3aWR0aDp0WzJdLXRbMF0saGVpZ2h0OnRbM10tdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5e3N0YXRpYyBjcmVhdGUodCl7c3dpdGNoKHQuZGF0YS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBpLkFubm90YXRpb25UeXBlLkxJTks6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlRFWFQ6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLldJREdFVDpzd2l0Y2godC5kYXRhLmZpZWxkVHlwZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJCdG4iOnJldHVybiB0LmRhdGEucmFkaW9CdXR0b24/bmV3IFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk6dC5kYXRhLmNoZWNrQm94P25ldyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpOm5ldyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KX1yZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT1BVUDpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkZSRUVURVhUOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuTElORTpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVQVJFOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNJUkNMRTpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNBUkVUOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuSU5LOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlBPTFlHT046cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RBTVA6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbkVsZW1lbnQodCk7ZGVmYXVsdDpyZXR1cm4gbmV3IEFubm90YXRpb25FbGVtZW50KHQpfX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCx7aXNSZW5kZXJhYmxlOmU9ITEsaWdub3JlQm9yZGVyOnM9ITEsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6aT0hMX09e30pe3RoaXMuaXNSZW5kZXJhYmxlPWU7dGhpcy5kYXRhPXQuZGF0YTt0aGlzLmxheWVyPXQubGF5ZXI7dGhpcy5wYWdlPXQucGFnZTt0aGlzLnZpZXdwb3J0PXQudmlld3BvcnQ7dGhpcy5saW5rU2VydmljZT10LmxpbmtTZXJ2aWNlO3RoaXMuZG93bmxvYWRNYW5hZ2VyPXQuZG93bmxvYWRNYW5hZ2VyO3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoPXQuaW1hZ2VSZXNvdXJjZXNQYXRoO3RoaXMucmVuZGVyRm9ybXM9dC5yZW5kZXJGb3Jtczt0aGlzLnN2Z0ZhY3Rvcnk9dC5zdmdGYWN0b3J5O3RoaXMuYW5ub3RhdGlvblN0b3JhZ2U9dC5hbm5vdGF0aW9uU3RvcmFnZTt0aGlzLmVuYWJsZVNjcmlwdGluZz10LmVuYWJsZVNjcmlwdGluZzt0aGlzLmhhc0pTQWN0aW9ucz10Lmhhc0pTQWN0aW9uczt0aGlzLl9maWVsZE9iamVjdHM9dC5maWVsZE9iamVjdHM7dGhpcy5fbW91c2VTdGF0ZT10Lm1vdXNlU3RhdGU7ZSYmKHRoaXMuY29udGFpbmVyPXRoaXMuX2NyZWF0ZUNvbnRhaW5lcihzKSk7aSYmKHRoaXMucXVhZHJpbGF0ZXJhbHM9dGhpcy5fY3JlYXRlUXVhZHJpbGF0ZXJhbHMocykpfV9jcmVhdGVDb250YWluZXIodD0hMSl7Y29uc3QgZT10aGlzLmRhdGEscz10aGlzLnBhZ2Usbj10aGlzLnZpZXdwb3J0LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIpLHt3aWR0aDphLGhlaWdodDpvfT1nZXRSZWN0RGltcyhlLnJlY3QpLFtsLGMsaCxkXT1uLnZpZXdCb3gsdT1oLWwscD1kLWM7ci5zZXRBdHRyaWJ1dGUoImRhdGEtYW5ub3RhdGlvbi1pZCIsZS5pZCk7Y29uc3QgZz1pLlV0aWwubm9ybWFsaXplUmVjdChbZS5yZWN0WzBdLHMudmlld1szXS1lLnJlY3RbMV0rcy52aWV3WzFdLGUucmVjdFsyXSxzLnZpZXdbM10tZS5yZWN0WzNdK3Mudmlld1sxXV0pO2lmKCF0JiZlLmJvcmRlclN0eWxlLndpZHRoPjApe3Iuc3R5bGUuYm9yZGVyV2lkdGg9YCR7ZS5ib3JkZXJTdHlsZS53aWR0aH1weGA7Y29uc3QgdD1lLmJvcmRlclN0eWxlLmhvcml6b250YWxDb3JuZXJSYWRpdXMscz1lLmJvcmRlclN0eWxlLnZlcnRpY2FsQ29ybmVyUmFkaXVzO2lmKHQ+MHx8cz4wKXtjb25zdCBlPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke3N9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9ZX1lbHNlIGlmKHRoaXMgaW5zdGFuY2VvZiBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KXtjb25zdCB0PWBjYWxjKCR7YX1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke299cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9dH1zd2l0Y2goZS5ib3JkZXJTdHlsZS5zdHlsZSl7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ6ci5zdHlsZS5ib3JkZXJTdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDpyLnN0eWxlLmJvcmRlclN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ6KDAsaS53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGJldmVsZWQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDooMCxpLndhcm4pKCJVbmltcGxlbWVudGVkIGJvcmRlciBzdHlsZTogaW5zZXQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkU6ci5zdHlsZS5ib3JkZXJCb3R0b21TdHlsZT0ic29saWQifWNvbnN0IG49ZS5ib3JkZXJDb2xvcnx8bnVsbDtuP3Iuc3R5bGUuYm9yZGVyQ29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvcigwfG5bMF0sMHxuWzFdLDB8blsyXSk6ci5zdHlsZS5ib3JkZXJXaWR0aD0wfXIuc3R5bGUubGVmdD0xMDAqKGdbMF0tbCkvdSsiJSI7ci5zdHlsZS50b3A9MTAwKihnWzFdLWMpL3ArIiUiO2NvbnN0e3JvdGF0aW9uOm19PWU7aWYoZS5oYXNPd25DYW52YXN8fDA9PT1tKXtyLnN0eWxlLndpZHRoPTEwMCphL3UrIiUiO3Iuc3R5bGUuaGVpZ2h0PTEwMCpvL3ArIiUifWVsc2UgdGhpcy5zZXRSb3RhdGlvbihtLHIpO3JldHVybiByfXNldFJvdGF0aW9uKHQsZT10aGlzLmNvbnRhaW5lcil7Y29uc3RbcyxpLG4scl09dGhpcy52aWV3cG9ydC52aWV3Qm94LGE9bi1zLG89ci1pLHt3aWR0aDpsLGhlaWdodDpjfT1nZXRSZWN0RGltcyh0aGlzLmRhdGEucmVjdCk7bGV0IGgsZDtpZih0JTE4MD09MCl7aD0xMDAqbC9hO2Q9MTAwKmMvb31lbHNle2g9MTAwKmMvYTtkPTEwMCpsL299ZS5zdHlsZS53aWR0aD1gJHtofSVgO2Uuc3R5bGUuaGVpZ2h0PWAke2R9JWA7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsKDM2MC10KSUzNjApfWdldCBfY29tbW9uQWN0aW9ucygpe2NvbnN0IHNldENvbG9yPSh0LGUscyk9Pntjb25zdCBpPXMuZGV0YWlsW3RdO3MudGFyZ2V0LnN0eWxlW2VdPWEuQ29sb3JDb252ZXJ0ZXJzW2Ake2lbMF19X0hUTUxgXShpLnNsaWNlKDEpKX07cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9jb21tb25BY3Rpb25zIix7ZGlzcGxheTp0PT57Y29uc3QgZT10LmRldGFpbC5kaXNwbGF5JTI9PTE7dGhpcy5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1lPyJoaWRkZW4iOiJ2aXNpYmxlIjt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7aGlkZGVuOmUscHJpbnQ6MD09PXQuZGV0YWlsLmRpc3BsYXl8fDM9PT10LmRldGFpbC5kaXNwbGF5fSl9LHByaW50OnQ9Pnt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7cHJpbnQ6dC5kZXRhaWwucHJpbnR9KX0saGlkZGVuOnQ9Pnt0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PXQuZGV0YWlsLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSI7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQse2hpZGRlbjp0LmRldGFpbC5oaWRkZW59KX0sZm9jdXM6dD0+e3NldFRpbWVvdXQoKCgpPT50LnRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMX0pKSwwKX0sdXNlck5hbWU6dD0+e3QudGFyZ2V0LnRpdGxlPXQuZGV0YWlsLnVzZXJOYW1lfSxyZWFkb25seTp0PT57dC5kZXRhaWwucmVhZG9ubHk/dC50YXJnZXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpOnQudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKX0scmVxdWlyZWQ6dD0+e3RoaXMuX3NldFJlcXVpcmVkKHQudGFyZ2V0LHQuZGV0YWlsLnJlcXVpcmVkKX0sYmdDb2xvcjp0PT57c2V0Q29sb3IoImJnQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmaWxsQ29sb3I6dD0+e3NldENvbG9yKCJmaWxsQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmZ0NvbG9yOnQ9PntzZXRDb2xvcigiZmdDb2xvciIsImNvbG9yIix0KX0sdGV4dENvbG9yOnQ9PntzZXRDb2xvcigidGV4dENvbG9yIiwiY29sb3IiLHQpfSxib3JkZXJDb2xvcjp0PT57c2V0Q29sb3IoImJvcmRlckNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxzdHJva2VDb2xvcjp0PT57c2V0Q29sb3IoInN0cm9rZUNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxyb3RhdGlvbjp0PT57Y29uc3QgZT10LmRldGFpbC5yb3RhdGlvbjt0aGlzLnNldFJvdGF0aW9uKGUpO3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtyb3RhdGlvbjplfSl9fSl9X2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveCh0LGUpe2NvbnN0IHM9dGhpcy5fY29tbW9uQWN0aW9ucztmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhlLmRldGFpbCkpeyh0W2ldfHxzW2ldKT8uKGUpfX1fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlModCl7aWYoIXRoaXMuZW5hYmxlU2NyaXB0aW5nKXJldHVybjtjb25zdCBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UuZ2V0UmF3VmFsdWUodGhpcy5kYXRhLmlkKTtpZighZSlyZXR1cm47Y29uc3Qgcz10aGlzLl9jb21tb25BY3Rpb25zO2Zvcihjb25zdFtpLG5db2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IHI9c1tpXTtpZihyKXtyKHtkZXRhaWw6e1tpXTpufSx0YXJnZXQ6dH0pO2RlbGV0ZSBlW2ldfX19X2NyZWF0ZVF1YWRyaWxhdGVyYWxzKHQ9ITEpe2lmKCF0aGlzLmRhdGEucXVhZFBvaW50cylyZXR1cm4gbnVsbDtjb25zdCBlPVtdLHM9dGhpcy5kYXRhLnJlY3Q7Zm9yKGNvbnN0IHMgb2YgdGhpcy5kYXRhLnF1YWRQb2ludHMpe3RoaXMuZGF0YS5yZWN0PVtzWzJdLngsc1syXS55LHNbMV0ueCxzWzFdLnldO2UucHVzaCh0aGlzLl9jcmVhdGVDb250YWluZXIodCkpfXRoaXMuZGF0YS5yZWN0PXM7cmV0dXJuIGV9X2NyZWF0ZVBvcHVwKHQsZSl7bGV0IHM9dGhpcy5jb250YWluZXI7aWYodGhpcy5xdWFkcmlsYXRlcmFscyl7dD10fHx0aGlzLnF1YWRyaWxhdGVyYWxzO3M9dGhpcy5xdWFkcmlsYXRlcmFsc1swXX1pZighdCl7KHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7cy5hcHBlbmQodCl9Y29uc3QgaT1uZXcgUG9wdXBFbGVtZW50KHtjb250YWluZXI6cyx0cmlnZ2VyOnQsY29sb3I6ZS5jb2xvcix0aXRsZU9iajplLnRpdGxlT2JqLG1vZGlmaWNhdGlvbkRhdGU6ZS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOmUuY29udGVudHNPYmoscmljaFRleHQ6ZS5yaWNoVGV4dCxoaWRlV3JhcHBlcjohMH0pLnJlbmRlcigpO2kuc3R5bGUubGVmdD0iMTAwJSI7cy5hcHBlbmQoaSl9X3JlbmRlclF1YWRyaWxhdGVyYWxzKHQpe2Zvcihjb25zdCBlIG9mIHRoaXMucXVhZHJpbGF0ZXJhbHMpZS5jbGFzc05hbWU9dDtyZXR1cm4gdGhpcy5xdWFkcmlsYXRlcmFsc31yZW5kZXIoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBBbm5vdGF0aW9uRWxlbWVudC5yZW5kZXJgIGNhbGxlZCIpfV9nZXRFbGVtZW50c0J5TmFtZSh0LGU9bnVsbCl7Y29uc3Qgcz1bXTtpZih0aGlzLl9maWVsZE9iamVjdHMpe2NvbnN0IG49dGhpcy5fZmllbGRPYmplY3RzW3RdO2lmKG4pZm9yKGNvbnN0e3BhZ2U6dCxpZDpyLGV4cG9ydFZhbHVlczphfW9mIG4pe2lmKC0xPT09dCljb250aW51ZTtpZihyPT09ZSljb250aW51ZTtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgYT9hOm51bGwsbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1lbGVtZW50LWlkPSIke3J9Il1gKTshb3x8Yy5oYXMobyk/cy5wdXNoKHtpZDpyLGV4cG9ydFZhbHVlOm4sZG9tRWxlbWVudDpvfSk6KDAsaS53YXJuKShgX2dldEVsZW1lbnRzQnlOYW1lIC0gZWxlbWVudCBub3QgYWxsb3dlZDogJHtyfWApfXJldHVybiBzfWZvcihjb25zdCBpIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKXtjb25zdHtleHBvcnRWYWx1ZTp0fT1pLG49aS5nZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIpO24hPT1lJiYoYy5oYXMoaSkmJnMucHVzaCh7aWQ6bixleHBvcnRWYWx1ZTp0LGRvbUVsZW1lbnQ6aX0pKX1yZXR1cm4gc31zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3IucGxhdGZvcm06IiI7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBsYXRmb3JtIix7aXNXaW46dC5pbmNsdWRlcygiV2luIiksaXNNYWM6dC5pbmNsdWRlcygiTWFjIil9KX19Y2xhc3MgTGlua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCxlPW51bGwpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6ISFlPy5pZ25vcmVCb3JkZXIsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KTt0aGlzLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHl9cmVuZGVyKCl7Y29uc3R7ZGF0YTp0LGxpbmtTZXJ2aWNlOmV9PXRoaXMscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsdC5pZCk7bGV0IGk9ITE7aWYodC51cmwpe2UuYWRkTGlua0F0dHJpYnV0ZXMocyx0LnVybCx0Lm5ld1dpbmRvdyk7aT0hMH1lbHNlIGlmKHQuYWN0aW9uKXt0aGlzLl9iaW5kTmFtZWRBY3Rpb24ocyx0LmFjdGlvbik7aT0hMH1lbHNlIGlmKHQuYXR0YWNobWVudCl7dGhpcy5fYmluZEF0dGFjaG1lbnQocyx0LmF0dGFjaG1lbnQpO2k9ITB9ZWxzZSBpZih0LnNldE9DR1N0YXRlKXt0aGlzLiNBZShzLHQuc2V0T0NHU3RhdGUpO2k9ITB9ZWxzZSBpZih0LmRlc3Qpe3RoaXMuX2JpbmRMaW5rKHMsdC5kZXN0KTtpPSEwfWVsc2V7aWYodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dGhpcy5fYmluZEpTQWN0aW9uKHMsdCk7aT0hMH1pZih0LnJlc2V0Rm9ybSl7dGhpcy5fYmluZFJlc2V0Rm9ybUFjdGlvbihzLHQucmVzZXRGb3JtKTtpPSEwfWVsc2UgaWYodGhpcy5pc1Rvb2x0aXBPbmx5JiYhaSl7dGhpcy5fYmluZExpbmsocywiIik7aT0hMH19aWYodGhpcy5xdWFkcmlsYXRlcmFscylyZXR1cm4gdGhpcy5fcmVuZGVyUXVhZHJpbGF0ZXJhbHMoImxpbmtBbm5vdGF0aW9uIikubWFwKCgodCxlKT0+e2NvbnN0IGk9MD09PWU/czpzLmNsb25lTm9kZSgpO3QuYXBwZW5kKGkpO3JldHVybiB0fSkpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ibGlua0Fubm90YXRpb24iO2kmJnRoaXMuY29udGFpbmVyLmFwcGVuZChzKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2JpbmRMaW5rKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO3Qub25jbGljaz0oKT0+e2UmJnRoaXMubGlua1NlcnZpY2UuZ29Ub0Rlc3RpbmF0aW9uKGUpO3JldHVybiExfTsoZXx8IiI9PT1lKSYmKHQuY2xhc3NOYW1lPSJpbnRlcm5hbExpbmsiKX1fYmluZE5hbWVkQWN0aW9uKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRBdHRhY2htZW50KHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmRvd25sb2FkTWFuYWdlcj8ub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLGUuY29udGVudCxlLmZpbGVuYW1lKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9I0FlKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVTZXRPQ0dTdGF0ZShlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRKU0FjdGlvbih0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7Y29uc3Qgcz1uZXcgTWFwKFtbIkFjdGlvbiIsIm9uY2xpY2siXSxbIk1vdXNlIFVwIiwib25tb3VzZXVwIl0sWyJNb3VzZSBEb3duIiwib25tb3VzZWRvd24iXV0pO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuYWN0aW9ucykpe2NvbnN0IG49cy5nZXQoaSk7biYmKHRbbl09KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZS5pZCxuYW1lOml9fSk7cmV0dXJuITF9KX10Lm9uY2xpY2t8fCh0Lm9uY2xpY2s9KCk9PiExKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIn1fYmluZFJlc2V0Rm9ybUFjdGlvbih0LGUpe2NvbnN0IHM9dC5vbmNsaWNrO3N8fCh0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIjtpZih0aGlzLl9maWVsZE9iamVjdHMpdC5vbmNsaWNrPSgpPT57cz8uKCk7Y29uc3R7ZmllbGRzOnQscmVmczpuLGluY2x1ZGU6cn09ZSxhPVtdO2lmKDAhPT10Lmxlbmd0aHx8MCE9PW4ubGVuZ3RoKXtjb25zdCBlPW5ldyBTZXQobik7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgdD10aGlzLl9maWVsZE9iamVjdHNbc118fFtdO2Zvcihjb25zdHtpZDpzfW9mIHQpZS5hZGQocyl9Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKWZvcihjb25zdCBzIG9mIHQpZS5oYXMocy5pZCk9PT1yJiZhLnB1c2gocyl9ZWxzZSBmb3IoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkT2JqZWN0cykpYS5wdXNoKC4uLnQpO2NvbnN0IG89dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxsPVtdO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0e2lkOmV9PXQ7bC5wdXNoKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2UidGV4dCI6e2NvbnN0IHM9dC5kZWZhdWx0VmFsdWV8fCIiO28uc2V0VmFsdWUoZSx7dmFsdWU6c30pO2JyZWFrfWNhc2UiY2hlY2tib3giOmNhc2UicmFkaW9idXR0b24iOntjb25zdCBzPXQuZGVmYXVsdFZhbHVlPT09dC5leHBvcnRWYWx1ZXM7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9Y2FzZSJjb21ib2JveCI6Y2FzZSJsaXN0Ym94Ijp7Y29uc3Qgcz10LmRlZmF1bHRWYWx1ZXx8IiI7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9ZGVmYXVsdDpjb250aW51ZX1jb25zdCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWVsZW1lbnQtaWQ9IiR7ZX0iXWApO3MmJihjLmhhcyhzKT9zLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNldGZvcm0iKSk6KDAsaS53YXJuKShgX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAke2V9YCkpfXRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ImFwcCIsaWRzOmwsbmFtZToiUmVzZXRGb3JtIn19KTtyZXR1cm4hMX07ZWxzZXsoMCxpLndhcm4pKCdfYmluZFJlc2V0Rm9ybUFjdGlvbiAtICJyZXNldEZvcm0iIGFjdGlvbiBub3Qgc3VwcG9ydGVkLCBlbnN1cmUgdGhhdCB0aGUgYGZpZWxkT2JqZWN0c2AgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO3N8fCh0Lm9uY2xpY2s9KCk9PiExKX19fWNsYXNzIFRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ0ZXh0QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTt0LnNyYz10aGlzLmltYWdlUmVzb3VyY2VzUGF0aCsiYW5ub3RhdGlvbi0iK3RoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkrIi5zdmciO3QuYWx0PSJbe3t0eXBlfX0gQW5ub3RhdGlvbl0iO3QuZGF0YXNldC5sMTBuSWQ9InRleHRfYW5ub3RhdGlvbl90eXBlIjt0LmRhdGFzZXQubDEwbkFyZ3M9SlNPTi5zdHJpbmdpZnkoe3R5cGU6dGhpcy5kYXRhLm5hbWV9KTt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKHQsdGhpcy5kYXRhKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e3JlbmRlcigpe3RoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJih0aGlzLmNvbnRhaW5lci50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2dldEtleU1vZGlmaWVyKHQpe2NvbnN0e2lzV2luOmUsaXNNYWM6c309QW5ub3RhdGlvbkVsZW1lbnQucGxhdGZvcm07cmV0dXJuIGUmJnQuY3RybEtleXx8cyYmdC5tZXRhS2V5fV9zZXRFdmVudExpc3RlbmVyKHQsZSxzLGkpe2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6dGhpcy5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpfX0pfSkpfV9zZXRFdmVudExpc3RlbmVycyh0LGUscyl7Zm9yKGNvbnN0W2ksbl1vZiBlKSgiQWN0aW9uIj09PW58fHRoaXMuZGF0YS5hY3Rpb25zPy5bbl0pJiZ0aGlzLl9zZXRFdmVudExpc3RlbmVyKHQsaSxuLHMpfV9zZXRCYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yfHxudWxsO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPW51bGw9PT1lPyJ0cmFuc3BhcmVudCI6aS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLGVbMV0sZVsyXSl9X3NldFRleHRTdHlsZSh0KXtjb25zdCBlPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0se2ZvbnRDb2xvcjpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8OSxyPXQuc3R5bGU7bGV0IGE7Y29uc3Qgcm91bmRUb09uZURlY2ltYWw9dD0+TWF0aC5yb3VuZCgxMCp0KS8xMDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGU9dC8oTWF0aC5yb3VuZCh0LyhpLkxJTkVfRkFDVE9SKm4pKXx8MSk7YT1NYXRoLm1pbihuLHJvdW5kVG9PbmVEZWNpbWFsKGUvaS5MSU5FX0ZBQ1RPUikpfWVsc2V7Y29uc3QgdD1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTthPU1hdGgubWluKG4scm91bmRUb09uZURlY2ltYWwodC9pLkxJTkVfRkFDVE9SKSl9ci5mb250U2l6ZT1gY2FsYygke2F9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5jb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtudWxsIT09dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQmJihyLnRleHRBbGlnbj1lW3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50XSl9X3NldFJlcXVpcmVkKHQsZSl7ZT90LnNldEF0dHJpYnV0ZSgicmVxdWlyZWQiLCEwKTp0LnJlbW92ZUF0dHJpYnV0ZSgicmVxdWlyZWQiKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsZSl9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWV9KX1zZXRQcm9wZXJ0eU9uU2libGluZ3ModCxlLHMsaSl7Y29uc3Qgbj10aGlzLmFubm90YXRpb25TdG9yYWdlO2Zvcihjb25zdCByIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSl7ci5kb21FbGVtZW50JiYoci5kb21FbGVtZW50W2VdPXMpO24uc2V0VmFsdWUoci5pZCx7W2ldOnN9KX19cmVuZGVyKCl7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0idGV4dFdpZGdldEFubm90YXRpb24iO2xldCBzPW51bGw7aWYodGhpcy5yZW5kZXJGb3Jtcyl7Y29uc3QgaT10LmdldFZhbHVlKGUse3ZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfSk7bGV0IG49aS5mb3JtYXR0ZWRWYWx1ZXx8aS52YWx1ZXx8IiI7Y29uc3Qgcj10LmdldFZhbHVlKGUse2NoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVufSkuY2hhckxpbWl0O3ImJm4ubGVuZ3RoPnImJihuPW4uc2xpY2UoMCxyKSk7Y29uc3QgYT17dXNlclZhbHVlOm4sZm9ybWF0dGVkVmFsdWU6bnVsbCx2YWx1ZU9uRm9jdXM6IiJ9O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtzLnRleHRDb250ZW50PW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYocy5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpfWVsc2V7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3MudHlwZT0idGV4dCI7cy5zZXRBdHRyaWJ1dGUoInZhbHVlIixuKTt0aGlzLmRhdGEuZG9Ob3RTY3JvbGwmJihzLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIil9Yy5hZGQocyk7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7cy5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7cy5uYW1lPXRoaXMuZGF0YS5maWVsZE5hbWU7cy50YWJJbmRleD1sO3RoaXMuX3NldFJlcXVpcmVkKHMsdGhpcy5kYXRhLnJlcXVpcmVkKTtyJiYocy5tYXhMZW5ndGg9cik7cy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGk9Pnt0LnNldFZhbHVlKGUse3ZhbHVlOmkudGFyZ2V0LnZhbHVlfSk7dGhpcy5zZXRQcm9wZXJ0eU9uU2libGluZ3MocywidmFsdWUiLGkudGFyZ2V0LnZhbHVlLCJ2YWx1ZSIpfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPz8iIjtzLnZhbHVlPWEudXNlclZhbHVlPWU7YS5mb3JtYXR0ZWRWYWx1ZT1udWxsfSkpO2xldCBibHVyTGlzdGVuZXI9dD0+e2NvbnN0e2Zvcm1hdHRlZFZhbHVlOmV9PWE7bnVsbCE9ZSYmKHQudGFyZ2V0LnZhbHVlPWUpO3QudGFyZ2V0LnNjcm9sbExlZnQ9MH07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwodD0+e2EudXNlclZhbHVlJiYodC50YXJnZXQudmFsdWU9YS51c2VyVmFsdWUpO2EudmFsdWVPbkZvY3VzPXQudGFyZ2V0LnZhbHVlfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChzPT57Y29uc3QgaT17dmFsdWUocyl7YS51c2VyVmFsdWU9cy5kZXRhaWwudmFsdWU/PyIiO3Quc2V0VmFsdWUoZSx7dmFsdWU6YS51c2VyVmFsdWUudG9TdHJpbmcoKX0pO3MudGFyZ2V0LnZhbHVlPWEudXNlclZhbHVlfSxmb3JtYXR0ZWRWYWx1ZShzKXtjb25zdHtmb3JtYXR0ZWRWYWx1ZTppfT1zLmRldGFpbDthLmZvcm1hdHRlZFZhbHVlPWk7bnVsbCE9aSYmcy50YXJnZXQhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYocy50YXJnZXQudmFsdWU9aSk7dC5zZXRWYWx1ZShlLHtmb3JtYXR0ZWRWYWx1ZTppfSl9LHNlbFJhbmdlKHQpe3QudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKX0sY2hhckxpbWl0OnM9Pntjb25zdHtjaGFyTGltaXQ6aX09cy5kZXRhaWwse3RhcmdldDpufT1zO2lmKDA9PT1pKXtuLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIik7cmV0dXJufW4uc2V0QXR0cmlidXRlKCJtYXhMZW5ndGgiLGkpO2xldCByPWEudXNlclZhbHVlO2lmKHImJiEoci5sZW5ndGg8PWkpKXtyPXIuc2xpY2UoMCxpKTtuLnZhbHVlPWEudXNlclZhbHVlPXI7dC5zZXRWYWx1ZShlLHt2YWx1ZTpyfSk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpyLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6bi5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6bi5zZWxlY3Rpb25FbmR9fSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGkscyl9KSk7cy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e2xldCBzPS0xOyJFc2NhcGUiPT09dC5rZXk/cz0wOiJFbnRlciIhPT10LmtleXx8dGhpcy5kYXRhLm11bHRpTGluZT8iVGFiIj09PXQua2V5JiYocz0zKTpzPTI7aWYoLTE9PT1zKXJldHVybjtjb25zdHt2YWx1ZTppfT10LnRhcmdldDtpZihhLnZhbHVlT25Gb2N1cyE9PWkpe2EudXNlclZhbHVlPWk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OnMsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KX19KSk7Y29uc3QgaT1ibHVyTGlzdGVuZXI7Ymx1ckxpc3RlbmVyPW51bGw7cy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwodD0+e2NvbnN0e3ZhbHVlOnN9PXQudGFyZ2V0O2EudXNlclZhbHVlPXM7dGhpcy5fbW91c2VTdGF0ZS5pc0Rvd24mJmEudmFsdWVPbkZvY3VzIT09cyYmdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpzLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KTtpKHQpfSkpO3RoaXMuZGF0YS5hY3Rpb25zPy5LZXlzdHJva2UmJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCh0PT57Y29uc3R7ZGF0YTpzLHRhcmdldDppfT10LHt2YWx1ZTpuLHNlbGVjdGlvblN0YXJ0OnIsc2VsZWN0aW9uRW5kOmF9PWk7bGV0IG89cixsPWE7c3dpdGNoKHQuaW5wdXRUeXBlKXtjYXNlImRlbGV0ZVdvcmRCYWNrd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcoMCxyKS5tYXRjaCgvXHcqW15cd10qJC8pO3QmJihvLT10WzBdLmxlbmd0aCk7YnJlYWt9Y2FzZSJkZWxldGVXb3JkRm9yd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcocikubWF0Y2goL15bXlx3XSpcdyovKTt0JiYobCs9dFswXS5sZW5ndGgpO2JyZWFrfWNhc2UiZGVsZXRlQ29udGVudEJhY2t3YXJkIjpyPT09YSYmKG8tPTEpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEZvcndhcmQiOnI9PT1hJiYobCs9MSl9dC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2U6c3x8IiIsd2lsbENvbW1pdDohMSxzZWxTdGFydDpvLHNlbEVuZDpsfX0pfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKHMsW1siZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQudmFsdWUpKX1ibHVyTGlzdGVuZXImJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsYmx1ckxpc3RlbmVyKTtpZih0aGlzLmRhdGEuY29tYil7Y29uc3QgdD0odGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0pL3I7cy5jbGFzc0xpc3QuYWRkKCJjb21iIik7cy5zdHlsZS5sZXR0ZXJTcGFjaW5nPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikgLSAxY2gpYH19ZWxzZXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWU7cy5zdHlsZS52ZXJ0aWNhbEFsaWduPSJtaWRkbGUiO3Muc3R5bGUuZGlzcGxheT0idGFibGUtY2VsbCJ9dGhpcy5fc2V0VGV4dFN0eWxlKHMpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihzKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQocyk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXtjb25zdCB0PXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsZT10aGlzLmRhdGEscz1lLmlkO2xldCBpPXQuZ2V0VmFsdWUocyx7dmFsdWU6ZS5leHBvcnRWYWx1ZT09PWUuZmllbGRWYWx1ZX0pLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aT0iT2ZmIiE9PWk7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJidXR0b25XaWRnZXRBbm5vdGF0aW9uIGNoZWNrQm94Ijtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5hZGQobik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIscyk7bi5kaXNhYmxlZD1lLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKG4sdGhpcy5kYXRhLnJlcXVpcmVkKTtuLnR5cGU9ImNoZWNrYm94IjtuLm5hbWU9ZS5maWVsZE5hbWU7aSYmbi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTtuLnNldEF0dHJpYnV0ZSgiZXhwb3J0VmFsdWUiLGUuZXhwb3J0VmFsdWUpO24udGFiSW5kZXg9bDtuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGk9Pntjb25zdHtuYW1lOm4sY2hlY2tlZDpyfT1pLnRhcmdldDtmb3IoY29uc3QgaSBvZiB0aGlzLl9nZXRFbGVtZW50c0J5TmFtZShuLHMpKXtjb25zdCBzPXImJmkuZXhwb3J0VmFsdWU9PT1lLmV4cG9ydFZhbHVlO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPXMpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6c30pfXQuc2V0VmFsdWUocyx7dmFsdWU6cn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZXx8Ik9mZiI7dC50YXJnZXQuY2hlY2tlZD1zPT09ZS5leHBvcnRWYWx1ZX0pKTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3QgaT17dmFsdWUoZSl7ZS50YXJnZXQuY2hlY2tlZD0iT2ZmIiE9PWUuZGV0YWlsLnZhbHVlO3Quc2V0VmFsdWUocyx7dmFsdWU6ZS50YXJnZXQuY2hlY2tlZH0pfX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGksZSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMobixbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9dGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKG4pO3RoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKG4pO3RoaXMuY29udGFpbmVyLmFwcGVuZChuKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiByYWRpb0J1dHRvbiI7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLHM9ZS5pZDtsZXQgaT10LmdldFZhbHVlKHMse3ZhbHVlOmUuZmllbGRWYWx1ZT09PWUuYnV0dG9uVmFsdWV9KS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2k9aSE9PWUuYnV0dG9uVmFsdWU7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2MuYWRkKG4pO24uc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO24uZGlzYWJsZWQ9ZS5yZWFkT25seTt0aGlzLl9zZXRSZXF1aXJlZChuLHRoaXMuZGF0YS5yZXF1aXJlZCk7bi50eXBlPSJyYWRpbyI7bi5uYW1lPWUuZmllbGROYW1lO2kmJm4uc2V0QXR0cmlidXRlKCJjaGVja2VkIiwhMCk7bi50YWJJbmRleD1sO24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoZT0+e2NvbnN0e25hbWU6aSxjaGVja2VkOm59PWUudGFyZ2V0O2Zvcihjb25zdCBlIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGkscykpdC5zZXRWYWx1ZShlLmlkLHt2YWx1ZTohMX0pO3Quc2V0VmFsdWUocyx7dmFsdWU6bn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZTt0LnRhcmdldC5jaGVja2VkPW51bGwhPXMmJnM9PT1lLmJ1dHRvblZhbHVlfSkpO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7Y29uc3QgaT1lLmJ1dHRvblZhbHVlO24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3Qgbj17dmFsdWU6ZT0+e2NvbnN0IG49aT09PWUuZGV0YWlsLnZhbHVlO2Zvcihjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGUudGFyZ2V0Lm5hbWUpKXtjb25zdCBlPW4mJmkuaWQ9PT1zO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPWUpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6ZX0pfX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLGUpfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKG4sW1siY2hhbmdlIiwiVmFsaWRhdGUiXSxbImNoYW5nZSIsIkFjdGlvbiJdLFsiZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQuY2hlY2tlZCkpfXRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBMaW5rQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aWdub3JlQm9yZGVyOnQuZGF0YS5oYXNBcHBlYXJhbmNlfSl9cmVuZGVyKCl7Y29uc3QgdD1zdXBlci5yZW5kZXIoKTt0LmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBwdXNoQnV0dG9uIjt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodC50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtjb25zdCBlPXQubGFzdENoaWxkO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmZSl7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKHQ9Pnt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goe30sdCl9KSl9cmV0dXJuIHR9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNob2ljZVdpZGdldEFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxlPXRoaXMuZGF0YS5pZCxzPXQuZ2V0VmFsdWUoZSx7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2MuYWRkKGkpO2kuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLGUpO2kuZGlzYWJsZWQ9dGhpcy5kYXRhLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKGksdGhpcy5kYXRhLnJlcXVpcmVkKTtpLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZTtpLnRhYkluZGV4PWw7bGV0IG49dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDtpZighdGhpcy5kYXRhLmNvbWJvKXtpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO3RoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApfWkuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPXQudmFsdWU9PT1lfSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO2UudGV4dENvbnRlbnQ9dC5kaXNwbGF5VmFsdWU7ZS52YWx1ZT10LmV4cG9ydFZhbHVlO2lmKHMudmFsdWUuaW5jbHVkZXModC5leHBvcnRWYWx1ZSkpe2Uuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApO249ITF9aS5hcHBlbmQoZSl9bGV0IHI9bnVsbDtpZihuKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3QudmFsdWU9IiAiO3Quc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTt0LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTtpLnByZXBlbmQodCk7cj0oKT0+e3QucmVtb3ZlKCk7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIscik7cj1udWxsfTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKX1jb25zdCBnZXRWYWx1ZT0odCxlKT0+e2NvbnN0IHM9ZT8idmFsdWUiOiJ0ZXh0Q29udGVudCIsaT10LnRhcmdldC5vcHRpb25zO3JldHVybiB0LnRhcmdldC5tdWx0aXBsZT9BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoaSwodD0+dC5zZWxlY3RlZCkpLm1hcCgodD0+dFtzXSkpOi0xPT09aS5zZWxlY3RlZEluZGV4P251bGw6aVtpLnNlbGVjdGVkSW5kZXhdW3NdfSxnZXRJdGVtcz10PT57Y29uc3QgZT10LnRhcmdldC5vcHRpb25zO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwodD0+KHtkaXNwbGF5VmFsdWU6dC50ZXh0Q29udGVudCxleHBvcnRWYWx1ZTp0LnZhbHVlfSkpKX07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtpLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94Iiwocz0+e2NvbnN0IG49e3ZhbHVlKHMpe3I/LigpO2NvbnN0IG49cy5kZXRhaWwudmFsdWUsYT1uZXcgU2V0KEFycmF5LmlzQXJyYXkobik/bjpbbl0pO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPWEuaGFzKHQudmFsdWUpO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUocywhMCl9KX0sbXVsdGlwbGVTZWxlY3Rpb24odCl7aS5tdWx0aXBsZT0hMH0scmVtb3ZlKHMpe2NvbnN0IG49aS5vcHRpb25zLHI9cy5kZXRhaWwucmVtb3ZlO25bcl0uc2VsZWN0ZWQ9ITE7aS5yZW1vdmUocik7aWYobi5sZW5ndGg+MCl7LTE9PT1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwobiwodD0+dC5zZWxlY3RlZCkpJiYoblswXS5zZWxlY3RlZD0hMCl9dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxjbGVhcihzKXtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpudWxsLGl0ZW1zOltdfSl9LGluc2VydChzKXtjb25zdHtpbmRleDpuLGRpc3BsYXlWYWx1ZTpyLGV4cG9ydFZhbHVlOmF9PXMuZGV0YWlsLmluc2VydCxvPWkuY2hpbGRyZW5bbl0sbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtsLnRleHRDb250ZW50PXI7bC52YWx1ZT1hO28/by5iZWZvcmUobCk6aS5hcHBlbmQobCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxpdGVtcyhzKXtjb25zdHtpdGVtczpufT1zLmRldGFpbDtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3R7ZGlzcGxheVZhbHVlOmUsZXhwb3J0VmFsdWU6c309dCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO24udGV4dENvbnRlbnQ9ZTtuLnZhbHVlPXM7aS5hcHBlbmQobil9aS5vcHRpb25zLmxlbmd0aD4wJiYoaS5vcHRpb25zWzBdLnNlbGVjdGVkPSEwKTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApLGl0ZW1zOmdldEl0ZW1zKHMpfSl9LGluZGljZXMocyl7Y29uc3QgaT1uZXcgU2V0KHMuZGV0YWlsLmluZGljZXMpO2Zvcihjb25zdCB0IG9mIHMudGFyZ2V0Lm9wdGlvbnMpdC5zZWxlY3RlZD1pLmhhcyh0LmluZGV4KTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApfSl9LGVkaXRhYmxlKHQpe3QudGFyZ2V0LmRpc2FibGVkPSF0LmRldGFpbC5lZGl0YWJsZX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLHMpfSkpO2kuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChzPT57Y29uc3QgaT1nZXRWYWx1ZShzLCEwKSxuPWdldFZhbHVlKHMsITEpO3Quc2V0VmFsdWUoZSx7dmFsdWU6aX0pO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2VFeDppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsa2V5RG93bjohMX19KX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhpLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXSxbImlucHV0IiwiQWN0aW9uIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9ZWxzZSBpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24ocyl7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKX0pfSkpO3RoaXMuZGF0YS5jb21ibyYmdGhpcy5fc2V0VGV4dFN0eWxlKGkpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihpKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhpKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7c3RhdGljIElHTk9SRV9UWVBFUz1uZXcgU2V0KFsiTGluZSIsIlNxdWFyZSIsIkNpcmNsZSIsIlBvbHlMaW5lIiwiUG9seWdvbiIsIkluayJdKTtjb25zdHJ1Y3Rvcih0KXtjb25zdHtkYXRhOmV9PXQ7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiFQb3B1cEFubm90YXRpb25FbGVtZW50LklHTk9SRV9UWVBFUy5oYXMoZS5wYXJlbnRUeXBlKSYmISEoZS50aXRsZU9iaj8uc3RyfHxlLmNvbnRlbnRzT2JqPy5zdHJ8fGUucmljaFRleHQ/LnN0cil9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InBvcHVwQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmxheWVyLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7dGhpcy5kYXRhLnBhcmVudElkfSJdYCk7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmNvbnRhaW5lcjtjb25zdCBlPW5ldyBQb3B1cEVsZW1lbnQoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOkFycmF5LmZyb20odCksY29sb3I6dGhpcy5kYXRhLmNvbG9yLHRpdGxlT2JqOnRoaXMuZGF0YS50aXRsZU9iaixtb2RpZmljYXRpb25EYXRlOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOnRoaXMuZGF0YS5jb250ZW50c09iaixyaWNoVGV4dDp0aGlzLmRhdGEucmljaFRleHR9KSxzPXRoaXMucGFnZSxuPWkuVXRpbC5ub3JtYWxpemVSZWN0KFt0aGlzLmRhdGEucGFyZW50UmVjdFswXSxzLnZpZXdbM10tdGhpcy5kYXRhLnBhcmVudFJlY3RbMV0rcy52aWV3WzFdLHRoaXMuZGF0YS5wYXJlbnRSZWN0WzJdLHMudmlld1szXS10aGlzLmRhdGEucGFyZW50UmVjdFszXStzLnZpZXdbMV1dKSxyPW5bMF0rdGhpcy5kYXRhLnBhcmVudFJlY3RbMl0tdGhpcy5kYXRhLnBhcmVudFJlY3RbMF0sYT1uWzFdLFtvLGwsYyxoXT10aGlzLnZpZXdwb3J0LnZpZXdCb3gsZD1jLW8sdT1oLWw7dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0xMDAqKHItbykvZCsiJSI7dGhpcy5jb250YWluZXIuc3R5bGUudG9wPTEwMCooYS1sKS91KyIlIjt0aGlzLmNvbnRhaW5lci5hcHBlbmQoZS5yZW5kZXIoKSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEVsZW1lbnR7Y29uc3RydWN0b3IodCl7dGhpcy5jb250YWluZXI9dC5jb250YWluZXI7dGhpcy50cmlnZ2VyPXQudHJpZ2dlcjt0aGlzLmNvbG9yPXQuY29sb3I7dGhpcy50aXRsZU9iaj10LnRpdGxlT2JqO3RoaXMubW9kaWZpY2F0aW9uRGF0ZT10Lm1vZGlmaWNhdGlvbkRhdGU7dGhpcy5jb250ZW50c09iaj10LmNvbnRlbnRzT2JqO3RoaXMucmljaFRleHQ9dC5yaWNoVGV4dDt0aGlzLmhpZGVXcmFwcGVyPXQuaGlkZVdyYXBwZXJ8fCExO3RoaXMucGlubmVkPSExfXJlbmRlcigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InBvcHVwV3JhcHBlciI7dGhpcy5oaWRlRWxlbWVudD10aGlzLmhpZGVXcmFwcGVyP3Q6dGhpcy5jb250YWluZXI7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0icG9wdXAiO2NvbnN0IHM9dGhpcy5jb2xvcjtpZihzKXtjb25zdCB0PS43KigyNTUtc1swXSkrc1swXSxuPS43KigyNTUtc1sxXSkrc1sxXSxyPS43KigyNTUtc1syXSkrc1syXTtlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKDB8dCwwfG4sMHxyKX1jb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7ci5kaXI9dGhpcy50aXRsZU9iai5kaXI7ci50ZXh0Q29udGVudD10aGlzLnRpdGxlT2JqLnN0cjtlLmFwcGVuZChyKTtjb25zdCBhPW4uUERGRGF0ZVN0cmluZy50b0RhdGVPYmplY3QodGhpcy5tb2RpZmljYXRpb25EYXRlKTtpZihhKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LmNsYXNzTmFtZT0icG9wdXBEYXRlIjt0LnRleHRDb250ZW50PSJ7e2RhdGV9fSwge3t0aW1lfX0iO3QuZGF0YXNldC5sMTBuSWQ9ImFubm90YXRpb25fZGF0ZV9zdHJpbmciO3QuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7ZGF0ZTphLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRpbWU6YS50b0xvY2FsZVRpbWVTdHJpbmcoKX0pO2UuYXBwZW5kKHQpfWlmKCF0aGlzLnJpY2hUZXh0Py5zdHJ8fHRoaXMuY29udGVudHNPYmo/LnN0ciYmdGhpcy5jb250ZW50c09iai5zdHIhPT10aGlzLnJpY2hUZXh0LnN0cil7Y29uc3QgdD10aGlzLl9mb3JtYXRDb250ZW50cyh0aGlzLmNvbnRlbnRzT2JqKTtlLmFwcGVuZCh0KX1lbHNle28uWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOnRoaXMucmljaFRleHQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6ZX0pO2UubGFzdENoaWxkLmNsYXNzTmFtZT0icmljaFRleHQgcG9wdXBDb250ZW50In1BcnJheS5pc0FycmF5KHRoaXMudHJpZ2dlcil8fCh0aGlzLnRyaWdnZXI9W3RoaXMudHJpZ2dlcl0pO2Zvcihjb25zdCB0IG9mIHRoaXMudHJpZ2dlcil7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fdG9nZ2xlLmJpbmQodGhpcykpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLl9zaG93LmJpbmQodGhpcywhMSkpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLHRoaXMuX2hpZGUuYmluZCh0aGlzLCExKSl9ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGlkZS5iaW5kKHRoaXMsITApKTt0LmFwcGVuZChlKTtyZXR1cm4gdH1fZm9ybWF0Q29udGVudHMoe3N0cjp0LGRpcjplfSl7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cy5jbGFzc05hbWU9InBvcHVwQ29udGVudCI7cy5kaXI9ZTtjb25zdCBpPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS8pO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlOysrdCl7Y29uc3Qgbj1pW3RdO3MuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKTt0PGUtMSYmcy5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9cmV0dXJuIHN9X3RvZ2dsZSgpe3RoaXMucGlubmVkP3RoaXMuX2hpZGUoITApOnRoaXMuX3Nob3coITApfV9zaG93KHQ9ITEpe3QmJih0aGlzLnBpbm5lZD0hMCk7aWYodGhpcy5oaWRlRWxlbWVudC5oaWRkZW4pe3RoaXMuaGlkZUVsZW1lbnQuaGlkZGVuPSExO3RoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpKzFlM319X2hpZGUodD0hMCl7dCYmKHRoaXMucGlubmVkPSExKTtpZighdGhpcy5oaWRlRWxlbWVudC5oaWRkZW4mJiF0aGlzLnBpbm5lZCl7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7dGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4PXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCktMWUzfX19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pO3RoaXMudGV4dENvbnRlbnQ9dC5kYXRhLnRleHRDb250ZW50fXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iZnJlZVRleHRBbm5vdGF0aW9uIjtpZih0aGlzLnRleHRDb250ZW50KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJhbm5vdGF0aW9uVGV4dENvbnRlbnQiO3Quc2V0QXR0cmlidXRlKCJyb2xlIiwiY29tbWVudCIpO2Zvcihjb25zdCBlIG9mIHRoaXMudGV4dENvbnRlbnQpe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3MudGV4dENvbnRlbnQ9ZTt0LmFwcGVuZChzKX10aGlzLmNvbnRhaW5lci5hcHBlbmQodCl9dGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBMaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmVBbm5vdGF0aW9uIjtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKSxuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6bGluZSIpO24uc2V0QXR0cmlidXRlKCJ4MSIsdC5yZWN0WzJdLXQubGluZUNvb3JkaW5hdGVzWzBdKTtuLnNldEF0dHJpYnV0ZSgieTEiLHQucmVjdFszXS10LmxpbmVDb29yZGluYXRlc1sxXSk7bi5zZXRBdHRyaWJ1dGUoIngyIix0LnJlY3RbMl0tdC5saW5lQ29vcmRpbmF0ZXNbMl0pO24uc2V0QXR0cmlidXRlKCJ5MiIsdC5yZWN0WzNdLXQubGluZUNvb3JkaW5hdGVzWzNdKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LmJvcmRlclN0eWxlLndpZHRofHwxKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKTtuLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50Iik7aS5hcHBlbmQobik7dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3F1YXJlQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0OnN9PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUscywhMCksbj10LmJvcmRlclN0eWxlLndpZHRoLHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7ci5zZXRBdHRyaWJ1dGUoIngiLG4vMik7ci5zZXRBdHRyaWJ1dGUoInkiLG4vMik7ci5zZXRBdHRyaWJ1dGUoIndpZHRoIixlLW4pO3Iuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMtbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsbnx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNpcmNsZUFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApLG49dC5ib3JkZXJTdHlsZS53aWR0aCxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZWxsaXBzZSIpO3Iuc2V0QXR0cmlidXRlKCJjeCIsZS8yKTtyLnNldEF0dHJpYnV0ZSgiY3kiLHMvMik7ci5zZXRBdHRyaWJ1dGUoInJ4IixlLzItbi8yKTtyLnNldEF0dHJpYnV0ZSgicnkiLHMvMi1uLzIpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLG58fDEpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Iuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChyKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dGhpcy5fY3JlYXRlUG9wdXAocix0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWxpbmVBbm5vdGF0aW9uIjt0aGlzLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWxpbmUifXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT10aGlzLmNvbnRhaW5lckNsYXNzTmFtZTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKTtsZXQgbj1bXTtmb3IoY29uc3QgZSBvZiB0LnZlcnRpY2VzKXtjb25zdCBzPWUueC10LnJlY3RbMF0saT10LnJlY3RbM10tZS55O24ucHVzaChzKyIsIitpKX1uPW4uam9pbigiICIpO2NvbnN0IHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7ci5zZXRBdHRyaWJ1dGUoInBvaW50cyIsbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgUG9seWdvbkFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWdvbkFubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5Z29uIn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iY2FyZXRBbm5vdGF0aW9uIjt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIElua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSk7dGhpcy5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSJ9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPXRoaXMuY29udGFpbmVyQ2xhc3NOYW1lO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApO2Zvcihjb25zdCBlIG9mIHQuaW5rTGlzdHMpe2xldCBzPVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9aS54LXQucmVjdFswXSxuPXQucmVjdFszXS1pLnk7cy5wdXNoKGAke2V9LCR7bn1gKX1zPXMuam9pbigiICIpO2NvbnN0IG49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7bi5zZXRBdHRyaWJ1dGUoInBvaW50cyIscyk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7bi5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7aS5hcHBlbmQobil9dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygiaGlnaGxpZ2h0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGxpZ2h0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJlbmRlcigpe3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO2lmKHRoaXMucXVhZHJpbGF0ZXJhbHMpcmV0dXJuIHRoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJ1bmRlcmxpbmVBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ1bmRlcmxpbmVBbm5vdGF0aW9uIjtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3F1aWdnbHlBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzcXVpZ2dseUFubm90YXRpb24iO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3RyaWtlb3V0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3RyaWtlb3V0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTdGFtcEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzdGFtcEFubm90YXRpb24iO3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMH0pO2NvbnN0e2ZpbGVuYW1lOmUsY29udGVudDpzfT10aGlzLmRhdGEuZmlsZTt0aGlzLmZpbGVuYW1lPSgwLG4uZ2V0RmlsZW5hbWVGcm9tVXJsKShlKTt0aGlzLmNvbnRlbnQ9czt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZmlsZWF0dGFjaG1lbnRhbm5vdGF0aW9uIix7c291cmNlOnRoaXMsZmlsZW5hbWU6ZSxjb250ZW50OnN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsdGhpcy5fZG93bmxvYWQuYmluZCh0aGlzKSk7IXRoaXMuZGF0YS5oYXNQb3B1cCYmKHRoaXMuZGF0YS50aXRsZU9iaj8uc3RyfHx0aGlzLmRhdGEuY29udGVudHNPYmo/LnN0cnx8dGhpcy5kYXRhLnJpY2hUZXh0KSYmdGhpcy5fY3JlYXRlUG9wdXAodCx0aGlzLmRhdGEpO3RoaXMuY29udGFpbmVyLmFwcGVuZCh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2Rvd25sb2FkKCl7dGhpcy5kb3dubG9hZE1hbmFnZXI/Lm9wZW5PckRvd25sb2FkRGF0YSh0aGlzLmNvbnRhaW5lcix0aGlzLmNvbnRlbnQsdGhpcy5maWxlbmFtZSl9fWNsYXNzIEFubm90YXRpb25MYXllcntzdGF0aWMjX2UodCxlLHMsaSl7Y29uc3Qgcj10LmZpcnN0Q2hpbGR8fHQ7ci5pZD1gJHtuLkFubm90YXRpb25QcmVmaXh9JHtlfWA7cy5hcHBlbmQodCk7aT8ubW92ZUVsZW1lbnRJbkRPTShzLHQsciwhMSl9c3RhdGljIHJlbmRlcih0KXtjb25zdHthbm5vdGF0aW9uczplLGRpdjpzLHZpZXdwb3J0OmEsYWNjZXNzaWJpbGl0eU1hbmFnZXI6b309dDt0aGlzLiN2ZShzLGEpO2xldCBsPTA7Zm9yKGNvbnN0IGMgb2YgZSl7aWYoYy5hbm5vdGF0aW9uVHlwZSE9PWkuQW5ub3RhdGlvblR5cGUuUE9QVVApe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmV9PWdldFJlY3REaW1zKGMucmVjdCk7aWYodDw9MHx8ZTw9MCljb250aW51ZX1jb25zdCBlPUFubm90YXRpb25FbGVtZW50RmFjdG9yeS5jcmVhdGUoe2RhdGE6YyxsYXllcjpzLHBhZ2U6dC5wYWdlLHZpZXdwb3J0OmEsbGlua1NlcnZpY2U6dC5saW5rU2VydmljZSxkb3dubG9hZE1hbmFnZXI6dC5kb3dubG9hZE1hbmFnZXIsaW1hZ2VSZXNvdXJjZXNQYXRoOnQuaW1hZ2VSZXNvdXJjZXNQYXRofHwiIixyZW5kZXJGb3JtczohMSE9PXQucmVuZGVyRm9ybXMsc3ZnRmFjdG9yeTpuZXcgbi5ET01TVkdGYWN0b3J5LGFubm90YXRpb25TdG9yYWdlOnQuYW5ub3RhdGlvblN0b3JhZ2V8fG5ldyByLkFubm90YXRpb25TdG9yYWdlLGVuYWJsZVNjcmlwdGluZzp0LmVuYWJsZVNjcmlwdGluZyxoYXNKU0FjdGlvbnM6dC5oYXNKU0FjdGlvbnMsZmllbGRPYmplY3RzOnQuZmllbGRPYmplY3RzLG1vdXNlU3RhdGU6dC5tb3VzZVN0YXRlfHx7aXNEb3duOiExfX0pO2lmKGUuaXNSZW5kZXJhYmxlKXtjb25zdCB0PWUucmVuZGVyKCk7Yy5oaWRkZW4mJih0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdCl7ZS5zdHlsZS56SW5kZXg9bCsrO0Fubm90YXRpb25MYXllci4jX2UoZSxjLmlkLHMsbyl9ZWxzZXt0LnN0eWxlLnpJbmRleD1sKys7ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQ/cy5wcmVwZW5kKHQpOkFubm90YXRpb25MYXllci4jX2UodCxjLmlkLHMsbyl9fX10aGlzLiN5ZShzLHQuYW5ub3RhdGlvbkNhbnZhc01hcCl9c3RhdGljIHVwZGF0ZSh0KXtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmUsZGl2OnMsdmlld3BvcnQ6aX09dDt0aGlzLiN2ZShzLGkpO3RoaXMuI3llKHMsZSk7cy5oaWRkZW49ITF9c3RhdGljI3ZlKHQse3dpZHRoOmUsaGVpZ2h0OnMscm90YXRpb246aX0pe2NvbnN0e3N0eWxlOm59PXQscj1pJTE4MCE9MCxhPU1hdGguZmxvb3IoZSkrInB4IixvPU1hdGguZmxvb3IocykrInB4IjtuLndpZHRoPXI/bzphO24uaGVpZ2h0PXI/YTpvO3Quc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLGkpfXN0YXRpYyN5ZSh0LGUpe2lmKGUpe2Zvcihjb25zdFtzLGldb2YgZSl7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7c30iXWApO2lmKCFlKWNvbnRpbnVlO2NvbnN0e2ZpcnN0Q2hpbGQ6bn09ZTtuPyJDQU5WQVMiPT09bi5ub2RlTmFtZT9uLnJlcGxhY2VXaXRoKGkpOm4uYmVmb3JlKGkpOmUuYXBwZW5kKGkpfWUuY2xlYXIoKX19fWUuQW5ub3RhdGlvbkxheWVyPUFubm90YXRpb25MYXllcn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Db2xvckNvbnZlcnRlcnM9dm9pZCAwO2Z1bmN0aW9uIG1ha2VDb2xvckNvbXAodCl7cmV0dXJuIE1hdGguZmxvb3IoMjU1Kk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9ZS5Db2xvckNvbnZlcnRlcnM9Y2xhc3MgQ29sb3JDb252ZXJ0ZXJze3N0YXRpYyBDTVlLX0coW3QsZSxzLGldKXtyZXR1cm5bIkciLDEtTWF0aC5taW4oMSwuMyp0Ky41OSpzKy4xMSplK2kpXX1zdGF0aWMgR19DTVlLKFt0XSl7cmV0dXJuWyJDTVlLIiwwLDAsMCwxLXRdfXN0YXRpYyBHX1JHQihbdF0pe3JldHVyblsiUkdCIix0LHQsdF19c3RhdGljIEdfSFRNTChbdF0pe2NvbnN0IGU9bWFrZUNvbG9yQ29tcCh0KTtyZXR1cm5gIyR7ZX0ke2V9JHtlfWB9c3RhdGljIFJHQl9HKFt0LGUsc10pe3JldHVyblsiRyIsLjMqdCsuNTkqZSsuMTEqc119c3RhdGljIFJHQl9IVE1MKFt0LGUsc10pe3JldHVybmAjJHttYWtlQ29sb3JDb21wKHQpfSR7bWFrZUNvbG9yQ29tcChlKX0ke21ha2VDb2xvckNvbXAocyl9YH1zdGF0aWMgVF9IVE1MKCl7cmV0dXJuIiMwMDAwMDAwMCJ9c3RhdGljIENNWUtfUkdCKFt0LGUscyxpXSl7cmV0dXJuWyJSR0IiLDEtTWF0aC5taW4oMSx0K2kpLDEtTWF0aC5taW4oMSxzK2kpLDEtTWF0aC5taW4oMSxlK2kpXX1zdGF0aWMgQ01ZS19IVE1MKHQpe2NvbnN0IGU9dGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtyZXR1cm4gdGhpcy5SR0JfSFRNTChlKX1zdGF0aWMgUkdCX0NNWUsoW3QsZSxzXSl7Y29uc3QgaT0xLXQsbj0xLWUscj0xLXM7cmV0dXJuWyJDTVlLIixpLG4scixNYXRoLm1pbihpLG4scildfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5YZmFMYXllcj12b2lkIDA7dmFyIGk9cygxOSk7ZS5YZmFMYXllcj1jbGFzcyBYZmFMYXllcntzdGF0aWMgc2V0dXBTdG9yYWdlKHQsZSxzLGksbil7Y29uc3Qgcj1pLmdldFZhbHVlKGUse3ZhbHVlOm51bGx9KTtzd2l0Y2gocy5uYW1lKXtjYXNlInRleHRhcmVhIjpudWxsIT09ci52YWx1ZSYmKHQudGV4dENvbnRlbnQ9ci52YWx1ZSk7aWYoInByaW50Ij09PW4pYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PXMuYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09cy5hdHRyaWJ1dGVzLnR5cGUpe3IudmFsdWU9PT1zLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTpyLnZhbHVlPT09cy5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKTtpZigicHJpbnQiPT09bilicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LmNoZWNrZWQ/dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPbiIpOnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgieGZhT2ZmIil9KX0pKX1lbHNle251bGwhPT1yLnZhbHVlJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIudmFsdWUpO2lmKCJwcmludCI9PT1uKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57aS5zZXRWYWx1ZShlLHt2YWx1ZTp0LnRhcmdldC52YWx1ZX0pfSkpfWJyZWFrO2Nhc2Uic2VsZWN0IjppZihudWxsIT09ci52YWx1ZSlmb3IoY29uc3QgdCBvZiBzLmNoaWxkcmVuKXQuYXR0cmlidXRlcy52YWx1ZT09PXIudmFsdWUmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9ITApO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57Y29uc3Qgcz10LnRhcmdldC5vcHRpb25zLG49LTE9PT1zLnNlbGVjdGVkSW5kZXg/IiI6c1tzLnNlbGVjdGVkSW5kZXhdLnZhbHVlO2kuc2V0VmFsdWUoZSx7dmFsdWU6bn0pfSkpfX1zdGF0aWMgc2V0QXR0cmlidXRlcyh7aHRtbDp0LGVsZW1lbnQ6ZSxzdG9yYWdlOnM9bnVsbCxpbnRlbnQ6aSxsaW5rU2VydmljZTpufSl7Y29uc3R7YXR0cmlidXRlczpyfT1lLGE9dCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50OyJyYWRpbyI9PT1yLnR5cGUmJihyLm5hbWU9YCR7ci5uYW1lfS0ke2l9YCk7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhyKSlpZihudWxsIT1zKXN3aXRjaChlKXtjYXNlImNsYXNzIjpzLmxlbmd0aCYmdC5zZXRBdHRyaWJ1dGUoZSxzLmpvaW4oIiAiKSk7YnJlYWs7Y2FzZSJkYXRhSWQiOmJyZWFrO2Nhc2UiaWQiOnQuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO2JyZWFrO2Nhc2Uic3R5bGUiOk9iamVjdC5hc3NpZ24odC5zdHlsZSxzKTticmVhaztjYXNlInRleHRDb250ZW50Ijp0LnRleHRDb250ZW50PXM7YnJlYWs7ZGVmYXVsdDooIWF8fCJocmVmIiE9PWUmJiJuZXdXaW5kb3ciIT09ZSkmJnQuc2V0QXR0cmlidXRlKGUscyl9YSYmbi5hZGRMaW5rQXR0cmlidXRlcyh0LHIuaHJlZixyLm5ld1dpbmRvdyk7cyYmci5kYXRhSWQmJnRoaXMuc2V0dXBTdG9yYWdlKHQsci5kYXRhSWQsZSxzKX1zdGF0aWMgcmVuZGVyKHQpe2NvbnN0IGU9dC5hbm5vdGF0aW9uU3RvcmFnZSxzPXQubGlua1NlcnZpY2Usbj10LnhmYUh0bWwscj10LmludGVudHx8ImRpc3BsYXkiLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuLm5hbWUpO24uYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmEsZWxlbWVudDpuLGludGVudDpyLGxpbmtTZXJ2aWNlOnN9KTtjb25zdCBvPVtbbiwtMSxhXV0sbD10LmRpdjtsLmFwcGVuZChhKTtpZih0LnZpZXdwb3J0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7bC5zdHlsZS50cmFuc2Zvcm09ZX0icmljaFRleHQiIT09ciYmbC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwieGZhTGF5ZXIgeGZhRm9udCIpO2NvbnN0IGM9W107Zm9yKDtvLmxlbmd0aD4wOyl7Y29uc3RbdCxuLGFdPW8uYXQoLTEpO2lmKG4rMT09PXQuY2hpbGRyZW4ubGVuZ3RoKXtvLnBvcCgpO2NvbnRpbnVlfWNvbnN0IGw9dC5jaGlsZHJlblsrK28uYXQoLTEpWzFdXTtpZihudWxsPT09bCljb250aW51ZTtjb25zdHtuYW1lOmh9PWw7aWYoIiN0ZXh0Ij09PWgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7Yy5wdXNoKHQpO2EuYXBwZW5kKHQpO2NvbnRpbnVlfWxldCBkO2Q9bD8uYXR0cmlidXRlcz8ueG1sbnM/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGwuYXR0cmlidXRlcy54bWxucyxoKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGgpO2EuYXBwZW5kKGQpO2wuYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmQsZWxlbWVudDpsLHN0b3JhZ2U6ZSxpbnRlbnQ6cixsaW5rU2VydmljZTpzfSk7aWYobC5jaGlsZHJlbiYmbC5jaGlsZHJlbi5sZW5ndGg+MClvLnB1c2goW2wsLTEsZF0pO2Vsc2UgaWYobC52YWx1ZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsLnZhbHVlKTtpLlhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGgpJiZjLnB1c2godCk7ZC5hcHBlbmQodCl9fWZvcihjb25zdCB0IG9mIGwucXVlcnlTZWxlY3RvckFsbCgiLnhmYU5vbkludGVyYWN0aXZlIGlucHV0LCAueGZhTm9uSW50ZXJhY3RpdmUgdGV4dGFyZWEiKSl0LnNldEF0dHJpYnV0ZSgicmVhZE9ubHkiLCEwKTtyZXR1cm57dGV4dERpdnM6Y319c3RhdGljIHVwZGF0ZSh0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7dC5kaXYuc3R5bGUudHJhbnNmb3JtPWU7dC5kaXYuaGlkZGVuPSExfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UZXh0TGF5ZXJSZW5kZXJUYXNrPXZvaWQgMDtlLnJlbmRlclRleHRMYXllcj1mdW5jdGlvbiByZW5kZXJUZXh0TGF5ZXIodCl7Y29uc3QgZT1uZXcgVGV4dExheWVyUmVuZGVyVGFzayh7dGV4dENvbnRlbnQ6dC50ZXh0Q29udGVudCx0ZXh0Q29udGVudFN0cmVhbTp0LnRleHRDb250ZW50U3RyZWFtLGNvbnRhaW5lcjp0LmNvbnRhaW5lcix2aWV3cG9ydDp0LnZpZXdwb3J0LHRleHREaXZzOnQudGV4dERpdnMsdGV4dENvbnRlbnRJdGVtc1N0cjp0LnRleHRDb250ZW50SXRlbXNTdHJ9KTtlLl9yZW5kZXIodC50aW1lb3V0KTtyZXR1cm4gZX07dmFyIGk9cygxKTtjb25zdCBuPTMwLHI9bmV3IE1hcDtmdW5jdGlvbiBhcHBlbmRUZXh0KHQsZSxzLGEpe2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLGw9e2FuZ2xlOjAsY2FudmFzV2lkdGg6MCxoYXNUZXh0OiIiIT09ZS5zdHIsaGFzRU9MOmUuaGFzRU9MLGZvbnRTaXplOjB9O3QuX3RleHREaXZzLnB1c2gobyk7Y29uc3QgYz1pLlV0aWwudHJhbnNmb3JtKHQuX3ZpZXdwb3J0LnRyYW5zZm9ybSxlLnRyYW5zZm9ybSk7bGV0IGg9TWF0aC5hdGFuMihjWzFdLGNbMF0pO2NvbnN0IGQ9c1tlLmZvbnROYW1lXTtkLnZlcnRpY2FsJiYoaCs9TWF0aC5QSS8yKTtjb25zdCB1PU1hdGguaHlwb3QoY1syXSxjWzNdKSxwPXUqZnVuY3Rpb24gZ2V0QXNjZW50KHQsZSl7Y29uc3Qgcz1yLmdldCh0KTtpZihzKXJldHVybiBzO2Uuc2F2ZSgpO2UuZm9udD1gMzBweCAke3R9YDtjb25zdCBpPWUubWVhc3VyZVRleHQoIiIpO2xldCBhPWkuZm9udEJvdW5kaW5nQm94QXNjZW50LG89TWF0aC5hYnMoaS5mb250Qm91bmRpbmdCb3hEZXNjZW50KTtpZihhKXtlLnJlc3RvcmUoKTtjb25zdCBzPWEvKGErbyk7ci5zZXQodCxzKTtyZXR1cm4gc31lLnN0cm9rZVN0eWxlPSJyZWQiO2UuY2xlYXJSZWN0KDAsMCxuLG4pO2Uuc3Ryb2tlVGV4dCgiZyIsMCwwKTtsZXQgbD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO289MDtmb3IobGV0IHQ9bC5sZW5ndGgtMS0zO3Q+PTA7dC09NClpZihsW3RdPjApe289TWF0aC5jZWlsKHQvNC9uKTticmVha31lLmNsZWFyUmVjdCgwLDAsbixuKTtlLnN0cm9rZVRleHQoIkEiLDAsbik7bD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO2E9MDtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0Kz00KWlmKGxbdF0+MCl7YT1uLU1hdGguZmxvb3IodC80L24pO2JyZWFrfWUucmVzdG9yZSgpO2lmKGEpe2NvbnN0IGU9YS8oYStvKTtyLnNldCh0LGUpO3JldHVybiBlfXIuc2V0KHQsLjgpO3JldHVybi44fShkLmZvbnRGYW1pbHksYSk7bGV0IGcsbTtpZigwPT09aCl7Zz1jWzRdO209Y1s1XS1wfWVsc2V7Zz1jWzRdK3AqTWF0aC5zaW4oaCk7bT1jWzVdLXAqTWF0aC5jb3MoaCl9by5zdHlsZS5sZWZ0PWAke2d9cHhgO28uc3R5bGUudG9wPWAke219cHhgO28uc3R5bGUuZm9udFNpemU9YCR7dX1weGA7by5zdHlsZS5mb250RmFtaWx5PWQuZm9udEZhbWlseTtsLmZvbnRTaXplPXU7by5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTtvLnRleHRDb250ZW50PWUuc3RyO28uZGlyPWUuZGlyO3QuX2ZvbnRJbnNwZWN0b3JFbmFibGVkJiYoby5kYXRhc2V0LmZvbnROYW1lPWUuZm9udE5hbWUpOzAhPT1oJiYobC5hbmdsZT1oKigxODAvTWF0aC5QSSkpO2xldCBmPSExO2lmKGUuc3RyLmxlbmd0aD4xKWY9ITA7ZWxzZSBpZigiICIhPT1lLnN0ciYmZS50cmFuc2Zvcm1bMF0hPT1lLnRyYW5zZm9ybVszXSl7Y29uc3QgdD1NYXRoLmFicyhlLnRyYW5zZm9ybVswXSkscz1NYXRoLmFicyhlLnRyYW5zZm9ybVszXSk7dCE9PXMmJk1hdGgubWF4KHQscykvTWF0aC5taW4odCxzKT4xLjUmJihmPSEwKX1mJiYoZC52ZXJ0aWNhbD9sLmNhbnZhc1dpZHRoPWUuaGVpZ2h0KnQuX3ZpZXdwb3J0LnNjYWxlOmwuY2FudmFzV2lkdGg9ZS53aWR0aCp0Ll92aWV3cG9ydC5zY2FsZSk7dC5fdGV4dERpdlByb3BlcnRpZXMuc2V0KG8sbCk7dC5fdGV4dENvbnRlbnRTdHJlYW0mJnQuX2xheW91dFRleHQobyl9ZnVuY3Rpb24gcmVuZGVyKHQpe2lmKHQuX2NhbmNlbGVkKXJldHVybjtjb25zdCBlPXQuX3RleHREaXZzLHM9dC5fY2FwYWJpbGl0eTtpZihlLmxlbmd0aD4xZTUpe3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9ZWxzZXtpZighdC5fdGV4dENvbnRlbnRTdHJlYW0pZm9yKGNvbnN0IHMgb2YgZSl0Ll9sYXlvdXRUZXh0KHMpO3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9fWNsYXNzIFRleHRMYXllclJlbmRlclRhc2t7Y29uc3RydWN0b3Ioe3RleHRDb250ZW50OnQsdGV4dENvbnRlbnRTdHJlYW06ZSxjb250YWluZXI6cyx2aWV3cG9ydDpuLHRleHREaXZzOnIsdGV4dENvbnRlbnRJdGVtc1N0cjphfSl7dGhpcy5fdGV4dENvbnRlbnQ9dDt0aGlzLl90ZXh0Q29udGVudFN0cmVhbT1lO3RoaXMuX2NvbnRhaW5lcj1zO3RoaXMuX2RvY3VtZW50PXMub3duZXJEb2N1bWVudDt0aGlzLl92aWV3cG9ydD1uO3RoaXMuX3RleHREaXZzPXJ8fFtdO3RoaXMuX3RleHRDb250ZW50SXRlbXNTdHI9YXx8W107dGhpcy5fZm9udEluc3BlY3RvckVuYWJsZWQ9ISFnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZT1udWxsO3RoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseT1udWxsO3RoaXMuX2xheW91dFRleHRDdHg9bnVsbDt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1uZXcgV2Vha01hcDt0aGlzLl9yZW5kZXJpbmdEb25lPSExO3RoaXMuX2NhbmNlbGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsO3RoaXMuX2JvdW5kcz1bXTt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvPWdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYXBhYmlsaXR5LnByb21pc2UuZmluYWxseSgoKCk9Pnt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1udWxsO2lmKHRoaXMuX2xheW91dFRleHRDdHgpe3RoaXMuX2xheW91dFRleHRDdHguY2FudmFzLndpZHRoPTA7dGhpcy5fbGF5b3V0VGV4dEN0eC5jYW52YXMuaGVpZ2h0PTA7dGhpcy5fbGF5b3V0VGV4dEN0eD1udWxsfX0pKS5jYXRjaCgoKCk9Pnt9KSl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWNhbmNlbCgpe3RoaXMuX2NhbmNlbGVkPSEwO2lmKHRoaXMuX3JlYWRlcil7dGhpcy5fcmVhZGVyLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKS5jYXRjaCgoKCk9Pnt9KSk7dGhpcy5fcmVhZGVyPW51bGx9aWYobnVsbCE9PXRoaXMuX3JlbmRlclRpbWVyKXtjbGVhclRpbWVvdXQodGhpcy5fcmVuZGVyVGltZXIpO3RoaXMuX3JlbmRlclRpbWVyPW51bGx9dGhpcy5fY2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpfV9wcm9jZXNzSXRlbXModCxlKXtmb3IoY29uc3QgcyBvZiB0KWlmKHZvaWQgMCE9PXMuc3RyKXt0aGlzLl90ZXh0Q29udGVudEl0ZW1zU3RyLnB1c2gocy5zdHIpO2FwcGVuZFRleHQodGhpcyxzLGUsdGhpcy5fbGF5b3V0VGV4dEN0eCl9ZWxzZSBpZigiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiPT09cy50eXBlfHwiYmVnaW5NYXJrZWRDb250ZW50Ij09PXMudHlwZSl7Y29uc3QgdD10aGlzLl9jb250YWluZXI7dGhpcy5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFya2VkQ29udGVudCIpO251bGwhPT1zLmlkJiZ0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIsYCR7cy5pZH1gKTt0LmFwcGVuZCh0aGlzLl9jb250YWluZXIpfWVsc2UiZW5kTWFya2VkQ29udGVudCI9PT1zLnR5cGUmJih0aGlzLl9jb250YWluZXI9dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUpfV9sYXlvdXRUZXh0KHQpe2NvbnN0IGU9dGhpcy5fdGV4dERpdlByb3BlcnRpZXMuZ2V0KHQpO2xldCBzPSIiO2lmKDAhPT1lLmNhbnZhc1dpZHRoJiZlLmhhc1RleHQpe2NvbnN0e2ZvbnRGYW1pbHk6aX09dC5zdHlsZSx7Zm9udFNpemU6bn09ZTtpZihuIT09dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZXx8aSE9PXRoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseSl7dGhpcy5fbGF5b3V0VGV4dEN0eC5mb250PWAke24qdGhpcy5fZGV2aWNlUGl4ZWxSYXRpb31weCAke2l9YDt0aGlzLl9sYXlvdXRUZXh0TGFzdEZvbnRTaXplPW47dGhpcy5fbGF5b3V0VGV4dExhc3RGb250RmFtaWx5PWl9Y29uc3R7d2lkdGg6cn09dGhpcy5fbGF5b3V0VGV4dEN0eC5tZWFzdXJlVGV4dCh0LnRleHRDb250ZW50KTtyPjAmJihzPWBzY2FsZVgoJHt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvKmUuY2FudmFzV2lkdGgvcn0pYCl9MCE9PWUuYW5nbGUmJihzPWByb3RhdGUoJHtlLmFuZ2xlfWRlZykgJHtzfWApO3MubGVuZ3RoPjAmJih0LnN0eWxlLnRyYW5zZm9ybT1zKTtlLmhhc1RleHQmJnRoaXMuX2NvbnRhaW5lci5hcHBlbmQodCk7aWYoZS5oYXNFT0wpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTt0LnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO3RoaXMuX2NvbnRhaW5lci5hcHBlbmQodCl9fV9yZW5kZXIodD0wKXtjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7bGV0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3IuaGVpZ2h0PXIud2lkdGg9bjt0aGlzLl9sYXlvdXRUZXh0Q3R4PXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pO2lmKHRoaXMuX3RleHRDb250ZW50KXtjb25zdCB0PXRoaXMuX3RleHRDb250ZW50Lml0ZW1zLHM9dGhpcy5fdGV4dENvbnRlbnQuc3R5bGVzO3RoaXMuX3Byb2Nlc3NJdGVtcyh0LHMpO2UucmVzb2x2ZSgpfWVsc2V7aWYoIXRoaXMuX3RleHRDb250ZW50U3RyZWFtKXRocm93IG5ldyBFcnJvcignTmVpdGhlciAidGV4dENvbnRlbnQiIG5vciAidGV4dENvbnRlbnRTdHJlYW0iIHBhcmFtZXRlcnMgc3BlY2lmaWVkLicpO3tjb25zdCBwdW1wPSgpPT57dGhpcy5fcmVhZGVyLnJlYWQoKS50aGVuKCgoe3ZhbHVlOnQsZG9uZTppfSk9PntpZihpKWUucmVzb2x2ZSgpO2Vsc2V7T2JqZWN0LmFzc2lnbihzLHQuc3R5bGVzKTt0aGlzLl9wcm9jZXNzSXRlbXModC5pdGVtcyxzKTtwdW1wKCl9fSksZS5yZWplY3QpfTt0aGlzLl9yZWFkZXI9dGhpcy5fdGV4dENvbnRlbnRTdHJlYW0uZ2V0UmVhZGVyKCk7cHVtcCgpfX1lLnByb21pc2UudGhlbigoKCk9PntzPW51bGw7dD90aGlzLl9yZW5kZXJUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3JlbmRlcih0aGlzKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsfSksdCk6cmVuZGVyKHRoaXMpfSksdGhpcy5fY2FwYWJpbGl0eS5yZWplY3QpfX1lLlRleHRMYXllclJlbmRlclRhc2s9VGV4dExheWVyUmVuZGVyVGFza30sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlNWR0dyYXBoaWNzPXZvaWQgMDt2YXIgaT1zKDYpLG49cygxKSxyPXMoMTIpO2xldCBhPWNsYXNze2NvbnN0cnVjdG9yKCl7KDAsbi51bnJlYWNoYWJsZSkoIk5vdCBpbXBsZW1lbnRlZDogU1ZHR3JhcGhpY3MiKX19O2UuU1ZHR3JhcGhpY3M9YTt7Y29uc3Qgbz17Zm9udFN0eWxlOiJub3JtYWwiLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZmlsbENvbG9yOiIjMDAwMDAwIn0sbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIixjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixoPVsiYnV0dCIsInJvdW5kIiwic3F1YXJlIl0sZD1bIm1pdGVyIiwicm91bmQiLCJiZXZlbCJdLGNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbih0LGU9IiIscz0hMSl7aWYoVVJMLmNyZWF0ZU9iamVjdFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYhcylyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbdF0se3R5cGU6ZX0pKTtjb25zdCBpPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7bGV0IG49YGRhdGE6JHtlfTtiYXNlNjQsYDtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKz0zKXtjb25zdCByPTI1NSZ0W2VdLGE9MjU1JnRbZSsxXSxvPTI1NSZ0W2UrMl07bis9aVtyPj4yXStpWygzJnIpPDw0fGE+PjRdK2lbZSsxPHM/KDE1JmEpPDwyfG8+PjY6NjRdK2lbZSsyPHM/NjMmbzo2NF19cmV0dXJuIG59LHU9ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KFsxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdKSxlPW5ldyBJbnQzMkFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcz10O2ZvcihsZXQgdD0wO3Q8ODt0Kyspcz0xJnM/Mzk4ODI5MjM4NF5zPj4xJjIxNDc0ODM2NDc6cz4+MSYyMTQ3NDgzNjQ3O2VbdF09c31mdW5jdGlvbiB3cml0ZVBuZ0NodW5rKHQscyxpLG4pe2xldCByPW47Y29uc3QgYT1zLmxlbmd0aDtpW3JdPWE+PjI0JjI1NTtpW3IrMV09YT4+MTYmMjU1O2lbcisyXT1hPj44JjI1NTtpW3IrM109MjU1JmE7cis9NDtpW3JdPTI1NSZ0LmNoYXJDb2RlQXQoMCk7aVtyKzFdPTI1NSZ0LmNoYXJDb2RlQXQoMSk7aVtyKzJdPTI1NSZ0LmNoYXJDb2RlQXQoMik7aVtyKzNdPTI1NSZ0LmNoYXJDb2RlQXQoMyk7cis9NDtpLnNldChzLHIpO3IrPXMubGVuZ3RoO2NvbnN0IG89ZnVuY3Rpb24gY3JjMzIodCxzLGkpe2xldCBuPS0xO2ZvcihsZXQgcj1zO3I8aTtyKyspe2NvbnN0IHM9MjU1JihuXnRbcl0pO249bj4+PjheZVtzXX1yZXR1cm4tMV5ufShpLG4rNCxyKTtpW3JdPW8+PjI0JjI1NTtpW3IrMV09bz4+MTYmMjU1O2lbcisyXT1vPj44JjI1NTtpW3IrM109MjU1Jm99ZnVuY3Rpb24gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl7bGV0IGU9dC5sZW5ndGg7Y29uc3Qgcz02NTUzNSxpPU1hdGguY2VpbChlL3MpLG49bmV3IFVpbnQ4QXJyYXkoMitlKzUqaSs0KTtsZXQgcj0wO25bcisrXT0xMjA7bltyKytdPTE1NjtsZXQgYT0wO2Zvcig7ZT5zOyl7bltyKytdPTA7bltyKytdPTI1NTtuW3IrK109MjU1O25bcisrXT0wO25bcisrXT0wO24uc2V0KHQuc3ViYXJyYXkoYSxhK3MpLHIpO3IrPXM7YSs9cztlLT1zfW5bcisrXT0xO25bcisrXT0yNTUmZTtuW3IrK109ZT4+OCYyNTU7bltyKytdPTI1NSZ+ZTtuW3IrK109KDY1NTM1Jn5lKT4+OCYyNTU7bi5zZXQodC5zdWJhcnJheShhKSxyKTtyKz10Lmxlbmd0aC1hO2NvbnN0IG89ZnVuY3Rpb24gYWRsZXIzMih0LGUscyl7bGV0IGk9MSxuPTA7Zm9yKGxldCByPWU7cjxzOysrcil7aT0oaSsoMjU1JnRbcl0pKSU2NTUyMTtuPShuK2kpJTY1NTIxfXJldHVybiBuPDwxNnxpfSh0LDAsdC5sZW5ndGgpO25bcisrXT1vPj4yNCYyNTU7bltyKytdPW8+PjE2JjI1NTtuW3IrK109bz4+OCYyNTU7bltyKytdPTI1NSZvO3JldHVybiBufWZ1bmN0aW9uIGVuY29kZShlLHMsaSxhKXtjb25zdCBvPWUud2lkdGgsbD1lLmhlaWdodDtsZXQgYyxoLGQ7Y29uc3QgdT1lLmRhdGE7c3dpdGNoKHMpe2Nhc2Ugbi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6aD0wO2M9MTtkPW8rNz4+MzticmVhaztjYXNlIG4uSW1hZ2VLaW5kLlJHQl8yNEJQUDpoPTI7Yz04O2Q9MypvO2JyZWFrO2Nhc2Ugbi5JbWFnZUtpbmQuUkdCQV8zMkJQUDpoPTY7Yz04O2Q9NCpvO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWNvbnN0IHA9bmV3IFVpbnQ4QXJyYXkoKDErZCkqbCk7bGV0IGc9MCxtPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7cFtnKytdPTA7cC5zZXQodS5zdWJhcnJheShtLG0rZCksZyk7bSs9ZDtnKz1kfWlmKHM9PT1uLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCYmYSl7Zz0wO2ZvcihsZXQgdD0wO3Q8bDt0Kyspe2crKztmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbZysrXV49MjU1fX1jb25zdCBmPW5ldyBVaW50OEFycmF5KFtvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsYyxoLDAsMCwwXSksYj1mdW5jdGlvbiBkZWZsYXRlU3luYyh0KXtpZighci5pc05vZGVKUylyZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7dHJ5e2xldCBlO2U9cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKT49OD90OkJ1ZmZlci5mcm9tKHQpO2NvbnN0IHM9cmVxdWlyZSgiemxpYiIpLmRlZmxhdGVTeW5jKGUse2xldmVsOjl9KTtyZXR1cm4gcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/czpuZXcgVWludDhBcnJheShzKX1jYXRjaCh0KXsoMCxuLndhcm4pKCJOb3QgY29tcHJlc3NpbmcgUE5HIGJlY2F1c2UgemxpYi5kZWZsYXRlU3luYyBpcyB1bmF2YWlsYWJsZTogIit0KX1yZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl9KHApLEE9dC5sZW5ndGgrMzYrZi5sZW5ndGgrYi5sZW5ndGgsXz1uZXcgVWludDhBcnJheShBKTtsZXQgdj0wO18uc2V0KHQsdik7dis9dC5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUhEUiIsZixfLHYpO3YrPTEyK2YubGVuZ3RoO3dyaXRlUG5nQ2h1bmsoIklEQVRBIixiLF8sdik7dis9MTIrYi5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUVORCIsbmV3IFVpbnQ4QXJyYXkoMCksXyx2KTtyZXR1cm4gY3JlYXRlT2JqZWN0VVJMKF8sImltYWdlL3BuZyIsaSl9cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRJbWdEYXRhVG9QbmcodCxlLHMpe3JldHVybiBlbmNvZGUodCx2b2lkIDA9PT10LmtpbmQ/bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6dC5raW5kLGUscyl9fSgpO2NsYXNzIFNWR0V4dHJhU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLmZvbnRXZWlnaHQ9by5mb250V2VpZ2h0O3RoaXMuZm9udFNpemU9MDt0aGlzLnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1uLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPW8uZmlsbENvbG9yO3RoaXMuc3Ryb2tlQ29sb3I9IiMwMDAwMDAiO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5saW5lSm9pbj0iIjt0aGlzLmxpbmVDYXA9IiI7dGhpcy5taXRlckxpbWl0PTA7dGhpcy5kYXNoQXJyYXk9W107dGhpcy5kYXNoUGhhc2U9MDt0aGlzLmRlcGVuZGVuY2llcz1bXTt0aGlzLmFjdGl2ZUNsaXBVcmw9bnVsbDt0aGlzLmNsaXBHcm91cD1udWxsO3RoaXMubWFza0lkPSIifWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9c2V0Q3VycmVudFBvaW50KHQsZSl7dGhpcy54PXQ7dGhpcy55PWV9fWZ1bmN0aW9uIG9wTGlzdFRvVHJlZSh0KXtsZXQgZT1bXTtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpaWYoInNhdmUiIT09aS5mbikicmVzdG9yZSI9PT1pLmZuP2U9cy5wb3AoKTplLnB1c2goaSk7ZWxzZXtlLnB1c2goe2ZuSWQ6OTIsZm46Imdyb3VwIixpdGVtczpbXX0pO3MucHVzaChlKTtlPWUuYXQoLTEpLml0ZW1zfXJldHVybiBlfWZ1bmN0aW9uIHBmKHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHQudG9TdHJpbmcoKTtjb25zdCBlPXQudG9GaXhlZCgxMCk7bGV0IHM9ZS5sZW5ndGgtMTtpZigiMCIhPT1lW3NdKXJldHVybiBlO2Rve3MtLX13aGlsZSgiMCI9PT1lW3NdKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCwiLiI9PT1lW3NdP3M6cysxKX1mdW5jdGlvbiBwbSh0KXtpZigwPT09dFs0XSYmMD09PXRbNV0pe2lmKDA9PT10WzFdJiYwPT09dFsyXSlyZXR1cm4gMT09PXRbMF0mJjE9PT10WzNdPyIiOmBzY2FsZSgke3BmKHRbMF0pfSAke3BmKHRbM10pfSlgO2lmKHRbMF09PT10WzNdJiZ0WzFdPT09LXRbMl0pe3JldHVybmByb3RhdGUoJHtwZigxODAqTWF0aC5hY29zKHRbMF0pL01hdGguUEkpfSlgfX1lbHNlIGlmKDE9PT10WzBdJiYwPT09dFsxXSYmMD09PXRbMl0mJjE9PT10WzNdKXJldHVybmB0cmFuc2xhdGUoJHtwZih0WzRdKX0gJHtwZih0WzVdKX0pYDtyZXR1cm5gbWF0cml4KCR7cGYodFswXSl9ICR7cGYodFsxXSl9ICR7cGYodFsyXSl9ICR7cGYodFszXSl9ICR7cGYodFs0XSl9ICR7cGYodFs1XSl9KWB9bGV0IHA9MCxnPTAsbT0wO2UuU1ZHR3JhcGhpY3M9YT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUscz0hMSl7KDAsaS5kZXByZWNhdGVkKSgiVGhlIFNWRyBiYWNrLWVuZCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgKm1heSogYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiIpO3RoaXMuc3ZnRmFjdG9yeT1uZXcgaS5ET01TVkdGYWN0b3J5O3RoaXMuY3VycmVudD1uZXcgU1ZHRXh0cmFTdGF0ZTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLklERU5USVRZX01BVFJJWDt0aGlzLnRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZXh0cmFTdGFjaz1bXTt0aGlzLmNvbW1vbk9ianM9dDt0aGlzLm9ianM9ZTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMuZW1iZWRGb250cz0hMTt0aGlzLmVtYmVkZGVkRm9udHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNzc1N0eWxlPW51bGw7dGhpcy5mb3JjZURhdGFTY2hlbWE9ISFzO3RoaXMuX29wZXJhdG9ySWRNYXBwaW5nPVtdO2Zvcihjb25zdCB0IGluIG4uT1BTKXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nW24uT1BTW3RdXT10fWdldE9iamVjdCh0LGU9bnVsbCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3RhcnRzV2l0aCgiZ18iKT90aGlzLmNvbW1vbk9ianMuZ2V0KHQpOnRoaXMub2Jqcy5nZXQodCk6ZX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMudHJhbnNmb3JtTWF0cml4KTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLmV4dHJhU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXt0aGlzLnRyYW5zZm9ybU1hdHJpeD10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpO3RoaXMuY3VycmVudD10aGlzLmV4dHJhU3RhY2sucG9wKCk7dGhpcy5wZW5kaW5nQ2xpcD1udWxsO3RoaXMudGdycD1udWxsfWdyb3VwKHQpe3RoaXMuc2F2ZSgpO3RoaXMuZXhlY3V0ZU9wVHJlZSh0KTt0aGlzLnJlc3RvcmUoKX1sb2FkRGVwZW5kZW5jaWVzKHQpe2NvbnN0IGU9dC5mbkFycmF5LHM9dC5hcmdzQXJyYXk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKWlmKGVbdF09PT1uLk9QUy5kZXBlbmRlbmN5KWZvcihjb25zdCBlIG9mIHNbdF0pe2NvbnN0IHQ9ZS5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqczp0aGlzLm9ianMscz1uZXcgUHJvbWlzZSgocz0+e3QuZ2V0KGUscyl9KSk7dGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKHMpfXJldHVybiBQcm9taXNlLmFsbCh0aGlzLmN1cnJlbnQuZGVwZW5kZW5jaWVzKX10cmFuc2Zvcm0odCxlLHMsaSxyLGEpe2NvbnN0IG89W3QsZSxzLGkscixhXTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLlV0aWwudHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4LG8pO3RoaXMudGdycD1udWxsfWdldFNWRyh0LGUpe3RoaXMudmlld3BvcnQ9ZTtjb25zdCBzPXRoaXMuX2luaXRpYWxpemUoZSk7cmV0dXJuIHRoaXMubG9hZERlcGVuZGVuY2llcyh0KS50aGVuKCgoKT0+e3RoaXMudHJhbnNmb3JtTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3RoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QodCkpO3JldHVybiBzfSkpfWNvbnZlcnRPcExpc3QodCl7Y29uc3QgZT10aGlzLl9vcGVyYXRvcklkTWFwcGluZyxzPXQuYXJnc0FycmF5LGk9dC5mbkFycmF5LG49W107Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWlbdF07bi5wdXNoKHtmbklkOnIsZm46ZVtyXSxhcmdzOnNbdF19KX1yZXR1cm4gb3BMaXN0VG9UcmVlKG4pfWV4ZWN1dGVPcFRyZWUodCl7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmZuLHM9ZS5mbklkLGk9ZS5hcmdzO3N3aXRjaCgwfHMpe2Nhc2Ugbi5PUFMuYmVnaW5UZXh0OnRoaXMuYmVnaW5UZXh0KCk7YnJlYWs7Y2FzZSBuLk9QUy5kZXBlbmRlbmN5OmJyZWFrO2Nhc2Ugbi5PUFMuc2V0TGVhZGluZzp0aGlzLnNldExlYWRpbmcoaSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6dGhpcy5zZXRMZWFkaW5nTW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldEZvbnQ6dGhpcy5zZXRGb250KGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hvd1RleHQ6Y2FzZSBuLk9QUy5zaG93U3BhY2VkVGV4dDp0aGlzLnNob3dUZXh0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kVGV4dDp0aGlzLmVuZFRleHQoKTticmVhaztjYXNlIG4uT1BTLm1vdmVUZXh0OnRoaXMubW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldENoYXJTcGFjaW5nOnRoaXMuc2V0Q2hhclNwYWNpbmcoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRXb3JkU3BhY2luZzp0aGlzLnNldFdvcmRTcGFjaW5nKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0SFNjYWxlOnRoaXMuc2V0SFNjYWxlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dE1hdHJpeDp0aGlzLnNldFRleHRNYXRyaXgoaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dFJpc2U6dGhpcy5zZXRUZXh0UmlzZShpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlOnRoaXMuc2V0VGV4dFJlbmRlcmluZ01vZGUoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lV2lkdGg6dGhpcy5zZXRMaW5lV2lkdGgoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lSm9pbjp0aGlzLnNldExpbmVKb2luKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0TGluZUNhcDp0aGlzLnNldExpbmVDYXAoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRNaXRlckxpbWl0OnRoaXMuc2V0TWl0ZXJMaW1pdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxSR0JDb2xvcjp0aGlzLnNldEZpbGxSR0JDb2xvcihpWzBdLGlbMV0saVsyXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VSR0JDb2xvcjp0aGlzLnNldFN0cm9rZVJHQkNvbG9yKGlbMF0saVsxXSxpWzJdKTticmVhaztjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yTjp0aGlzLnNldFN0cm9rZUNvbG9yTihpKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvck46dGhpcy5zZXRGaWxsQ29sb3JOKGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hhZGluZ0ZpbGw6dGhpcy5zaGFkaW5nRmlsbChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldERhc2g6dGhpcy5zZXREYXNoKGlbMF0saVsxXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGbGF0bmVzczp0aGlzLnNldEZsYXRuZXNzKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0R1N0YXRlOnRoaXMuc2V0R1N0YXRlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZmlsbDp0aGlzLmZpbGwoKTticmVhaztjYXNlIG4uT1BTLmVvRmlsbDp0aGlzLmVvRmlsbCgpO2JyZWFrO2Nhc2Ugbi5PUFMuc3Ryb2tlOnRoaXMuc3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5maWxsU3Ryb2tlOnRoaXMuZmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9GaWxsU3Ryb2tlOnRoaXMuZW9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbGlwOnRoaXMuY2xpcCgibm9uemVybyIpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9DbGlwOnRoaXMuY2xpcCgiZXZlbm9kZCIpO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOnRoaXMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCk7YnJlYWs7Y2FzZSBuLk9QUy5wYWludEltYWdlWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VNYXNrWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50Rm9ybVhPYmplY3RCZWdpbjp0aGlzLnBhaW50Rm9ybVhPYmplY3RCZWdpbihpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRGb3JtWE9iamVjdEVuZDp0aGlzLnBhaW50Rm9ybVhPYmplY3RFbmQoKTticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDp0aGlzLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VTdHJva2U6dGhpcy5jbG9zZVN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VGaWxsU3Ryb2tlOnRoaXMuY2xvc2VGaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbG9zZUVPRmlsbFN0cm9rZTp0aGlzLmNsb3NlRU9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZTp0aGlzLm5leHRMaW5lKCk7YnJlYWs7Y2FzZSBuLk9QUy50cmFuc2Zvcm06dGhpcy50cmFuc2Zvcm0oaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuY29uc3RydWN0UGF0aDp0aGlzLmNvbnN0cnVjdFBhdGgoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLmVuZFBhdGg6dGhpcy5lbmRQYXRoKCk7YnJlYWs7Y2FzZSA5Mjp0aGlzLmdyb3VwKGUuaXRlbXMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBvcGVyYXRvciAke3R9YCl9fX1zZXRXb3JkU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH1zZXRDaGFyU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH1uZXh0TGluZSgpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9c2V0VGV4dE1hdHJpeCh0LGUscyxpLG4scil7Y29uc3QgYT10aGlzLmN1cnJlbnQ7YS50ZXh0TWF0cml4PWEubGluZU1hdHJpeD1bdCxlLHMsaSxuLHJdO2EudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKTthLng9YS5saW5lWD0wO2EueT1hLmxpbmVZPTA7YS54Y29vcmRzPVtdO2EueWNvb3Jkcz1bXTthLnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTthLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixhLmZvbnRGYW1pbHkpO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIixgJHtwZihhLmZvbnRTaXplKX1weGApO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWEueSkpO2EudHh0RWxlbWVudD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRleHQiKTthLnR4dEVsZW1lbnQuYXBwZW5kKGEudHNwYW4pfWJlZ2luVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QueD10LmxpbmVYPTA7dC55PXQubGluZVk9MDt0LnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dC5saW5lTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3QudGV4dE1hdHJpeFNjYWxlPTE7dC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dC50eHRFbGVtZW50PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dGV4dCIpO3QudHh0Z3JwPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3QueGNvb3Jkcz1bXTt0Lnljb29yZHM9W119bW92ZVRleHQodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtzLng9cy5saW5lWCs9dDtzLnk9cy5saW5lWSs9ZTtzLnhjb29yZHM9W107cy55Y29vcmRzPVtdO3MudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO3MudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLHMuZm9udEZhbWlseSk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLGAke3BmKHMuZm9udFNpemUpfXB4YCk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtcy55KSl9c2hvd1RleHQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz1lLmZvbnQsaT1lLmZvbnRTaXplO2lmKDA9PT1pKXJldHVybjtjb25zdCByPWUuZm9udFNpemVTY2FsZSxhPWUuY2hhclNwYWNpbmcsYz1lLndvcmRTcGFjaW5nLGg9ZS5mb250RGlyZWN0aW9uLGQ9ZS50ZXh0SFNjYWxlKmgsdT1zLnZlcnRpY2FsLHA9dT8xOi0xLGc9cy5kZWZhdWx0Vk1ldHJpY3MsbT1pKmUuZm9udE1hdHJpeFswXTtsZXQgZj0wO2Zvcihjb25zdCBuIG9mIHQpe2lmKG51bGw9PT1uKXtmKz1oKmM7Y29udGludWV9aWYoIm51bWJlciI9PXR5cGVvZiBuKXtmKz1wKm4qaS8xZTM7Y29udGludWV9Y29uc3QgdD0obi5pc1NwYWNlP2M6MCkrYSxvPW4uZm9udENoYXI7bGV0IGwsZCxiLEE9bi53aWR0aDtpZih1KXtsZXQgdDtjb25zdCBlPW4udm1ldHJpY3x8Zzt0PW4udm1ldHJpYz9lWzFdOi41KkE7dD0tdCptO2NvbnN0IHM9ZVsyXSptO0E9ZT8tZVswXTpBO2w9dC9yO2Q9KGYrcykvcn1lbHNle2w9Zi9yO2Q9MH1pZihuLmlzSW5Gb250fHxzLm1pc3NpbmdGaWxlKXtlLnhjb29yZHMucHVzaChlLngrbCk7dSYmZS55Y29vcmRzLnB1c2goLWUueStkKTtlLnRzcGFuLnRleHRDb250ZW50Kz1vfWI9dT9BKm0tdCpoOkEqbSt0Kmg7Zis9Yn1lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUueGNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk7dT9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGUueWNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtZS55KSk7dT9lLnktPWY6ZS54Kz1mKmQ7ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KTtlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsYCR7cGYoZS5mb250U2l6ZSl9cHhgKTtlLmZvbnRTdHlsZSE9PW8uZm9udFN0eWxlJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc3R5bGUiLGUuZm9udFN0eWxlKTtlLmZvbnRXZWlnaHQhPT1vLmZvbnRXZWlnaHQmJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC13ZWlnaHQiLGUuZm9udFdlaWdodCk7Y29uc3QgYj1lLnRleHRSZW5kZXJpbmdNb2RlJm4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztpZihiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMfHxiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSl7ZS5maWxsQ29sb3IhPT1vLmZpbGxDb2xvciYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIixlLmZpbGxDb2xvcik7ZS5maWxsQWxwaGE8MSYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLGUuZmlsbEFscGhhKX1lbHNlIGUudGV4dFJlbmRlcmluZ01vZGU9PT1uLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsInRyYW5zcGFyZW50Iik6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO2lmKGI9PT1uLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRXx8Yj09PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0Upe2NvbnN0IHQ9MS8oZS50ZXh0TWF0cml4U2NhbGV8fDEpO3RoaXMuX3NldFN0cm9rZUF0dHJpYnV0ZXMoZS50c3Bhbix0KX1sZXQgQT1lLnRleHRNYXRyaXg7aWYoMCE9PWUudGV4dFJpc2Upe0E9QS5zbGljZSgpO0FbNV0rPWUudGV4dFJpc2V9ZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsYCR7cG0oQSl9IHNjYWxlKCR7cGYoZCl9LCAtMSlgKTtlLnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMobCwieG1sOnNwYWNlIiwicHJlc2VydmUiKTtlLnR4dEVsZW1lbnQuYXBwZW5kKGUudHNwYW4pO2UudHh0Z3JwLmFwcGVuZChlLnR4dEVsZW1lbnQpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGUudHh0RWxlbWVudCl9c2V0TGVhZGluZ01vdmVUZXh0KHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKTt0aGlzLm1vdmVUZXh0KHQsZSl9YWRkRm9udFN0eWxlKHQpe2lmKCF0LmRhdGEpdGhyb3cgbmV3IEVycm9yKCdhZGRGb250U3R5bGU6IE5vIGZvbnQgZGF0YSBhdmFpbGFibGUsIGVuc3VyZSB0aGF0IHRoZSAiZm9udEV4dHJhUHJvcGVydGllcyIgQVBJIHBhcmFtZXRlciBpcyBzZXQuJyk7aWYoIXRoaXMuY3NzU3R5bGUpe3RoaXMuY3NzU3R5bGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdHlsZSIpO3RoaXMuY3NzU3R5bGUuc2V0QXR0cmlidXRlTlMobnVsbCwidHlwZSIsInRleHQvY3NzIik7dGhpcy5kZWZzLmFwcGVuZCh0aGlzLmNzc1N0eWxlKX1jb25zdCBlPWNyZWF0ZU9iamVjdFVSTCh0LmRhdGEsdC5taW1ldHlwZSx0aGlzLmZvcmNlRGF0YVNjaGVtYSk7dGhpcy5jc3NTdHlsZS50ZXh0Q29udGVudCs9YEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIiR7dC5sb2FkZWROYW1lfSI7IHNyYzogdXJsKCR7ZX0pOyB9XG5gfXNldEZvbnQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz10aGlzLmNvbW1vbk9ianMuZ2V0KHRbMF0pO2xldCBpPXRbMV07ZS5mb250PXM7aWYodGhpcy5lbWJlZEZvbnRzJiYhcy5taXNzaW5nRmlsZSYmIXRoaXMuZW1iZWRkZWRGb250c1tzLmxvYWRlZE5hbWVdKXt0aGlzLmFkZEZvbnRTdHlsZShzKTt0aGlzLmVtYmVkZGVkRm9udHNbcy5sb2FkZWROYW1lXT1zfWUuZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVg7bGV0IHI9Im5vcm1hbCI7cy5ibGFjaz9yPSI5MDAiOnMuYm9sZCYmKHI9ImJvbGQiKTtjb25zdCBhPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiO2lmKGk8MCl7aT0taTtlLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBlLmZvbnREaXJlY3Rpb249MTtlLmZvbnRTaXplPWk7ZS5mb250RmFtaWx5PXMubG9hZGVkTmFtZTtlLmZvbnRXZWlnaHQ9cjtlLmZvbnRTdHlsZT1hO2UudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWUueSkpO2UueGNvb3Jkcz1bXTtlLnljb29yZHM9W119ZW5kVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQudGV4dFJlbmRlcmluZ01vZGUmbi5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHJiZ0LnR4dEVsZW1lbnQ/Lmhhc0NoaWxkTm9kZXMoKSl7dC5lbGVtZW50PXQudHh0RWxlbWVudDt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19c2V0TGluZVdpZHRoKHQpe3Q+MCYmKHRoaXMuY3VycmVudC5saW5lV2lkdGg9dCl9c2V0TGluZUNhcCh0KXt0aGlzLmN1cnJlbnQubGluZUNhcD1oW3RdfXNldExpbmVKb2luKHQpe3RoaXMuY3VycmVudC5saW5lSm9pbj1kW3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdXJyZW50Lm1pdGVyTGltaXQ9dH1zZXRTdHJva2VBbHBoYSh0KXt0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9dH1zZXRTdHJva2VSR0JDb2xvcih0LGUscyl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpfXNldEZpbGxBbHBoYSh0KXt0aGlzLmN1cnJlbnQuZmlsbEFscGhhPXR9c2V0RmlsbFJHQkNvbG9yKHQsZSxzKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpO3RoaXMuY3VycmVudC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dGhpcy5jdXJyZW50Lnhjb29yZHM9W107dGhpcy5jdXJyZW50Lnljb29yZHM9W119c2V0U3Ryb2tlQ29sb3JOKHQpe3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10aGlzLl9tYWtlQ29sb3JOX1BhdHRlcm4odCl9c2V0RmlsbENvbG9yTih0KXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX1zaGFkaW5nRmlsbCh0KXtjb25zdCBlPXRoaXMudmlld3BvcnQud2lkdGgscz10aGlzLnZpZXdwb3J0LmhlaWdodCxpPW4uVXRpbC5pbnZlcnNlVHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4KSxyPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxpKSxhPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCxzXSxpKSxvPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSwwXSxpKSxsPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSxpKSxjPU1hdGgubWluKHJbMF0sYVswXSxvWzBdLGxbMF0pLGg9TWF0aC5taW4oclsxXSxhWzFdLG9bMV0sbFsxXSksZD1NYXRoLm1heChyWzBdLGFbMF0sb1swXSxsWzBdKSx1PU1hdGgubWF4KHJbMV0sYVsxXSxvWzFdLGxbMV0pLHA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixjKTtwLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGgpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLGQtYyk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHUtaCk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIix0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCkpO3RoaXMuY3VycmVudC5maWxsQWxwaGE8MSYmcC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLHRoaXMuY3VycmVudC5maWxsQWxwaGEpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKHApfV9tYWtlQ29sb3JOX1BhdHRlcm4odCl7cmV0dXJuIlRpbGluZ1BhdHRlcm4iPT09dFswXT90aGlzLl9tYWtlVGlsaW5nUGF0dGVybih0KTp0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCl9X21ha2VUaWxpbmdQYXR0ZXJuKHQpe2NvbnN0IGU9dFsxXSxzPXRbMl0saT10WzNdfHxuLklERU5USVRZX01BVFJJWCxbcixhLG8sbF09dFs0XSxjPXRbNV0saD10WzZdLGQ9dFs3XSx1PSJzaGFkaW5nIittKyssW3AsZyxmLGJdPW4uVXRpbC5ub3JtYWxpemVSZWN0KFsuLi5uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3IsYV0saSksLi4ubi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtvLGxdLGkpXSksW0EsX109bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGkpLHY9YypBLHk9aCpfLFM9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpwYXR0ZXJuIik7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsdSk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJwYXR0ZXJuVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHYpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGAke3B9YCk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixgJHtnfWApO2NvbnN0IHg9dGhpcy5zdmcsRT10aGlzLnRyYW5zZm9ybU1hdHJpeCxDPXRoaXMuY3VycmVudC5maWxsQ29sb3IsUD10aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IsVD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGYtcCxiLWcpO3RoaXMuc3ZnPVQ7dGhpcy50cmFuc2Zvcm1NYXRyaXg9aTtpZigyPT09ZCl7Y29uc3QgdD1uLlV0aWwubWFrZUhleENvbG9yKC4uLmUpO3RoaXMuY3VycmVudC5maWxsQ29sb3I9dDt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dH10aGlzLmV4ZWN1dGVPcFRyZWUodGhpcy5jb252ZXJ0T3BMaXN0KHMpKTt0aGlzLnN2Zz14O3RoaXMudHJhbnNmb3JtTWF0cml4PUU7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1DO3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj1QO1MuYXBwZW5kKFQuY2hpbGROb2Rlc1swXSk7dGhpcy5kZWZzLmFwcGVuZChTKTtyZXR1cm5gdXJsKCMke3V9KWB9X21ha2VTaGFkaW5nUGF0dGVybih0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0PXRoaXMub2Jqcy5nZXQodCkpO3N3aXRjaCh0WzBdKXtjYXNlIlJhZGlhbEF4aWFsIjpjb25zdCBlPSJzaGFkaW5nIittKysscz10WzNdO2xldCBpO3N3aXRjaCh0WzFdKXtjYXNlImF4aWFsIjpjb25zdCBzPXRbNF0sbj10WzVdO2k9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpsaW5lYXJHcmFkaWVudCIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLGUpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiZ3JhZGllbnRVbml0cyIsInVzZXJTcGFjZU9uVXNlIik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MSIsc1swXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MSIsc1sxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MiIsblswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MiIsblsxXSk7YnJlYWs7Y2FzZSJyYWRpYWwiOmNvbnN0IHI9dFs0XSxhPXRbNV0sbz10WzZdLGw9dFs3XTtpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmFkaWFsR3JhZGllbnQiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImdyYWRpZW50VW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLGFbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLGFbMV0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsbCk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeCIsclswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeSIsclsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmciIsbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUmFkaWFsQXhpYWwgdHlwZTogJHt0WzFdfWApfWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdG9wIik7ZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJvZmZzZXQiLHRbMF0pO2Uuc2V0QXR0cmlidXRlTlMobnVsbCwic3RvcC1jb2xvciIsdFsxXSk7aS5hcHBlbmQoZSl9dGhpcy5kZWZzLmFwcGVuZChpKTtyZXR1cm5gdXJsKCMke2V9KWA7Y2FzZSJNZXNoIjooMCxuLndhcm4pKCJVbmltcGxlbWVudGVkIHBhdHRlcm4gTWVzaCIpO3JldHVybiBudWxsO2Nhc2UiRHVtbXkiOnJldHVybiJob3RwaW5rIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBJUiB0eXBlOiAke3RbMF19YCl9fXNldERhc2godCxlKXt0aGlzLmN1cnJlbnQuZGFzaEFycmF5PXQ7dGhpcy5jdXJyZW50LmRhc2hQaGFzZT1lfWNvbnN0cnVjdFBhdGgodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtsZXQgaT1zLngscj1zLnksYT1bXSxvPTA7Zm9yKGNvbnN0IHMgb2YgdClzd2l0Y2goMHxzKXtjYXNlIG4uT1BTLnJlY3RhbmdsZTppPWVbbysrXTtyPWVbbysrXTtjb25zdCB0PWkrZVtvKytdLHM9citlW28rK107YS5wdXNoKCJNIixwZihpKSxwZihyKSwiTCIscGYodCkscGYociksIkwiLHBmKHQpLHBmKHMpLCJMIixwZihpKSxwZihzKSwiWiIpO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTSIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMubGluZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTCIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzppPWVbbys0XTtyPWVbbys1XTthLnB1c2goIkMiLHBmKGVbb10pLHBmKGVbbysxXSkscGYoZVtvKzJdKSxwZihlW28rM10pLHBmKGkpLHBmKHIpKTtvKz02O2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzI6YS5wdXNoKCJDIixwZihpKSxwZihyKSxwZihlW29dKSxwZihlW28rMV0pLHBmKGVbbysyXSkscGYoZVtvKzNdKSk7aT1lW28rMl07cj1lW28rM107bys9NDticmVhaztjYXNlIG4uT1BTLmN1cnZlVG8zOmk9ZVtvKzJdO3I9ZVtvKzNdO2EucHVzaCgiQyIscGYoZVtvXSkscGYoZVtvKzFdKSxwZihpKSxwZihyKSxwZihpKSxwZihyKSk7bys9NDticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDphLnB1c2goIloiKX1hPWEuam9pbigiICIpO2lmKHMucGF0aCYmdC5sZW5ndGg+MCYmdFswXSE9PW4uT1BTLnJlY3RhbmdsZSYmdFswXSE9PW4uT1BTLm1vdmVUbylhPXMucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIikrYTtlbHNle3MucGF0aD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnBhdGgiKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChzLnBhdGgpfXMucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixhKTtzLnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKTtzLmVsZW1lbnQ9cy5wYXRoO3Muc2V0Q3VycmVudFBvaW50KGkscil9ZW5kUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QucGF0aD1udWxsO2lmKCF0aGlzLnBlbmRpbmdDbGlwKXJldHVybjtpZighdC5lbGVtZW50KXt0aGlzLnBlbmRpbmdDbGlwPW51bGw7cmV0dXJufWNvbnN0IGU9ImNsaXBwYXRoIitwKysscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmNsaXBQYXRoIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsZSk7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7Y29uc3QgaT10LmVsZW1lbnQuY2xvbmVOb2RlKCEwKTsiZXZlbm9kZCI9PT10aGlzLnBlbmRpbmdDbGlwP2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwiZXZlbm9kZCIpOmkuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwibm9uemVybyIpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDtzLmFwcGVuZChpKTt0aGlzLmRlZnMuYXBwZW5kKHMpO2lmKHQuYWN0aXZlQ2xpcFVybCl7dC5jbGlwR3JvdXA9bnVsbDtmb3IoY29uc3QgdCBvZiB0aGlzLmV4dHJhU3RhY2spdC5jbGlwR3JvdXA9bnVsbDtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsaXAtcGF0aCIsdC5hY3RpdmVDbGlwVXJsKX10LmFjdGl2ZUNsaXBVcmw9YHVybCgjJHtlfSlgO3RoaXMudGdycD1udWxsfWNsaXAodCl7dGhpcy5wZW5kaW5nQ2xpcD10fWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQucGF0aCl7Y29uc3QgZT1gJHt0LnBhdGguZ2V0QXR0cmlidXRlTlMobnVsbCwiZCIpfVpgO3QucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixlKX19c2V0TGVhZGluZyh0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH1zZXRUZXh0UmlzZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH1zZXRUZXh0UmVuZGVyaW5nTW9kZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH1zZXRIU2NhbGUodCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9c2V0UmVuZGVyaW5nSW50ZW50KHQpe31zZXRGbGF0bmVzcyh0KXt9c2V0R1N0YXRlKHQpe2Zvcihjb25zdFtlLHNdb2YgdClzd2l0Y2goZSl7Y2FzZSJMVyI6dGhpcy5zZXRMaW5lV2lkdGgocyk7YnJlYWs7Y2FzZSJMQyI6dGhpcy5zZXRMaW5lQ2FwKHMpO2JyZWFrO2Nhc2UiTEoiOnRoaXMuc2V0TGluZUpvaW4ocyk7YnJlYWs7Y2FzZSJNTCI6dGhpcy5zZXRNaXRlckxpbWl0KHMpO2JyZWFrO2Nhc2UiRCI6dGhpcy5zZXREYXNoKHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJSSSI6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQocyk7YnJlYWs7Y2FzZSJGTCI6dGhpcy5zZXRGbGF0bmVzcyhzKTticmVhaztjYXNlIkZvbnQiOnRoaXMuc2V0Rm9udChzKTticmVhaztjYXNlIkNBIjp0aGlzLnNldFN0cm9rZUFscGhhKHMpO2JyZWFrO2Nhc2UiY2EiOnRoaXMuc2V0RmlsbEFscGhhKHMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBncmFwaGljIHN0YXRlIG9wZXJhdG9yICR7ZX1gKX19ZmlsbCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHQuZmlsbENvbG9yKTt0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5Iix0LmZpbGxBbHBoYSk7dGhpcy5lbmRQYXRoKCl9fXN0cm9rZSgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LmVsZW1lbnQpO3QuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO3RoaXMuZW5kUGF0aCgpfX1fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LGU9MSl7Y29uc3Qgcz10aGlzLmN1cnJlbnQ7bGV0IGk9cy5kYXNoQXJyYXk7MSE9PWUmJmkubGVuZ3RoPjAmJihpPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSp0fSkpKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZSIscy5zdHJva2VDb2xvcik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utb3BhY2l0eSIscy5zdHJva2VBbHBoYSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbWl0ZXJsaW1pdCIscGYocy5taXRlckxpbWl0KSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWNhcCIscy5saW5lQ2FwKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1saW5lam9pbiIscy5saW5lSm9pbik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLHBmKGUqcy5saW5lV2lkdGgpKyJweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hhcnJheSIsaS5tYXAocGYpLmpvaW4oIiAiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtZGFzaG9mZnNldCIscGYoZSpzLmRhc2hQaGFzZSkrInB4Iil9ZW9GaWxsKCl7dGhpcy5jdXJyZW50LmVsZW1lbnQ/LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt0aGlzLmZpbGwoKX1maWxsU3Ryb2tlKCl7dGhpcy5zdHJva2UoKTt0aGlzLmZpbGwoKX1lb0ZpbGxTdHJva2UoKXt0aGlzLmN1cnJlbnQuZWxlbWVudD8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwiZXZlbm9kZCIpO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLnN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZW9GaWxsU3Ryb2tlKCl9cGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCl7Y29uc3QgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxcHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsIjFweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5jdXJyZW50LmZpbGxDb2xvcik7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQodCl9cGFpbnRJbWFnZVhPYmplY3QodCl7Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsbi53YXJuKShgRGVwZW5kZW50IGltYWdlIHdpdGggb2JqZWN0IElEICR7dH0gaXMgbm90IHJlYWR5IHlldGApfXBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQsbj11KHQsdGhpcy5mb3JjZURhdGFTY2hlbWEsISFlKSxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLCIwIik7ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihpKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9cjt0aGlzLmNsaXAoIm5vbnplcm8iKTtjb25zdCBhPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6aW1hZ2UiKTthLnNldEF0dHJpYnV0ZU5TKGMsInhsaW5rOmhyZWYiLG4pO2Euc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTthLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1pKSk7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykrInB4Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKGkpKyJweCIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixgc2NhbGUoJHtwZigxL3MpfSAke3BmKC0xL2kpfSlgKTtlP2UuYXBwZW5kKGEpOnRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpfXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTtpZihlLmJpdG1hcCl7KDAsbi53YXJuKSgicGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBJbWFnZUJpdG1hcCBzdXBwb3J0IGlzIG5vdCBpbXBsZW1lbnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZGAgQVBJIHBhcmFtZXRlciBpcyBkaXNhYmxlZC4iKTtyZXR1cm59Y29uc3Qgcz10aGlzLmN1cnJlbnQsaT1lLndpZHRoLHI9ZS5oZWlnaHQsYT1zLmZpbGxDb2xvcjtzLm1hc2tJZD0ibWFzayIrZysrO2NvbnN0IG89dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIscy5tYXNrSWQpO2NvbnN0IGw9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixwZihpKSk7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKHIpKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGEpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwibWFzayIsYHVybCgjJHtzLm1hc2tJZH0pYCk7dGhpcy5kZWZzLmFwcGVuZChvKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChsKTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUsbyl9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7aWYoZSl7Y29uc3QgdD1lWzJdLWVbMF0scz1lWzNdLWVbMV0saT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGVbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYodCkpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihzKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9aTt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe31faW5pdGlhbGl6ZSh0KXtjb25zdCBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCkscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChzKTt0aGlzLmRlZnM9cztjb25zdCBpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixwbSh0LnRyYW5zZm9ybSkpO2UuYXBwZW5kKGkpO3RoaXMuc3ZnPWk7cmV0dXJuIGV9X2Vuc3VyZUNsaXBHcm91cCgpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXtjb25zdCB0PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybCk7dGhpcy5zdmcuYXBwZW5kKHQpO3RoaXMuY3VycmVudC5jbGlwR3JvdXA9dH1yZXR1cm4gdGhpcy5jdXJyZW50LmNsaXBHcm91cH1fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKXtpZighdGhpcy50Z3JwKXt0aGlzLnRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTt0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybD90aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKTp0aGlzLnN2Zy5hcHBlbmQodGhpcy50Z3JwKX1yZXR1cm4gdGhpcy50Z3JwfX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGTm9kZVN0cmVhbT12b2lkIDA7dmFyIGk9cygxKSxuPXMoMzIpO2NvbnN0IHI9cmVxdWlyZSgiZnMiKSxhPXJlcXVpcmUoImh0dHAiKSxvPXJlcXVpcmUoImh0dHBzIiksbD1yZXF1aXJlKCJ1cmwiKSxjPS9eZmlsZTpcL1wvXC9bYS16QS1aXTpcLy87ZS5QREZOb2RlU3RyZWFtPWNsYXNzIFBERk5vZGVTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLnVybD1mdW5jdGlvbiBwYXJzZVVybCh0KXtjb25zdCBlPWwucGFyc2UodCk7aWYoImZpbGU6Ij09PWUucHJvdG9jb2x8fGUuaG9zdClyZXR1cm4gZTtpZigvXlthLXpdOlsvXFxdL2kudGVzdCh0KSlyZXR1cm4gbC5wYXJzZShgZmlsZTovLy8ke3R9YCk7ZS5ob3N0fHwoZS5wcm90b2NvbD0iZmlsZToiKTtyZXR1cm4gZX0odC51cmwpO3RoaXMuaXNIdHRwPSJodHRwOiI9PT10aGlzLnVybC5wcm90b2NvbHx8Imh0dHBzOiI9PT10aGlzLnVybC5wcm90b2NvbDt0aGlzLmlzRnNVcmw9ImZpbGU6Ij09PXRoaXMudXJsLnByb3RvY29sO3RoaXMuaHR0cEhlYWRlcnM9dGhpcy5pc0h0dHAmJnQuaHR0cEhlYWRlcnN8fHt9O3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1nZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uX2xvYWRlZD8/MH1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTm9kZVN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPXRoaXMuaXNGc1VybD9uZXcgUERGTm9kZVN0cmVhbUZzRnVsbFJlYWRlcih0aGlzKTpuZXcgUERGTm9kZVN0cmVhbUZ1bGxSZWFkZXIodGhpcyk7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKHQsZSl7aWYoZTw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5pc0ZzVXJsP25ldyBQREZOb2RlU3RyZWFtRnNSYW5nZVJlYWRlcih0aGlzLHQsZSk6bmV3IFBERk5vZGVTdHJlYW1SYW5nZVJlYWRlcih0aGlzLHQsZSk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIEJhc2VGdWxsUmVhZGVye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3VybD10LnVybDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3QgZT10LnNvdXJjZTt0aGlzLl9jb250ZW50TGVuZ3RoPWUubGVuZ3RoO3RoaXMuX2xvYWRlZD0wO3RoaXMuX2ZpbGVuYW1lPW51bGw7dGhpcy5fZGlzYWJsZVJhbmdlPWUuZGlzYWJsZVJhbmdlfHwhMTt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW07dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2U7dGhpcy5fcmVhZGFibGVTdHJlYW09bnVsbDt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5PSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGFibGVTdHJlYW0/dGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0KTp0aGlzLl9lcnJvcih0KX1fZXJyb3IodCl7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9X3NldFJlYWRhYmxlU3RyZWFtKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtPXQ7dC5vbigicmVhZGFibGUiLCgoKT0+e3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlbmQiLCgoKT0+e3QuZGVzdHJveSgpO3RoaXMuX2RvbmU9ITA7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfSkpO3Qub24oImVycm9yIiwodD0+e3RoaXMuX2Vycm9yKHQpfSkpOyF0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5faXNSYW5nZVN1cHBvcnRlZCYmdGhpcy5fZXJyb3IobmV3IGkuQWJvcnRFeGNlcHRpb24oInN0cmVhbWluZyBpcyBkaXNhYmxlZCIpKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWNsYXNzIEJhc2VSYW5nZVJlYWRlcntjb25zdHJ1Y3Rvcih0KXt0aGlzLl91cmw9dC51cmw7dGhpcy5fZG9uZT0hMTt0aGlzLl9zdG9yZWRFcnJvcj1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2xvYWRlZD0wO3RoaXMuX3JlYWRhYmxlU3RyZWFtPW51bGw7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtjb25zdCBlPXQuc291cmNlO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW19Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fWNsYXNzIFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7Y29uc3QgaGFuZGxlUmVzcG9uc2U9ZT0+e2lmKDQwND09PWUuc3RhdHVzQ29kZSl7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtyZXR1cm59dGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKGUpO2NvbnN0IGdldFJlc3BvbnNlSGVhZGVyPXQ9PnRoaXMuX3JlYWRhYmxlU3RyZWFtLmhlYWRlcnNbdC50b0xvd2VyQ2FzZSgpXSx7YWxsb3dSYW5nZVJlcXVlc3RzOnMsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dC5pc0h0dHAscmFuZ2VDaHVua1NpemU6dGhpcy5fcmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOnRoaXMuX2Rpc2FibGVSYW5nZX0pO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9czt0aGlzLl9jb250ZW50TGVuZ3RoPXJ8fHRoaXMuX2NvbnRlbnRMZW5ndGg7dGhpcy5fZmlsZW5hbWU9KDAsbi5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcil9O3RoaXMuX3JlcXVlc3Q9bnVsbDsiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sP3RoaXMuX3JlcXVlc3Q9YS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCx0Lmh0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHQuaHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKTt0aGlzLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KX0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtUmFuZ2VSZWFkZXIgZXh0ZW5kcyBCYXNlUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3N1cGVyKHQpO3RoaXMuX2h0dHBIZWFkZXJzPXt9O2Zvcihjb25zdCBlIGluIHQuaHR0cEhlYWRlcnMpe2NvbnN0IHM9dC5odHRwSGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYodGhpcy5faHR0cEhlYWRlcnNbZV09cyl9dGhpcy5faHR0cEhlYWRlcnMuUmFuZ2U9YGJ5dGVzPSR7ZX0tJHtzLTF9YDtjb25zdCBoYW5kbGVSZXNwb25zZT10PT57aWYoNDA0IT09dC5zdGF0dXNDb2RlKXRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHQpO2Vsc2V7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10fX07dGhpcy5fcmVxdWVzdD1udWxsOyJodHRwOiI9PT10aGlzLl91cmwucHJvdG9jb2w/dGhpcy5fcmVxdWVzdD1hLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk7dGhpcy5fcmVxdWVzdC5vbigiZXJyb3IiLCh0PT57dGhpcy5fc3RvcmVkRXJyb3I9dH0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtRnNGdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7bGV0IGU9ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuX3VybC5wYXRoKTtjLnRlc3QodGhpcy5fdXJsLmhyZWYpJiYoZT1lLnJlcGxhY2UoL15cLy8sIiIpKTtyLmxzdGF0KGUsKCh0LHMpPT57aWYodCl7IkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oYE1pc3NpbmcgUERGICIke2V9Ii5gKSk7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9ZWxzZXt0aGlzLl9jb250ZW50TGVuZ3RoPXMuc2l6ZTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShyLmNyZWF0ZVJlYWRTdHJlYW0oZSkpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX19KSl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc1JhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXtzdXBlcih0KTtsZXQgaT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO2MudGVzdCh0aGlzLl91cmwuaHJlZikmJihpPWkucmVwbGFjZSgvXlwvLywiIikpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHIuY3JlYXRlUmVhZFN0cmVhbShpLHtzdGFydDplLGVuZDpzLTF9KSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3I9ZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LGUpe2lmKDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6IikpcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInK2UrJyIuJyk7cmV0dXJuIG5ldyBpLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihgVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgKCR7dH0pIHdoaWxlIHJldHJpZXZpbmcgUERGICIke2V9Ii5gLHQpfTtlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXI9ZnVuY3Rpb24gZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcih0KXtjb25zdCBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXtsZXQgdD0oMCxuLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYodC5pbmNsdWRlcygiJSIpKXRyeXt0PWRlY29kZVVSSUNvbXBvbmVudCh0KX1jYXRjaCh0KXt9aWYoKDAsci5pc1BkZkZpbGUpKHQpKXJldHVybiB0fXJldHVybiBudWxsfTtlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHtnZXRSZXNwb25zZUhlYWRlcjp0LGlzSHR0cDplLHJhbmdlQ2h1bmtTaXplOnMsZGlzYWJsZVJhbmdlOml9KXtjb25zdCBuPXthbGxvd1JhbmdlUmVxdWVzdHM6ITEsc3VnZ2VzdGVkTGVuZ3RoOnZvaWQgMH0scj1wYXJzZUludCh0KCJDb250ZW50LUxlbmd0aCIpLDEwKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm4gbjtuLnN1Z2dlc3RlZExlbmd0aD1yO2lmKHI8PTIqcylyZXR1cm4gbjtpZihpfHwhZSlyZXR1cm4gbjtpZigiYnl0ZXMiIT09dCgiQWNjZXB0LVJhbmdlcyIpKXJldHVybiBuO2lmKCJpZGVudGl0eSIhPT0odCgiQ29udGVudC1FbmNvZGluZyIpfHwiaWRlbnRpdHkiKSlyZXR1cm4gbjtuLmFsbG93UmFuZ2VSZXF1ZXN0cz0hMDtyZXR1cm4gbn07ZS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzPWZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VTdGF0dXModCl7cmV0dXJuIDIwMD09PXR8fDIwNj09PXR9O3ZhciBpPXMoMSksbj1zKDMzKSxyPXMoNil9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5nZXRGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXI9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKHQpe2xldCBlPSEwLHM9dG9QYXJhbVJlZ0V4cCgiZmlsZW5hbWVcXCoiLCJpIikuZXhlYyh0KTtpZihzKXtzPXNbMV07bGV0IHQ9cmZjMjYxNnVucXVvdGUocyk7dD11bmVzY2FwZSh0KTt0PXJmYzU5ODdkZWNvZGUodCk7dD1yZmMyMDQ3ZGVjb2RlKHQpO3JldHVybiBmaXh1cEVuY29kaW5nKHQpfXM9ZnVuY3Rpb24gcmZjMjIzMWdldHBhcmFtKHQpe2NvbnN0IGU9W107bGV0IHM7Y29uc3QgaT10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZVxcKigoPyEwXFxkKVxcZCspKFxcKj8pIiwiaWciKTtmb3IoO251bGwhPT0ocz1pLmV4ZWModCkpOyl7bGV0Wyx0LGksbl09czt0PXBhcnNlSW50KHQsMTApO2lmKHQgaW4gZSl7aWYoMD09PXQpYnJlYWt9ZWxzZSBlW3RdPVtpLG5dfWNvbnN0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aCYmdCBpbiBlOysrdCl7bGV0W3MsaV09ZVt0XTtpPXJmYzI2MTZ1bnF1b3RlKGkpO2lmKHMpe2k9dW5lc2NhcGUoaSk7MD09PXQmJihpPXJmYzU5ODdkZWNvZGUoaSkpfW4ucHVzaChpKX1yZXR1cm4gbi5qb2luKCIiKX0odCk7aWYocyl7cmV0dXJuIGZpeHVwRW5jb2RpbmcocmZjMjA0N2RlY29kZShzKSl9cz10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZSIsImkiKS5leGVjKHQpO2lmKHMpe3M9c1sxXTtsZXQgdD1yZmMyNjE2dW5xdW90ZShzKTt0PXJmYzIwNDdkZWNvZGUodCk7cmV0dXJuIGZpeHVwRW5jb2RpbmcodCl9ZnVuY3Rpb24gdG9QYXJhbVJlZ0V4cCh0LGUpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefDspXFxzKiIrdCsnXFxzKj1cXHMqKFteIjtcXHNdW147XFxzXSp8Iig/OlteIlxcXFxdfFxcXFwiPykrIj8pJyxlKX1mdW5jdGlvbiB0ZXh0ZGVjb2RlKHQscyl7aWYodCl7aWYoIS9eW1x4MDAtXHhGRl0rJC8udGVzdChzKSlyZXR1cm4gczt0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxyPSgwLGkuc3RyaW5nVG9CeXRlcykocyk7cz1uLmRlY29kZShyKTtlPSExfWNhdGNoKHQpe319cmV0dXJuIHN9ZnVuY3Rpb24gZml4dXBFbmNvZGluZyh0KXtpZihlJiYvW1x4ODAtXHhmZl0vLnRlc3QodCkpe3Q9dGV4dGRlY29kZSgidXRmLTgiLHQpO2UmJih0PXRleHRkZWNvZGUoImlzby04ODU5LTEiLHQpKX1yZXR1cm4gdH1mdW5jdGlvbiByZmMyNjE2dW5xdW90ZSh0KXtpZih0LnN0YXJ0c1dpdGgoJyInKSl7Y29uc3QgZT10LnNsaWNlKDEpLnNwbGl0KCdcXCInKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgcz1lW3RdLmluZGV4T2YoJyInKTtpZigtMSE9PXMpe2VbdF09ZVt0XS5zbGljZSgwLHMpO2UubGVuZ3RoPXQrMX1lW3RdPWVbdF0ucmVwbGFjZSgvXFwoLikvZywiJDEiKX10PWUuam9pbignIicpfXJldHVybiB0fWZ1bmN0aW9uIHJmYzU5ODdkZWNvZGUodCl7Y29uc3QgZT10LmluZGV4T2YoIiciKTtpZigtMT09PWUpcmV0dXJuIHQ7cmV0dXJuIHRleHRkZWNvZGUodC5zbGljZSgwLGUpLHQuc2xpY2UoZSsxKS5yZXBsYWNlKC9eW14nXSonLywiIikpfWZ1bmN0aW9uIHJmYzIwNDdkZWNvZGUodCl7cmV0dXJuIXQuc3RhcnRzV2l0aCgiPT8iKXx8L1tceDAwLVx4MTlceDgwLVx4ZmZdLy50ZXN0KHQpP3Q6dC5yZXBsYWNlKC89XD8oW1x3LV0qKVw/KFtRcUJiXSlcPygoPzpbXj9dfFw/KD8hPSkpKilcPz0vZywoZnVuY3Rpb24odCxlLHMsaSl7aWYoInEiPT09c3x8IlEiPT09cylyZXR1cm4gdGV4dGRlY29kZShlLGk9KGk9aS5yZXBsYWNlKC9fL2csIiAiKSkucmVwbGFjZSgvPShbMC05YS1mQS1GXXsyfSkvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSkpO3RyeXtpPWF0b2IoaSl9Y2F0Y2godCl7fXJldHVybiB0ZXh0ZGVjb2RlKGUsaSl9KSl9cmV0dXJuIiJ9O3ZhciBpPXMoMSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7Y2xhc3MgTmV0d29ya01hbmFnZXJ7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLnVybD10O3RoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QodCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmZS5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5nZXRYaHI9ZS5nZXRYaHJ8fGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2dldFhocigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O3RoaXMuY3VyclhocklkPTA7dGhpcy5wZW5kaW5nUmVxdWVzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXF1ZXN0UmFuZ2UodCxlLHMpe2NvbnN0IGk9e2JlZ2luOnQsZW5kOmV9O2Zvcihjb25zdCB0IGluIHMpaVt0XT1zW3RdO3JldHVybiB0aGlzLnJlcXVlc3QoaSl9cmVxdWVzdEZ1bGwodCl7cmV0dXJuIHRoaXMucmVxdWVzdCh0KX1yZXF1ZXN0KHQpe2NvbnN0IGU9dGhpcy5nZXRYaHIoKSxzPXRoaXMuY3VyclhocklkKyssaT10aGlzLnBlbmRpbmdSZXF1ZXN0c1tzXT17eGhyOmV9O2Uub3BlbigiR0VUIix0aGlzLnVybCk7ZS53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7Zm9yKGNvbnN0IHQgaW4gdGhpcy5odHRwSGVhZGVycyl7Y29uc3Qgcz10aGlzLmh0dHBIZWFkZXJzW3RdO3ZvaWQgMCE9PXMmJmUuc2V0UmVxdWVzdEhlYWRlcih0LHMpfWlmKHRoaXMuaXNIdHRwJiYiYmVnaW4iaW4gdCYmImVuZCJpbiB0KXtlLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIixgYnl0ZXM9JHt0LmJlZ2lufS0ke3QuZW5kLTF9YCk7aS5leHBlY3RlZFN0YXR1cz0yMDZ9ZWxzZSBpLmV4cGVjdGVkU3RhdHVzPTIwMDtlLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Qub25FcnJvciYmKGUub25lcnJvcj1mdW5jdGlvbihzKXt0Lm9uRXJyb3IoZS5zdGF0dXMpfSk7ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyxzKTtlLm9ucHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcyxzKTtpLm9uSGVhZGVyc1JlY2VpdmVkPXQub25IZWFkZXJzUmVjZWl2ZWQ7aS5vbkRvbmU9dC5vbkRvbmU7aS5vbkVycm9yPXQub25FcnJvcjtpLm9uUHJvZ3Jlc3M9dC5vblByb2dyZXNzO2Uuc2VuZChudWxsKTtyZXR1cm4gc31vblByb2dyZXNzKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtzJiZzLm9uUHJvZ3Jlc3M/LihlKX1vblN0YXRlQ2hhbmdlKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtpZighcylyZXR1cm47Y29uc3Qgbj1zLnhocjtpZihuLnJlYWR5U3RhdGU+PTImJnMub25IZWFkZXJzUmVjZWl2ZWQpe3Mub25IZWFkZXJzUmVjZWl2ZWQoKTtkZWxldGUgcy5vbkhlYWRlcnNSZWNlaXZlZH1pZig0IT09bi5yZWFkeVN0YXRlKXJldHVybjtpZighKHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpKXJldHVybjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07aWYoMD09PW4uc3RhdHVzJiZ0aGlzLmlzSHR0cCl7cy5vbkVycm9yPy4obi5zdGF0dXMpO3JldHVybn1jb25zdCByPW4uc3RhdHVzfHwyMDA7aWYoISgyMDA9PT1yJiYyMDY9PT1zLmV4cGVjdGVkU3RhdHVzKSYmciE9PXMuZXhwZWN0ZWRTdGF0dXMpe3Mub25FcnJvcj8uKG4uc3RhdHVzKTtyZXR1cm59Y29uc3QgYT1mdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcih0KXtjb25zdCBlPXQucmVzcG9uc2U7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6KDAsaS5zdHJpbmdUb0J5dGVzKShlKS5idWZmZXJ9KG4pO2lmKDIwNj09PXIpe2NvbnN0IHQ9bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1SYW5nZSIpLGU9L2J5dGVzIChcZCspLShcZCspXC8oXGQrKS8uZXhlYyh0KTtzLm9uRG9uZSh7YmVnaW46cGFyc2VJbnQoZVsxXSwxMCksY2h1bms6YX0pfWVsc2UgYT9zLm9uRG9uZSh7YmVnaW46MCxjaHVuazphfSk6cy5vbkVycm9yPy4obi5zdGF0dXMpfWdldFJlcXVlc3RYaHIodCl7cmV0dXJuIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocn1pc1BlbmRpbmdSZXF1ZXN0KHQpe3JldHVybiB0IGluIHRoaXMucGVuZGluZ1JlcXVlc3RzfWFib3J0UmVxdWVzdCh0KXtjb25zdCBlPXRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07ZS5hYm9ydCgpfX1lLlBERk5ldHdvcmtTdHJlYW09Y2xhc3MgUERGTmV0d29ya1N0cmVhbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9zb3VyY2U9dDt0aGlzLl9tYW5hZ2VyPW5ldyBOZXR3b3JrTWFuYWdlcih0LnVybCx7aHR0cEhlYWRlcnM6dC5odHRwSGVhZGVycyx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9KTt0aGlzLl9yYW5nZUNodW5rU2l6ZT10LnJhbmdlQ2h1bmtTaXplO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zcGxpY2UoZSwxKX1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0aGlzLl9zb3VyY2UpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2NvbnN0IHM9bmV3IFBERk5ldHdvcmtTdHJlYW1SYW5nZVJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0LGUpO3Mub25DbG9zZWQ9dGhpcy5fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQuYmluZCh0aGlzKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGTmV0d29ya1N0cmVhbUZ1bGxSZXF1ZXN0UmVhZGVye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IHM9e29uSGVhZGVyc1JlY2VpdmVkOnRoaXMuX29uSGVhZGVyc1JlY2VpdmVkLmJpbmQodGhpcyksb25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ZS51cmw7dGhpcy5fZnVsbFJlcXVlc3RJZD10LnJlcXVlc3RGdWxsKHMpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9kaXNhYmxlUmFuZ2U9ZS5kaXNhYmxlUmFuZ2V8fCExO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5sZW5ndGg7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2NhY2hlZENodW5rcz1bXTt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLl9maWxlbmFtZT1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsfV9vbkhlYWRlcnNSZWNlaXZlZCgpe2NvbnN0IHQ9dGhpcy5fZnVsbFJlcXVlc3RJZCxlPXRoaXMuX21hbmFnZXIuZ2V0UmVxdWVzdFhocih0KSxnZXRSZXNwb25zZUhlYWRlcj10PT5lLmdldFJlc3BvbnNlSGVhZGVyKHQpLHthbGxvd1JhbmdlUmVxdWVzdHM6cyxzdWdnZXN0ZWRMZW5ndGg6aX09KDAsbi52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOmdldFJlc3BvbnNlSGVhZGVyLGlzSHR0cDp0aGlzLl9tYW5hZ2VyLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7cyYmKHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITApO3RoaXMuX2NvbnRlbnRMZW5ndGg9aXx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0KTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlc29sdmUoKX1fb25Eb25lKHQpe2lmKHQpaWYodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjApe3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dC5jaHVuayxkb25lOiExfSl9ZWxzZSB0aGlzLl9jYWNoZWRDaHVua3MucHVzaCh0LmNodW5rKTt0aGlzLl9kb25lPSEwO2lmKCEodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfX1fb25FcnJvcih0KXt0aGlzLl9zdG9yZWRFcnJvcj0oMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQsdGhpcy5fdXJsKTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZWplY3QodGhpcy5fc3RvcmVkRXJyb3IpO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX2NhY2hlZENodW5rcy5sZW5ndGg9MH1fb25Qcm9ncmVzcyh0KXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQubGVuZ3RoQ29tcHV0YWJsZT90LnRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucHJvbWlzZX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fY2FjaGVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7dGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCk7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19Y2xhc3MgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscyl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IGk9e29uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPXQudXJsO3RoaXMuX3JlcXVlc3RJZD10LnJlcXVlc3RSYW5nZShlLHMsaSk7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLm9uQ2xvc2VkPW51bGx9X2Nsb3NlKCl7dGhpcy5vbkNsb3NlZD8uKHRoaXMpfV9vbkRvbmUodCl7Y29uc3QgZT10LmNodW5rO2lmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wKXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOmUsZG9uZTohMX0pfWVsc2UgdGhpcy5fcXVldWVkQ2h1bms9ZTt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9jbG9zZSgpfV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsfV9vblByb2dyZXNzKHQpe3RoaXMuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHRoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWR9KX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYobnVsbCE9PXRoaXMuX3F1ZXVlZENodW5rKXtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpO3RoaXMuX2Nsb3NlKCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkZldGNoU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7ZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsZSxzKXtyZXR1cm57bWV0aG9kOiJHRVQiLGhlYWRlcnM6dCxzaWduYWw6cy5zaWduYWwsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6ZT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIixyZWRpcmVjdDoiZm9sbG93In19ZnVuY3Rpb24gY3JlYXRlSGVhZGVycyh0KXtjb25zdCBlPW5ldyBIZWFkZXJzO2Zvcihjb25zdCBzIGluIHQpe2NvbnN0IGk9dFtzXTt2b2lkIDAhPT1pJiZlLmFwcGVuZChzLGkpfXJldHVybiBlfWUuUERGRmV0Y2hTdHJlYW09Y2xhc3MgUERGRmV0Y2hTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLmlzSHR0cD0vXmh0dHBzPzovaS50ZXN0KHQudXJsKTt0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZ0Lmh0dHBIZWFkZXJzfHx7fTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkZldGNoU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IFBERkZldGNoU3RyZWFtUmVhZGVyKHRoaXMpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2lmKGU8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBQREZGZXRjaFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGRmV0Y2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fc3RyZWFtPXQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbG9hZGVkPTA7dGhpcy5fZmlsZW5hbWU9bnVsbDtjb25zdCBlPXQuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hZS5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWUuZGlzYWJsZVJhbmdlO3RoaXMuX2hlYWRlcnM9Y3JlYXRlSGVhZGVycyh0aGlzLl9zdHJlYW0uaHR0cEhlYWRlcnMpO2NvbnN0IHM9ZS51cmw7ZmV0Y2gocyxjcmVhdGVGZXRjaE9wdGlvbnModGhpcy5faGVhZGVycyx0aGlzLl93aXRoQ3JlZGVudGlhbHMsdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbigodD0+e2lmKCEoMCxuLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSl0aHJvdygwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMscyk7dGhpcy5fcmVhZGVyPXQuYm9keS5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCk7Y29uc3QgZ2V0UmVzcG9uc2VIZWFkZXI9ZT0+dC5oZWFkZXJzLmdldChlKSx7YWxsb3dSYW5nZVJlcXVlc3RzOmUsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dGhpcy5fc3RyZWFtLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9cnx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTshdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuY2FuY2VsKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJTdHJlYW1pbmcgaXMgZGlzYWJsZWQuIikpfSkpLmNhdGNoKHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGVyPy5jYW5jZWwodCk7dGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCl9fWNsYXNzIFBERkZldGNoU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuX3N0cmVhbT10O3RoaXMuX3JlYWRlcj1udWxsO3RoaXMuX2xvYWRlZD0wO2NvbnN0IHI9dC5zb3VyY2U7dGhpcy5fd2l0aENyZWRlbnRpYWxzPXIud2l0aENyZWRlbnRpYWxzfHwhMTt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFyLmRpc2FibGVTdHJlYW07dGhpcy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5faGVhZGVycz1jcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7dGhpcy5faGVhZGVycy5hcHBlbmQoIlJhbmdlIixgYnl0ZXM9JHtlfS0ke3MtMX1gKTtjb25zdCBhPXIudXJsO2ZldGNoKGEsY3JlYXRlRmV0Y2hPcHRpb25zKHRoaXMuX2hlYWRlcnMsdGhpcy5fd2l0aENyZWRlbnRpYWxzLHRoaXMuX2Fib3J0Q29udHJvbGxlcikpLnRoZW4oKHQ9PntpZighKDAsbi52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLGEpO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTt0aGlzLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpfSkpLmNhdGNoKHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRlcj8uY2FuY2VsKHQpO3RoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX19XSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KXt2YXIgZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gZS5leHBvcnRzO3ZhciBzPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XT17ZXhwb3J0czp7fX07X193ZWJwYWNrX21vZHVsZXNfX1t0XShzLHMuZXhwb3J0cyxfX3dfcGRmanNfcmVxdWlyZV9fKTtyZXR1cm4gcy5leHBvcnRzfXZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9OygoKT0+e3ZhciB0PV9fd2VicGFja19leHBvcnRzX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkFubm90YXRpb25FZGl0b3JMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbkVkaXRvclR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25MYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQW5ub3RhdGlvbkxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uTW9kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbk1vZGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNNYXBDb21wcmVzc2lvblR5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkNNYXBDb21wcmVzc2lvblR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkdsb2JhbFdvcmtlck9wdGlvbnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkdsb2JhbFdvcmtlck9wdGlvbnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkludmFsaWRQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkludmFsaWRQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk1pc3NpbmdQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLk1pc3NpbmdQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk9QUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuT1BTfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZEYXRhUmFuZ2VUcmFuc3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLlBERkRhdGFSYW5nZVRyYW5zcG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGRGF0ZVN0cmluZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUERGRGF0ZVN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGV29ya2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5QREZXb3JrZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBhc3N3b3JkUmVzcG9uc2VzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5QYXNzd29yZFJlc3BvbnNlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGVybWlzc2lvbkZsYWciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlBlcm1pc3Npb25GbGFnfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQaXhlbHNQZXJJbmNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5QaXhlbHNQZXJJbmNofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiU1ZHR3JhcGhpY3MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoLlNWR0dyYXBoaWNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVTlNVUFBPUlRFRF9GRUFUVVJFUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVU5TVVBQT1JURURfRkVBVFVSRVN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVdGlsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5VdGlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJWZXJib3NpdHlMZXZlbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVmVyYm9zaXR5TGV2ZWx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlhmYUxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5YZmFMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYnVpbGQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJ1aWxkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldERvY3VtZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXREb2N1bWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0RmlsZW5hbWVGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFBkZkZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRYZmFQYWdlVmlld3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmdldFhmYVBhZ2VWaWV3cG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNQZGZGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc1BkZkZpbGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRTY3JpcHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmxvYWRTY3JpcHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlbmRlclRleHRMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVuZGVyVGV4dExheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFkb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLnNoYWRvd319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMudmVyc2lvbn19KTt2YXIgZT1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLHM9X193X3BkZmpzX3JlcXVpcmVfXygyKSxpPV9fd19wZGZqc19yZXF1aXJlX18oNiksbj1fX3dfcGRmanNfcmVxdWlyZV9fKDIxKSxyPV9fd19wZGZqc19yZXF1aXJlX18oNSksYT1fX3dfcGRmanNfcmVxdWlyZV9fKDI2KSxvPV9fd19wZGZqc19yZXF1aXJlX18oMTQpLGw9X193X3BkZmpzX3JlcXVpcmVfXygxMiksYz1fX3dfcGRmanNfcmVxdWlyZV9fKDI5KSxoPV9fd19wZGZqc19yZXF1aXJlX18oMzApLGQ9X193X3BkZmpzX3JlcXVpcmVfXygyOCk7aWYobC5pc05vZGVKUyl7Y29uc3R7UERGTm9kZVN0cmVhbTp0fT1fX3dfcGRmanNfcmVxdWlyZV9fKDMxKTsoMCxzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5KSgoZT0+bmV3IHQoZSkpKX1lbHNle2NvbnN0e1BERk5ldHdvcmtTdHJlYW06dH09X193X3BkZmpzX3JlcXVpcmVfXygzNCkse1BERkZldGNoU3RyZWFtOmV9PV9fd19wZGZqc19yZXF1aXJlX18oMzUpOygwLHMuc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkpKChzPT4oMCxpLmlzVmFsaWRGZXRjaFVybCkocy51cmwpP25ldyBlKHMpOm5ldyB0KHMpKSl9fSkoKTtyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfX30pKCkpKTs=",tve=`data:text/javascript;base64,${eve}`,nve=`data:text/javascript;base64,${q2e}`,ive=He({name:"VueOfficePdf",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"}},emits:["rendered","error"],setup(n,{emit:e}){let t=null;const i=Ne([]),a=Ne(0);function l(){return c2e(tve).then(()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=nve})}function o(){return window.pdfjsLib?Promise.resolve():l()}function r(){if(!n.src){a.value=0;return}window.pdfjsLib.getDocument({url:dz(n.src),cMapUrl:`${n.staticFileUrl.endsWith("/")?n.staticFileUrl:n.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0}).promise.then(b=>{t=b,a.value=t.numPages,f(1)}).catch(b=>{e("error",b)})}function f(v){t.getPage(v).then(b=>{const Z=b.getViewport({scale:window.devicePixelRatio}),p=i.value[v-1];p.width=Z.width,p.height=Z.height,Z.width>document.documentElement.clientWidth?p.style.width="100%":p.style.width=Math.floor(Z.width)+"px";const y=p.getContext("2d");b.render({canvasContext:y,viewport:Z}).promise.then(()=>{a.value>v?f(v+1):e("rendered")}).catch(m=>{e("error",m)})}).catch(b=>{e("error",b)})}return Kt(()=>{n.src&&o().then(r)}),rt(()=>n.src,()=>{o().then(r)}),{rootRef:i,numPages:a}}}),lve={class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"}},ave={key:0,class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function rve(n,e,t,i,a,l){return kl(),oc("div",lve,[n.numPages?(kl(),oc("div",ave,[(kl(!0),oc(ln,null,c4(n.numPages,o=>(kl(),oc("canvas",{ref_for:!0,ref:"rootRef",key:o,style:{width:"100%"}}))),128))])):Cb("",!0)],512)}const Xm=ed(ive,[["render",rve]]);Xm.install=function(n){n.component(Xm.name,Xm)};const ove={__name:"PdfDemo",setup(n){function e(){Ic.hideLoading()}function t(i){console.log("出差",i),Ic.hideLoading()}return(i,a)=>(kl(),Lo(nN,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf"},{default:pa(l=>[D(mi(Xm),{src:l.src,style:{flex:"1",height:"0"},onRendered:e,onError:t},null,8,["src"])]),_:1}))}},sve={__name:"App",setup(n){const e=Ne("DOCX");return Kt(()=>{}),(t,i)=>{const a=as("a-tab-pane"),l=as("a-tabs");return kl(),Lo(l,{activeKey:e.value,"onUpdate:activeKey":i[0]||(i[0]=o=>e.value=o)},{default:pa(()=>[D(a,{key:"DOCX",tab:"docx文件预览"},{default:pa(()=>[D(Cpe)]),_:1}),D(a,{key:"EXCEL",tab:"excel文件预览"},{default:pa(()=>[D($2e)]),_:1}),D(a,{key:"PDF",tab:"pdf文件预览"},{default:pa(()=>[D(ove)]),_:1})]),_:1},8,["activeKey"])}}},cve=ed(sve,[["__scopeId","data-v-e7b8d128"]]),uve=zR(cve);uve.use(bpe).mount("#app")});export default dve(); diff --git a/examples/dist/assets/index-171e346f.css b/examples/dist/assets/index-78ff3081.css similarity index 99% rename from examples/dist/assets/index-171e346f.css rename to examples/dist/assets/index-78ff3081.css index d901f55..26f74c1 100644 --- a/examples/dist/assets/index-171e346f.css +++ b/examples/dist/assets/index-78ff3081.css @@ -1,4 +1,4 @@ -a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{width:100%;margin:0;text-align:center;overflow:scroll;background:white}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.vue-office-docx{height:100%;overflow-y:auto}@media screen and (max-width: 800px){.vue-office-docx .docx-wrapper{padding:10px}.vue-office-docx .docx-wrapper>section.docx{padding:10px!important;width:100%!important}}.preview-wrapper[data-v-48e1d098]{height:calc(100vh - 60px);display:flex;flex-direction:column}.operate-area[data-v-48e1d098]{display:flex;margin:10px;align-items:center;flex-wrap:wrap}.operate-area[data-v-03e834e4]{display:flex;margin:10px;align-items:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell .x-spreadsheet-icon-img{opacity:.8}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-toolbar-btn{margin-top:0;margin-bottom:3px}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-header .x-spreadsheet-icon.arrow-left{margin-left:4px}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-header .x-spreadsheet-icon.arrow-right{width:10px;margin-right:4px}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-header .x-spreadsheet-icon.arrow-right .arrow-down{left:-130px}.x-spreadsheet-toolbar,.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex}.x-spreadsheet-menu>li .x-spreadsheet-icon{margin:0 6px}.x-spreadsheet-menu>li .x-spreadsheet-icon .x-spreadsheet-icon-img:hover{opacity:.85}.x-spreadsheet-toolbar{border-bottom:1px solid #e0e2e4}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btns{display:inline-flex}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-more{padding:0 6px 6px;text-align:left}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-more .x-spreadsheet-toolbar-divider{margin-top:0}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn{flex:0 0 auto;display:inline-block;border:1px solid transparent;height:26px;line-height:26px;min-width:26px;margin:6px 1px 0;padding:0;text-align:center;border-radius:2px}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn:hover,.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn.active{background:rgba(0,0,0,.08)}.x-spreadsheet-toolbar-divider{display:inline-block;border-right:1px solid #e0e2e4;width:0;vertical-align:middle;height:18px;margin:12px 3px 0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:100%/7;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-modal-header .x-spreadsheet-icon,.x-spreadsheet-toast-header .x-spreadsheet-icon{position:absolute;right:.8em;top:.65em;border-radius:18px}.x-spreadsheet-modal-header .x-spreadsheet-icon:hover,.x-spreadsheet-toast-header .x-spreadsheet-icon:hover{opacity:1;background:rgba(0,0,0,.08)}@media screen and (min-width: 320px) and (max-width: 480px){.x-spreadsheet-toolbar{display:none}}.x-spreadsheet-icon{width:18px;height:18px;margin:1px 1px 2px;text-align:center;vertical-align:middle;user-select:none;overflow:hidden;position:relative;display:inline-block}.x-spreadsheet-icon .x-spreadsheet-icon-img{background-image:url(/vue-office/examples/dist/assets/sprite-adc9b140.svg);position:absolute;width:262px;height:444px;opacity:.56}.x-spreadsheet-icon .x-spreadsheet-icon-img.undo{left:0;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.redo{left:-18px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.print{left:-36px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.paintformat{left:-54px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.clearformat{left:-72px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.font-bold{left:-90px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.font-italic{left:-108px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.underline{left:-126px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.strike{left:-144px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.color{left:-162px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.bgcolor{left:-180px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.merge{left:-198px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-left{left:-216px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-center{left:-234px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-right{left:0;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-top{left:-18px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-middle{left:-36px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-bottom{left:-54px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.textwrap{left:-72px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.autofilter{left:-90px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.formula{left:-108px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.arrow-down{left:-126px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.arrow-right{left:-144px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.link{left:-162px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chart{left:-180px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.freeze{left:-198px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.ellipsis{left:-216px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.add{left:-234px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-all{left:0;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-inside{left:-18px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-horizontal{left:-36px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-vertical{left:-54px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-outside{left:-72px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-left{left:-90px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-top{left:-108px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-right{left:-126px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-bottom{left:-144px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-none{left:-162px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.line-color{left:-180px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.line-type{left:-198px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.close{left:-234px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-down{left:0;top:-54px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-up{left:-18px;top:-54px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-left{left:-36px;top:-54px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-right{left:-54px;top:-54px}body{margin:0}.x-spreadsheet{font-size:13px;line-height:normal;user-select:none;-moz-user-select:none;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;box-sizing:content-box;background:#fff;-webkit-font-smoothing:antialiased}.x-spreadsheet textarea{font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif}.x-spreadsheet-sheet{position:relative;overflow:hidden}.x-spreadsheet-table{vertical-align:bottom}.x-spreadsheet-tooltip{font-family:inherit;position:absolute;padding:5px 10px;color:#fff;border-radius:1px;background:#000000;font-size:12px;z-index:201}.x-spreadsheet-tooltip:before{pointer-events:none;position:absolute;left:calc(50% - 4px);top:-4px;content:"";width:8px;height:8px;background:inherit;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:1;box-shadow:1px 1px 3px -1px #0000004d}.x-spreadsheet-color-palette{padding:5px}.x-spreadsheet-color-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:2;background:#fff}.x-spreadsheet-color-palette table td{margin:0;cursor:pointer;border:1px solid transparent}.x-spreadsheet-color-palette table td:hover{border-color:#ddd}.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell{width:16px;height:16px}.x-spreadsheet-border-palette{padding:6px}.x-spreadsheet-border-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:0;background:#fff;table-layout:fixed}.x-spreadsheet-border-palette table td{margin:0}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left{border-right:1px solid #eee;padding-right:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell{width:30px;height:30px;cursor:pointer;text-align:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover{background-color:#eee}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right{padding-left:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type{position:relative;left:0;top:-3px}.x-spreadsheet-dropdown{position:relative}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content{position:absolute;z-index:200;background:#fff;box-shadow:1px 2px 5px 2px #33333326}.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content{top:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content{top:calc(100% + 5px);right:0}.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);right:0}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title{padding:0 5px;display:inline-block}.x-spreadsheet-resizer{position:absolute;z-index:11}.x-spreadsheet-resizer .x-spreadsheet-resizer-hover{background-color:#4b89ff40}.x-spreadsheet-resizer .x-spreadsheet-resizer-line{position:absolute}.x-spreadsheet-resizer.horizontal{cursor:row-resize}.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line{border-bottom:2px dashed #4b89ff;left:0;bottom:0}.x-spreadsheet-resizer.vertical{cursor:col-resize}.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line{border-right:2px dashed #4b89ff;top:0;right:0}.x-spreadsheet-scrollbar{position:absolute;bottom:0;right:0;background-color:#f4f5f8;opacity:.9;z-index:12}.x-spreadsheet-scrollbar.horizontal{right:15px;overflow-x:scroll;overflow-y:hidden}.x-spreadsheet-scrollbar.horizontal>div{height:1px;background:#ddd}.x-spreadsheet-scrollbar.vertical{bottom:15px;overflow-x:hidden;overflow-y:scroll}.x-spreadsheet-scrollbar.vertical>div{width:1px;background:#ddd}.x-spreadsheet-overlayer{position:absolute;left:0;top:0;z-index:10}.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content{position:absolute;overflow:hidden;pointer-events:none;width:100%;height:100%}.x-spreadsheet-editor,.x-spreadsheet-selector{box-sizing:content-box;position:absolute;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;height:100%}.x-spreadsheet-selector .hide-input{position:absolute;z-index:0}.x-spreadsheet-selector .hide-input input{padding:0;width:0;border:none!important}.x-spreadsheet-selector .x-spreadsheet-selector-area{position:absolute;border:2px solid #4b89ff;background:rgba(75,137,255,.1);z-index:5}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,.x-spreadsheet-selector .x-spreadsheet-selector-autofill{position:absolute;background:transparent;z-index:100}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard{border:2px dashed #4b89ff}.x-spreadsheet-selector .x-spreadsheet-selector-autofill{border:1px dashed rgba(0,0,0,.45)}.x-spreadsheet-selector .x-spreadsheet-selector-corner{pointer-events:auto;position:absolute;cursor:crosshair;font-size:0;height:5px;width:5px;right:-5px;bottom:-5px;border:2px solid #ffffff;background:#4b89ff}.x-spreadsheet-editor{z-index:20}.x-spreadsheet-editor .x-spreadsheet-editor-area{position:absolute;text-align:left;border:2px solid #4b89ff;line-height:0;z-index:100;pointer-events:auto}.x-spreadsheet-editor .x-spreadsheet-editor-area textarea{box-sizing:content-box;border:none;padding:0 3px;outline:none;resize:none;text-align:start;overflow-y:hidden;font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif;color:inherit;white-space:normal;word-wrap:break-word;line-height:22px;margin:0}.x-spreadsheet-editor .x-spreadsheet-editor-area .textline{overflow:hidden;visibility:hidden;position:fixed;top:0;left:0}.x-spreadsheet-item{user-select:none;background:0;border:1px solid transparent;outline:none;height:26px;color:#000000e6;line-height:26px;list-style:none;padding:2px 10px;cursor:default;text-align:left;overflow:hidden}.x-spreadsheet-item.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-item:hover,.x-spreadsheet-item.active{background:rgba(0,0,0,.05)}.x-spreadsheet-item.divider{height:0;padding:0;margin:5px 0;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.x-spreadsheet-item .label{float:right;opacity:.65;font-size:1em}.x-spreadsheet-item.state,.x-spreadsheet-header.state{padding-left:35px!important;position:relative}.x-spreadsheet-item.state:before,.x-spreadsheet-header.state:before{content:"";position:absolute;width:10px;height:10px;left:12px;top:calc(50% - 5px);background:rgba(0,0,0,.08);border-radius:2px}.x-spreadsheet-item.state.checked:before,.x-spreadsheet-header.state.checked:before{background:#4b89ff}.x-spreadsheet-checkbox{position:relative;display:inline-block;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;font-size:1rem;line-height:1em}.x-spreadsheet-checkbox>input{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.x-spreadsheet-suggest,.x-spreadsheet-contextmenu,.x-spreadsheet-sort-filter{position:absolute;box-shadow:1px 2px 5px 2px #33333326;background:#fff;z-index:100;width:260px;pointer-events:auto;overflow:auto}.x-spreadsheet-suggest{width:200px}.x-spreadsheet-filter{border:1px solid #e9e9e9;font-size:12px;margin:10px}.x-spreadsheet-filter .x-spreadsheet-header{padding:.5em .75em;background:#f8f8f9;border-bottom:1px solid #e9e9e9;border-left:1px solid transparent}.x-spreadsheet-filter .x-spreadsheet-body{height:200px;overflow-y:auto}.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item{height:20px;line-height:20px}.x-spreadsheet-sort-filter .x-spreadsheet-buttons{margin:10px}.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex}.x-spreadsheet-bottombar{position:relative;border-top:1px solid #e0e2e4}.x-spreadsheet-bottombar .x-spreadsheet-menu>li{line-height:40px;height:40px;padding-top:0;padding-bottom:0;vertical-align:middle;border-right:1px solid #e8eaed}.x-spreadsheet-menu{list-style:none;margin:0;padding:0;user-select:none}.x-spreadsheet-menu>li{float:left;line-height:1.25em;padding:.785em 1em;margin:0;vertical-align:middle;text-align:left;font-weight:400;color:#80868b;white-space:nowrap;cursor:pointer;transition:all .3s;font-weight:700}.x-spreadsheet-menu>li.active{background-color:#fff;color:#000000a6}.x-spreadsheet-menu>li .x-spreadsheet-dropdown{display:inline-block}.x-spreadsheet-print{position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;display:flex;flex-direction:column}.x-spreadsheet-print-bar{background:#424242;height:60px;line-height:60px;padding:0 30px}.x-spreadsheet-print-bar .-title{color:#fff;font-weight:700;font-size:1.2em;float:left}.x-spreadsheet-print-bar .-right{float:right;margin-top:12px}.x-spreadsheet-print-content{display:flex;flex:auto;flex-direction:row;background:#d0d0d0;height:calc(100% - 60px)}.x-spreadsheet-print-content .-sider{flex:0 0 300px;width:300px;border-left:2px solid #ccc;background:#fff}.x-spreadsheet-print-content .-content{flex:auto;overflow-x:auto;overflow-y:scroll;height:100%}.x-spreadsheet-canvas-card-wraper{margin:40px 20px}.x-spreadsheet-canvas-card{background:#fff;margin:auto;page-break-before:auto;page-break-after:always;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 3px #0000001f,0 4px 5px #0003}.x-spreadsheet-calendar{color:#000000a6;background:#ffffff;user-select:none}.x-spreadsheet-calendar .calendar-header{font-weight:700;line-height:30px;text-align:center;width:100%;float:left;background:#f9fafb}.x-spreadsheet-calendar .calendar-header .calendar-header-left{padding-left:5px;float:left}.x-spreadsheet-calendar .calendar-header .calendar-header-right{float:right}.x-spreadsheet-calendar .calendar-header .calendar-header-right a{padding:3px 0;margin-right:2px;border-radius:2px}.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover{background:rgba(0,0,0,.08)}.x-spreadsheet-calendar .calendar-body{border-collapse:collapse;border-spacing:0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:14.28571429%;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-calendar .calendar-body td>.cell:hover{background:#ecf6fd}.x-spreadsheet-calendar .calendar-body td>.cell.active,.x-spreadsheet-calendar .calendar-body td>.cell.active:hover{background:#ecf6fd;color:#2185d0}.x-spreadsheet-calendar .calendar-body td>.cell.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-datepicker{box-shadow:2px 2px 5px #0003;position:absolute;left:0;top:calc(100% + 5px);z-index:10;width:auto}.x-spreadsheet-buttons{display:flex;justify-content:flex-end}.x-spreadsheet-buttons .x-spreadsheet-button{margin-left:8px}.x-spreadsheet-button{display:inline-block;border-radius:3px;line-height:1em;min-height:1em;white-space:nowrap;text-align:center;cursor:pointer;font-size:1em;font-weight:700;padding:.75em 1em;color:#0009;background:#E0E1E2;text-decoration:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;outline:none;vertical-align:baseline;zoom:1;user-select:none;transition:all .1s linear}.x-spreadsheet-button.active,.x-spreadsheet-button:hover{background-color:#c0c1c2;color:#000c}.x-spreadsheet-button.primary{color:#fff;background-color:#2185d0}.x-spreadsheet-button.primary:hover,.x-spreadsheet-button.primary.active{color:#fff;background-color:#1678c2}.x-spreadsheet-form-input{font-size:1em;position:relative;font-weight:400;display:inline-flex;color:#000000de}.x-spreadsheet-form-input input{z-index:1;margin:0;max-width:100%;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:30px;height:30px;padding:0 8px;background:#fff;border:1px solid #e9e9e9;border-radius:3px;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-input input:focus{border-color:#4b89ff;box-shadow:inset 0 1px 2px #4b89ff33}.x-spreadsheet-form-select{position:relative;display:inline-block;background:#fff;border:1px solid #e9e9e9;border-radius:2px;cursor:pointer;color:#000000de;user-select:none;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-select .input-text{text-overflow:ellipsis;white-space:nowrap;min-width:60px;width:auto;height:30px;line-height:30px;padding:0 8px}.x-spreadsheet-form-fields{display:flex;flex-direction:row;flex-wrap:wrap}.x-spreadsheet-form-fields .x-spreadsheet-form-field{flex:0 1 auto}.x-spreadsheet-form-fields .x-spreadsheet-form-field .label{display:inline-block;margin:0 10px 0 0}.x-spreadsheet-form-field{display:block;vertical-align:middle;margin-left:10px;margin-bottom:10px}.x-spreadsheet-form-field:first-child{margin-left:0}.x-spreadsheet-form-field.error .x-spreadsheet-form-select,.x-spreadsheet-form-field.error input{border-color:#f04134}.x-spreadsheet-form-field .tip{color:#f04134;font-size:.9em}.x-spreadsheet-dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:#0009;opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;transition:background-color .5s linear;user-select:none;z-index:1000}.x-spreadsheet-dimmer.active{display:block;opacity:1}form fieldset{border:none}form fieldset label{display:block;margin-bottom:.5em;font-size:1em;color:#666}form fieldset select{font-size:1.1em;width:100%;background-color:#fff;border:none;border-bottom:2px solid #ddd;padding:.5em .85em;border-radius:2px}.x-spreadsheet-modal,.x-spreadsheet-toast{font-size:13px;position:fixed;z-index:1001;text-align:left;line-height:1.25em;min-width:360px;color:#000000de;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;border-radius:4px;border:1px solid rgba(0,0,0,.1);background-color:#fff;background-clip:padding-box;box-shadow:#0003 0 2px 8px}.x-spreadsheet-toast{background-color:#ffffffd9}.x-spreadsheet-modal-header,.x-spreadsheet-toast-header{font-weight:600;background-clip:padding-box;background-color:#ffffffd9;border-bottom:1px solid rgba(0,0,0,.05);border-radius:4px 4px 0 0}.x-spreadsheet-toast-header{color:#f2711c}.x-spreadsheet-modal-header{border-bottom:1px solid #e0e2e4;background:rgba(0,0,0,.08);font-size:1.0785em}.x-spreadsheet-modal-header,.x-spreadsheet-modal-content,.x-spreadsheet-toast-header,.x-spreadsheet-toast-content{padding:.75em 1em}.x-spreadsheet-menu li:first-child{display:none}.vue-office-excel{height:100%}[data-v-e7b8d128] .ant-tabs-nav-wrap{padding-left:20px!important}/*! +a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{width:100%;margin:0;text-align:center;overflow:scroll;background:white}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.vue-office-docx{height:100%;overflow-y:auto}@media screen and (max-width: 800px){.vue-office-docx .docx-wrapper{padding:10px}.vue-office-docx .docx-wrapper>section.docx{padding:10px!important;width:100%!important}}.preview-wrapper[data-v-d4fe28da]{height:calc(100vh - 60px);display:flex;flex-direction:column}.operate-area[data-v-d4fe28da]{display:flex;margin:10px;align-items:center;flex-wrap:wrap}.operate-area[data-v-aca83c00]{display:flex;margin:10px;align-items:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell .x-spreadsheet-icon-img{opacity:.8}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-toolbar-btn{margin-top:0;margin-bottom:3px}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-header .x-spreadsheet-icon.arrow-left{margin-left:4px}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-header .x-spreadsheet-icon.arrow-right{width:10px;margin-right:4px}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-header .x-spreadsheet-icon.arrow-right .arrow-down{left:-130px}.x-spreadsheet-toolbar,.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex}.x-spreadsheet-menu>li .x-spreadsheet-icon{margin:0 6px}.x-spreadsheet-menu>li .x-spreadsheet-icon .x-spreadsheet-icon-img:hover{opacity:.85}.x-spreadsheet-toolbar{border-bottom:1px solid #e0e2e4}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btns{display:inline-flex}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-more{padding:0 6px 6px;text-align:left}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-more .x-spreadsheet-toolbar-divider{margin-top:0}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn{flex:0 0 auto;display:inline-block;border:1px solid transparent;height:26px;line-height:26px;min-width:26px;margin:6px 1px 0;padding:0;text-align:center;border-radius:2px}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn:hover,.x-spreadsheet-toolbar .x-spreadsheet-toolbar-btn.active{background:rgba(0,0,0,.08)}.x-spreadsheet-toolbar-divider{display:inline-block;border-right:1px solid #e0e2e4;width:0;vertical-align:middle;height:18px;margin:12px 3px 0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:100%/7;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-modal-header .x-spreadsheet-icon,.x-spreadsheet-toast-header .x-spreadsheet-icon{position:absolute;right:.8em;top:.65em;border-radius:18px}.x-spreadsheet-modal-header .x-spreadsheet-icon:hover,.x-spreadsheet-toast-header .x-spreadsheet-icon:hover{opacity:1;background:rgba(0,0,0,.08)}@media screen and (min-width: 320px) and (max-width: 480px){.x-spreadsheet-toolbar{display:none}}.x-spreadsheet-icon{width:18px;height:18px;margin:1px 1px 2px;text-align:center;vertical-align:middle;user-select:none;overflow:hidden;position:relative;display:inline-block}.x-spreadsheet-icon .x-spreadsheet-icon-img{background-image:url(/vue-office/examples/dist/assets/sprite-adc9b140.svg);position:absolute;width:262px;height:444px;opacity:.56}.x-spreadsheet-icon .x-spreadsheet-icon-img.undo{left:0;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.redo{left:-18px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.print{left:-36px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.paintformat{left:-54px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.clearformat{left:-72px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.font-bold{left:-90px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.font-italic{left:-108px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.underline{left:-126px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.strike{left:-144px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.color{left:-162px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.bgcolor{left:-180px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.merge{left:-198px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-left{left:-216px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-center{left:-234px;top:0}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-right{left:0;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-top{left:-18px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-middle{left:-36px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.align-bottom{left:-54px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.textwrap{left:-72px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.autofilter{left:-90px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.formula{left:-108px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.arrow-down{left:-126px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.arrow-right{left:-144px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.link{left:-162px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chart{left:-180px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.freeze{left:-198px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.ellipsis{left:-216px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.add{left:-234px;top:-18px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-all{left:0;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-inside{left:-18px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-horizontal{left:-36px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-vertical{left:-54px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-outside{left:-72px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-left{left:-90px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-top{left:-108px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-right{left:-126px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-bottom{left:-144px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.border-none{left:-162px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.line-color{left:-180px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.line-type{left:-198px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.close{left:-234px;top:-36px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-down{left:0;top:-54px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-up{left:-18px;top:-54px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-left{left:-36px;top:-54px}.x-spreadsheet-icon .x-spreadsheet-icon-img.chevron-right{left:-54px;top:-54px}body{margin:0}.x-spreadsheet{font-size:13px;line-height:normal;user-select:none;-moz-user-select:none;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;box-sizing:content-box;background:#fff;-webkit-font-smoothing:antialiased}.x-spreadsheet textarea{font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif}.x-spreadsheet-sheet{position:relative;overflow:hidden}.x-spreadsheet-table{vertical-align:bottom}.x-spreadsheet-tooltip{font-family:inherit;position:absolute;padding:5px 10px;color:#fff;border-radius:1px;background:#000000;font-size:12px;z-index:201}.x-spreadsheet-tooltip:before{pointer-events:none;position:absolute;left:calc(50% - 4px);top:-4px;content:"";width:8px;height:8px;background:inherit;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:1;box-shadow:1px 1px 3px -1px #0000004d}.x-spreadsheet-color-palette{padding:5px}.x-spreadsheet-color-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:2;background:#fff}.x-spreadsheet-color-palette table td{margin:0;cursor:pointer;border:1px solid transparent}.x-spreadsheet-color-palette table td:hover{border-color:#ddd}.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell{width:16px;height:16px}.x-spreadsheet-border-palette{padding:6px}.x-spreadsheet-border-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:0;background:#fff;table-layout:fixed}.x-spreadsheet-border-palette table td{margin:0}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left{border-right:1px solid #eee;padding-right:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell{width:30px;height:30px;cursor:pointer;text-align:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover{background-color:#eee}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right{padding-left:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type{position:relative;left:0;top:-3px}.x-spreadsheet-dropdown{position:relative}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content{position:absolute;z-index:200;background:#fff;box-shadow:1px 2px 5px 2px #33333326}.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content{top:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content{top:calc(100% + 5px);right:0}.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);right:0}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title{padding:0 5px;display:inline-block}.x-spreadsheet-resizer{position:absolute;z-index:11}.x-spreadsheet-resizer .x-spreadsheet-resizer-hover{background-color:#4b89ff40}.x-spreadsheet-resizer .x-spreadsheet-resizer-line{position:absolute}.x-spreadsheet-resizer.horizontal{cursor:row-resize}.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line{border-bottom:2px dashed #4b89ff;left:0;bottom:0}.x-spreadsheet-resizer.vertical{cursor:col-resize}.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line{border-right:2px dashed #4b89ff;top:0;right:0}.x-spreadsheet-scrollbar{position:absolute;bottom:0;right:0;background-color:#f4f5f8;opacity:.9;z-index:12}.x-spreadsheet-scrollbar.horizontal{right:15px;overflow-x:scroll;overflow-y:hidden}.x-spreadsheet-scrollbar.horizontal>div{height:1px;background:#ddd}.x-spreadsheet-scrollbar.vertical{bottom:15px;overflow-x:hidden;overflow-y:scroll}.x-spreadsheet-scrollbar.vertical>div{width:1px;background:#ddd}.x-spreadsheet-overlayer{position:absolute;left:0;top:0;z-index:10}.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content{position:absolute;overflow:hidden;pointer-events:none;width:100%;height:100%}.x-spreadsheet-editor,.x-spreadsheet-selector{box-sizing:content-box;position:absolute;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;height:100%}.x-spreadsheet-selector .hide-input{position:absolute;z-index:0}.x-spreadsheet-selector .hide-input input{padding:0;width:0;border:none!important}.x-spreadsheet-selector .x-spreadsheet-selector-area{position:absolute;border:2px solid #4b89ff;background:rgba(75,137,255,.1);z-index:5}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,.x-spreadsheet-selector .x-spreadsheet-selector-autofill{position:absolute;background:transparent;z-index:100}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard{border:2px dashed #4b89ff}.x-spreadsheet-selector .x-spreadsheet-selector-autofill{border:1px dashed rgba(0,0,0,.45)}.x-spreadsheet-selector .x-spreadsheet-selector-corner{pointer-events:auto;position:absolute;cursor:crosshair;font-size:0;height:5px;width:5px;right:-5px;bottom:-5px;border:2px solid #ffffff;background:#4b89ff}.x-spreadsheet-editor{z-index:20}.x-spreadsheet-editor .x-spreadsheet-editor-area{position:absolute;text-align:left;border:2px solid #4b89ff;line-height:0;z-index:100;pointer-events:auto}.x-spreadsheet-editor .x-spreadsheet-editor-area textarea{box-sizing:content-box;border:none;padding:0 3px;outline:none;resize:none;text-align:start;overflow-y:hidden;font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif;color:inherit;white-space:normal;word-wrap:break-word;line-height:22px;margin:0}.x-spreadsheet-editor .x-spreadsheet-editor-area .textline{overflow:hidden;visibility:hidden;position:fixed;top:0;left:0}.x-spreadsheet-item{user-select:none;background:0;border:1px solid transparent;outline:none;height:26px;color:#000000e6;line-height:26px;list-style:none;padding:2px 10px;cursor:default;text-align:left;overflow:hidden}.x-spreadsheet-item.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-item:hover,.x-spreadsheet-item.active{background:rgba(0,0,0,.05)}.x-spreadsheet-item.divider{height:0;padding:0;margin:5px 0;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.x-spreadsheet-item .label{float:right;opacity:.65;font-size:1em}.x-spreadsheet-item.state,.x-spreadsheet-header.state{padding-left:35px!important;position:relative}.x-spreadsheet-item.state:before,.x-spreadsheet-header.state:before{content:"";position:absolute;width:10px;height:10px;left:12px;top:calc(50% - 5px);background:rgba(0,0,0,.08);border-radius:2px}.x-spreadsheet-item.state.checked:before,.x-spreadsheet-header.state.checked:before{background:#4b89ff}.x-spreadsheet-checkbox{position:relative;display:inline-block;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;font-size:1rem;line-height:1em}.x-spreadsheet-checkbox>input{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.x-spreadsheet-suggest,.x-spreadsheet-contextmenu,.x-spreadsheet-sort-filter{position:absolute;box-shadow:1px 2px 5px 2px #33333326;background:#fff;z-index:100;width:260px;pointer-events:auto;overflow:auto}.x-spreadsheet-suggest{width:200px}.x-spreadsheet-filter{border:1px solid #e9e9e9;font-size:12px;margin:10px}.x-spreadsheet-filter .x-spreadsheet-header{padding:.5em .75em;background:#f8f8f9;border-bottom:1px solid #e9e9e9;border-left:1px solid transparent}.x-spreadsheet-filter .x-spreadsheet-body{height:200px;overflow-y:auto}.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item{height:20px;line-height:20px}.x-spreadsheet-sort-filter .x-spreadsheet-buttons{margin:10px}.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex}.x-spreadsheet-bottombar{position:relative;border-top:1px solid #e0e2e4}.x-spreadsheet-bottombar .x-spreadsheet-menu>li{line-height:40px;height:40px;padding-top:0;padding-bottom:0;vertical-align:middle;border-right:1px solid #e8eaed}.x-spreadsheet-menu{list-style:none;margin:0;padding:0;user-select:none}.x-spreadsheet-menu>li{float:left;line-height:1.25em;padding:.785em 1em;margin:0;vertical-align:middle;text-align:left;font-weight:400;color:#80868b;white-space:nowrap;cursor:pointer;transition:all .3s;font-weight:700}.x-spreadsheet-menu>li.active{background-color:#fff;color:#000000a6}.x-spreadsheet-menu>li .x-spreadsheet-dropdown{display:inline-block}.x-spreadsheet-print{position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;display:flex;flex-direction:column}.x-spreadsheet-print-bar{background:#424242;height:60px;line-height:60px;padding:0 30px}.x-spreadsheet-print-bar .-title{color:#fff;font-weight:700;font-size:1.2em;float:left}.x-spreadsheet-print-bar .-right{float:right;margin-top:12px}.x-spreadsheet-print-content{display:flex;flex:auto;flex-direction:row;background:#d0d0d0;height:calc(100% - 60px)}.x-spreadsheet-print-content .-sider{flex:0 0 300px;width:300px;border-left:2px solid #ccc;background:#fff}.x-spreadsheet-print-content .-content{flex:auto;overflow-x:auto;overflow-y:scroll;height:100%}.x-spreadsheet-canvas-card-wraper{margin:40px 20px}.x-spreadsheet-canvas-card{background:#fff;margin:auto;page-break-before:auto;page-break-after:always;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 3px #0000001f,0 4px 5px #0003}.x-spreadsheet-calendar{color:#000000a6;background:#ffffff;user-select:none}.x-spreadsheet-calendar .calendar-header{font-weight:700;line-height:30px;text-align:center;width:100%;float:left;background:#f9fafb}.x-spreadsheet-calendar .calendar-header .calendar-header-left{padding-left:5px;float:left}.x-spreadsheet-calendar .calendar-header .calendar-header-right{float:right}.x-spreadsheet-calendar .calendar-header .calendar-header-right a{padding:3px 0;margin-right:2px;border-radius:2px}.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover{background:rgba(0,0,0,.08)}.x-spreadsheet-calendar .calendar-body{border-collapse:collapse;border-spacing:0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:14.28571429%;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-calendar .calendar-body td>.cell:hover{background:#ecf6fd}.x-spreadsheet-calendar .calendar-body td>.cell.active,.x-spreadsheet-calendar .calendar-body td>.cell.active:hover{background:#ecf6fd;color:#2185d0}.x-spreadsheet-calendar .calendar-body td>.cell.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-datepicker{box-shadow:2px 2px 5px #0003;position:absolute;left:0;top:calc(100% + 5px);z-index:10;width:auto}.x-spreadsheet-buttons{display:flex;justify-content:flex-end}.x-spreadsheet-buttons .x-spreadsheet-button{margin-left:8px}.x-spreadsheet-button{display:inline-block;border-radius:3px;line-height:1em;min-height:1em;white-space:nowrap;text-align:center;cursor:pointer;font-size:1em;font-weight:700;padding:.75em 1em;color:#0009;background:#E0E1E2;text-decoration:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;outline:none;vertical-align:baseline;zoom:1;user-select:none;transition:all .1s linear}.x-spreadsheet-button.active,.x-spreadsheet-button:hover{background-color:#c0c1c2;color:#000c}.x-spreadsheet-button.primary{color:#fff;background-color:#2185d0}.x-spreadsheet-button.primary:hover,.x-spreadsheet-button.primary.active{color:#fff;background-color:#1678c2}.x-spreadsheet-form-input{font-size:1em;position:relative;font-weight:400;display:inline-flex;color:#000000de}.x-spreadsheet-form-input input{z-index:1;margin:0;max-width:100%;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:30px;height:30px;padding:0 8px;background:#fff;border:1px solid #e9e9e9;border-radius:3px;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-input input:focus{border-color:#4b89ff;box-shadow:inset 0 1px 2px #4b89ff33}.x-spreadsheet-form-select{position:relative;display:inline-block;background:#fff;border:1px solid #e9e9e9;border-radius:2px;cursor:pointer;color:#000000de;user-select:none;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-select .input-text{text-overflow:ellipsis;white-space:nowrap;min-width:60px;width:auto;height:30px;line-height:30px;padding:0 8px}.x-spreadsheet-form-fields{display:flex;flex-direction:row;flex-wrap:wrap}.x-spreadsheet-form-fields .x-spreadsheet-form-field{flex:0 1 auto}.x-spreadsheet-form-fields .x-spreadsheet-form-field .label{display:inline-block;margin:0 10px 0 0}.x-spreadsheet-form-field{display:block;vertical-align:middle;margin-left:10px;margin-bottom:10px}.x-spreadsheet-form-field:first-child{margin-left:0}.x-spreadsheet-form-field.error .x-spreadsheet-form-select,.x-spreadsheet-form-field.error input{border-color:#f04134}.x-spreadsheet-form-field .tip{color:#f04134;font-size:.9em}.x-spreadsheet-dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:#0009;opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;transition:background-color .5s linear;user-select:none;z-index:1000}.x-spreadsheet-dimmer.active{display:block;opacity:1}form fieldset{border:none}form fieldset label{display:block;margin-bottom:.5em;font-size:1em;color:#666}form fieldset select{font-size:1.1em;width:100%;background-color:#fff;border:none;border-bottom:2px solid #ddd;padding:.5em .85em;border-radius:2px}.x-spreadsheet-modal,.x-spreadsheet-toast{font-size:13px;position:fixed;z-index:1001;text-align:left;line-height:1.25em;min-width:360px;color:#000000de;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;border-radius:4px;border:1px solid rgba(0,0,0,.1);background-color:#fff;background-clip:padding-box;box-shadow:#0003 0 2px 8px}.x-spreadsheet-toast{background-color:#ffffffd9}.x-spreadsheet-modal-header,.x-spreadsheet-toast-header{font-weight:600;background-clip:padding-box;background-color:#ffffffd9;border-bottom:1px solid rgba(0,0,0,.05);border-radius:4px 4px 0 0}.x-spreadsheet-toast-header{color:#f2711c}.x-spreadsheet-modal-header{border-bottom:1px solid #e0e2e4;background:rgba(0,0,0,.08);font-size:1.0785em}.x-spreadsheet-modal-header,.x-spreadsheet-modal-content,.x-spreadsheet-toast-header,.x-spreadsheet-toast-content{padding:.75em 1em}.x-spreadsheet-menu li:first-child{display:none}.vue-office-excel{height:100%}[data-v-e7b8d128] .ant-tabs-nav-wrap{padding-left:20px!important}/*! * * ant-design-vue v3.2.15 * diff --git a/examples/dist/index.html b/examples/dist/index.html index 59f4808..a78601a 100644 --- a/examples/dist/index.html +++ b/examples/dist/index.html @@ -5,8 +5,8 @@ Vite + Vue - - + +
diff --git a/examples/src/App.vue b/examples/src/App.vue index c0dcf9e..3ee5c6f 100644 --- a/examples/src/App.vue +++ b/examples/src/App.vue @@ -1,13 +1,13 @@